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 WorkflowPostFunctionModuleCreator extends AbstractPluginModuleCreator<WorkflowPostFunctionProperties>
19 {
20 public static final String MODULE_NAME = "Workflow Post Function";
21 private static final String TEMPLATE_PREFIX = "templates/jira/workflow/function/";
22
23 private static final String CLASS_TEMPLATE = TEMPLATE_PREFIX + "PostFunction.java.vtl";
24 private static final String FACTORY_TEMPLATE = TEMPLATE_PREFIX + "PostFunctionFactory.java.vtl";
25 private static final String UNIT_TEST_TEMPLATE = TEMPLATE_PREFIX + "PostFunctionTest.java.vtl";
26 private static final String VIEW_TEMPLATE = TEMPLATE_PREFIX + "post-function.vm.vtl";
27 private static final String INPUT_TEMPLATE = TEMPLATE_PREFIX + "post-function-input.vm.vtl";
28 private static final String PLUGIN_MODULE_TEMPLATE = TEMPLATE_PREFIX + "post-function-plugin.xml.vtl";
29
30 @Override
31 public void createModule(PluginModuleLocation location, WorkflowPostFunctionProperties props) throws Exception
32 {
33 String moduleKey = props.getModuleKey();
34 String viewFileName = moduleKey + ".vm";
35 String inputFileName = moduleKey + "-input.vm";
36 String packageName = props.getPackage();
37 String functionClass = props.getClassname();
38 String factoryClass = props.getFactoryName();
39
40 File templatesDir = new File(location.getTemplateDirectory(), "postfunctions");
41
42 templateHelper.writeJavaClassFromTemplate(CLASS_TEMPLATE, functionClass, location.getSourceDirectory(), packageName, props);
43 templateHelper.writeJavaClassFromTemplate(FACTORY_TEMPLATE, factoryClass, location.getSourceDirectory(), packageName, props);
44
45
46 templateHelper.writeJavaClassFromTemplate(UNIT_TEST_TEMPLATE, testClassname(functionClass), location.getTestDirectory(), packageName, props);
47 templateHelper.writeFileFromTemplate(VIEW_TEMPLATE, viewFileName, templatesDir, props);
48 templateHelper.writeFileFromTemplate(INPUT_TEMPLATE, inputFileName, templatesDir, props);
49
50 addModuleToPluginXml(PLUGIN_MODULE_TEMPLATE, location, props);
51
52 }
53
54 @Override
55 public String getModuleName()
56 {
57 return MODULE_NAME;
58 }
59 }