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   
7   import static com.atlassian.plugins.codegen.modules.Dependencies.MOCKITO_TEST;
8   import static com.atlassian.plugins.codegen.modules.Dependencies.SLF4J;
9   
10  /**
11   * @since 3.6
12   */
13  @JiraPluginModuleCreator
14  public class IssueTabPanelModuleCreator extends AbstractPluginModuleCreator<TabPanelProperties>
15  {
16  
17      public static final String MODULE_NAME = "Issue Tab Panel";
18      private static final String TEMPLATE_PREFIX = "templates/jira/tabpanel/issue/";
19  
20      //stub
21      private static final String CLASS_TEMPLATE = TEMPLATE_PREFIX + "IssueTabPanel.java.vtl";
22      private static final String UNIT_TEST_TEMPLATE = "templates/generic/GenericTest.java.vtl";
23      private static final String VIEW_TEMPLATE = TEMPLATE_PREFIX + "issue-tab-panel.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 + "issue-tab-panel-plugin.xml.vtl";
29  
30      @Override
31      public PluginProjectChangeset createModule(TabPanelProperties props) throws Exception
32      {
33          PluginProjectChangeset ret = new PluginProjectChangeset()
34              .with(SLF4J,
35                    MOCKITO_TEST)
36              .with(createModule(props, PLUGIN_MODULE_TEMPLATE));
37  
38          if (props.includeExamples())
39          {
40              return ret.with(createClass(props, EXAMPLE_CLASS_TEMPLATE));
41          }
42          else
43          {
44              if (props.isUseCustomClass())
45              {
46                  ret = ret.with(createClassAndTests(props, CLASS_TEMPLATE, UNIT_TEST_TEMPLATE));
47              }
48              return ret.with(createTemplateResource(props, "tabpanels", props.getModuleKey() + ".vm", VIEW_TEMPLATE));
49          }
50      }
51  
52      @Override
53      public String getModuleName()
54      {
55          return MODULE_NAME;
56      }
57  }