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
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 }