001 /** 002 * Copyright 2004-2013 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.student.contract.mojo; 017 018 import java.io.File; 019 import java.net.MalformedURLException; 020 import java.net.URL; 021 import java.net.URLClassLoader; 022 import java.util.ArrayList; 023 import java.util.Collection; 024 import java.util.HashMap; 025 import java.util.List; 026 import java.util.Map; 027 028 import org.apache.maven.artifact.DependencyResolutionRequiredException; 029 import org.apache.maven.model.Dependency; 030 import org.apache.maven.plugin.AbstractMojo; 031 import org.apache.maven.plugin.MojoExecutionException; 032 import org.apache.maven.plugin.MojoFailureException; 033 import org.apache.maven.project.MavenProject; 034 import org.joda.time.DateTime; 035 import org.kuali.student.admin.ui.mojo.KSCreateAdminUiMojo; 036 import org.kuali.student.common.mojo.AbstractKSMojo; 037 import org.kuali.student.contract.model.ServiceContractModel; 038 import org.kuali.student.contract.model.impl.ServiceContractModelCache; 039 import org.kuali.student.contract.model.impl.ServiceContractModelPescXsdLoader; 040 import org.kuali.student.contract.model.impl.ServiceContractModelQDoxLoader; 041 import org.kuali.student.contract.model.util.DateUtility; 042 import org.kuali.student.contract.model.util.HtmlContractWriter; 043 import org.kuali.student.contract.model.validation.ServiceContractModelValidator; 044 import org.slf4j.Logger; 045 import org.slf4j.LoggerFactory; 046 047 /** 048 * The plugin entrypoint which is used to generate the html wiki doc of the service interface. 049 * @goal kscontractdoc 050 * @phase site 051 * @requiresProject true 052 */ 053 public class KSContractDocMojo extends AbstractKSMojo { 054 055 private static Logger log = LoggerFactory.getLogger(KSContractDocMojo.class); 056 057 /** 058 * @parameter property="htmlDirectory" default-value="${project.build.directory}/site/services/contractdocs" 059 */ 060 private File htmlDirectory; 061 062 public File getHtmlDirectory() { 063 return htmlDirectory; 064 } 065 066 public void setHtmlDirectory(File htmlDirectory) { 067 this.htmlDirectory = htmlDirectory; 068 } 069 070 @Override 071 public void execute() throws MojoExecutionException, MojoFailureException { 072 073 MavenProject project = (MavenProject) getPluginContext().get("project"); 074 075 String formattedDate = DateUtility.asYMDHMInEasternTimeZone(new DateTime()); 076 077 ServiceContractModel model = null; 078 HtmlContractWriter writer = null; 079 getLog().info("publishing wiki contracts"); 080 model = this.getModel(); 081 this.validate(model); 082 getLog().info("publishing to = " + this.htmlDirectory.toString()); 083 writer = new HtmlContractWriter(htmlDirectory.toString(), model); 084 writer.write(project.getVersion(), formattedDate); 085 086 087 } 088 089 090 private static final String CORE_DIRECTORY = "D:/svn/ks/trunk/ks-api/ks-core-api/src/main"; 091 // "C:/svn/maven-dictionary-generator/trunk/src/main/java/org/kuali/student/core"; 092 private static final String COMMON_DIRECTORY = "D:/svn/ks/trunk/ks-api/ks-common-api/src/main/java"; 093 private static final String ENROLL_DIRECTORY = "D:/svn/ks/trunk/ks-api/ks-enroll-api/src/main/java"; 094 private static final String LUM_DIRECTORY = "D:/svn/ks/trunk/ks-api/ks-lum-api/src/main/java"; 095 private static final String KSA_DIRECTORY = "D:/svn/ks/ksa/ksa-core/src/main/java"; 096 private static final String TEST_SOURCE_DIRECTORY = 097 "src/test/java/org/kuali/student/contract/model/test/source"; 098 private static final String TARGET_GENERATED_SOURCES = "target/generated-sources"; 099 private static final String STANDALONE_MAIN_DIRECTORY = "D:/svn/ks/ks-standalone-admin-app/src/main"; 100 101 private static final String RICE_CORE_API_DIRECTORY = "D:/svn/rice/rice-2.2.0/core/api/src/main/java"; 102 private static final String RICE_KIM_API_DIRECTORY = "D:/svn/rice/rice-2.2.0/kim/kim-api/src/main/java"; 103 private static final String RICE_KRMS_API_DIRECTORY = "D:/svn/rice/rice-2.2.0/krms/api/src/main/java"; 104 105 106 private static final String TRUNK_CORE_IMPL = "D:/svn/ks/trunk/ks-core/ks-core-impl/src/main/java"; 107 private static final String TRUNK_ENROLL_IMPL = "D:/svn/ks/trunk/ks-core/ks-core-impl/src/main/java"; 108 private static final String TRUNK_ENROLL_IMPL_KRMS_API = "D:/svn/ks/trunk/ks-enroll/ks-enroll-impl/src/main/java/org/kuali/rice/krms/api"; 109 110 111 public static void main(String[] args) { 112 log.info("execute"); 113 List<String> srcDirs = new ArrayList<String>(); 114 // srcDirs.add(COMMON_DIRECTORY); 115 // srcDirs.add(CORE_DIRECTORY); 116 // srcDirs.add(LUM_DIRECTORY); 117 // srcDirs.add(ENROLL_DIRECTORY); 118 // srcDirs.add(RICE_KIM_API_DIRECTORY); 119 srcDirs.add(KSA_DIRECTORY); 120 // srcDirs.add(RICE_CORE_API_DIRECTORY); 121 // srcDirs.add(RICE_KRMS_API_DIRECTORY); 122 // srcDirs.add(TRUNK_ENROLL_IMPL_KRMS_API); 123 KSContractDocMojo instance = new KSContractDocMojo(); 124 Map pluginContext = new HashMap(); 125 MavenProject project = new MavenProject(); 126 pluginContext.put("project", project); 127 instance.setPluginContext(pluginContext); 128 instance.setSourceDirs(srcDirs); 129 instance.setHtmlDirectory(new File (TARGET_GENERATED_SOURCES)); 130 try { 131 instance.execute(); 132 } catch (MojoExecutionException ex) { 133 throw new RuntimeException(ex); 134 } catch (MojoFailureException ex) { 135 throw new RuntimeException(ex); 136 } 137 } 138 139 }