Restructure deployment
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 4 Jun 2008 14:55:58 +0000 (14:55 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 4 Jun 2008 14:55:58 +0000 (14:55 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1185 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

31 files changed:
org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/DistributionId.java [deleted file]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/VersionDistributionId.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/AbstractDeployedSystem.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystem.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystemId.java [deleted file]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystemManager.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/Deployment.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/ExecutableDeployment.java [deleted file]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/ManageableDeployedSystem.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/NumericDSId.java [deleted file]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/SimpleDeployedSytemManager.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/WritableDeployment.java [deleted file]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/SimpleSElement.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/StructureRegistry.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/NumericTRId.java [deleted file]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResultId.java [deleted file]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestRunDescriptor.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/CompositeTreeTestDefinition.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultPage.java
org.argeo.slc.core/src/main/java/org/argeo/slc/msg/test/tree/ResultPartRequest.java
org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/ApacheHttpdServer.java
org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/HttpdApplicationDeployment.java
org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/SimpleHttpdApplication.java
org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/db/DbModel.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/db/DbUnitDeployment.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/db/DbUnitDeploymentData.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/db/JdbcAware.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/db/SimpleJdbcDatabase.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/unit/test/tree/TreeTestResultTestUtils.java
org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionCastorTest.java
org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultCastorTest.java

diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/DistributionId.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/DistributionId.java
deleted file mode 100644 (file)
index c253a67..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.argeo.slc.core.build;\r
-\r
-/** The id uniquely identifying the distribution of a software system. \r
- * @deprecated*/\r
-public interface DistributionId {\r
-\r
-}\r
index 27ac020b3569f3cb9d68a2ee642617272ee5ed45..44a02cd6068d3698f2cded12db08df01bd70649e 100644 (file)
@@ -15,7 +15,7 @@ import java.util.StringTokenizer;
  * 2.4.12.RC1\r
  * </p>\r
  */\r
-public class VersionDistributionId implements DistributionId {\r
+public class VersionDistributionId {\r
 \r
        private Integer major;\r
        private Integer minor;\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/AbstractDeployedSystem.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/AbstractDeployedSystem.java
new file mode 100644 (file)
index 0000000..602e02d
--- /dev/null
@@ -0,0 +1,25 @@
+package org.argeo.slc.core.deploy;
+
+import org.argeo.slc.core.UnsupportedException;
+import org.argeo.slc.core.build.Distribution;
+
+public abstract class AbstractDeployedSystem implements DeployedSystem {
+       public String getDeployedSystemId() {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       public DeploymentData getDeploymentData() {
+               throw new UnsupportedException("Method not supported");
+       }
+
+       public Distribution getDistribution() {
+               throw new UnsupportedException("Method not supported");
+       }
+
+       public TargetData getTargetData() {
+               throw new UnsupportedException("Method not supported");
+       }
+
+
+}
index 2fabf5606d41545445dbfb9cbc130ea5008c9166..3b29c5ae4c907e9a40ab3a93cfa1317a44b24eef 100644 (file)
@@ -3,7 +3,13 @@ package org.argeo.slc.core.deploy;
 import org.argeo.slc.core.build.Distribution;\r
 \r
 /** An instance of a software system. */\r
-public interface DeployedSystem {\r
+public interface DeployedSystem<DISTRIBUTION extends Distribution, TARGET_DATA extends TargetData>\r
+               extends TargetData {\r
        public String getDeployedSystemId();\r
-       public Distribution getDistribution();\r
+\r
+       public DISTRIBUTION getDistribution();\r
+\r
+       public DeploymentData getDeploymentData();\r
+\r
+       public TARGET_DATA getTargetData();\r
 }\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystemId.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystemId.java
deleted file mode 100644 (file)
index ea4d192..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.argeo.slc.core.deploy;\r
-\r
-import org.argeo.slc.core.build.DistributionId;\r
-\r
-/** The id uniquely identifying a deployed system. \r
- * @deprecated*/\r
-public interface DeployedSystemId {\r
-       public DistributionId getDistributionId();\r
-}\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystemManager.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystemManager.java
new file mode 100644 (file)
index 0000000..281f81c
--- /dev/null
@@ -0,0 +1,5 @@
+package org.argeo.slc.core.deploy;
+
+public interface DeployedSystemManager<T extends DeployedSystem> {
+       public void setDeployedSystem(T deployedSystem);
+}
index 4a7403071bd6cfd66ffad24fef142543f2a836c0..d59e4c14638b42e520a5c7087bb10f9a69803a1c 100644 (file)
@@ -1,9 +1,16 @@
 package org.argeo.slc.core.deploy;\r
 \r
+import org.argeo.slc.core.build.Distribution;\r
+\r
 public interface Deployment {\r
        public DeployedSystem getDeployedSystem();\r
 \r
-       public TargetData getTargetData();\r
+       public void setTargetData(TargetData targetData);\r
+\r
+       public void setDeploymentData(DeploymentData deploymentData);\r
+       \r
+       public void setDistribution(Distribution distribution);\r
+\r
+       public void execute();\r
 \r
-       public DeploymentData getDeploymentData();\r
 }\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/ExecutableDeployment.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/ExecutableDeployment.java
deleted file mode 100644 (file)
index 284e6c5..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.argeo.slc.core.deploy;\r
-\r
-public interface ExecutableDeployment extends Deployment {\r
-       public void execute();\r
-}\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/ManageableDeployedSystem.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/ManageableDeployedSystem.java
new file mode 100644 (file)
index 0000000..6afee96
--- /dev/null
@@ -0,0 +1,6 @@
+package org.argeo.slc.core.deploy;
+
+public interface ManageableDeployedSystem extends DeployedSystem {
+       public void start();
+       public void stop();
+}
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/NumericDSId.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/NumericDSId.java
deleted file mode 100644 (file)
index 494fc8a..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.argeo.slc.core.deploy;\r
-\r
-import org.argeo.slc.core.build.DistributionId;\r
-\r
-/**\r
- * A basic implementation of a deployed system id, based on a long value and a\r
- * reference to a distribution id.\r
- */\r
-public class NumericDSId implements DeployedSystemId {\r
-\r
-       private Long value;\r
-       private DistributionId distributionId;\r
-\r
-       public Long getValue() {\r
-               return value;\r
-       }\r
-\r
-       public void setValue(Long value) {\r
-               this.value = value;\r
-       }\r
-\r
-       public DistributionId getDistributionId() {\r
-               return distributionId;\r
-       }\r
-\r
-       public void setDistributionId(DistributionId distributionId) {\r
-               this.distributionId = distributionId;\r
-       }\r
-\r
-       @Override\r
-       public boolean equals(Object obj) {\r
-               return value.toString().equals(obj.toString());\r
-       }\r
-\r
-       @Override\r
-       public String toString() {\r
-               return value.toString();\r
-       }\r
-\r
-}\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/SimpleDeployedSytemManager.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/SimpleDeployedSytemManager.java
new file mode 100644 (file)
index 0000000..71483db
--- /dev/null
@@ -0,0 +1,12 @@
+package org.argeo.slc.core.deploy;
+
+public class SimpleDeployedSytemManager implements
+               DeployedSystemManager<ManageableDeployedSystem> {
+
+       private ManageableDeployedSystem deployedSystem;
+
+       public void setDeployedSystem(ManageableDeployedSystem deployedSystem) {
+               this.deployedSystem = deployedSystem;
+       }
+
+}
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/WritableDeployment.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/WritableDeployment.java
deleted file mode 100644 (file)
index 15c3ccb..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.argeo.slc.core.deploy;\r
-\r
-public interface WritableDeployment extends ExecutableDeployment {\r
-       public void setDeployedSystem(DeployedSystem deployedSystem);\r
-\r
-       public void setTargetData(TargetData targetData);\r
-\r
-       public void setDeploymentData(DeploymentData deploymentData);\r
-}\r
index 9faea935fb28ac7af3927e672985e719abaff436..6fcef33c82de990dc5019ce3dc786ae34e9fbb99 100644 (file)
@@ -3,7 +3,7 @@ package org.argeo.slc.core.structure;
 import java.util.Map;\r
 import java.util.TreeMap;\r
 \r
-import javax.swing.tree.TreeSelectionModel;\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
 \r
 /**\r
  * Basic implementation of <code>StructureElement</code>.\r
index 71f80cb772f7018fd2c7d0ed32e4f18659c51af4..eac04b2bbf4bf2160165eb2f97af8eaf128709c3 100644 (file)
@@ -2,8 +2,6 @@ package org.argeo.slc.core.structure;
 \r
 import java.util.List;\r
 \r
-import org.argeo.slc.core.deploy.DeployedSystem;\r
-\r
 /** Registry where the whole structure is stored. */\r
 public interface StructureRegistry<P extends StructurePath> {\r
        /** Read mode: the structure is only read. */\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/NumericTRId.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/NumericTRId.java
deleted file mode 100644 (file)
index 0b1674a..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.argeo.slc.core.test;\r
-\r
-import org.argeo.slc.core.deploy.DeployedSystemId;\r
-\r
-/**\r
- * Basic implementation of test run id based on a long value and a reference to\r
- * a deployed system id.\r
- * \r
- * @deprecated\r
- */\r
-public class NumericTRId implements TestResultId {\r
-       /** For ORM */\r
-       private Long tid;\r
-\r
-       private Long value;\r
-       private DeployedSystemId deployedSystemId;\r
-\r
-       /** For ORM */\r
-       public NumericTRId() {\r
-\r
-       }\r
-\r
-       public NumericTRId(Long value) {\r
-               this.value = value;\r
-       }\r
-\r
-       /**\r
-        * Initializes the long value with the current time (based on\r
-        * <code>java.lang.System.currentTimeMillis()</code>).\r
-        */\r
-       public void init() {\r
-               if (getValue() == null) {\r
-                       setValue(System.currentTimeMillis());\r
-               }\r
-       }\r
-\r
-       public Long getValue() {\r
-               return value;\r
-       }\r
-\r
-       public void setValue(Long value) {\r
-               this.value = value;\r
-       }\r
-\r
-       public DeployedSystemId getDeployedSystemId() {\r
-               return deployedSystemId;\r
-       }\r
-\r
-       public void setDeployedSystemId(DeployedSystemId deployedSystemId) {\r
-               this.deployedSystemId = deployedSystemId;\r
-       }\r
-\r
-       @Override\r
-       public boolean equals(Object obj) {\r
-               return value.toString().equals(obj.toString());\r
-       }\r
-\r
-       @Override\r
-       public String toString() {\r
-               return value.toString();\r
-       }\r
-\r
-       Long getTid() {\r
-               return tid;\r
-       }\r
-\r
-       void setTid(Long tid) {\r
-               this.tid = tid;\r
-       }\r
-\r
-}\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResultId.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResultId.java
deleted file mode 100644 (file)
index 46af527..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.argeo.slc.core.test;\r
-\r
-import org.argeo.slc.core.deploy.DeployedSystemId;\r
-\r
-/**\r
- * The unique id referencing a test result.\r
- * \r
- * @deprecated\r
- */\r
-public interface TestResultId {\r
-       /** Gets the id of the related deployed system. */\r
-       public DeployedSystemId getDeployedSystemId();\r
-\r
-}\r
index d48ea2db9fbe5a4a58079e4f68c5f2662d86e781..d136e802c3b365f1ec8cd5ed830a712005a244b7 100644 (file)
@@ -1,7 +1,6 @@
 package org.argeo.slc.core.test;\r
 \r
 import org.argeo.slc.core.deploy.DeployedSystem;\r
-import org.argeo.slc.core.process.SlcExecution;\r
 \r
 public class TestRunDescriptor {\r
        private String testRunUuid;\r
index f26c085807285b0e2ba487364ea039a19da111bf..91534e36d75511c03129869e2a39a2bb4c469ccb 100644 (file)
@@ -5,12 +5,10 @@ import java.util.Vector;
 \r
 import org.apache.commons.logging.Log;\r
 import org.apache.commons.logging.LogFactory;\r
-\r
 import org.argeo.slc.core.structure.SimpleSElement;\r
 import org.argeo.slc.core.structure.StructureAware;\r
 import org.argeo.slc.core.structure.StructureElement;\r
 import org.argeo.slc.core.structure.StructureElementProvider;\r
-import org.argeo.slc.core.structure.StructurePath;\r
 import org.argeo.slc.core.structure.StructureRegistry;\r
 import org.argeo.slc.core.structure.tree.TreeSPath;\r
 import org.argeo.slc.core.test.TestDefinition;\r
index 69bba492e40caa7a7d488e41d5321daaee0b58cd..4cbb820709e205cce8791d17942c34e37ecfc70a 100644 (file)
@@ -1,17 +1,13 @@
 package org.argeo.slc.core.test.tree.htmlreport;\r
 \r
 import java.io.IOException;\r
-import java.io.PrintWriter;\r
-import java.io.StringWriter;\r
 import java.util.Date;\r
 import java.util.SortedMap;\r
 import java.util.TreeMap;\r
 \r
 import org.apache.commons.io.FileUtils;\r
-import org.apache.commons.io.IOUtils;\r
 import org.apache.commons.logging.Log;\r
 import org.apache.commons.logging.LogFactory;\r
-\r
 import org.argeo.slc.core.structure.StructureElement;\r
 import org.argeo.slc.core.structure.StructureRegistry;\r
 import org.argeo.slc.core.structure.tree.TreeSPath;\r
index ac09087114e7d4bd8f60b3c3305aaf7a88d8c1d3..a02375920b3a5c3f2e2b0998a8d52b50df7d0b75 100644 (file)
@@ -3,7 +3,6 @@ package org.argeo.slc.msg.test.tree;
 import java.util.Map;\r
 \r
 import org.argeo.slc.core.SlcException;\r
-import org.argeo.slc.core.process.SlcExecution;\r
 import org.argeo.slc.core.structure.StructureElement;\r
 import org.argeo.slc.core.structure.tree.TreeSPath;\r
 import org.argeo.slc.core.test.SimpleResultPart;\r
index 6d77cdd51aab70f740e4ea0853fa2f1525eaa768..71227bf8393a2d71f1aa73c4747ba957045c680c 100644 (file)
@@ -6,6 +6,8 @@ import java.net.URL;
 \r
 import org.argeo.slc.core.SlcException;\r
 import org.argeo.slc.core.build.Distribution;\r
+import org.argeo.slc.core.deploy.DeploymentData;\r
+import org.argeo.slc.core.deploy.TargetData;\r
 import org.springframework.core.io.Resource;\r
 \r
 public class ApacheHttpdServer implements WebServer {\r
@@ -44,4 +46,14 @@ public class ApacheHttpdServer implements WebServer {
                return null;\r
        }\r
 \r
+       public DeploymentData getDeploymentData() {\r
+               // TODO Auto-generated method stub\r
+               return null;\r
+       }\r
+\r
+       public TargetData getTargetData() {\r
+               // TODO Auto-generated method stub\r
+               return null;\r
+       }\r
+\r
 }\r
index 79eb0bd4fb318f60e276e126d15d989e01881758..6c6cffdce05a04e3256baff08735bbd59840c228 100644 (file)
@@ -8,11 +8,11 @@ import org.argeo.slc.core.SlcException;
 import org.argeo.slc.core.build.Distribution;\r
 import org.argeo.slc.core.deploy.DeployEnvironment;\r
 import org.argeo.slc.core.deploy.DeployedSystem;\r
+import org.argeo.slc.core.deploy.Deployment;\r
 import org.argeo.slc.core.deploy.DeploymentData;\r
-import org.argeo.slc.core.deploy.ExecutableDeployment;\r
 import org.argeo.slc.core.deploy.TargetData;\r
 \r
-public class HttpdApplicationDeployment implements ExecutableDeployment {\r
+public class HttpdApplicationDeployment implements Deployment {\r
        private static final Log log = LogFactory\r
                        .getLog(HttpdApplicationDeployment.class);\r
 \r
@@ -25,20 +25,21 @@ public class HttpdApplicationDeployment implements ExecutableDeployment {
 \r
        public void execute() {\r
                try {\r
-                       deployEnvironment.unpackTo(getDistribution(), targetData\r
+                       deployEnvironment.unpackTo(distribution, targetData\r
                                        .getTargetRootLocation(), null);\r
-                       \r
+\r
                        // FIXME: make it generic\r
                        String deployDataPath = targetData.getTargetRootLocation()\r
                                        .getCanonicalPath();\r
-                       \r
-                       deployEnvironment.unpackTo(getDeploymentData(), new File(\r
-                                       deployDataPath), null);\r
+\r
+                       deployEnvironment.unpackTo(deploymentData,\r
+                                       new File(deployDataPath), null);\r
                        deployedSystem = new SimpleHttpdApplication();\r
                        deployedSystem.setTargetData(targetData);\r
 \r
+                       log.info("Deployed " + distribution + " to " + targetData);\r
                } catch (Exception e) {\r
-                       throw new SlcException("Cannot deploy " + deploymentData + " to "\r
+                       throw new SlcException("Cannot deploy " + distribution + " to "\r
                                        + targetData, e);\r
                }\r
 \r
@@ -56,18 +57,6 @@ public class HttpdApplicationDeployment implements ExecutableDeployment {
                return deployedSystem;\r
        }\r
 \r
-       public DeploymentData getDeploymentData() {\r
-               return deploymentData;\r
-       }\r
-\r
-       public TargetData getTargetData() {\r
-               return targetData;\r
-       }\r
-\r
-       public Distribution getDistribution() {\r
-               return distribution;\r
-       }\r
-\r
        public void setDistribution(Distribution distribution) {\r
                this.distribution = distribution;\r
        }\r
index bb98c383f3ff01a5091ed710c2350450819daba1..bbcf60dfb1271be28178aacb3b717c0c2ec0dfdf 100644 (file)
@@ -4,6 +4,7 @@ import java.io.File;
 import java.net.URL;\r
 \r
 import org.argeo.slc.core.build.Distribution;\r
+import org.argeo.slc.core.deploy.DeploymentData;\r
 \r
 public class SimpleHttpdApplication implements WebApplication {\r
        private HttpdApplicationTargetData targetData;\r
@@ -38,4 +39,9 @@ public class SimpleHttpdApplication implements WebApplication {
                return distribution;\r
        }\r
 \r
+       public DeploymentData getDeploymentData() {\r
+               // TODO Auto-generated method stub\r
+               return null;\r
+       }\r
+\r
 }\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/db/DbModel.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/db/DbModel.java
new file mode 100644 (file)
index 0000000..6140d7b
--- /dev/null
@@ -0,0 +1,7 @@
+package org.argeo.slc.support.deploy.db;
+
+import java.sql.Connection;
+
+public interface DbModel {
+       public void createSchema(Connection connection);
+}
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/db/DbUnitDeployment.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/db/DbUnitDeployment.java
new file mode 100644 (file)
index 0000000..9df6a1d
--- /dev/null
@@ -0,0 +1,80 @@
+package org.argeo.slc.support.deploy.db;\r
+\r
+import java.sql.SQLException;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+import org.argeo.slc.core.SlcException;\r
+import org.argeo.slc.core.UnsupportedException;\r
+import org.argeo.slc.core.build.Distribution;\r
+import org.argeo.slc.core.deploy.DeployedSystem;\r
+import org.argeo.slc.core.deploy.Deployment;\r
+import org.argeo.slc.core.deploy.DeploymentData;\r
+import org.argeo.slc.core.deploy.TargetData;\r
+import org.dbunit.DataSourceDatabaseTester;\r
+import org.dbunit.DatabaseUnitException;\r
+import org.dbunit.IDatabaseTester;\r
+import org.dbunit.database.IDatabaseConnection;\r
+import org.dbunit.dataset.IDataSet;\r
+import org.dbunit.operation.DatabaseOperation;\r
+\r
+public class DbUnitDeployment implements Deployment {\r
+       private static Log log = LogFactory.getLog(DbUnitDeployment.class);\r
+\r
+       private JdbcAware mxDatabase;\r
+       private DbUnitDeploymentData deploymentData;\r
+       private DbModel dbModel;\r
+\r
+       public void execute() {\r
+               try {\r
+                       IDatabaseTester databaseTester = new DataSourceDatabaseTester(\r
+                                       mxDatabase.getDataSource());\r
+                       databaseTester.setSetUpOperation(new DatabaseOperation() {\r
+\r
+                               @Override\r
+                               public void execute(IDatabaseConnection connection,\r
+                                               IDataSet dataSet) throws DatabaseUnitException,\r
+                                               SQLException {\r
+                                       if (dbModel != null) {\r
+                                               dbModel.createSchema(connection.getConnection());\r
+                                               DatabaseOperation.INSERT.execute(connection, dataSet);\r
+                                       } else {\r
+                                               DatabaseOperation.UPDATE.execute(connection, dataSet);\r
+                                       }\r
+                               }\r
+\r
+                       });\r
+                       databaseTester.setDataSet(deploymentData.createDataSet());\r
+                       databaseTester.onSetup();\r
+                       databaseTester.onTearDown();\r
+\r
+                       log.info("Database deployed.");\r
+               } catch (Exception e) {\r
+                       throw new SlcException("Could not initialize the database", e);\r
+               }\r
+       }\r
+\r
+       public DeployedSystem getDeployedSystem() {\r
+               // TODO: think of a more generic approach. MxDtaabse deployed system?\r
+               // (with deployment id etc.)\r
+               throw new UnsupportedException("Method not supported");\r
+       }\r
+\r
+       public void setDbModel(DbModel dbModel) {\r
+               this.dbModel = dbModel;\r
+       }\r
+\r
+       public void setDeploymentData(DeploymentData deploymentData) {\r
+               this.deploymentData = (DbUnitDeploymentData) deploymentData;\r
+       }\r
+\r
+       public void setTargetData(TargetData targetData) {\r
+               this.mxDatabase = (JdbcAware) targetData;\r
+\r
+       }\r
+\r
+       public void setDistribution(Distribution distribution) {\r
+               throw new UnsupportedException("Method not supported");\r
+       }\r
+\r
+}\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/db/DbUnitDeploymentData.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/db/DbUnitDeploymentData.java
new file mode 100644 (file)
index 0000000..0e36123
--- /dev/null
@@ -0,0 +1,31 @@
+package org.argeo.slc.support.deploy.db;\r
+\r
+import java.io.InputStream;\r
+\r
+import org.argeo.slc.core.SlcException;\r
+import org.argeo.slc.core.deploy.DeploymentData;\r
+import org.dbunit.dataset.IDataSet;\r
+import org.dbunit.dataset.xml.FlatXmlDataSet;\r
+import org.springframework.core.io.Resource;\r
+\r
+public class DbUnitDeploymentData implements DeploymentData{\r
+       private Resource dataSetLocation;\r
+\r
+       public IDataSet createDataSet(){\r
+               try {\r
+                       InputStream in = dataSetLocation.getInputStream();\r
+                       IDataSet dataSet = new FlatXmlDataSet(in);\r
+                       in.close();\r
+                       return dataSet;\r
+               } catch (Exception e) {\r
+                       throw new SlcException("Cannot create data set", e);\r
+               }\r
+\r
+       }\r
+       \r
+       public void setDataSetLocation(Resource dataSetLocation) {\r
+               this.dataSetLocation = dataSetLocation;\r
+       }\r
+       \r
+       \r
+}\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/db/JdbcAware.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/db/JdbcAware.java
new file mode 100644 (file)
index 0000000..0d4de5e
--- /dev/null
@@ -0,0 +1,7 @@
+package org.argeo.slc.support.deploy.db;
+
+import javax.sql.DataSource;
+
+public interface JdbcAware {
+       public DataSource getDataSource();
+}
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/db/SimpleJdbcDatabase.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/support/deploy/db/SimpleJdbcDatabase.java
new file mode 100644 (file)
index 0000000..2979903
--- /dev/null
@@ -0,0 +1,27 @@
+package org.argeo.slc.support.deploy.db;
+
+import javax.sql.DataSource;
+
+import org.argeo.slc.core.UnsupportedException;
+import org.argeo.slc.core.build.Distribution;
+import org.argeo.slc.core.deploy.AbstractDeployedSystem;
+import org.argeo.slc.core.deploy.DeployedSystem;
+import org.argeo.slc.core.deploy.DeploymentData;
+import org.argeo.slc.core.deploy.TargetData;
+
+public class SimpleJdbcDatabase extends AbstractDeployedSystem implements
+               JdbcAware {
+       private DataSource dataSource;
+
+       public String getDeployedSystemId() {
+               return dataSource.toString();
+       }
+
+       public DataSource getDataSource() {
+               return dataSource;
+       }
+
+       public void setDataSource(DataSource dataSource) {
+               this.dataSource = dataSource;
+       }
+}
index 944fe2e6439c39ed8059c9d84dd3b80a3981c826..c602c0b94bedfa3362ec79c40b2446fc05deff31 100644 (file)
@@ -4,6 +4,8 @@ import java.util.UUID;
 \r
 import org.argeo.slc.core.build.Distribution;\r
 import org.argeo.slc.core.deploy.DeployedSystem;\r
+import org.argeo.slc.core.deploy.DeploymentData;\r
+import org.argeo.slc.core.deploy.TargetData;\r
 import org.argeo.slc.core.process.SlcExecution;\r
 import org.argeo.slc.core.process.SlcExecutionStep;\r
 import org.argeo.slc.core.structure.SimpleSElement;\r
@@ -56,6 +58,17 @@ public abstract class TreeTestResultTestUtils {
                        public Distribution getDistribution() {\r
                                return null;\r
                        }\r
+\r
+                       public DeploymentData getDeploymentData() {\r
+                               // TODO Auto-generated method stub\r
+                               return null;\r
+                       }\r
+\r
+                       public TargetData getTargetData() {\r
+                               // TODO Auto-generated method stub\r
+                               return null;\r
+                       }\r
+\r
                });\r
                testRun.notifySlcExecution(slcExecution);\r
 \r
@@ -90,7 +103,8 @@ public abstract class TreeTestResultTestUtils {
                return partFailed;\r
        }\r
 \r
-       public static ResultPartRequest createSimpleResultPartRequest(TreeTestResult ttr) {\r
+       public static ResultPartRequest createSimpleResultPartRequest(\r
+                       TreeTestResult ttr) {\r
                TreeSPath path = ttr.getCurrentPath();\r
                PartSubList lst = ttr.getResultParts().get(path);\r
                SimpleResultPart part = (SimpleResultPart) lst.getParts().get(2);\r
index 8ede3a234ba6ef628e92cea3ffc1e972dcfa8569..efb4cf5133cd352cfc263b39148e9e91ab63dd8f 100644 (file)
@@ -1,13 +1,10 @@
 package org.argeo.slc.core.process;\r
 \r
 import java.io.IOException;\r
-import java.io.InputStream;\r
 import java.io.StringReader;\r
-import java.io.StringWriter;\r
 import java.text.SimpleDateFormat;\r
 import java.util.UUID;\r
 \r
-import javax.xml.transform.stream.StreamResult;\r
 import javax.xml.transform.stream.StreamSource;\r
 \r
 import org.apache.commons.io.IOUtils;\r
@@ -18,13 +15,11 @@ import org.argeo.slc.msg.process.SlcExecutionStepsRequest;
 import org.argeo.slc.unit.AbstractSpringTestCase;\r
 import org.argeo.slc.unit.UnitXmlUtils;\r
 import org.argeo.slc.unit.process.SlcExecutionTestUtils;\r
-\r
 import org.springframework.oxm.Marshaller;\r
 import org.springframework.oxm.Unmarshaller;\r
 import org.springframework.xml.transform.StringResult;\r
 import org.springframework.xml.transform.StringSource;\r
 import org.springframework.xml.validation.XmlValidator;\r
-import org.springframework.xml.xsd.XsdSchema;\r
 \r
 public class SlcExecutionCastorTest extends AbstractSpringTestCase {\r
        private Log log = LogFactory.getLog(getClass());\r
index aec7a68b40aab5935c28d06104fda662aac61e98..baf8e3b7e4342edf4999ba548b78109cc102f49c 100644 (file)
@@ -1,26 +1,22 @@
 package org.argeo.slc.core.test.tree;\r
 \r
-import org.springframework.oxm.Marshaller;\r
-import org.springframework.oxm.Unmarshaller;\r
-import org.springframework.xml.transform.StringResult;\r
-import org.springframework.xml.transform.StringSource;\r
-import org.springframework.xml.validation.XmlValidator;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-\r
 import static org.argeo.slc.unit.UnitUtils.assertDateSec;\r
 import static org.argeo.slc.unit.test.tree.TreeTestResultTestUtils.createCompleteTreeTestResult;\r
 import static org.argeo.slc.unit.test.tree.TreeTestResultTestUtils.createSimpleResultPartRequest;\r
 \r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.core.test.SimpleResultPart;\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
 import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest;\r
 import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest;\r
 import org.argeo.slc.msg.test.tree.ResultPartRequest;\r
 import org.argeo.slc.unit.AbstractSpringTestCase;\r
 import org.argeo.slc.unit.UnitXmlUtils;\r
 import org.argeo.slc.unit.test.tree.UnitTestTreeUtil;\r
+import org.springframework.oxm.Marshaller;\r
+import org.springframework.oxm.Unmarshaller;\r
+import org.springframework.xml.transform.StringResult;\r
+import org.springframework.xml.transform.StringSource;\r
+import org.springframework.xml.validation.XmlValidator;\r
 \r
 public class TreeTestResultCastorTest extends AbstractSpringTestCase {\r
        private Log log = LogFactory.getLog(getClass());\r