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