]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Introduce SlcExecutionSpec
authorMathieu Baudier <mbaudier@argeo.org>
Tue, 27 Jan 2009 17:30:59 +0000 (17:30 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Tue, 27 Jan 2009 17:30:59 +0000 (17:30 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@2143 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/process/SlcExecutionSpec.java [new file with mode: 0644]
runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/process/SlcExecutionSpecField.java [new file with mode: 0644]
runtime/org.argeo.slc.support.castor/src/main/resources/org/argeo/slc/castor/process.xml
runtime/org.argeo.slc.support.castor/src/test/java/org/argeo/slc/castor/AbstractCastorTestCase.java
runtime/org.argeo.slc.support.castor/src/test/java/org/argeo/slc/castor/SlcExecutionSpecCastorTest.java [new file with mode: 0644]
runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/process/SlcExecutionSpec.hbm.xml [new file with mode: 0644]
runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/runtime/SlcAgentDescriptor.hbm.xml
runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/spring/applicationContext.xml

diff --git a/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/process/SlcExecutionSpec.java b/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/process/SlcExecutionSpec.java
new file mode 100644 (file)
index 0000000..72ab0e4
--- /dev/null
@@ -0,0 +1,27 @@
+package org.argeo.slc.process;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class SlcExecutionSpec {
+       private Long tid;
+       private Map<String, SlcExecutionSpecField> executionSpecFields = new HashMap<String, SlcExecutionSpecField>();
+
+       public Long getTid() {
+               return tid;
+       }
+
+       public void setTid(Long tid) {
+               this.tid = tid;
+       }
+
+       public Map<String, SlcExecutionSpecField> getExecutionSpecFields() {
+               return executionSpecFields;
+       }
+
+       public void setExecutionSpecFields(
+                       Map<String, SlcExecutionSpecField> executionSpecFields) {
+               this.executionSpecFields = executionSpecFields;
+       }
+
+}
diff --git a/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/process/SlcExecutionSpecField.java b/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/process/SlcExecutionSpecField.java
new file mode 100644 (file)
index 0000000..88bd650
--- /dev/null
@@ -0,0 +1,41 @@
+package org.argeo.slc.process;
+
+public class SlcExecutionSpecField {
+       private String label;
+       private String type;
+       private String defaultValue;
+       private String listValues;
+
+       public String getLabel() {
+               return label;
+       }
+
+       public void setLabel(String label) {
+               this.label = label;
+       }
+
+       public String getType() {
+               return type;
+       }
+
+       public void setType(String type) {
+               this.type = type;
+       }
+
+       public String getDefaultValue() {
+               return defaultValue;
+       }
+
+       public void setDefaultValue(String defaultValue) {
+               this.defaultValue = defaultValue;
+       }
+
+       public String getListValues() {
+               return listValues;
+       }
+
+       public void setListValues(String listValues) {
+               this.listValues = listValues;
+       }
+
+}
index 5cb7ccd5815306c4c2bb46f8ac4ad1cfcdf9f0fb..be807ff0f2302987d03513af18c59a122320aab8 100644 (file)
@@ -22,8 +22,8 @@
                <field name="attributes" collection="map">\r
                        <bind-xml name="attribute" location="attributes">\r
                                <class name="org.exolab.castor.mapping.MapItem">\r
-                                       <map-to\r
-                                               ns-uri="http://argeo.org/projects/slc/schemas" ns-prefix="slc" />\r
+                                       <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+                                               ns-prefix="slc" />\r
                                        <field name="key" type="string">\r
                                                <bind-xml name="name" node="attribute" />\r
                                        </field>\r
                        <bind-xml name="log-line" location="log-lines" />\r
                </field>\r
        </class>\r
-       \r
+\r
+       <class name="org.argeo.slc.process.SlcExecutionSpec">\r
+               <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+                       ns-prefix="slc" />\r
+               <field name="executionSpecFields" collection="map">\r
+                       <bind-xml name="execution-spec-field" location="execution-spec-fields">\r
+                               <class name="org.exolab.castor.mapping.MapItem">\r
+                                       <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+                                               ns-prefix="slc" />\r
+                                       <field name="key" type="string">\r
+                                               <bind-xml name="name" node="attribute" />\r
+                                       </field>\r
+                                       <field name="value" type="org.argeo.slc.process.SlcExecutionSpecField">\r
+                                               <bind-xml auto-naming="deriveByClass" />\r
+                                       </field>\r
+                               </class>\r
+                       </bind-xml>\r
+               </field>\r
+       </class>\r
+\r
+       <class name="org.argeo.slc.process.SlcExecutionSpecField">\r
+               <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+                       ns-prefix="slc" />\r
+               <field name="label" />\r
+               <field name="type" />\r
+               <field name="defaultValue" />\r
+               <field name="listValues" />\r
+       </class>\r
+\r
 </mapping>
\ No newline at end of file
index b9dd33638b604a66c4ba1f202c7d56e925317cb7..346fc859fcd590ac131a9685cd746d96aeed036d 100644 (file)
@@ -22,14 +22,24 @@ public abstract class AbstractCastorTestCase extends AbstractSpringTestCase {
                unmarshaller = getBean(Unmarshaller.class);
        }
 
+       protected StringResult marshal(Object obj) throws Exception {
+               return marshal(obj, false);
+       }
+
        protected StringResult marshalAndValidate(Object obj) throws Exception {
+               return marshal(obj, true);
+       }
+
+       protected StringResult marshal(Object obj, boolean validate)
+                       throws Exception {
                StringResult xml = new StringResult();
                marshaller.marshal(obj, xml);
 
                log.info("Marshalled ResultPart Request: " + xml);
 
-               UnitXmlUtils.assertXmlValidation(getBean(XmlValidator.class),
-                               new StringSource(xml.toString()));
+               if (validate)
+                       UnitXmlUtils.assertXmlValidation(getBean(XmlValidator.class),
+                                       new StringSource(xml.toString()));
                return xml;
        }
 
@@ -39,8 +49,12 @@ public abstract class AbstractCastorTestCase extends AbstractSpringTestCase {
        }
 
        @SuppressWarnings("unchecked")
+       protected <T> T marshUnmarsh(Object obj, boolean validate) throws Exception {
+               StringResult xml = marshal(obj, validate);
+               return (T) unmarshal(xml);
+       }
+
        protected <T> T marshUnmarsh(Object obj) throws Exception {
-               StringResult xml = marshalAndValidate(obj);
-               return (T)unmarshal(xml);
+               return marshUnmarsh(obj, true);
        }
 }
diff --git a/runtime/org.argeo.slc.support.castor/src/test/java/org/argeo/slc/castor/SlcExecutionSpecCastorTest.java b/runtime/org.argeo.slc.support.castor/src/test/java/org/argeo/slc/castor/SlcExecutionSpecCastorTest.java
new file mode 100644 (file)
index 0000000..51d4c47
--- /dev/null
@@ -0,0 +1,27 @@
+package org.argeo.slc.castor;\r
+\r
+import org.argeo.slc.process.SlcExecutionSpec;\r
+import org.argeo.slc.process.SlcExecutionSpecField;\r
+\r
+public class SlcExecutionSpecCastorTest extends AbstractCastorTestCase {\r
+       public void testMarshalling() throws Exception {\r
+               SlcExecutionSpec spec = new SlcExecutionSpec();\r
+               \r
+               SlcExecutionSpecField field1 = new SlcExecutionSpecField();\r
+               field1.setLabel("Field1");\r
+               field1.setType("text");\r
+               field1.setDefaultValue("def");\r
+               spec.getExecutionSpecFields().put("field1", field1);\r
+               \r
+               SlcExecutionSpecField field2 = new SlcExecutionSpecField();\r
+               field2.setLabel("Field2");\r
+               field2.setType("list");\r
+               field2.setListValues("def,nodef");\r
+               field2.setDefaultValue("def");\r
+               spec.getExecutionSpecFields().put("field2", field2);\r
+               \r
+               SlcExecutionSpec specUnm = marshUnmarsh(spec,false);            \r
+               \r
+               \r
+       }\r
+}\r
diff --git a/runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/process/SlcExecutionSpec.hbm.xml b/runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/process/SlcExecutionSpec.hbm.xml
new file mode 100644 (file)
index 0000000..e86cffe
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC\r
+       "-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
+       "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
+<hibernate-mapping package="org.argeo.slc.process">\r
+       <class name="SlcExecutionSpec" table="SLC_EXECUTION_SPEC">\r
+               <cache usage="read-write" />\r
+\r
+               <id name="tid" column="T_ID">
+                       <generator class="native" />
+               </id>
+
+               <map name="executionSpecFields" table="SLC_EXEC_SPEC_FIELDS"
+                       cascade="all" lazy="false" sort="natural">
+                       <cache usage="read-write" />
+
+                       <key column="PARENT_ID" />
+                       <map-key column="KEY" type="string" />
+                       <composite-element class="org.argeo.slc.process.SlcExecutionSpecField">
+                               <property name="label" column="LABEL"/>
+                               <property name="type" column="TYPE"/>
+                               <property name="defaultValue" column="DEFAULT_VALUE"/>
+                       </composite-element>
+               </map>
+
+       </class>
+</hibernate-mapping>
\ No newline at end of file
index dbc7649002396d5c12869f908778243ca40299c7..a72834a27c1444a41ef5b7c1886fc63351d1739b 100644 (file)
@@ -7,6 +7,16 @@
                <cache usage="read-write" />\r
 \r
                <id name="uuid" column="UUID" />\r
-               <property name="host" column="HOST" />\r
+               <property name="host" column="HOST" />
+<!-- 
+               <map name="executionSpecs" table="AGENT_EXEC_SPEC_MAP" cascade="all"
+                       sort="natural">
+                       <cache usage="nonstrict-read-write" />
+                       <key column="PARENT_ID" />
+                       <map-key column="KEY" type="string" />
+                       <many-to-many class="org.argeo.slc.process.SlcExecutionSpec"
+                               column="ELEMENT_ID" unique="true" />
+               </map>
+                -->\r
        </class>
 </hibernate-mapping>
\ No newline at end of file
index ed52529339b0e69dd1370a121a5b3c6b63051f2c..08064c4af657f3775d09d52ec92446dfd643cd09 100644 (file)
@@ -42,6 +42,9 @@
                                <value>
                                        org/argeo/slc/hibernate/process/SlcExecutionStep.hbm.xml
                                </value>
+                               <value>
+                                       org/argeo/slc/hibernate/process/SlcExecutionSpec.hbm.xml
+                               </value>
                                <value>
                                        org/argeo/slc/hibernate/runtime/SlcAgentDescriptor.hbm.xml
                                </value>