From 8d05b68f46cccfcea47117b6116abbd14d1dfcee Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 21 Apr 2008 19:43:51 +0000 Subject: [PATCH] SlcExecution hibernate persistence git-svn-id: https://svn.argeo.org/slc/trunk@1018 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../slc/core/process/SlcExecutionStep.java | 21 +++++ .../slc/dao/process/SlcExecutionDao.java | 8 ++ .../process/SlcExecutionDaoHibernate.java | 20 +++++ .../org/argeo/slc/castor/process/mapping.xml | 77 +++++++++--------- .../hibernate/process/SlcExecution.hbm.xml | 21 +++++ .../process/SlcExecutionStep.hbm.xml | 18 +++++ .../org/argeo/slc/spring/templates.xml | 80 +++++++++++++++++++ .../main/resources/org/argeo/slc/xml/slc.xsd | 56 +++++++++++++ .../core/process/SlcExecutionCastorTest.java | 36 ++------- .../core/process/SlcExecutionTestUtils.java | 39 +++++++++ .../SlcExecutionWsIntegrationTest.java | 2 +- .../process/SlcExecutionHibernateTest.java | 34 ++++++++ .../src/test/resources/log4j.properties | 2 +- .../slc/hibernate/applicationContext.xml | 54 +++---------- 14 files changed, 354 insertions(+), 114 deletions(-) create mode 100644 org.argeo.slc.core/src/main/java/org/argeo/slc/dao/process/SlcExecutionDao.java create mode 100644 org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/process/SlcExecutionDaoHibernate.java create mode 100644 org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/process/SlcExecution.hbm.xml create mode 100644 org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/process/SlcExecutionStep.hbm.xml create mode 100644 org.argeo.slc.core/src/main/resources/org/argeo/slc/spring/templates.xml create mode 100644 org.argeo.slc.core/src/main/resources/org/argeo/slc/xml/slc.xsd create mode 100644 org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionTestUtils.java create mode 100644 org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/process/SlcExecutionHibernateTest.java diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionStep.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionStep.java index 0237e47b1..b18411136 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionStep.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionStep.java @@ -5,15 +5,36 @@ import java.io.StringReader; import java.io.StringWriter; import java.util.Date; import java.util.List; +import java.util.UUID; import java.util.Vector; import org.apache.commons.io.IOUtils; public class SlcExecutionStep { + private String uuid; private String type; private Date begin; private List logLines = new Vector(); + /** Empty constructor */ + public SlcExecutionStep() { + } + + public SlcExecutionStep(String type, String log) { + this.type = type; + this.begin = new Date(); + this.uuid = UUID.randomUUID().toString(); + addLog(log); + } + + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } + public String getType() { return type; } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/dao/process/SlcExecutionDao.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/dao/process/SlcExecutionDao.java new file mode 100644 index 000000000..71292e637 --- /dev/null +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/dao/process/SlcExecutionDao.java @@ -0,0 +1,8 @@ +package org.argeo.slc.dao.process; + +import org.argeo.slc.core.process.SlcExecution; + +public interface SlcExecutionDao { + public void create(SlcExecution slcExecution); + public SlcExecution getSlcExecution(String uuid); +} diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/process/SlcExecutionDaoHibernate.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/process/SlcExecutionDaoHibernate.java new file mode 100644 index 000000000..c761e8dda --- /dev/null +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/process/SlcExecutionDaoHibernate.java @@ -0,0 +1,20 @@ +package org.argeo.slc.hibernate.process; + +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; + +import org.argeo.slc.core.process.SlcExecution; +import org.argeo.slc.dao.process.SlcExecutionDao; + +public class SlcExecutionDaoHibernate extends HibernateDaoSupport implements + SlcExecutionDao { + + public void create(SlcExecution slcExecution) { + getHibernateTemplate().save(slcExecution); + } + + public SlcExecution getSlcExecution(String uuid) { + return (SlcExecution) getHibernateTemplate().get(SlcExecution.class, + uuid); + } + +} diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/process/mapping.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/process/mapping.xml index 0bfae5989..a22159eb3 100644 --- a/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/process/mapping.xml +++ b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/process/mapping.xml @@ -1,38 +1,41 @@ - - - - - - Process objects XML mapping - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Process objects XML mapping + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/process/SlcExecution.hbm.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/process/SlcExecution.hbm.xml new file mode 100644 index 000000000..bc41c4d67 --- /dev/null +++ b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/process/SlcExecution.hbm.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/process/SlcExecutionStep.hbm.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/process/SlcExecutionStep.hbm.xml new file mode 100644 index 000000000..ce22c71a4 --- /dev/null +++ b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/process/SlcExecutionStep.hbm.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/spring/templates.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/spring/templates.xml new file mode 100644 index 000000000..dc4cdd500 --- /dev/null +++ b/org.argeo.slc.core/src/main/resources/org/argeo/slc/spring/templates.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + org/argeo/slc/hibernate/structure/SimpleSElement.hbm.xml + + + org/argeo/slc/hibernate/structure/tree/TreeSPath.hbm.xml + + + org/argeo/slc/hibernate/structure/tree/TreeSRegistry.hbm.xml + + + org/argeo/slc/hibernate/test/NumericTRId.hbm.xml + + + org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml + + + org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml + + + org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml + + + org/argeo/slc/hibernate/process/SlcExecution.hbm.xml + + + org/argeo/slc/hibernate/process/SlcExecutionStep.hbm.xml + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/xml/slc.xsd b/org.argeo.slc.core/src/main/resources/org/argeo/slc/xml/slc.xsd new file mode 100644 index 000000000..93cbb9270 --- /dev/null +++ b/org.argeo.slc.core/src/main/resources/org/argeo/slc/xml/slc.xsd @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionCastorTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionCastorTest.java index 6405ca7bb..a9bc47e2c 100644 --- a/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionCastorTest.java +++ b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionCastorTest.java @@ -25,7 +25,7 @@ public class SlcExecutionCastorTest extends AbstractSpringTestCase { Marshaller marshaller = getBean("marshaller"); Unmarshaller unmarshaller = getBean("marshaller"); - SlcExecution slcExec = createSimpleSlcExecution(); + SlcExecution slcExec = SlcExecutionTestUtils.createSimpleSlcExecution(); SlcExecutionRequest msgSave = new SlcExecutionRequest(); msgSave.setSlcExecution(slcExec); @@ -34,11 +34,13 @@ public class SlcExecutionCastorTest extends AbstractSpringTestCase { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); SlcExecutionStep step0 = new SlcExecutionStep(); + step0.setUuid(UUID.randomUUID().toString()); step0.setBegin(sdf.parse("2008-04-17 18:21")); step0.setType("LOG"); step0.addLog("A log message\nand another line"); SlcExecutionStep step1 = new SlcExecutionStep(); + step1.setUuid(UUID.randomUUID().toString()); step1.setBegin(sdf.parse("2008-04-17 18:25")); step1.setType("LOG"); step1.addLog("A nother log message"); @@ -52,15 +54,15 @@ public class SlcExecutionCastorTest extends AbstractSpringTestCase { SlcExecutionRequest msgSaveUnm = unmarshall(unmarshaller, msgSaveXml); assertNotNull(msgSaveUnm); - assertSlcExecution(slcExec, msgSaveUnm.getSlcExecution()); + SlcExecutionTestUtils.assertSlcExecution(slcExec, msgSaveUnm.getSlcExecution()); SlcExecutionStepsRequest msgNotifUnm = unmarshall(unmarshaller, msgNotifXml); assertNotNull(msgNotifUnm); assertEquals(slcExec.getUuid(), msgNotifUnm.getSlcExecutionUuid()); assertEquals(2, msgNotifUnm.getSteps().size()); - assertSlcExecutionStep(step0, msgNotifUnm.getSteps().get(0)); - assertSlcExecutionStep(step1, msgNotifUnm.getSteps().get(1)); + SlcExecutionTestUtils.assertSlcExecutionStep(step0, msgNotifUnm.getSteps().get(0)); + SlcExecutionTestUtils.assertSlcExecutionStep(step1, msgNotifUnm.getSteps().get(1)); SlcExecution slcExecUnm = msgSaveUnm.getSlcExecution(); slcExecUnm.getSteps().addAll(msgNotifUnm.getSteps()); @@ -87,30 +89,4 @@ public class SlcExecutionCastorTest extends AbstractSpringTestCase { IOUtils.closeQuietly(reader); return (T) obj; } - - private void assertSlcExecution(SlcExecution expected, SlcExecution reached) { - assertNotNull(reached); - assertEquals(expected.getHost(), reached.getHost()); - assertEquals(expected.getPath(), reached.getPath()); - assertEquals(expected.getType(), reached.getType()); - assertEquals(expected.getStatus(), reached.getStatus()); - } - - private void assertSlcExecutionStep(SlcExecutionStep expected, - SlcExecutionStep reached) { - assertNotNull(reached); - assertEquals(expected.getType(), reached.getType()); - assertEquals(expected.logAsString(), reached.logAsString()); - assertEquals(expected.getBegin(), reached.getBegin()); - } - - public static SlcExecution createSimpleSlcExecution() { - SlcExecution slcExec = new SlcExecution(); - slcExec.setUuid(UUID.randomUUID().toString()); - slcExec.setHost("localhost"); - slcExec.setPath("/test"); - slcExec.setType("slcAnt"); - slcExec.setStatus("STARTED"); - return slcExec; - } } diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionTestUtils.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionTestUtils.java new file mode 100644 index 000000000..fd6dd87ad --- /dev/null +++ b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionTestUtils.java @@ -0,0 +1,39 @@ +package org.argeo.slc.core.process; + +import java.util.UUID; + +import junit.framework.TestCase; + +public abstract class SlcExecutionTestUtils extends TestCase{ + + public static SlcExecution createSimpleSlcExecution() { + SlcExecution slcExec = new SlcExecution(); + slcExec.setUuid(UUID.randomUUID().toString()); + slcExec.setHost("localhost"); + slcExec.setPath("/test"); + slcExec.setType("slcAnt"); + slcExec.setStatus("STARTED"); + return slcExec; + } + + public static void assertSlcExecution(SlcExecution expected, SlcExecution reached) { + assertNotNull(reached); + assertEquals(expected.getHost(), reached.getHost()); + assertEquals(expected.getPath(), reached.getPath()); + assertEquals(expected.getType(), reached.getType()); + assertEquals(expected.getStatus(), reached.getStatus()); + } + + public static void assertSlcExecutionStep(SlcExecutionStep expected, + SlcExecutionStep reached) { + assertNotNull(reached); + assertEquals(expected.getUuid(), reached.getUuid()); + assertEquals(expected.getType(), reached.getType()); + assertEquals(expected.logAsString(), reached.logAsString()); + assertEquals(expected.getBegin(), reached.getBegin()); + } + + private SlcExecutionTestUtils(){ + + } +} diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionWsIntegrationTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionWsIntegrationTest.java index 275c7aabf..d117cc047 100644 --- a/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionWsIntegrationTest.java +++ b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionWsIntegrationTest.java @@ -11,7 +11,7 @@ public class SlcExecutionWsIntegrationTest extends AbstractSpringTestCase { public void testSendSlcExecutionrequest() { WebServiceTemplate template = getBean("webServiceTemplate"); - SlcExecution slcExec = SlcExecutionCastorTest + SlcExecution slcExec = SlcExecutionTestUtils .createSimpleSlcExecution(); SlcExecutionRequest req = new SlcExecutionRequest(); diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/process/SlcExecutionHibernateTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/process/SlcExecutionHibernateTest.java new file mode 100644 index 000000000..5aed60d35 --- /dev/null +++ b/org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/process/SlcExecutionHibernateTest.java @@ -0,0 +1,34 @@ +package org.argeo.slc.hibernate.process; + +import org.argeo.slc.core.process.SlcExecution; +import org.argeo.slc.core.process.SlcExecutionStep; +import org.argeo.slc.core.process.SlcExecutionTestUtils; +import org.argeo.slc.dao.process.SlcExecutionDao; +import org.argeo.slc.unit.AbstractSpringTestCase; + +public class SlcExecutionHibernateTest extends AbstractSpringTestCase { + + public void testSave() { + SlcExecutionDao dao = getBean("slcExecutionDao"); + + SlcExecution slcExec = SlcExecutionTestUtils.createSimpleSlcExecution(); + slcExec.getSteps().add(new SlcExecutionStep("LOG", "A log line")); + slcExec.getSteps().add(new SlcExecutionStep("LOG", "Two log\nlines")); + + dao.create(slcExec); + + SlcExecution slcExecPersisted = dao.getSlcExecution(slcExec.getUuid()); + SlcExecutionTestUtils.assertSlcExecution(slcExec, slcExecPersisted); + assertEquals(2, slcExecPersisted.getSteps().size()); + SlcExecutionTestUtils.assertSlcExecutionStep(slcExec.getSteps().get(0), + slcExecPersisted.getSteps().get(0)); + SlcExecutionTestUtils.assertSlcExecutionStep(slcExec.getSteps().get(1), + slcExecPersisted.getSteps().get(1)); + } + + @Override + protected String getApplicationContextLocation() { + return "org/argeo/slc/hibernate/applicationContext.xml"; + } + +} diff --git a/org.argeo.slc.core/src/test/resources/log4j.properties b/org.argeo.slc.core/src/test/resources/log4j.properties index 8eb8b0c9c..3b925523b 100644 --- a/org.argeo.slc.core/src/test/resources/log4j.properties +++ b/org.argeo.slc.core/src/test/resources/log4j.properties @@ -7,7 +7,7 @@ log4j.logger.org.argeo.slc=DEBUG # Spring log4j.logger.org.springframework=INFO # Hibernate -log4j.logger.org.hibernate=WARN +log4j.logger.org.hibernate=DEBUG #log4j.logger.org.hibernate.SQL=TRACE #log4j.logger.org.hibernate.tool.hbm2ddl=TRACE #log4j.logger.org.hibernate.type=TRACE diff --git a/org.argeo.slc.core/src/test/resources/org/argeo/slc/hibernate/applicationContext.xml b/org.argeo.slc.core/src/test/resources/org/argeo/slc/hibernate/applicationContext.xml index cf320fdb5..7e429ad6b 100644 --- a/org.argeo.slc.core/src/test/resources/org/argeo/slc/hibernate/applicationContext.xml +++ b/org.argeo.slc.core/src/test/resources/org/argeo/slc/hibernate/applicationContext.xml @@ -3,65 +3,29 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> - - - - - - - - + - - - - - org/argeo/slc/hibernate/structure/SimpleSElement.hbm.xml - - - org/argeo/slc/hibernate/structure/tree/TreeSPath.hbm.xml - - - org/argeo/slc/hibernate/structure/tree/TreeSRegistry.hbm.xml - - - org/argeo/slc/hibernate/test/NumericTRId.hbm.xml - - - org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml - - - org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml - - - org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml - - - - - - hibernate.dialect=org.hibernate.dialect.HSQLDialect - hibernate.hbm2ddl.auto=create - - + parent="slcTemplates.sessionFactory.hibernateTestHSQL"> - + - + + + + + \ No newline at end of file -- 2.39.5