1 package com.atlassian.plugins.codegen.modules.jira;
2
3 import java.io.File;
4
5 import com.atlassian.plugins.codegen.annotations.Dependencies;
6 import com.atlassian.plugins.codegen.annotations.Dependency;
7 import com.atlassian.plugins.codegen.annotations.JiraPluginModuleCreator;
8 import com.atlassian.plugins.codegen.modules.AbstractPluginModuleCreator;
9 import com.atlassian.plugins.codegen.modules.PluginModuleLocation;
10
11
12
13
14 @JiraPluginModuleCreator
15 @Dependencies({
16 @Dependency(groupId = "org.mockito", artifactId = "mockito-all", version = "1.8.5", scope = "test")
17 , @Dependency(groupId = "org.apache.httpcomponents", artifactId = "httpclient", version = "4.1.1", scope = "test")
18 })
19 public class WorkflowValidatorModuleCreator extends AbstractPluginModuleCreator<WorkflowElementProperties>
20 {
21
22 public static final String MODULE_NAME = "Workflow Validator";
23 private static final String TEMPLATE_PREFIX = "templates/jira/workflow/validator/";
24
25
26 private static final String FACTORY_TEMPLATE = TEMPLATE_PREFIX + "WorkflowValidatorFactory.java.vtl";
27 private static final String CLASS_TEMPLATE = TEMPLATE_PREFIX + "WorkflowValidator.java.vtl";
28 private static final String UNIT_TEST_TEMPLATE = TEMPLATE_PREFIX + "WorkflowValidatorTest.java.vtl";
29 private static final String FUNC_TEST_TEMPLATE = TEMPLATE_PREFIX + "WorkflowValidatorFuncTest.java.vtl";
30 private static final String VIEW_TEMPLATE = TEMPLATE_PREFIX + "workflow-validator.vm.vtl";
31 private static final String INPUT_TEMPLATE = TEMPLATE_PREFIX + "workflow-validator-input.vm.vtl";
32
33
34 private static final String EXAMPLE_CLASS_TEMPLATE = TEMPLATE_PREFIX + "Example" + CLASS_TEMPLATE;
35
36 private static final String PLUGIN_MODULE_TEMPLATE = TEMPLATE_PREFIX + "workflow-validator-plugin.xml.vtl";
37
38 @Override
39 public void createModule(PluginModuleLocation location, WorkflowElementProperties props) throws Exception
40 {
41 String moduleKey = props.getModuleKey();
42 String viewFileName = moduleKey + ".vm";
43 String inputFileName = moduleKey + "-input.vm";
44 String packageName = props.getPackage();
45 String functionClass = props.getClassname();
46 String factoryClass = props.getFactoryName();
47
48 File templatesDir = new File(location.getTemplateDirectory(), "validators");
49
50 if (props.includeExamples())
51 {
52 } else
53 {
54 templateHelper.writeJavaClassFromTemplate(CLASS_TEMPLATE, functionClass, location.getSourceDirectory(), packageName, props);
55 templateHelper.writeJavaClassFromTemplate(FACTORY_TEMPLATE, factoryClass, location.getSourceDirectory(), packageName, props);
56
57
58 templateHelper.writeJavaClassFromTemplate(UNIT_TEST_TEMPLATE, testClassname(functionClass), location.getTestDirectory(), packageName, props);
59 templateHelper.writeFileFromTemplate(VIEW_TEMPLATE, viewFileName, templatesDir, props);
60 templateHelper.writeFileFromTemplate(INPUT_TEMPLATE, inputFileName, templatesDir, props);
61 }
62
63
64 addModuleToPluginXml(PLUGIN_MODULE_TEMPLATE, location, props);
65 }
66
67
68 @Override
69 public String getModuleName()
70 {
71 return MODULE_NAME;
72 }
73 }