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 })
18 public class WorkflowConditionModuleCreator extends AbstractPluginModuleCreator<WorkflowElementProperties>
19 {
20
21 public static final String MODULE_NAME = "Workflow Condition";
22 private static final String TEMPLATE_PREFIX = "templates/jira/workflow/condition/";
23
24
25 private static final String CLASS_TEMPLATE = TEMPLATE_PREFIX + "WorkflowCondition.java.vtl";
26 private static final String FACTORY_TEMPLATE = TEMPLATE_PREFIX + "WorkflowConditionFactory.java.vtl";
27 private static final String UNIT_TEST_TEMPLATE = TEMPLATE_PREFIX + "WorkflowConditionTest.java.vtl";
28 private static final String FUNC_TEST_TEMPLATE = TEMPLATE_PREFIX + "WorkflowConditionFuncTest.java.vtl";
29 private static final String VIEW_TEMPLATE = TEMPLATE_PREFIX + "workflow-condition.vm.vtl";
30 private static final String INPUT_TEMPLATE = TEMPLATE_PREFIX + "workflow-condition-input.vm.vtl";
31
32
33 private static final String EXAMPLE_CLASS_TEMPLATE = TEMPLATE_PREFIX + "Example" + CLASS_TEMPLATE;
34
35 private static final String PLUGIN_MODULE_TEMPLATE = TEMPLATE_PREFIX + "workflow-condition-plugin.xml.vtl";
36
37 @Override
38 public void createModule(PluginModuleLocation location, WorkflowElementProperties props) throws Exception
39 {
40 String moduleKey = props.getModuleKey();
41 String viewFileName = moduleKey + ".vm";
42 String inputFileName = moduleKey + "-input.vm";
43 String packageName = props.getPackage();
44 String functionClass = props.getClassname();
45 String factoryClass = props.getFactoryName();
46
47 File templatesDir = new File(location.getTemplateDirectory(), "conditions");
48
49 templateHelper.writeJavaClassFromTemplate(CLASS_TEMPLATE, functionClass, location.getSourceDirectory(), packageName, props);
50 templateHelper.writeJavaClassFromTemplate(FACTORY_TEMPLATE, factoryClass, location.getSourceDirectory(), packageName, props);
51
52
53 templateHelper.writeJavaClassFromTemplate(UNIT_TEST_TEMPLATE, testClassname(functionClass), location.getTestDirectory(), packageName, props);
54 templateHelper.writeFileFromTemplate(VIEW_TEMPLATE, viewFileName, templatesDir, props);
55 templateHelper.writeFileFromTemplate(INPUT_TEMPLATE, inputFileName, templatesDir, props);
56
57 addModuleToPluginXml(PLUGIN_MODULE_TEMPLATE, location, props);
58 }
59
60
61 @Override
62 public String getModuleName()
63 {
64 return MODULE_NAME;
65 }
66 }