Author: mic...@jb... Date: 2006-01-18 20:49:16 -0500 (Wed, 18 Jan 2006) New Revision: 2136 Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RepositoryManager.java trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RepositoryManagerImpl.java trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetAttachment.java trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetAttachment.hbm.xml trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/AttachmentPersistTest.java trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/IntegrationTest.java trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RulePersistenceTest.java trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RuleSetPersistenceTest.java trunk/labs/jbossrules/drools-repository/src/test/resources/drools-repository-db.cfg.xml Log: major tidy up. Attachments are now save history types, as well as lockable, optimistic locks etc. Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RepositoryManager.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RepositoryManager.java 2006-01-19 01:15:54 UTC (rev 2135) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RepositoryManager.java 2006-01-19 01:49:16 UTC (rev 2136) @@ -3,6 +3,7 @@ import java.util.List; import org.drools.repository.db.Asset; +import org.drools.repository.db.ISaveHistory; /** * The repository manager takes care of storing and sychronising the repository @@ -32,13 +33,18 @@ public abstract List listRuleVersions(String ruleName); /** - * Find and return all the historical versions of a rule. - * Historcal versions are previous versions of the rules stored when - * a change to the rule was saved. + * Find and return all the historical versions of an asset. + * Historcal versions are previous versions of the asset stored when + * a change was saved. * * This is distinct from Versions which are related to RuleSet versioning. -= */ - public abstract List listRuleSaveHistory(RuleDef rule); + * Save history is provided for "unlimited undo" facilities. Normally the historical items are + * hidden away. + * + * @param The latest version of an asset (ie NOT a historical record !) + * @return A list of the historical items for your viewing pleasure. += */ + public abstract List listSaveHistory(ISaveHistory asset); public abstract List findRulesByTag(String tag); Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RepositoryManagerImpl.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RepositoryManagerImpl.java 2006-01-19 01:15:54 UTC (rev 2135) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RepositoryManagerImpl.java 2006-01-19 01:49:16 UTC (rev 2136) @@ -4,6 +4,7 @@ import org.drools.repository.db.Asset; +import org.drools.repository.db.ISaveHistory; import org.hibernate.Session; /** @@ -54,15 +55,14 @@ return result; } - /* (non-Javadoc) - * @see org.drools.repository.db.RepositoryManager#listRuleSaveHistory(org.drools.repository.RuleDef) - */ - public List listRuleSaveHistory(RuleDef rule) { + public List listSaveHistory(ISaveHistory asset) { disableHistoryFilter( session ); - List result = (List) session.createQuery( "from RuleDef where historicalId = :id" ).setLong( "id", - rule.getId().longValue() ).list(); - +// List result = (List) session.createQuery( "from RuleDef where historicalId = :id" ).setLong( "id", +// rule.getId().longValue() ).list(); + String query = "from " + asset.getClass().getName() + " where historicalId = :id"; + List result = (List) session.createQuery(query) + .setLong("id", asset.getId().longValue()).list(); enableHistoryFilter( session ); return result; } Modified: 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-19 01:15:54 UTC (rev 2135) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetAttachment.java 2006-01-19 01:49:16 UTC (rev 2136) @@ -3,6 +3,7 @@ import java.util.HashSet; import java.util.Set; +import org.drools.repository.db.ISaveHistory; import org.drools.repository.db.IVersionable; import org.drools.repository.db.Asset; @@ -20,7 +21,7 @@ * @author <a href="mailto:mic...@gm..."> Michael Neale</a> * */ -public class RuleSetAttachment extends Asset implements IVersionable { +public class RuleSetAttachment extends Asset implements ISaveHistory { private static final long serialVersionUID = 7474038734785975202L; @@ -37,6 +38,8 @@ private int lockingVersion = 0; private boolean checkedOut; private String checkedOutBy; + private Long historicalId; + private boolean historicalRecord = false; @@ -177,6 +180,26 @@ this.checkedOutBy = checkedOutBy; } + public Long getHistoricalId() { + return historicalId; + } + + public void setHistoricalId(Long historicalId) { + this.historicalId = historicalId; + } + + public boolean isHistoricalRecord() { + return historicalRecord; + } + + public void setHistoricalRecord(boolean historicalRecord) { + this.historicalRecord = historicalRecord; + } + + public boolean isStateChanged(ISaveHistory oldObject) { + return true; + } + } Modified: 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-19 01:15:54 UTC (rev 2135) +++ trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleSetAttachment.hbm.xml 2006-01-19 01:49:16 UTC (rev 2136) @@ -21,12 +21,20 @@ <property name="versionComment" /> <property name="checkedOut" /> <property name="checkedOutBy" /> + <property name="historicalRecord" column="HISTORICAL_RECORD_FLAG" /> + <property name="historicalId" /> <set name="tags" table="RULESET_ATTACHMENT_TAGS" lazy="false" cascade="all" optimistic-lock="false"> <key column="RULESET_ATTACHMENT_ID"/> <one-to-many class="org.drools.repository.Tag"/> </set> + <filter name="historyFilter" condition=":viewHistory = HISTORICAL_RECORD_FLAG" /> + </class> + + <filter-def name="historyFilter"> + <filter-param name="viewHistory" type="boolean" /> + </filter-def> </hibernate-mapping> \ No newline at end of file Modified: trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/AttachmentPersistTest.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/AttachmentPersistTest.java 2006-01-19 01:15:54 UTC (rev 2135) +++ trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/AttachmentPersistTest.java 2006-01-19 01:49:16 UTC (rev 2136) @@ -1,17 +1,37 @@ package org.drools.repository; +import java.util.List; + import org.drools.repository.db.PersistentCase; public class AttachmentPersistTest extends PersistentCase { public void testLoadSave() { - RuleSetAttachment at = new RuleSetAttachment("test","test", "test".getBytes(), "blah.xml" ); + byte[] data = "test".getBytes(); + RuleSetAttachment at = new RuleSetAttachment("test","test", data, "blah.xml" ); RepositoryManager repo = getRepo(); at.addTag("RULESETAT"); repo.save(at); RuleSetAttachment at2 = repo.loadAttachment("test", 1); assertEquals("test", at2.getTypeOfAttachment()); assertEquals("RULESETAT", ((Tag)at2.getTags().iterator().next()).getTag()); + assertTrue((new String(data)).equals(new String(at2.getContent())) ); } + public void testHistory() { + RuleSetAttachment at = new RuleSetAttachment("historical one", "histo", "test".getBytes(), "nothing.txt"); + RepositoryManager repo = getRepo(); + repo.save(at); + + assertEquals(0, repo.listSaveHistory(at).size()); + + at.setContent("test2".getBytes()); + repo.save(at); + + List history = repo.listSaveHistory(at); + assertEquals(1, history.size()); + + + } + } Modified: trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/IntegrationTest.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/IntegrationTest.java 2006-01-19 01:15:54 UTC (rev 2135) +++ trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/IntegrationTest.java 2006-01-19 01:49:16 UTC (rev 2136) @@ -273,7 +273,7 @@ //just to prove the save history, lets check the history of a rule rule = ruleSet.findRuleByName("Integration rule 2"); - List history = repo.listRuleSaveHistory(rule); + List history = repo.listSaveHistory(rule); assertEquals(1, history.size()); RuleDef historicalRule = (RuleDef) history.get(0); String oldContent = historicalRule.getContent(); Modified: trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RulePersistenceTest.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RulePersistenceTest.java 2006-01-19 01:15:54 UTC (rev 2135) +++ trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RulePersistenceTest.java 2006-01-19 01:49:16 UTC (rev 2136) @@ -111,7 +111,7 @@ list = repo.listRuleVersions("rh1"); assertEquals(2, list.size()); - list = repo.listRuleSaveHistory(rule); + list = repo.listSaveHistory(rule); assertEquals(2, list.size()); } Modified: trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RuleSetPersistenceTest.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RuleSetPersistenceTest.java 2006-01-19 01:15:54 UTC (rev 2135) +++ trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RuleSetPersistenceTest.java 2006-01-19 01:49:16 UTC (rev 2136) @@ -271,13 +271,13 @@ repo.save(old); - assertEquals(0, repo.listRuleSaveHistory(newRule).size()); + assertEquals(0, repo.listSaveHistory(newRule).size()); old.addTag("yeah"); repo.save(old); - assertEquals(0, repo.listRuleSaveHistory(newRule).size()); + assertEquals(0, repo.listSaveHistory(newRule).size()); newRule.setContent("CHANGED CONTENT"); repo.save(old); - assertEquals(1, repo.listRuleSaveHistory(newRule).size()); + assertEquals(1, repo.listSaveHistory(newRule).size()); } Modified: trunk/labs/jbossrules/drools-repository/src/test/resources/drools-repository-db.cfg.xml =================================================================== --- trunk/labs/jbossrules/drools-repository/src/test/resources/drools-repository-db.cfg.xml 2006-01-19 01:15:54 UTC (rev 2135) +++ trunk/labs/jbossrules/drools-repository/src/test/resources/drools-repository-db.cfg.xml 2006-01-19 01:49:16 UTC (rev 2136) @@ -43,8 +43,9 @@ <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">create</property> - - + </session-factory> + + </hibernate-configuration> \ No newline at end of file |