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
25
26
27
28
29 public class KSContractDocMojo extends AbstractMojo {
30
31
32
33
34 private List<String> sourceDirs;
35
36
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 }