1 package com.atlassian.maven.plugins.amps.codegen.prompter.common;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import com.atlassian.maven.plugins.amps.codegen.prompter.AbstractModulePrompter;
7 import com.atlassian.plugins.codegen.modules.PluginModuleProperties;
8 import com.atlassian.plugins.codegen.modules.common.Resource;
9
10 import org.apache.commons.lang.StringUtils;
11 import org.codehaus.plexus.components.interactivity.Prompter;
12 import org.codehaus.plexus.components.interactivity.PrompterException;
13
14
15
16
17 public abstract class AbstractResourcePrompter<T extends PluginModuleProperties> extends AbstractModulePrompter<T>
18 {
19
20 public AbstractResourcePrompter(Prompter prompter)
21 {
22 super(prompter);
23 }
24
25 protected List<Resource> promptForResources() throws PrompterException
26 {
27 List<Resource> resources = new ArrayList<Resource>();
28 promptForResources(resources);
29 return resources;
30 }
31
32 protected void promptForResources(List<Resource> resources) throws PrompterException
33 {
34 if (promptForBoolean("Add Resource", "N"))
35 {
36 resources.add(promptForResource());
37 promptForResources(resources);
38 }
39 }
40
41 protected Resource promptForResource() throws PrompterException
42 {
43 Resource resource = new Resource();
44 promptForResourceNameOrPattern(resource);
45
46 resource.setType(promptNotBlank("Enter Resource Type", "download"));
47 resource.setLocation(promptNotBlank("Enter Location (path to resource file)"));
48
49 resource.setParams(promptForParams("Add Resource Parameter?"));
50
51 return resource;
52 }
53
54 protected void promptForResourceNameOrPattern(Resource resource) throws PrompterException
55 {
56 String name = prompt("Enter Resource Name (leave blank to use namePattern)");
57 if (StringUtils.isNotBlank(name))
58 {
59 resource.setName(name);
60 } else
61 {
62 String namePattern = prompt("Enter Resource Name Pattern");
63 if (StringUtils.isNotBlank(namePattern))
64 {
65 resource.setNamePattern(namePattern);
66 } else
67 {
68 promptForResourceNameOrPattern(resource);
69 }
70 }
71 }
72
73 }