1   package com.atlassian.plugins.codegen.modules;
2   
3   import com.atlassian.plugins.codegen.util.ClassnameUtil;
4   
5   import com.google.common.collect.ImmutableMap;
6   
7   import org.apache.commons.lang.StringUtils;
8   
9   /**
10   * @since 3.6
11   */
12  public abstract class AbstractNameBasedModuleProperties extends AbstractPluginModuleProperties implements NameBasedModuleProperties
13  {
14  
15      protected AbstractNameBasedModuleProperties()
16      {
17          super();
18      }
19  
20      public void setModuleNameAndKey(String moduleName)
21      {
22          if (StringUtils.isNotBlank(moduleName))
23          {
24              setModuleName(moduleName);
25              setModuleKey(ClassnameUtil.camelCaseOrSpaceToDashed(moduleName)
26                      .toLowerCase());
27              setDescription("The " + getProperty(MODULE_NAME) + " Plugin");
28              setNameI18nKey(getProperty(MODULE_KEY) + ".name");
29              setDescriptionI18nKey(getProperty(MODULE_KEY) + ".description");
30          }
31      }
32  
33      @Override
34      public void setModuleName(String name)
35      {
36          setProperty(MODULE_NAME, name);
37      }
38  
39      @Override
40      public String getModuleName()
41      {
42          return getProperty(MODULE_NAME);
43      }
44  
45      @Override
46      public void setModuleKey(String name)
47      {
48          setProperty(MODULE_KEY, name);
49      }
50  
51      @Override
52      public String getModuleKey()
53      {
54          return getProperty(MODULE_KEY);
55      }
56  
57      @Override
58      public void setDescription(String desc)
59      {
60          setProperty(DESCRIPTION, desc);
61      }
62  
63      @Override
64      public String getDescription()
65      {
66          return getProperty(DESCRIPTION);
67      }
68  
69      @Override
70      public void setDescriptionI18nKey(String key)
71      {
72          setProperty(DESCRIPTION_I18N_KEY, key);
73      }
74  
75      @Override
76      public String getDescriptionI18nKey()
77      {
78          return getProperty(DESCRIPTION_I18N_KEY);
79      }
80  
81      @Override
82      public void setNameI18nKey(String key)
83      {
84          setProperty(NAME_I18N_KEY, key);
85      }
86  
87      @Override
88      public String getNameI18nKey()
89      {
90          return getProperty(NAME_I18N_KEY);
91      }
92  
93      @Override
94      public ImmutableMap<String, String> getI18nProperties()
95      {
96          return ImmutableMap.<String, String>builder().putAll(super.getI18nProperties())
97                  .put(NAME_I18N_KEY, getProperty(MODULE_NAME))
98                  .put(DESCRIPTION_I18N_KEY, getProperty(DESCRIPTION))
99                  .build();
100     }
101 }