View Javadoc

1   package org.kuali.student.contract.mojo;
2   
3   import java.io.File;
4   import java.net.MalformedURLException;
5   import java.net.URL;
6   import java.net.URLClassLoader;
7   import java.util.Collection;
8   import java.util.List;
9   
10  import org.apache.maven.artifact.DependencyResolutionRequiredException;
11  import org.apache.maven.model.Dependency;
12  import org.apache.maven.plugin.AbstractMojo;
13  import org.apache.maven.plugin.MojoExecutionException;
14  import org.apache.maven.project.MavenProject;
15  import org.joda.time.DateTime;
16  import org.kuali.student.contract.model.ServiceContractModel;
17  import org.kuali.student.contract.model.impl.ServiceContractModelCache;
18  import org.kuali.student.contract.model.impl.ServiceContractModelQDoxLoader;
19  import org.kuali.student.contract.model.util.DateUtility;
20  import org.kuali.student.contract.model.util.HtmlContractWriter;
21  import org.kuali.student.contract.model.validation.ServiceContractModelValidator;
22  
23  /**
24   * The plugin entrypoint which is used to generate the html wiki doc of the service interface.
25   * @goal kscontractdoc
26   * @phase site
27   * @requiresProject true
28   */
29  public class KSContractDocMojo extends AbstractMojo {
30  
31      /**
32       * @parameter
33       **/
34      private List<String> sourceDirs;
35      /**
36       * @parameter expression="${htmlDirectory}" default-value="${project.build.directory}/site/services/contractdocs"
37       */
38      private File htmlDirectory;
39  
40      public File getHtmlDirectory() {
41          return htmlDirectory;
42      }
43  
44      public List<String> getSourceDirs() {
45          return sourceDirs;
46      }
47  
48      public void setHtmlDirectory(File htmlDirectory) {
49          this.htmlDirectory = htmlDirectory;
50      }
51  
52      public void setSourceDirs(List<String> sourceDirs) {
53          this.sourceDirs = sourceDirs;
54      }
55  
56  	private ServiceContractModel getModel() {
57  		
58  		
59          ServiceContractModel instance = new ServiceContractModelQDoxLoader(
60                  sourceDirs);
61          return new ServiceContractModelCache(instance);
62  
63      }
64  
65      private boolean validate(ServiceContractModel model) {
66          Collection<String> errors = new ServiceContractModelValidator(model).validate();
67          if (errors.size() > 0) {
68              StringBuilder buf = new StringBuilder();
69              buf.append(errors.size()).append(" errors found while validating the data.");
70              return false;
71  
72  
73          }
74          return true;
75      }
76  
77      @Override
78      public void execute() throws MojoExecutionException {
79      	
80      	MavenProject project = (MavenProject) getPluginContext().get("project");
81      	
82      	String formattedDate = DateUtility.asYMDHMInEasternTimeZone(new DateTime());
83      	
84          ServiceContractModel model = null;
85          HtmlContractWriter writer = null;
86          getLog().info("publishing wiki contracts");
87          model = this.getModel();
88          this.validate(model);
89          getLog().info("publishing to = " + this.htmlDirectory.toString());
90          writer = new HtmlContractWriter(htmlDirectory.toString(), model);
91          writer.write(project.getVersion(), formattedDate);
92  
93  
94      }
95  }