001 package org.kuali.student.contract.mojo;
002
003 import java.io.File;
004 import java.net.MalformedURLException;
005 import java.net.URL;
006 import java.net.URLClassLoader;
007 import java.util.ArrayList;
008 import java.util.Collection;
009 import java.util.HashMap;
010 import java.util.List;
011 import java.util.Map;
012
013 import org.apache.maven.artifact.DependencyResolutionRequiredException;
014 import org.apache.maven.model.Dependency;
015 import org.apache.maven.plugin.AbstractMojo;
016 import org.apache.maven.plugin.MojoExecutionException;
017 import org.apache.maven.plugin.MojoFailureException;
018 import org.apache.maven.project.MavenProject;
019 import org.joda.time.DateTime;
020 import org.kuali.student.admin.ui.mojo.KSCreateAdminUiMojo;
021 import org.kuali.student.common.mojo.AbstractKSMojo;
022 import org.kuali.student.contract.model.ServiceContractModel;
023 import org.kuali.student.contract.model.impl.ServiceContractModelCache;
024 import org.kuali.student.contract.model.impl.ServiceContractModelPescXsdLoader;
025 import org.kuali.student.contract.model.impl.ServiceContractModelQDoxLoader;
026 import org.kuali.student.contract.model.util.DateUtility;
027 import org.kuali.student.contract.model.util.HtmlContractWriter;
028 import org.kuali.student.contract.model.validation.ServiceContractModelValidator;
029 import org.slf4j.Logger;
030 import org.slf4j.LoggerFactory;
031
032 /**
033 * The plugin entrypoint which is used to generate the html wiki doc of the service interface.
034 * @goal kscontractdoc
035 * @phase site
036 * @requiresProject true
037 */
038 public class KSContractDocMojo extends AbstractKSMojo {
039
040 private static Logger log = LoggerFactory.getLogger(KSContractDocMojo.class);
041
042 /**
043 * @parameter expression="${htmlDirectory}" default-value="${project.build.directory}/site/services/contractdocs"
044 */
045 private File htmlDirectory;
046
047 public File getHtmlDirectory() {
048 return htmlDirectory;
049 }
050
051 public void setHtmlDirectory(File htmlDirectory) {
052 this.htmlDirectory = htmlDirectory;
053 }
054
055 @Override
056 public void execute() throws MojoExecutionException, MojoFailureException {
057
058 MavenProject project = (MavenProject) getPluginContext().get("project");
059
060 String formattedDate = DateUtility.asYMDHMInEasternTimeZone(new DateTime());
061
062 ServiceContractModel model = null;
063 HtmlContractWriter writer = null;
064 getLog().info("publishing wiki contracts");
065 model = this.getModel();
066 this.validate(model);
067 getLog().info("publishing to = " + this.htmlDirectory.toString());
068 writer = new HtmlContractWriter(htmlDirectory.toString(), model);
069 writer.write(project.getVersion(), formattedDate);
070
071
072 }
073
074
075 private static final String CORE_DIRECTORY = "D:/svn/ks/trunk/ks-api/ks-core-api/src/main";
076 // "C:/svn/maven-dictionary-generator/trunk/src/main/java/org/kuali/student/core";
077 private static final String COMMON_DIRECTORY = "D:/svn/ks/trunk/ks-api/ks-common-api/src/main/java";
078 private static final String ENROLL_DIRECTORY = "D:/svn/ks/trunk/ks-api/ks-enroll-api/src/main/java";
079 private static final String LUM_DIRECTORY = "D:/svn/ks/trunk/ks-api/ks-lum-api/src/main/java";
080 private static final String KSA_DIRECTORY = "D:/svn/ks/ksa/ksa-core/src/main/java";
081 private static final String TEST_SOURCE_DIRECTORY =
082 "src/test/java/org/kuali/student/contract/model/test/source";
083 private static final String TARGET_GENERATED_SOURCES = "target/generated-sources";
084 private static final String STANDALONE_MAIN_DIRECTORY = "D:/svn/ks/ks-standalone-admin-app/src/main";
085
086 private static final String RICE_CORE_API_DIRECTORY = "D:/svn/rice/rice-2.2.0/core/api/src/main/java";
087 private static final String RICE_KIM_API_DIRECTORY = "D:/svn/rice/rice-2.2.0/kim/kim-api/src/main/java";
088 private static final String RICE_KRMS_API_DIRECTORY = "D:/svn/rice/rice-2.2.0/krms/api/src/main/java";
089
090
091 private static final String TRUNK_CORE_IMPL = "D:/svn/ks/trunk/ks-core/ks-core-impl/src/main/java";
092 private static final String TRUNK_ENROLL_IMPL = "D:/svn/ks/trunk/ks-core/ks-core-impl/src/main/java";
093 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";
094
095
096 public static void main(String[] args) {
097 log.info("execute");
098 List<String> srcDirs = new ArrayList<String>();
099 // srcDirs.add(COMMON_DIRECTORY);
100 // srcDirs.add(CORE_DIRECTORY);
101 // srcDirs.add(LUM_DIRECTORY);
102 // srcDirs.add(ENROLL_DIRECTORY);
103 // srcDirs.add(RICE_KIM_API_DIRECTORY);
104 srcDirs.add(KSA_DIRECTORY);
105 // srcDirs.add(RICE_CORE_API_DIRECTORY);
106 // srcDirs.add(RICE_KRMS_API_DIRECTORY);
107 // srcDirs.add(TRUNK_ENROLL_IMPL_KRMS_API);
108 KSContractDocMojo instance = new KSContractDocMojo();
109 Map pluginContext = new HashMap();
110 MavenProject project = new MavenProject();
111 pluginContext.put("project", project);
112 instance.setPluginContext(pluginContext);
113 instance.setSourceDirs(srcDirs);
114 instance.setHtmlDirectory(new File (TARGET_GENERATED_SOURCES));
115 try {
116 instance.execute();
117 } catch (MojoExecutionException ex) {
118 throw new RuntimeException(ex);
119 } catch (MojoFailureException ex) {
120 throw new RuntimeException(ex);
121 }
122 }
123
124 }