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