[jboss-svn-commits] JBL Code SVN: r6958 - in labs/jbossrules/trunk/drools-repository/src/main: java/org/drools/repository resources/node_type_definitions

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Oct 20 11:46:02 EDT 2006


Author: michael.neale at jboss.com
Date: 2006-10-20 11:45:54 -0400 (Fri, 20 Oct 2006)
New Revision: 6958

Modified:
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositoryConfigurator.java
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RuleItem.java
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/VersionableItem.java
   labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/function_node_type.cnd
   labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rule_node_type.cnd
   labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rulepackage_node_type.cnd
   labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/versionable_node_type.cnd
Log:
refactor/rearrange so that categorisation lives on all versionable item nodes (not just rules).

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositoryConfigurator.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositoryConfigurator.java	2006-10-20 14:12:23 UTC (rev 6957)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositoryConfigurator.java	2006-10-20 15:45:54 UTC (rev 6958)
@@ -108,11 +108,13 @@
             if (!registered) {
                 ws.getNamespaceRegistry().registerNamespace("drools", RulesRepository.DROOLS_URI);
                 
+                //Note, the order in which they are registered actually does matter !
+                this.registerNodeTypesFromCndFile("/node_type_definitions/tag_node_type.cnd", ws);
                 this.registerNodeTypesFromCndFile("/node_type_definitions/versionable_node_type.cnd", ws);
                 this.registerNodeTypesFromCndFile("/node_type_definitions/versionable_asset_folder_node_type.cnd", ws);
                 
                 this.registerNodeTypesFromCndFile("/node_type_definitions/dsl_node_type.cnd", ws);            
-                this.registerNodeTypesFromCndFile("/node_type_definitions/tag_node_type.cnd", ws);
+                
                 this.registerNodeTypesFromCndFile("/node_type_definitions/state_node_type.cnd", ws);
                 this.registerNodeTypesFromCndFile("/node_type_definitions/rule_node_type.cnd", ws);
                 this.registerNodeTypesFromCndFile("/node_type_definitions/function_node_type.cnd", ws);

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RuleItem.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RuleItem.java	2006-10-20 14:12:23 UTC (rev 6957)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RuleItem.java	2006-10-20 15:45:54 UTC (rev 6958)
@@ -27,12 +27,8 @@
      */
     public static final String DSL_PROPERTY_NAME = "drools:dslReference";
     
+
     /**
-     * The name of the tag property on the rule node type
-     */
-    public static final String TAG_PROPERTY_NAME = "drools:categoryReference";
-    
-    /**
      * The name of the rule node type
      */
     public static final String RULE_NODE_TYPE_NAME = "drools:ruleNodeType";
@@ -275,62 +271,10 @@
         }
     }        
     
-    /**
-     * Adds the specified tag to this object's rule node. Tags are stored as nodes in a tag area of
-     * the repository. If the specified tag does not already have a corresponding node, a node is 
-     * created for it.
-     *  
-     * @param tag the tag to add to the rule. rules can have multiple tags
-     * @throws RulesRepositoryException 
-     */
-    public void addCategory(String tag) throws RulesRepositoryException {
-        try {
-            //make sure this object's node is the head version
-            checkIsUpdateable();                                       
-            
-            CategoryItem tagItem = this.rulesRepository.loadCategory(tag);
-                                    
-            //now set the tag property of the rule
-            Property tagReferenceProperty;
-            int i = 0;
-            Value[] newTagValues = null;
-            try {
-                tagReferenceProperty = this.node.getProperty(TAG_PROPERTY_NAME);
-                Value[] oldTagValues = tagReferenceProperty.getValues();
-                
-                //first, make sure this tag wasn't already there. while we're at it, lets copy the array
-                newTagValues = new Value[oldTagValues.length + 1];                
-                for(i=0; i<oldTagValues.length; i++) {
-                    if(oldTagValues[i].getString().equals(tag)) {
-                        log.info("tag '" + tag + "' already existed for rule node: " + this.node.getName());
-                        return;
-                    }
-                    newTagValues[i] = oldTagValues[i];
-                }
-            }
-            catch(PathNotFoundException e) {
-                //the property doesn't exist yet, so create it in the finally block
-                newTagValues = new Value[1];                 
-            }
-            finally {   
-                if(newTagValues != null) {
-                    newTagValues[i] = this.node.getSession().getValueFactory().createValue(tagItem.getNode());
-                    this.node.checkout();
-                    this.node.setProperty(TAG_PROPERTY_NAME, newTagValues);
-                }
-                else {
-                    log.error("reached expected path of execution when adding tag '" + tag + "' to ruleNode: " + this.node.getName());
-                }
-            }
-        }
-        catch(Exception e) {
-            log.error("Caught exception", e);
-            throw new RulesRepositoryException(e);
-        }
-    }
 
 
 
