1   package com.atlassian.maven.plugins.amps.codegen.prompter.common;
2   
3   import com.atlassian.maven.plugins.amps.codegen.annotations.ModuleCreatorClass;
4   import com.atlassian.maven.plugins.amps.codegen.prompter.AbstractModulePrompter;
5   import com.atlassian.plugins.codegen.modules.PluginModuleLocation;
6   import com.atlassian.plugins.codegen.modules.common.TemplateContextItemModuleCreator;
7   import com.atlassian.plugins.codegen.modules.common.TemplateContextItemProperties;
8   
9   import org.apache.commons.lang.StringUtils;
10  import org.codehaus.plexus.components.interactivity.Prompter;
11  import org.codehaus.plexus.components.interactivity.PrompterException;
12  
13  /**
14   * @since 3.6
15   */
16  @ModuleCreatorClass(TemplateContextItemModuleCreator.class)
17  public class TemplateContextItemPrompter extends AbstractModulePrompter<TemplateContextItemProperties>
18  {
19  
20      public TemplateContextItemPrompter(Prompter prompter)
21      {
22          super(prompter);
23  
24      }
25  
26      @Override
27      public TemplateContextItemProperties promptForBasicProperties(PluginModuleLocation moduleLocation) throws PrompterException
28      {
29          String moduleName = promptNotBlank("Enter Plugin Module Name", "My Context Item");
30          String contextKey = promptNotBlank("Enter Context Key");
31  
32          TemplateContextItemProperties props = new TemplateContextItemProperties(moduleName, contextKey);
33          promptForRefOrClass(props);
34  
35          props.setGlobal(promptForBoolean("Global Access?", "N"));
36  
37          suppressAdvancedNamePrompt();
38          return props;
39      }
40  
41      @Override
42      public void promptForAdvancedProperties(TemplateContextItemProperties props, PluginModuleLocation moduleLocation) throws PrompterException
43      {
44  
45      }
46  
47      protected void promptForRefOrClass(TemplateContextItemProperties props) throws PrompterException
48      {
49          String componentRef = prompt("Enter Component-Ref Key (leave blank to specify class)");
50          if (StringUtils.isBlank(componentRef))
51          {
52              String className = promptFullyQualifiedJavaClassBlankOK("Enter Fully Qualified Class Name", "");
53              if (StringUtils.isBlank(className))
54              {
55                  promptForRefOrClass(props);
56              } else
57              {
58                  props.setFullyQualifiedClassname(className);
59              }
60          } else
61          {
62              props.setComponentRef(componentRef);
63          }
64      }
65  }