1   package com.atlassian.plugins.codegen.modules.jira;
2   
3   import com.atlassian.plugins.codegen.PluginProjectChangeset;
4   import com.atlassian.plugins.codegen.annotations.JiraPluginModuleCreator;
5   import com.atlassian.plugins.codegen.modules.AbstractPluginModuleCreator;
6   import com.atlassian.plugins.codegen.modules.common.Resource;
7   
8   import static com.atlassian.plugins.codegen.modules.Dependencies.MOCKITO_TEST;
9   
10  /**
11   * @since 3.6
12   */
13  @JiraPluginModuleCreator
14  public class CustomFieldSearcherModuleCreator extends AbstractPluginModuleCreator<CustomFieldSearcherProperties>
15  {
16  
17      public static final String MODULE_NAME = "Custom Field Searcher";
18      private static final String TEMPLATE_PREFIX = "templates/jira/customfield/searcher/";
19  
20      //stub
21      private static final String CLASS_TEMPLATE = TEMPLATE_PREFIX + "CustomFieldSearcher.java.vtl";
22      private static final String UNIT_TEST_TEMPLATE = "templates/generic/GenericTest.java.vtl";
23      private static final String VIEW_TEMPLATE = "templates/common/actionview.vm.vtl";
24  
25      //examples
26      private static final String EXAMPLE_CLASS_TEMPLATE = TEMPLATE_PREFIX + "Example" + CLASS_TEMPLATE;
27  
28      private static final String PLUGIN_MODULE_TEMPLATE = TEMPLATE_PREFIX + "customfield-searcher-plugin.xml.vtl";
29  
30      @Override
31      public PluginProjectChangeset createModule(CustomFieldSearcherProperties props) throws Exception
32      {
33          PluginProjectChangeset ret = new PluginProjectChangeset()
34              .with(MOCKITO_TEST)
35              .with(createModule(props, PLUGIN_MODULE_TEMPLATE));
36          
37          if (props.includeExamples())
38          {
39              ret = ret.with(createClass(props, EXAMPLE_CLASS_TEMPLATE));
40          }
41          else
42          {
43              if (props.generateClass())
44              {
45                  ret = ret.with(createClassAndTests(props, CLASS_TEMPLATE, UNIT_TEST_TEMPLATE));
46              }
47          }
48          
49          //since we know resources are velocity templates, let's create them
50          for (Resource resource : props.getResources())
51          {
52              ret = ret.with(createTemplateResource(props, resource, VIEW_TEMPLATE));
53          }
54          
55          return ret;
56      }
57  
58      @Override
59      public String getModuleName()
60      {
61          return MODULE_NAME;
62      }
63  }