]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/BasicDeployEnvironment.java
Migrate deploy developments to main project
[gpl/argeo-slc.git] / org.argeo.slc.core / src / main / java / org / argeo / slc / support / deploy / BasicDeployEnvironment.java
1 package org.argeo.slc.support.deploy;
2
3 import java.io.File;
4 import java.net.URL;
5 import java.util.Map;
6 import java.util.Properties;
7 import java.util.UUID;
8
9 import org.apache.commons.logging.Log;
10 import org.apache.commons.logging.LogFactory;
11 import org.argeo.slc.ant.AntRegistryUtil;
12 import org.argeo.slc.core.SlcException;
13 import org.argeo.slc.core.deploy.DeployEnvironment;
14 import org.argeo.slc.maven.MavenFile;
15 import org.argeo.slc.maven.MavenManager;
16
17 public class BasicDeployEnvironment implements DeployEnvironment {
18 private static final Log log = LogFactory
19 .getLog(BasicDeployEnvironment.class);
20 private MavenManager mavenManager;
21
22 public void unpackTo(Object packg, File targetLocation,
23 Map<String, String> filter) {
24 File packageLocation;
25 String type = null;
26 String removeRootDir = "enabled";
27 if (packg instanceof MavenFile) {
28 packageLocation = mavenManager
29 .getPackageLocation((MavenFile) packg);
30 type = ((MavenFile) packg).getType();
31 } else if (packg instanceof File) {
32 packageLocation = (File) packg;
33 // TODO: type based on extension
34 } else {
35 throw new SlcException("Unrecognized package type "
36 + packg.getClass());
37 }
38 if (log.isDebugEnabled()) {
39 log.debug("Unpack " + packageLocation + " of type " + type + " to "
40 + targetLocation);
41 }
42
43 try {
44 File tempDir = new File("/tmp/"+UUID.randomUUID().toString());
45 tempDir.mkdirs();
46 targetLocation.mkdirs();
47 Properties props = new Properties();
48 props.setProperty("dest", targetLocation.getAbsolutePath());
49 props.setProperty("src", packageLocation.getAbsolutePath());
50 props.setProperty("tempDir", tempDir.getAbsolutePath());
51 props.setProperty("removeRootDir", removeRootDir);
52
53 URL antUrl = getClass().getClassLoader().getResource(
54 "org/argeo/slc/support/deploy/ant/build.xml");
55
56 if (type == null || type.equals("zip")) {
57 AntRegistryUtil.runAll(antUrl, "deployZip", props);
58 } else if (type.equals("tar.gz")) {
59 AntRegistryUtil.runAll(antUrl, "deployTarGz", props);
60 } else {
61 throw new SlcException("Unknow package type " + type);
62 }
63 } catch (SlcException e) {
64 throw e;
65 } catch (Exception e) {
66 throw new SlcException("Cannot unpack package " + packg + " to "
67 + targetLocation, e);
68 }
69 }
70
71 public void setMavenManager(MavenManager mavenManager) {
72 this.mavenManager = mavenManager;
73 }
74
75 }