+
     /**
      * Removes the specified tag from this object's rule node.
      * 
@@ -399,36 +343,7 @@
         }
     }
     
-    /**
-     * Gets a list of CategoryItem objects for this object's rule node.
-     * 
-     * @return a list of TagItem objects for each tag on the rule. If there are no tags, an empty list. 
-     * @throws RulesRepositoryException
-     */
-    public List getCategories() throws RulesRepositoryException {
-        try {                            
-            Node ruleNode = getVersionContentNode();
-            
-            List returnList = new ArrayList();
-            try {
-                Property tagReferenceProperty = ruleNode.getProperty(TAG_PROPERTY_NAME);
-                Value[] tagValues = tagReferenceProperty.getValues();                
-                for(int i=0; i<tagValues.length; i++) {
-                    Node tagNode = this.node.getSession().getNodeByUUID(tagValues[i].getString());
-                    CategoryItem tagItem = new CategoryItem(this.rulesRepository, tagNode);
-                    returnList.add(tagItem);
-                }
-            }
-            catch(PathNotFoundException e) {
-                //the property doesn't even exist yet, so just return nothing
-            }
-            return returnList;
-        }
-        catch(Exception e) {
-            log.error("Caught exception", e);
-            throw new RulesRepositoryException(e);
-        }
-    }
+
     
     /**
      * Sets this object's rule node's state property to refer to the specified state node

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/VersionableItem.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/VersionableItem.java	2006-10-20 14:12:23 UTC (rev 6957)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/VersionableItem.java	2006-10-20 15:45:54 UTC (rev 6958)
@@ -1,6 +1,8 @@
 package org.drools.repository;
 
+import java.util.ArrayList;
 import java.util.Calendar;
+import java.util.List;
 
 import javax.jcr.Node;
 import javax.jcr.PathNotFoundException;
@@ -42,6 +44,12 @@
     public static final String VERSION_NUMBER_PROPERTY_NAME = "drools:versionNumber";
     
     /**
+     * The name of the tag property on the rule node type
+     */
+    public static final String TAG_PROPERTY_NAME = "drools:categoryReference";
+        
+    
+    /**
      * The possible formats for the format property of the node
      */
     public static final String RULE_FORMAT                 = "Rule";
@@ -436,5 +444,90 @@
         } catch ( RepositoryException e ) {
             throw new RulesRepositoryException(e);
         }
