1   
2   package com.atlassian.maven.plugins.amps.product.studio;
3   
4   import static com.atlassian.maven.plugins.amps.product.ProductHandlerFactory.STUDIO_CROWD;
5   import static java.lang.String.format;
6   
7   import java.io.File;
8   import java.util.HashMap;
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.CrowdProductHandler;
17  
18  public class StudioCrowdProductHandler extends CrowdProductHandler implements StudioComponentProductHandler
19  {
20      public StudioCrowdProductHandler(final MavenContext context, final MavenGoals goals)
21      {
22          super(context, goals);
23      }
24  
25      @Override
26      public String getId()
27      {
28          return STUDIO_CROWD;
29      }
30  
31      @Override
32      public ProductArtifact getArtifact()
33      {
34          // We return the default artifact. May be overridden by the pom.
35          return new ProductArtifact("com.atlassian.studio", "studio-crowd", "RELEASE");
36      }
37  
38      @Override
39      public void processHomeDirectory(Product ctx, File homeDir) throws MojoExecutionException
40      {
41          super.processHomeDirectory(ctx, homeDir);
42          StudioProductHandler.processProductsHomeDirectory(log, ctx, homeDir);
43  
44      }
45  
46      @Override
47      protected void addProductHandlerOverrides(Product ctx, File homeDir, File explodedWarDir) throws MojoExecutionException
48      {
49          StudioProductHandler.addProductHandlerOverrides(log, ctx, homeDir, explodedWarDir);
50      }
51  
52      @Override
53      public Map<String, String> getSystemProperties(Product product)
54      {
55          Map<String, String> systemProperties = new HashMap<String, String>(super.getSystemProperties(product));
56          final String dbUrl = format("jdbc:hsqldb:%s/database", getHomeDirectory(product).getPath());
57          final String driverClass = "org.hsqldb.jdbcDriver";
58          final String username = "sa";
59          final String password = "";
60          final String datasourceTypeClass = "javax.sql.DataSource";
61  
62          final String datasource = format("cargo.datasource.url=%s", dbUrl);
63          final String driver = format("cargo.datasource.driver=%s", driverClass);
64          final String datasourceUsername = format("cargo.datasource.username=%s", username);
65          final String datasourcePassword = format("cargo.datasource.password=%s", password);
66          final String datasourceType = format("cargo.datasource.type=%s", datasourceTypeClass);
67          final String jndi = "cargo.datasource.jndi=jdbc/DefaultDS";
68  
69          systemProperties.put("cargo.datasource.datasource",
70                  format("%s|%s|%s|%s|%s|%s", datasource, driver, datasourceUsername, datasourcePassword, datasourceType, jndi));
71  
72          // We also add common studio system properties
73          systemProperties.putAll(product.getStudioProperties().getSystemProperties());
74  
75          return systemProperties;
76      }
77  
78  }