Author: mic...@jb... Date: 2006-01-20 19:39:22 -0500 (Fri, 20 Jan 2006) New Revision: 2157 Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleDef.java trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetDef.java trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleDef.hbm.xml 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 Log: fixed up some relationships Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleDef.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleDef.java 2006-01-20 22:46:13 UTC (rev 2156) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleDef.java 2006-01-21 00:39:22 UTC (rev 2157) @@ -29,8 +29,6 @@ private Long historicalId; private boolean historicalRecord = false; private int lockingVersion = 0; - private RuleSetDef owningRuleSet = null; - /** @@ -237,20 +235,7 @@ } } - /** - * When a rule is allocated to a ruleset, it is "owned" by that ruleset. - * If it is added to another ruleset, a copy is added. - * - * This may be null, meaning that it is a free floating rule. - */ - public RuleSetDef getOwningRuleSet() { - return owningRuleSet; - } - void setOwningRuleSet(RuleSetDef owningRuleSet) { - this.owningRuleSet = owningRuleSet; - } - /** return true if different */ private boolean diffStr(String left, String right) { return !left.equals(right); @@ -262,6 +247,8 @@ private void setLockingVersion(int lockingVersion) { this.lockingVersion = lockingVersion; - } + } + + } 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-20 22:46:13 UTC (rev 2156) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RuleSetDef.java 2006-01-21 00:39:22 UTC (rev 2157) @@ -82,30 +82,32 @@ /** * Adds a rule to the ruleset. - * If the rule belongs to another ruleset already, it will be copied, and the name - * prepended with the ruleset name (to ensure it is unique). + * If the rule has already been saved, then it will be copied for this ruleset. + * (the rulesetname will be prepended to the rule name to keep it unique). * * ie: rulesetName:originalRuleName * * (if you don't like that, then copy() the rule before adding it). * * If a rule is new, obviously there is no copying, and the name is "as is". - * The rule may have been stored previously, "unattached" which is also fine (won't be copied). + * + * @return The rule that was just added (which may be a copy). */ - public RuleSetDef addRule(RuleDef rule) { - if (rule.getOwningRuleSet() == null) { - rule.setOwningRuleSet(this); - return addAssetToSet( rule, + public RuleDef addRule(RuleDef rule) { + RuleDef returnVal = rule; + if (rule.getId() == null) { + addAssetToSet( rule, this.rules ); } else { //we have to make a copy RuleDef newRule = (RuleDef) rule.copy(); newRule.setName(this.getName() + ":" + rule.getName()); - newRule.setOwningRuleSet(this); - return addAssetToSet( newRule, + addAssetToSet( newRule, this.rules ); + returnVal = newRule; } + return returnVal; } public RuleSetDef addAttachment(RuleSetAttachment attachmentFile) { @@ -149,7 +151,6 @@ * */ public void removeRule(RuleDef rule) { - rule.setOwningRuleSet(null); rule.setVersionNumber(IVersionable.NO_VERSION); } @@ -201,11 +202,8 @@ asset.setVersionNumber( this.workingVersionNumber ); if ( asset.getId() == null ) { asset.setVersionComment( "new" ); - set.add( asset ); } - else { - set.add( asset ); - } + set.add( asset ); return this; } 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-20 22:46:13 UTC (rev 2156) +++ trunk/labs/jbossrules/drools-repository/src/main/resources/org/drools/repository/RuleDef.hbm.xml 2006-01-21 00:39:22 UTC (rev 2157) @@ -32,8 +32,6 @@ <one-to-many class="org.drools.repository.Tag" /> </set> - <many-to-one name="owningRuleSet" column="OWNING_RULESET_ID" /> - <component name="metaData"> <property name="title" /> <property name="creator" /> 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-20 22:46:13 UTC (rev 2156) +++ trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RulePersistenceTest.java 2006-01-21 00:39:22 UTC (rev 2157) @@ -34,7 +34,7 @@ def.removeTag("tag1"); repo.save(def); def = repo.loadRule("myRule3", 1); - assertEquals(null, def.getOwningRuleSet()); + assertEquals(2, def.getTags().size()); } @@ -80,7 +80,7 @@ public void testRuleRuleSetHistory() { RuleSetDef rs = new RuleSetDef("rule history", null); - rs.addRule(new RuleDef("rh1", "xxxxx")); + RuleDef first = rs.addRule(new RuleDef("rh1", "xxxxx")); rs.addRule(new RuleDef("rh2", "xxxxx")); rs.addRule(new RuleDef("rh3", "xxxxx")); @@ -114,7 +114,17 @@ list = repo.listSaveHistory(rule); assertEquals(2, list.size()); + + rs = repo.loadRuleSet("rule history", 1); + RuleDef firstLoaded = rs.findRuleByName("rh1"); + firstLoaded.setContent("new again"); + repo.save(rs); + rs = repo.loadRuleSet("rule history", 1); + RuleDef loadedAgain = rs.findRuleByName("rh1"); + + assertEquals(firstLoaded.getContent(), loadedAgain.getContent()); + } public void testCheckinOut() { 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-20 22:46:13 UTC (rev 2156) +++ trunk/labs/jbossrules/drools-repository/src/test/java/org/drools/repository/RuleSetPersistenceTest.java 2006-01-21 00:39:22 UTC (rev 2157) @@ -48,7 +48,8 @@ def2.addRule(newRule); repo.save(def2); def2 = repo.loadRuleSet("my ruleset", 1); - newRule = def2.findRuleByName("pre-existing"); + + newRule = def2.findRuleByName("my ruleset:pre-existing"); assertEquals("ABC", newRule.getContent()); assertEquals(1, newRule.getTags().size()); } @@ -148,7 +149,8 @@ RuleDef def2 = new RuleDef("Rule2", "blah2"); def1.addTag("S").addTag("A"); - set.addRule(def1).addRule(def2); + set.addRule(def1); + set.addRule(def2); set.addAttachment(new RuleSetAttachment("x", "x", "x".getBytes(), "x")); assertEquals(2, set.getRules().size()); @@ -337,19 +339,21 @@ repo.save(ruleset); ruleset.addRule(preExist); - assertEquals(ruleset, preExist.getOwningRuleSet()); + repo.save(ruleset); RuleSetDef newruleset = new RuleSetDef("yao", null); repo.save(ruleset); - newruleset.addRule(preExist); + RuleDef copied = newruleset.addRule(preExist); RuleDef other = newruleset.findRuleByName("yao" + ":" + preExist.getName()); assertEquals(null, other.getId()); //so we know it is a copy - assertEquals(newruleset, other.getOwningRuleSet()); repo.save(newruleset); + assertFalse(other == preExist); + assertEquals(other, copied); + newruleset = repo.loadRuleSet("yao", 1); assertEquals(1, newruleset.getRules().size()); other = (RuleDef) newruleset.getRules().iterator().next(); |