+    }   
+    
+    /**
+     * Adds the specified tag to this object's rule node. Tags are stored as nodes in a tag area of
+     * the repository. If the specified tag does not already have a corresponding node, a node is 
+     * created for it.
+     *  
+     * @param tag the tag to add to the rule. rules can have multiple tags
+     * @throws RulesRepositoryException 
+     */
+    public void addCategory(String tag) throws RulesRepositoryException {
+        try {
+            //make sure this object's node is the head version
+            checkIsUpdateable();                                       
+            
+            CategoryItem tagItem = this.rulesRepository.loadCategory(tag);
+                                    
+            //now set the tag property of the rule
+            Property tagReferenceProperty;
+            int i = 0;
+            Value[] newTagValues = null;
+            try {
+                tagReferenceProperty = this.node.getProperty(TAG_PROPERTY_NAME);
+                Value[] oldTagValues = tagReferenceProperty.getValues();
+                
+                //first, make sure this tag wasn't already there. while we're at it, lets copy the array
+                newTagValues = new Value[oldTagValues.length + 1];                
+                for(i=0; i<oldTagValues.length; i++) {
+                    if(oldTagValues[i].getString().equals(tag)) {
+                        log.info("tag '" + tag + "' already existed for rule node: " + this.node.getName());
+                        return;
+                    }
+                    newTagValues[i] = oldTagValues[i];
+                }
+            }
+            catch(PathNotFoundException e) {
+                //the property doesn't exist yet, so create it in the finally block
+                newTagValues = new Value[1];                 
+            }
+            finally {   
+                if(newTagValues != null) {
+                    newTagValues[i] = this.node.getSession().getValueFactory().createValue(tagItem.getNode());
+                    this.node.checkout();
+                    this.node.setProperty(TAG_PROPERTY_NAME, newTagValues);
+                }
+                else {
+                    log.error("reached expected path of execution when adding tag '" + tag + "' to ruleNode: " + this.node.getName());
+                }
+            }
+        }
+        catch(Exception e) {
+            log.error("Caught exception", e);
+            throw new RulesRepositoryException(e);
+        }
+    }   
+    
+    /**
+     * Gets a list of CategoryItem objects for this object's rule node.
+     * 
+     * @return a list of TagItem objects for each tag on the rule. If there are no tags, an empty list. 
+     * @throws RulesRepositoryException
+     */
+    public List getCategories() throws RulesRepositoryException {
+        try {                            
+            Node ruleNode = getVersionContentNode();
+            
+            List returnList = new ArrayList();
+            try {
+                Property tagReferenceProperty = ruleNode.getProperty(TAG_PROPERTY_NAME);
+                Value[] tagValues = tagReferenceProperty.getValues();                
+                for(int i=0; i<tagValues.length; i++) {
+                    Node tagNode = this.node.getSession().getNodeByUUID(tagValues[i].getString());
+                    CategoryItem tagItem = new CategoryItem(this.rulesRepository, tagNode);
+                    returnList.add(tagItem);
+                }
+            }
+            catch(PathNotFoundException e) {
+                //the property doesn't even exist yet, so just return nothing
+            }
+            return returnList;
+        }
+        catch(Exception e) {
+            log.error("Caught exception", e);
+            throw new RulesRepositoryException(e);
+        }
     }    
 }

Modified: labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/function_node_type.cnd
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/function_node_type.cnd	2006-10-20 14:12:23 UTC (rev 6957)
+++ labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/function_node_type.cnd	2006-10-20 15:45:54 UTC (rev 6958)
@@ -21,10 +21,6 @@
   = 'Java'
   mandatory autocreated
 
-- drools:categoryReference (reference)
-  multiple 
-  copy
-  < 'drools:categoryNodeType'
 
 - drools:stateReference (reference)
   copy

Modified: labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rule_node_type.cnd
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rule_node_type.cnd	2006-10-20 14:12:23 UTC (rev 6957)
+++ labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rule_node_type.cnd	2006-10-20 15:45:54 UTC (rev 6958)
@@ -35,11 +35,8 @@
   copy 
   < 'drools:dslNodeType','nt:version'
 
-- drools:categoryReference (reference)
-  multiple 
-  copy
-  < 'drools:categoryNodeType'
 
+
 - drools:stateReference (reference)
   copy
   < 'drools:stateNodeType'
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rulepackage_node_type.cnd
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rulepackage_node_type.cnd	2006-10-20 14:12:23 UTC (rev 6957)
+++ labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rulepackage_node_type.cnd	2006-10-20 15:45:54 UTC (rev 6958)
@@ -28,7 +28,7 @@
   < 'drools:ruleNodeType','nt:version'
 */
 
-  
+//this will need to be removed eventually, best done like rules
 - drools:functionReference (reference)
   multiple
   copy

Modified: labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/versionable_node_type.cnd
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/versionable_node_type.cnd	2006-10-20 14:12:23 UTC (rev 6957)
+++ labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/versionable_node_type.cnd	2006-10-20 15:45:54 UTC (rev 6958)
@@ -28,9 +28,14 @@
 - drools:description (string)
   mandatory
 
-  - drools:format (string)
+- drools:format (string)
   mandatory 
   
-  - drools:checkinComment (string)
-  
+- drools:checkinComment (string)
+
+//for taxonomies/asset classification  
+- drools:categoryReference (reference)
+  multiple 
+  copy
+  < 'drools:categoryNodeType'  
   
\ No newline at end of file




More information about the jboss-svn-commits mailing list