1   package com.atlassian.maven.plugins.amps.product;
2   
3   import com.atlassian.maven.plugins.amps.MavenContext;
4   import com.atlassian.maven.plugins.amps.MavenGoals;
5   import com.atlassian.maven.plugins.amps.product.studio.StudioBambooProductHandler;
6   import com.atlassian.maven.plugins.amps.product.studio.StudioConfluenceProductHandler;
7   import com.atlassian.maven.plugins.amps.product.studio.StudioCrowdProductHandler;
8   import com.atlassian.maven.plugins.amps.product.studio.StudioFeCruProductHandler;
9   import com.atlassian.maven.plugins.amps.product.studio.StudioJiraProductHandler;
10  import com.atlassian.maven.plugins.amps.product.studio.StudioProductHandler;
11  
12  import java.util.Arrays;
13  import java.util.Collection;
14  
15  public class ProductHandlerFactory
16  {
17      public static final String REFAPP = "refapp";
18      public static final String CONFLUENCE = "confluence";
19      public static final String JIRA = "jira";
20      public static final String BAMBOO = "bamboo";
21      public static final String FECRU = "fecru";
22      public static final String CROWD = "crowd";
23      public static final String STASH = "stash";
24  
25      public static final String STUDIO = "studio";
26      public static final String STUDIO_CONFLUENCE = "studio-confluence";
27      public static final String STUDIO_JIRA = "studio-jira";
28      public static final String STUDIO_BAMBOO = "studio-bamboo";
29      public static final String STUDIO_FECRU = "studio-fecru";
30      public static final String STUDIO_CROWD = "studio-crowd";
31  
32  
33  
34      public static ProductHandler create(String id, MavenContext context, MavenGoals goals)
35      {
36          if (REFAPP.equals(id))
37          {
38              return new RefappProductHandler(context, goals);
39          }
40          else if (CONFLUENCE.equals(id))
41          {
42              return new ConfluenceProductHandler(context, goals);
43          }
44          else if (JIRA.equals(id))
45          {
46              return new JiraProductHandler(context, goals);
47          }
48          else if (BAMBOO.equals(id))
49          {
50              return new BambooProductHandler(context, goals);
51          }
52          else if (FECRU.equals(id))
53          {
54              return new FeCruProductHandler(context, goals);
55          }
56          else if (CROWD.equals(id))
57          {
58              return new CrowdProductHandler(context, goals);
59          }
60  
61          else if (STASH.equals(id))
62          {
63              return new StashProductHandler(context, goals);
64          }
65  
66          // The Studio product itself
67          else if (STUDIO.equals(id))
68          {
69              return new StudioProductHandler(context, goals);
70          }
71  
72          // The Studio products (products which are part of)
73          else if (STUDIO_CONFLUENCE.equals(id))
74          {
75              return new StudioConfluenceProductHandler(context, goals);
76          }
77          else if (STUDIO_JIRA.equals(id))
78          {
79              return new StudioJiraProductHandler(context, goals);
80          }
81          else if (STUDIO_BAMBOO.equals(id))
82          {
83              return new StudioBambooProductHandler(context, goals);
84          }
85          else if (STUDIO_FECRU.equals(id))
86          {
87              return new StudioFeCruProductHandler(context, goals);
88          }
89          else if (STUDIO_CROWD.equals(id))
90          {
91              return new StudioCrowdProductHandler(context, goals);
92          }
93  
94  
95          throw new IllegalArgumentException("Unknown product id: '" + id + "' Valid values: "
96              + Arrays.toString(getIds().toArray()));
97      }
98  
99      public static Collection<String> getIds()
100     {
101         return Arrays.asList(REFAPP, CONFLUENCE, JIRA, BAMBOO, FECRU, CROWD, STASH,
102                 STUDIO, STUDIO_CONFLUENCE, STUDIO_JIRA, STUDIO_BAMBOO, STUDIO_FECRU, STUDIO_CROWD);
103     }
104 }