Author: mic...@jb... Date: 2006-01-05 21:52:16 -0500 (Thu, 05 Jan 2006) New Revision: 2004 Added: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/AttachmentFile.java trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetAttachment.java trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetVersionInfo.java trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/AttachmentFile.hbm.xml trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetAttachment.hbm.xml trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetVersionInfo.hbm.xml trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/db/AttachmentPersistTest.java Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetDef.java trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/RepositoryImpl.java trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleDef.hbm.xml trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetDef.hbm.xml trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/Tag.hbm.xml trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/db/RulePersistenceTest.java trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/db/RuleSetPersistenceTest.java trunk/labs/jbossrules/drools-repository/src/test/resources/hibernate.cfg.xml Log: more working Added: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/AttachmentFile.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/AttachmentFile.java 2006-01-05 23:44:03 UTC (rev 2003) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/AttachmentFile.java 2006-01-06 02:52:16 UTC (rev 2004) @@ -0,0 +1,47 @@ +package org.drools.repository; + +/** + * Simply hold an individual attachment. Attachments stored using this are truly opaque. + * If they are DRL files, then they may be able to be stored and searched as text, + * but this is database specific (DRL files should be stored normalised via importing). + * @author <a href="mailto:mic...@gm..."> Michael Neale</a> + */ +public class AttachmentFile extends Persistent { + + private byte[] content; + private String contentType; + private String originalFileName; + + AttachmentFile() {} + + + public AttachmentFile(byte[] content, + String contentType, + String originalFileName){ + super(); + this.content = content; + this.contentType = contentType; + this.originalFileName = originalFileName; + } + + + public byte[] getContent(){ + return content; + } + public void setContent(byte[] content){ + this.content = content; + } + public String getContentType(){ + return contentType; + } + public void setContentType(String contentType){ + this.contentType = contentType; + } + public String getOriginalFileName(){ + return originalFileName; + } + public void setOriginalFileName(String originalFileName){ + this.originalFileName = originalFileName; + } + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/AttachmentFile.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetAttachment.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetAttachment.java 2006-01-05 23:44:03 UTC (rev 2003) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetAttachment.java 2006-01-06 02:52:16 UTC (rev 2004) @@ -0,0 +1,78 @@ +package org.drools.repository; + +import java.util.HashSet; +import java.util.Set; + +/** + * A RuleSetAttachment contains a ruleset that is stored in a non-normalised format. + * An attachment may be a spreadsheet for instance. Or it may be a HTML document and a properties file. + * An "attachment" will contain one or more AttachmentFiles, which actually wraps the content. + * + * These are versioned along with the ruleset (with optional per save versioning). + * + * @author <a href="mailto:mic...@gm..."> Michael Neale</a> + * + */ +public class RuleSetAttachment extends Persistent { + + private String typeOfAttachment; + private Set attachments = new HashSet(); + private String name; + private long versionNumber = 1; + + + public RuleSetAttachment(String typeOfAttachment, + String name){ + super(); + this.typeOfAttachment = typeOfAttachment; + this.name = name; + + } + + public RuleSetAttachment() { + } + + public String getName(){ + return name; + } + + + public void setName(String name){ + this.name = name; + } + + + public Set getAttachments(){ + return attachments; + } + + + private void setAttachments(Set attachments){ + this.attachments = attachments; + } + + + public RuleSetAttachment addFile(AttachmentFile file) { + this.attachments.add(file); + return this; + } + + + public String getTypeOfAttachment(){ + return typeOfAttachment; + } + public void setTypeOfAttachment(String typeOfAttachment){ + this.typeOfAttachment = typeOfAttachment; + } + + public long getVersionNumber(){ + return versionNumber; + } + + public void setVersionNumber(long versionNumber){ + this.versionNumber = versionNumber; + } + + + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetAttachment.java ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetDef.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetDef.java 2006-01-05 23:44:03 UTC (rev 2003) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetDef.java 2006-01-06 02:52:16 UTC (rev 2004) @@ -1,38 +1,67 @@ package org.drools.repository; -import java.util.ArrayList; import java.util.HashSet; -import java.util.List; import java.util.Set; +/** + * The ruleset definition contains a grouping of rules for editing/release. + * The workingVersionNumber drives what version of rules will be included in this ruleset. + * Changing this number will mean that different versions of ruledefs are loaded etc. + * + * + * @author <a href="mailto:mic...@gm..."> Michael Neale</a> + * + */ public class RuleSetDef extends Persistent { + private static final long serialVersionUID = 608068118653708104L; private String name; private MetaData metaData; private Set rules; - private Set tags; - + private Set tags; + private long workingVersionNumber; + private Set versionHistory; + private RuleSetAttachment attachment; + public RuleSetDef(String name, MetaData meta) { this.name = name; this.metaData = meta; this.tags = new HashSet(); this.rules = new HashSet(); - } + this.workingVersionNumber = 1; + } /** * This is not for public consumption. Use the * proper constructor instead. */ RuleSetDef() { + } + + public RuleSetAttachment getAttachment(){ + return attachment; } - + + + public void setAttachment(RuleSetAttachment attachment){ + this.attachment = attachment; + } + + + public Set getVersionHistory(){ + return versionHistory; + } + + + public void setVersionHistory(Set versionHistory){ + this.versionHistory = versionHistory; + } + public RuleSetDef addRule(RuleDef rule) { this.rules.add(rule); return this; } - - public MetaData getMetaData(){ return metaData; } @@ -64,6 +93,22 @@ this.tags.add(new Tag(tag)); return this; } + + public long getWorkingVersionNumber(){ + return workingVersionNumber; + } + + public void setWorkingVersionNumber(long workingVersionNumber){ + this.workingVersionNumber = workingVersionNumber; + } + + /** This method increments the version of the ruleset, creating a brand new version. + * This records the event in the version history. + * All rules and ruleset-attachments that are connected to this version of the ruleset are + */ + public void createNewVersion(String comment, String newStatus) { + + } Added: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetVersionInfo.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetVersionInfo.java 2006-01-05 23:44:03 UTC (rev 2003) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetVersionInfo.java 2006-01-06 02:52:16 UTC (rev 2004) @@ -0,0 +1,71 @@ +package org.drools.repository; + +import java.util.Date; + +/** + * This records information about a particular version of a ruleset. + * Rulesets themselves are just a collection of rules. + * Rules themselves are versioned, and rulesets pull together particular a common set of rule versions. + * + * Typically this co-incides with a release of a ruleset. + * Once a new version is created, all the rules are cloned, and the new version number applied. + * + * @author <a href="mailto:mic...@gm..."> Michael Neale</a> + * + */ +public class RuleSetVersionInfo extends Persistent { + + private String createdByUser; + private Date createdOn = new Date(); + private long versionNumber; + private String versionComment; + private String status; + + public String getStatus(){ + return status; + } + + public void setStatus(String status){ + this.status = status; + } + + public RuleSetVersionInfo(String createdByUser, + long versionNumber, + String versionComment){ + super(); + this.createdByUser = createdByUser; + this.versionNumber = versionNumber; + this.versionComment = versionComment; + } + + RuleSetVersionInfo() {} + + public String getCreatedByUser(){ + return createdByUser; + } + public void setCreatedByUser(String createdByUser){ + this.createdByUser = createdByUser; + } + public Date getCreatedOn(){ + return createdOn; + } + public void setCreatedOn(Date createdOn){ + this.createdOn = createdOn; + } + public String getVersionComment(){ + return versionComment; + } + public void setVersionComment(String versionComment){ + this.versionComment = versionComment; + } + public long getVersionNumber(){ + return versionNumber; + } + public void setVersionNumber(long versionNumber){ + this.versionNumber = versionNumber; + } + + + + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetVersionInfo.java ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/RepositoryImpl.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/RepositoryImpl.java 2006-01-05 23:44:03 UTC (rev 2003) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/RepositoryImpl.java 2006-01-06 02:52:16 UTC (rev 2004) @@ -1,14 +1,11 @@ package org.drools.repository.db; -import java.util.Iterator; import java.util.List; -import java.util.Set; import org.drools.repository.Repository; import org.drools.repository.RuleDef; +import org.drools.repository.RuleSetAttachment; import org.drools.repository.RuleSetDef; -import org.drools.repository.Tag; -import org.hibernate.Query; import org.hibernate.Session; @@ -16,28 +13,20 @@ public class RepositoryImpl implements Repository { /** This will simply save the current version of the rule */ - public RuleDef saveOrUpdateRule(RuleDef newRule) { + public RuleDef save(RuleDef newRule) { Session session = getSession(); session.beginTransaction(); session.saveOrUpdate(newRule); session.getTransaction().commit(); - //session.close(); + return newRule; } - /** This will simply save the current version of the rule */ - public RuleDef merge(RuleDef newRule) { - Session session = getSession(); - session.beginTransaction(); - session.merge(newRule); - - session.getTransaction().commit(); - return newRule; - } + //DODGY METHODS START public List listAllRules(boolean head) { Session session = getSession(); session.beginTransaction(); @@ -71,6 +60,7 @@ session.getTransaction().commit(); return result; } + //DODGY METHODS END public List findRulesByTag(String tag) { Session session = getSession(); @@ -84,7 +74,7 @@ - public RuleSetDef saveOrUpdateRuleSet(RuleSetDef ruleSet) { + public RuleSetDef save(RuleSetDef ruleSet) { Session session = getSession(); session.beginTransaction(); session.saveOrUpdate(ruleSet); @@ -102,6 +92,26 @@ return def; } + public void save(RuleSetAttachment attachment) { + Session session = getSession(); + session.beginTransaction(); + session.saveOrUpdate(attachment); + session.getTransaction().commit(); + } + + public RuleSetAttachment loadAttachment(String name) { + Session session = getSession(); + session.beginTransaction(); + RuleSetAttachment at = (RuleSetAttachment) + session.createQuery("from RuleSetAttachment where name = :name") + .setString("name", name) + .uniqueResult(); + session.getTransaction().commit(); + return at; + } + + + private Session getSession(){ Session session = HibernateUtil.getSessionFactory().getCurrentSession(); return session; Added: trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/AttachmentFile.hbm.xml =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/AttachmentFile.hbm.xml 2006-01-05 23:44:03 UTC (rev 2003) +++ trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/AttachmentFile.hbm.xml 2006-01-06 02:52:16 UTC (rev 2004) @@ -0,0 +1,39 @@ +<?xml version="1.0"?> +<!DOCTYPE hibernate-mapping PUBLIC + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> + + +<hibernate-mapping> + + <class name="org.drools.repository.AttachmentFile" table="FILE_ATTACHMENTS"> + <id name="id" column="ATTACHMENT_ID"> + <generator class="native"/> + </id> + + <property name="content"/> + <property name="contentType" /> + <property name="originalFileName" /> +<!-- + <component name="metaData"> + <property name="title" /> + <property name="creator" /> + <property name="subject" /> + <property name="description" /> + <property name="publisher" /> + <property name="contributor" /> + <property name="dateCreated" /> + <property name="format" /> + <property name="source" /> + <property name="language" /> + <property name="relation" /> + <property name="coverage" /> + <property name="rights" /> + </component> + --> + + + + </class> + +</hibernate-mapping> \ No newline at end of file Property changes on: trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/AttachmentFile.hbm.xml ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleDef.hbm.xml =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleDef.hbm.xml 2006-01-05 23:44:03 UTC (rev 2003) +++ trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleDef.hbm.xml 2006-01-06 02:52:16 UTC (rev 2004) @@ -10,11 +10,9 @@ <id name="id" column="RULE_ID"> <generator class="native"/> </id> - <natural-id> - <property name="name"/> - <property name="versionNumber" /> - </natural-id> + <property name="name"/> + <property name="versionNumber" /> <property name="content" /> <property name="status" /> <property name="checkedOut" /> @@ -25,7 +23,8 @@ <property name="expiryDate" /> <property name="head" /> <property name="deleted" /> - + + <!-- want nothing to be lazy, no runtime proxies??? --> <!-- tags to aid with searching and management of rules --> <set name="tags" table="RULE_TAGS" lazy="false" cascade="all"> <key column="RULE_ID"/> Added: trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetAttachment.hbm.xml =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetAttachment.hbm.xml 2006-01-05 23:44:03 UTC (rev 2003) +++ trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetAttachment.hbm.xml 2006-01-06 02:52:16 UTC (rev 2004) @@ -0,0 +1,25 @@ +<?xml version="1.0"?> +<!DOCTYPE hibernate-mapping PUBLIC + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> + + +<hibernate-mapping> + + <class name="org.drools.repository.RuleSetAttachment" table="RULESET_ATTACHMENTS"> + <id name="id" column="RULESET_ATTACHMENT_ID"> + <generator class="native"/> + </id> + + <property name="name" /> + <property name="typeOfAttachment" /> + + <set name="attachments" table="RULESET_ATTACHMENT_FILES" lazy="false" cascade="all"> + <key column="RULESET_ATTACHMENT_ID"/> + <one-to-many class="org.drools.repository.AttachmentFile"/> + </set> + + + </class> + +</hibernate-mapping> \ No newline at end of file Property changes on: trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetAttachment.hbm.xml ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetDef.hbm.xml =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetDef.hbm.xml 2006-01-05 23:44:03 UTC (rev 2003) +++ trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetDef.hbm.xml 2006-01-06 02:52:16 UTC (rev 2004) @@ -11,10 +11,11 @@ <generator class="native"/> </id> - <natural-id> - <property name="name" /> - </natural-id> + + <property name="name" /> + <property name="workingVersionNumber" /> + <component name="metaData"> <property name="title" /> <property name="creator" /> @@ -38,11 +39,25 @@ <one-to-many class="org.drools.repository.Tag"/> </set> + <set name="rules" table="RULESET_RULES" lazy="false" cascade="all"> <key column="RULESET_ID"/> <one-to-many class="org.drools.repository.RuleDef"/> </set> + <set name="versionHistory" table="RULESET_VERSION_HISTORY" lazy="false" cascade="all"> + <key column="RULESET_ID" /> + <one-to-many class="org.drools.repository.RuleSetVersionInfo"/> + </set> + + <!-- we need only one ruleset attachment object. The files are attached to it as a + collection --> + <many-to-one name="attachment" column="RULESET_ATTACHMENT_ID" + class="org.drools.repository.RuleSetAttachment" + lazy="false" + cascade="all" + unique="true"/> + </class> </hibernate-mapping> \ No newline at end of file Added: trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetVersionInfo.hbm.xml =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetVersionInfo.hbm.xml 2006-01-05 23:44:03 UTC (rev 2003) +++ trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetVersionInfo.hbm.xml 2006-01-06 02:52:16 UTC (rev 2004) @@ -0,0 +1,23 @@ +<?xml version="1.0"?> +<!DOCTYPE hibernate-mapping PUBLIC + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> + + +<hibernate-mapping> + + <class name="org.drools.repository.RuleSetVersionInfo" table="RULESET_VERSION_INFO"> + + <id name="id" column="RULESET_VERSION_ID"> + <generator class="native" /> + </id> + + <property name="versionNumber"/> + <property name="versionComment"/> + <property name="createdOn"/> + <property name="createdByUser"/> + <property name="status" /> + + </class> + +</hibernate-mapping> \ No newline at end of file Property changes on: trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetVersionInfo.hbm.xml ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/Tag.hbm.xml =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/Tag.hbm.xml 2006-01-05 23:44:03 UTC (rev 2003) +++ trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/Tag.hbm.xml 2006-01-06 02:52:16 UTC (rev 2004) @@ -6,6 +6,9 @@ <hibernate-mapping> + <!-- NOTE I really want to make tag strings normalised + Need to add in logic for finding existing tags of same value + Or else use string as ID (not the best idea).--> <class name="org.drools.repository.Tag" table="DROOLS_TAGS"> <id name="id" column="TAG_ID"> <generator class="native" /> Added: trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/db/AttachmentPersistTest.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/db/AttachmentPersistTest.java 2006-01-05 23:44:03 UTC (rev 2003) +++ trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/db/AttachmentPersistTest.java 2006-01-06 02:52:16 UTC (rev 2004) @@ -0,0 +1,25 @@ +package org.drools.repository.db; + +import org.drools.repository.AttachmentFile; +import org.drools.repository.RuleSetAttachment; + +public class AttachmentPersistTest extends PersistentCase { + + public void testLoadSave() { + RuleSetAttachment at = new RuleSetAttachment(); + at.setName("RS1"); + at.setTypeOfAttachment("DRL"); + + AttachmentFile file = new AttachmentFile("blah".getBytes(), "text", "blah.drl"); + at.addFile(file); + + RepositoryImpl repo = getRepo(); + repo.save(at); + + RuleSetAttachment at2 = repo.loadAttachment("RS1"); + assertEquals("DRL", at2.getTypeOfAttachment()); + + assertEquals(1, at2.getAttachments().size()); + } + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/db/AttachmentPersistTest.java ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/db/RulePersistenceTest.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/db/RulePersistenceTest.java 2006-01-05 23:44:03 UTC (rev 2003) +++ trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/db/RulePersistenceTest.java 2006-01-06 02:52:16 UTC (rev 2004) @@ -10,18 +10,18 @@ public void testStoreNewRuleDef() throws Exception { RepositoryImpl repo = getRepo(); - RuleDef def = repo.saveOrUpdateRule(new RuleDef("myRule", "A rule")); + RuleDef def = repo.save(new RuleDef("myRule", "A rule")); assertNotNull(def.getId()); - def = repo.saveOrUpdateRule(new RuleDef("myRule2", "A rule2")); + def = repo.save(new RuleDef("myRule2", "A rule2")); def = new RuleDef("myRule3", "A rule3"); def.addTag("tag1").addTag("tag2").addTag("HR"); - def = repo.saveOrUpdateRule(def); + def = repo.save(def); assertNotNull(def.getId()); } public void testListRules() { RepositoryImpl repo = getRepo(); - repo.saveOrUpdateRule(new RuleDef("blah", "blah")); + repo.save(new RuleDef("blah", "blah")); List list = repo.listAllRules(true); assertTrue(list.size() > 0); } @@ -30,7 +30,7 @@ RepositoryImpl repo = getRepo(); RuleDef newRule = new RuleDef("my rule", "content"); newRule.addTag("HR").addTag("SALARY"); - repo.saveOrUpdateRule(newRule); + repo.save(newRule); RuleDef rule = repo.loadRule("my rule", 1); assertNotNull(rule); @@ -54,17 +54,14 @@ meta.setCreator("Peter Jackson"); rule1.setMetaData(meta); - repo.saveOrUpdateRule(rule1); + repo.save(rule1); - //?????repo.saveOrUpdateRule(rule1); - //repo.merge(rule1); - RuleDef rule2 = rule1.createNewVersion(); rule2.addTag("PJ"); - repo.saveOrUpdateRule(rule2); + repo.save(rule2); + repo.save(rule1); - RuleDef latest = repo.loadRule("newVersionTest", 2); assertEquals("Peter Jackson", latest.getMetaData().getCreator()); Modified: trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/db/RuleSetPersistenceTest.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/db/RuleSetPersistenceTest.java 2006-01-05 23:44:03 UTC (rev 2003) +++ trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/db/RuleSetPersistenceTest.java 2006-01-06 02:52:16 UTC (rev 2004) @@ -1,8 +1,14 @@ package org.drools.repository.db; +import java.util.HashSet; +import java.util.Set; + +import org.drools.repository.AttachmentFile; import org.drools.repository.MetaData; import org.drools.repository.RuleDef; +import org.drools.repository.RuleSetAttachment; import org.drools.repository.RuleSetDef; +import org.drools.repository.RuleSetVersionInfo; public class RuleSetPersistenceTest extends PersistentCase { @@ -14,7 +20,7 @@ RuleSetDef def = new RuleSetDef("my ruleset", meta); def.addTag("ME"); RepositoryImpl repo = getRepo(); - repo.saveOrUpdateRuleSet(def); + repo.save(def); RuleSetDef def2 = repo.loadRuleSet("my ruleset"); assertEquals("my ruleset", def2.getName()); @@ -34,11 +40,47 @@ ruleSet.addTag("HR"); RepositoryImpl repo = getRepo(); - repo.saveOrUpdateRuleSet(ruleSet); + repo.save(ruleSet); RuleSetDef loaded = repo.loadRuleSet("Uber 1"); assertEquals(2, loaded.getRules().size()); } + public void testRuleSetWithAttachment() { + MetaData meta = new MetaData(); + meta.setCreator("Michael Neale - Uber pimp"); + RuleSetDef ruleSet = new RuleSetDef("Attachmate", meta); + + RuleSetAttachment attachment = new RuleSetAttachment("decision-table", "my text file"); + attachment.addFile(new AttachmentFile("blah,blah".getBytes(), "text", "nothing.csv")); + attachment.addFile(new AttachmentFile("boo,boo".getBytes(), "binary", "smeg.xls")); + ruleSet.setAttachment(attachment); + + RepositoryImpl repo = getRepo(); + repo.save(ruleSet); + + RuleSetDef result = repo.loadRuleSet("Attachmate"); + assertNotNull(result); + assertEquals("decision-table", result.getAttachment().getTypeOfAttachment()); + assertEquals(2, result.getAttachment().getAttachments().size()); + } + + public void testRuleSetWithVersionHistory() { + RuleSetDef def = new RuleSetDef("WithHistory", null); + Set history = new HashSet(); + RuleSetVersionInfo info = new RuleSetVersionInfo("Michael", 1, "blah"); + + history.add(info); + RuleSetVersionInfo info2 = new RuleSetVersionInfo("Michael", 2, "woo"); + history.add(info2); + + def.setVersionHistory(history); + RepositoryImpl repo = getRepo(); + repo.save(def); + + RuleSetDef def2 = repo.loadRuleSet("WithHistory"); + assertEquals(2, def2.getVersionHistory().size()); + } + } Modified: trunk/labs/jbossrules/drools-repository/src/test/resources/hibernate.cfg.xml =================================================================== --- trunk/labs/jbossrules/drools-repository/src/test/resources/hibernate.cfg.xml 2006-01-05 23:44:03 UTC (rev 2003) +++ trunk/labs/jbossrules/drools-repository/src/test/resources/hibernate.cfg.xml 2006-01-06 02:52:16 UTC (rev 2004) @@ -36,7 +36,9 @@ <mapping resource="org/drools/repository/RuleDef.hbm.xml"/> <mapping resource="org/drools/repository/Tag.hbm.xml"/> <mapping resource="org/drools/repository/RuleSetDef.hbm.xml"/> - + <mapping resource="org/drools/repository/RuleSetAttachment.hbm.xml"/> + <mapping resource="org/drools/repository/AttachmentFile.hbm.xml"/> + <mapping resource="org/drools/repository/RuleSetVersionInfo.hbm.xml"/> </session-factory> |