1   
2   package com.atlassian.maven.plugins.amps.product.studio;
3   
4   import static com.atlassian.maven.plugins.amps.product.ProductHandlerFactory.STUDIO_JIRA;
5   
6   import java.io.File;
7   import java.util.HashMap;
8   import java.util.List;
9   import java.util.Map;
10  
11  import org.apache.maven.plugin.MojoExecutionException;
12  import com.atlassian.maven.plugins.amps.MavenContext;
13  import com.atlassian.maven.plugins.amps.MavenGoals;
14  import com.atlassian.maven.plugins.amps.Product;
15  import com.atlassian.maven.plugins.amps.ProductArtifact;
16  import com.atlassian.maven.plugins.amps.product.JiraProductHandler;
17  import com.atlassian.maven.plugins.amps.util.ConfigFileUtils;
18  import com.atlassian.maven.plugins.amps.util.ConfigFileUtils.Replacement;
19  import com.google.common.collect.Lists;
20  
21  
22  public class StudioJiraProductHandler extends JiraProductHandler implements StudioComponentProductHandler
23  {
24      public StudioJiraProductHandler(final MavenContext context, final MavenGoals goals)
25      {
26          super(context, goals);
27      }
28  
29  
30      @Override
31      public String getId()
32      {
33          return STUDIO_JIRA;
34      }
35  
36      @Override
37      public ProductArtifact getArtifact()
38      {
39          return new ProductArtifact("com.atlassian.studio", "studio-jira", "RELEASE");
40      }
41  
42      @Override
43      protected void addProductHandlerOverrides(Product ctx, File homeDir, File explodedWarDir) throws MojoExecutionException
44      {
45  
46          // change database to hsql
47          List<File> configFiles = Lists.newArrayList();
48          configFiles.add(new File(explodedWarDir, "WEB-INF/classes/entityengine.xml"));
49          configFiles.add(new File(explodedWarDir, "WEB-INF/web.xml"));
50  
51          List<Replacement> replacements = Lists.newArrayList();
52          replacements.add(new Replacement("field-type-name=\"postgres72\"", "field-type-name=\"hsql\""));
53          replacements.add(new Replacement("schema-name=\"public\"", "schema-name=\"PUBLIC\""));
54          replacements.add(new Replacement("%JIRA-HOME%", homeDir.getAbsolutePath()));
55  
56          ConfigFileUtils.replace(configFiles, replacements, false, log);
57  
58          StudioProductHandler.addProductHandlerOverrides(log, ctx, homeDir, explodedWarDir);
59      }
60  
61      @Override
62      public Map<String, String> getSystemProperties(Product product)
63      {
64          Map<String, String> properties = new HashMap<String, String>(super.getSystemProperties(product));
65  
66          // We also add common studio system properties
67          properties.putAll(product.getStudioProperties().getSystemProperties());
68  
69          return properties;
70      }
71  
72  
73  
74  }