[jboss-svn-commits] JBL Code SVN: r31973 - in labs/jbossrules/branches/factsConstraints_baunax_esteban: drools-repository/src/main/java/org/drools/repository and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Mar 5 16:12:37 EST 2010
Author: baunax
Date: 2010-03-05 16:12:36 -0500 (Fri, 05 Mar 2010)
New Revision: 31973
Added:
labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/WorkingSetItem.java
labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/WorkingSetItemIterator.java
Modified:
labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/PackageConfigData.java
labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/WorkingSetConfigData.java
labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/PackageItem.java
labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/PackageIterator.java
labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/VersionableItem.java
labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java
Log:
added WorkingSetItem
Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/PackageConfigData.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/PackageConfigData.java 2010-03-05 21:08:30 UTC (rev 31972)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/PackageConfigData.java 2010-03-05 21:12:36 UTC (rev 31973)
@@ -15,8 +15,6 @@
* limitations under the License.
*/
-
-
import java.util.Date;
import java.util.HashMap;
@@ -27,11 +25,10 @@
* @author Michael Neale
*
*/
-public class PackageConfigData
- implements
- IsSerializable {
+public class PackageConfigData implements IsSerializable {
public PackageConfigData() {}
+
public PackageConfigData(String name) {
this.name = name;
}
@@ -50,4 +47,7 @@
public Date dateCreated;
public String checkinComment;
public HashMap<String,String> catRules;
+
+ public PackageConfigData[] subPackages;
+ public WorkingSetConfigData[] workingsets;
}
\ No newline at end of file
Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/WorkingSetConfigData.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/WorkingSetConfigData.java 2010-03-05 21:08:30 UTC (rev 31972)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/WorkingSetConfigData.java 2010-03-05 21:12:36 UTC (rev 31973)
@@ -2,11 +2,14 @@
import com.google.gwt.user.client.rpc.IsSerializable;
+/**
+ *
+ * @author bauna
+ */
public class WorkingSetConfigData implements IsSerializable {
public String name;
public String description;
public String[] validFacts;
- public WorkingSetConfigData[] workingSets;
-
+ public WorkingSetConfigData[] workingSets;
}
Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/PackageItem.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/PackageItem.java 2010-03-05 21:08:30 UTC (rev 31972)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/PackageItem.java 2010-03-05 21:12:36 UTC (rev 31973)
@@ -14,6 +14,7 @@
import javax.jcr.ItemExistsException;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
+import javax.jcr.PathNotFoundException;
import javax.jcr.Property;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
@@ -43,6 +44,12 @@
* for this package.
*/
public static final String ASSET_FOLDER_NAME = "assets";
+
+ /**
+ * This is the name of the rules "working sets" where rules are kept
+ * for this package.
+ */
+ public static final String WORKINGSETS_FOLDER_NAME = "workingsets";
/**
* The dublin core format attribute.
@@ -169,6 +176,28 @@
return addAsset(assetName, description, null, null);
}
+ public Node getWorkingSetFolderNode() throws RepositoryException {
+ try {
+ return getNode().getNode(WORKINGSETS_FOLDER_NAME);
+ } catch (PathNotFoundException e) {
+ return getNode().addNode(WORKINGSETS_FOLDER_NAME, "nt:folder");
+ }
+
+ }
+
+ public WorkingSetItem addWorkingSet(String name, String description) throws RepositoryException {
+ return new WorkingSetItem(name, description, getName(), rulesRepository, getWorkingSetFolderNode());
+ }
+
+ public Iterator<WorkingSetItem> listWorkingSets() {
+ try {
+ return new WorkingSetItemIterator(getRulesRepository(), getNode().getNode(WORKINGSETS_FOLDER_NAME).getNodes());
+ } catch (PathNotFoundException e) {
+ return Collections.<WorkingSetItem>emptyList().iterator();
+ } catch (RepositoryException e) {
+ throw new RulesRepositoryException(e);
+ }
+ }
/**
* This adds a rule to the current physical package (you can move it later).
@@ -523,15 +552,17 @@
/**
* This will load an iterator for assets of the given format type.
*/
- public AssetItemIterator listAssetsByFormat(String[] formats) {
+ public AssetItemIterator listAssetsByFormat(String... formats) {
if (formats.length == 1) {
- return queryAssets( "drools:format='" + formats[0] + "'" );
+ return queryAssets( FORMAT_PROPERTY_NAME + "='" + formats[0] + "'" );
} else {
String predicate = " ( ";
for ( int i = 0; i < formats.length; i++ ) {
- predicate = predicate + "drools:format='" + formats[i] + "'";
- if (!(i == formats.length -1 )) { predicate = predicate + " OR "; }
+ predicate = predicate + FORMAT_PROPERTY_NAME + "='" + formats[i] + "'";
+ if (i != formats.length -1) {
+ predicate = predicate + " OR ";
+ }
}
predicate = predicate + " ) ";
return queryAssets( predicate );
@@ -604,23 +635,23 @@
}
}
- public VersionableItem getPrecedingVersion() throws RulesRepositoryException {
- try {
- Node precedingVersionNode = this.getPrecedingVersionNode();
- if ( precedingVersionNode != null ) {
- return new PackageItem( this.rulesRepository,
- precedingVersionNode );
- } else {
- return null;
- }
- } catch ( Exception e ) {
- log.error( "Caught exception",
- e );
- throw new RulesRepositoryException( e );
- }
- }
+ @Override
+ public PackageItem getPrecedingVersion() throws RulesRepositoryException {
+ try {
+ Node precedingVersionNode = this.getPrecedingVersionNode();
+ if (precedingVersionNode != null) {
+ return new PackageItem(this.rulesRepository, precedingVersionNode);
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ log.error("Caught exception", e);
+ throw new RulesRepositoryException(e);
+ }
+ }
- public VersionableItem getSucceedingVersion() throws RulesRepositoryException {
+ @Override
+ public PackageItem getSucceedingVersion() throws RulesRepositoryException {
try {
Node succeedingVersionNode = this.getSucceedingVersionNode();
if ( succeedingVersionNode != null ) {
@@ -863,27 +894,47 @@
/**
* Creates a nested package.
*/
- public PackageItem createPackage(String subPackageName) throws RepositoryException {
+ public PackageItem createSubPackage(String subPackageName) throws RepositoryException {
node.checkout();
log.info( "USER: {} CREATEING subpackage [{}] under [{}]", new Object[] {getCurrentUserName(), subPackageName, getName() });
-
- Node rulePackageNode = node.addNode( subPackageName, PackageItem.RULE_PACKAGE_TYPE_NAME );
+ Node subPkgsNode;
+ try {
+ subPkgsNode = node.getNode(RulesRepository.RULE_PACKAGE_AREA);
+ } catch (PathNotFoundException e) {
+ subPkgsNode = node.addNode(RulesRepository.RULE_PACKAGE_AREA, "nt:folder");
+ }
+// subPkgsNode.checkout();
+ Node ruleSubPackageNode = subPkgsNode.addNode( subPackageName, PackageItem.RULE_PACKAGE_TYPE_NAME );
- rulePackageNode.addNode( PackageItem.ASSET_FOLDER_NAME, "drools:versionableAssetFolder" );
+ ruleSubPackageNode.addNode( PackageItem.ASSET_FOLDER_NAME, "drools:versionableAssetFolder" );
- rulePackageNode.setProperty( PackageItem.TITLE_PROPERTY_NAME, subPackageName );
+ ruleSubPackageNode.setProperty( PackageItem.TITLE_PROPERTY_NAME, subPackageName );
- rulePackageNode.setProperty( AssetItem.DESCRIPTION_PROPERTY_NAME, "" );
- rulePackageNode.setProperty( AssetItem.FORMAT_PROPERTY_NAME, PackageItem.PACKAGE_FORMAT );
- rulePackageNode.setProperty( PackageItem.CREATOR_PROPERTY_NAME, this.rulesRepository.getSession().getUserID() );
+ ruleSubPackageNode.setProperty( AssetItem.DESCRIPTION_PROPERTY_NAME, "" );
+ ruleSubPackageNode.setProperty( AssetItem.FORMAT_PROPERTY_NAME, PackageItem.PACKAGE_FORMAT );
+ ruleSubPackageNode.setProperty( PackageItem.CREATOR_PROPERTY_NAME, this.rulesRepository.getSession().getUserID() );
Calendar lastModified = Calendar.getInstance();
- rulePackageNode.setProperty( PackageItem.LAST_MODIFIED_PROPERTY_NAME, lastModified );
+ ruleSubPackageNode.setProperty( PackageItem.LAST_MODIFIED_PROPERTY_NAME, lastModified );
+ ruleSubPackageNode.setProperty( PackageItem.CONTENT_PROPERTY_ARCHIVE_FLAG, false );
+ return new PackageItem(this.rulesRepository, ruleSubPackageNode);
+ }
- return new PackageItem(this.rulesRepository, rulePackageNode);
+ /**
+ * Returns a {@link PackageIterator} of its children
+ * @return a {@link PackageIterator} of its children
+ */
+ public PackageIterator listSubPackages() {
+ try {
+ return new PackageIterator(getRulesRepository(), node.getNode(RulesRepository.RULE_PACKAGE_AREA).getNodes());
+ } catch (PathNotFoundException e) {
+ return new PackageIterator();
+ } catch (RepositoryException e) {
+ throw new RulesRepositoryException(e);
+ }
}
-
+
private String getCurrentUserName() {
return this.rulesRepository.getSession().getUserID();
}
Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/PackageIterator.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/PackageIterator.java 2010-03-05 21:08:30 UTC (rev 31972)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/PackageIterator.java 2010-03-05 21:12:36 UTC (rev 31973)
@@ -18,19 +18,26 @@
private Node current = null;
private Node next = null;
+ public PackageIterator() {
+ this(null, null);
+ }
+
public PackageIterator(RulesRepository repository, NodeIterator packageNodes) {
this.packageNodeIterator = packageNodes;
this.repository = repository;
}
public boolean hasNext() {
+ if (packageNodeIterator == null) {
+ return false;
+ }
boolean hasnext = false;
if (this.next == null) {
while (this.packageNodeIterator.hasNext()) {
Node element = (Node) this.packageNodeIterator.next();
try {
//Do not return Global Area
- if ((searchArchived || !element.getProperty("drools:archive").getBoolean()) && !RulesRepository.RULE_GLOBAL_AREA.equals(element.getName())) {
+ if ((searchArchived || !element.getProperty(VersionableItem.CONTENT_PROPERTY_ARCHIVE_FLAG).getBoolean()) && !RulesRepository.RULE_GLOBAL_AREA.equals(element.getName())) {
hasnext = true;
this.next = element;
break;
Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/RulesRepository.java 2010-03-05 21:08:30 UTC (rev 31972)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/RulesRepository.java 2010-03-05 21:12:36 UTC (rev 31973)
@@ -732,7 +732,7 @@
try {
PackageItem pkg = loadPackage(parentPackage);
- PackageItem subPkg = pkg.createPackage(name);
+ PackageItem subPkg = pkg.createSubPackage(name);
// create the node - see section 6.7.22.6 of the spec
// Node rulePackageNode = subPkg.node; // folderNode.addNode( name,
Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/VersionableItem.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/VersionableItem.java 2010-03-05 21:08:30 UTC (rev 31972)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/VersionableItem.java 2010-03-05 21:12:36 UTC (rev 31973)
@@ -1,12 +1,8 @@
package org.drools.repository;
-import org.drools.repository.events.StorageEventManager;
-
import java.util.ArrayList;
import java.util.Calendar;
-import java.util.Iterator;
import java.util.List;
-import java.util.Map;
import javax.jcr.InvalidItemStateException;
import javax.jcr.Node;
@@ -15,7 +11,10 @@
import javax.jcr.RepositoryException;
import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.Value;
+import javax.jcr.lock.LockException;
+import org.drools.repository.events.StorageEventManager;
+
/**
* This is the parent class for versionable assets.
* Contains standard fields based on Dublin Core, and
@@ -39,7 +38,6 @@
public static final String VERSION_NUMBER_PROPERTY_NAME = "drools:versionNumber";
public static final String CONTENT_PROPERTY_ARCHIVE_FLAG = "drools:archive";
-
/** Dublin core based fields. */
public static final String LAST_CONTRIBUTOR_PROPERTY_NAME = "drools:lastContributor";
public static final String CREATOR_PROPERTY_NAME = "drools:creator";
@@ -51,8 +49,6 @@
public static final String COVERAGE_PROPERTY_NAME = "drools:coverage";
public static final String PUBLISHER_PROPERTY_NAME = "drools:publisher";
-
-
/**
* The name of the state property on the rule node type
*/
@@ -63,7 +59,6 @@
*/
public static final String CATEGORY_PROPERTY_NAME = "drools:categoryReference";
-
/**
* The possible formats for the format property of the node
*/
@@ -109,40 +104,40 @@
/**
- * @return the predessor node of this node in the version history, or null if no predecessor version exists
+ * @return the predecessor node of this node in the version history, or null if no predecessor version exists
* @throws RulesRepositoryException
*/
- protected Node getPrecedingVersionNode() throws RulesRepositoryException {
- try {
- Node versionNode;
- if ( this.node.getPrimaryNodeType().getName().equals( "nt:version" ) ) {
- versionNode = this.node;
- } else {
- versionNode = this.node.getBaseVersion();
- }
+ protected Node getPrecedingVersionNode() throws RulesRepositoryException {
+ try {
+ Node versionNode;
+ if (this.node.getPrimaryNodeType().getName().equals("nt:version")) {
+ versionNode = this.node;
+ } else {
+ versionNode = this.node.getBaseVersion();
+ }
- Property predecessorsProperty = versionNode.getProperty( "jcr:predecessors" );
- Value[] predecessorValues = predecessorsProperty.getValues();
+ Property predecessorsProperty = versionNode.getProperty("jcr:predecessors");
+ Value[] predecessorValues = predecessorsProperty.getValues();
- if ( predecessorValues.length > 0 ) {
- Node predecessorNode = this.node.getSession().getNodeByUUID( predecessorValues[0].getString() );
+ if (predecessorValues.length > 0) {
+ Node predecessorNode = this.node.getSession().getNodeByUUID(predecessorValues[0].getString());
- //we don't want to return the root node - it isn't a true predecessor
- if ( predecessorNode.getName().equals( "jcr:rootVersion" ) ) {
- return null;
- }
+ // we don't want to return the root node - it isn't a true
+ // predecessor
+ if (predecessorNode.getName().equals("jcr:rootVersion")) {
+ return null;
+ }
- return predecessorNode;
- }
- } catch ( PathNotFoundException e ) {
- //do nothing - this will happen if no predecessors exits
- } catch ( Exception e ) {
- log.error( "Caught exception",
- e );
- throw new RulesRepositoryException( e );
- }
- return null;
- }
+ return predecessorNode;
+ }
+ } catch (PathNotFoundException e) {
+ // do nothing - this will happen if no predecessors exits
+ } catch (Exception e) {
+ log.error("Caught exception", e);
+ throw new RulesRepositoryException(e);
+ }
+ return null;
+ }
/**
* @return the successor node of this node in the version history
@@ -327,9 +322,36 @@
}
}
+ /**
+ * optionally update last updated...
+ */
+ public void updateStringArrayProperty(String[] value, String prop, boolean setLastUpdated) {
+ try {
+ checkIsUpdateable();
+ if (value == null) {
+ return;
+ }
+ node.checkout();
+ node.setProperty(prop, value);
+ if (setLastUpdated) {
+ Calendar lastModified = Calendar.getInstance();
+ this.node.setProperty(LAST_MODIFIED_PROPERTY_NAME, lastModified);
+ this.node.setProperty(LAST_CONTRIBUTOR_PROPERTY_NAME, node.getSession().getUserID());
+ }
+ } catch (RulesRepositoryException e) {
+ throw new RulesRepositoryException(e);
+ } catch (UnsupportedRepositoryOperationException e) {
+ throw new RulesRepositoryException(e);
+ } catch (LockException e) {
+ throw new RulesRepositoryException(e);
+ } catch (RepositoryException e) {
+ throw new RulesRepositoryException(e);
+ }
+ }
+
/**
* See the Dublin Core documentation for more
* explanation: http://dublincore.org/documents/dces/
@@ -417,7 +439,7 @@
/**
* This returns the format of an item.
- * This is analagous to a file extension
+ * This is analogous to a file extension
* if the resource was a file (it may contain more information
* then a pure file extension could, however).
*
@@ -427,18 +449,17 @@
* @return the format of this object's node
* @throws RulesRepositoryException
*/
- public String getFormat() throws RulesRepositoryException {
- try {
- Node theNode = getVersionContentNode();
+ public String getFormat() throws RulesRepositoryException {
+ try {
+ Node theNode = getVersionContentNode();
- Property data = theNode.getProperty( FORMAT_PROPERTY_NAME );
- return data.getValue().getString();
- } catch ( Exception e ) {
- log.error( "Caught Exception",
- e );
- throw new RulesRepositoryException( e );
- }
- }
+ Property data = theNode.getProperty(FORMAT_PROPERTY_NAME);
+ return data.getValue().getString();
+ } catch (Exception e) {
+ log.error("Caught Exception", e);
+ throw new RulesRepositoryException(e);
+ }
+ }
/**
* This sets the format (or "file extension" of the resource).
@@ -468,26 +489,25 @@
/**
* This deals with a node which *may* be a version, if it is, it grabs the frozen copy.
*/
- protected Node getRealContentFromVersion(Node node) throws RepositoryException,
- PathNotFoundException {
- if ( node.getPrimaryNodeType().getName().equals( "nt:version" ) ) {
- return node.getNode( "jcr:frozenNode" );
- } else {
- return node;
- }
- }
+ protected Node getRealContentFromVersion(Node node) throws RepositoryException, PathNotFoundException {
+ if (node.getPrimaryNodeType().getName().equals("nt:version")) {
+ return node.getNode("jcr:frozenNode");
+ } else {
+ return node;
+ }
+ }
/**
* Need to get the name from the content node, not the version node
* if it is in fact a version !
*/
- public String getName() {
- try {
- return getVersionContentNode().getName();
- } catch ( RepositoryException e ) {
- throw new RulesRepositoryException( e );
- }
- }
+ public String getName() {
+ try {
+ return getVersionContentNode().getName();
+ } catch (RepositoryException e) {
+ throw new RulesRepositoryException(e);
+ }
+ }
/**
* This will check out the node prior to editing.
Added: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/WorkingSetItem.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/WorkingSetItem.java (rev 0)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/WorkingSetItem.java 2010-03-05 21:12:36 UTC (rev 31973)
@@ -0,0 +1,111 @@
+package org.drools.repository;
+
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Iterator;
+
+import javax.jcr.Node;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.RepositoryException;
+
+public class WorkingSetItem extends VersionableItem {
+
+ /**
+ * The Dublin Core format attribute.
+ */
+ public static final String WORKINGSET_FORMAT = "pkgWorkingSet";
+
+ /**
+ * The name of the rule package node type
+ */
+ public static final String WORKINGSET_PACKAGE_TYPE_NAME = "drools:packageWorkingSet";
+
+ public static final String PACKAGE_NAME_PROPERTY = AssetItem.PACKAGE_NAME_PROPERTY;
+
+ public static final String WORKINGSETS_FOLDER_NAME = PackageItem.WORKINGSETS_FOLDER_NAME;
+
+ private static final String VALID_FACTS_PROPERTY = "drools:validFacts";
+
+
+ /**
+ * Creates new {@link WorkingSetItem} under the provided {@link PackageItem}
+ *
+ * @param name working set name
+ * @param rulesRepository the ruleRepository
+ * @param pkgItem under this package the WorkingSet will be created
+ * @throws RepositoryException
+ */
+ public WorkingSetItem(String name, String description, String packageName, RulesRepository rulesRepository, Node workingSetParentNode) throws RepositoryException {
+ this(rulesRepository, createWorkingSet(name, description, packageName, rulesRepository, workingSetParentNode));
+ }
+
+ private static Node createWorkingSet(String name, String description, String pkgName, RulesRepository rulesRepository, Node wsFolderNode)
+ throws RepositoryException {
+ Node wsNode = wsFolderNode.addNode(name.trim(), WorkingSetItem.WORKINGSET_PACKAGE_TYPE_NAME);
+ wsNode.setProperty(WorkingSetItem.TITLE_PROPERTY_NAME, name);
+ wsNode.setProperty(WorkingSetItem.DESCRIPTION_PROPERTY_NAME, description);
+ wsNode.setProperty(WorkingSetItem.FORMAT_PROPERTY_NAME, WorkingSetItem.WORKINGSET_FORMAT);
+ wsNode.setProperty(WorkingSetItem.CHECKIN_COMMENT, "Initial");
+ wsNode.setProperty(WorkingSetItem.LAST_MODIFIED_PROPERTY_NAME, Calendar.getInstance());
+ wsNode.setProperty(WorkingSetItem.PACKAGE_NAME_PROPERTY, pkgName);
+ wsNode.setProperty(WorkingSetItem.CREATOR_PROPERTY_NAME, rulesRepository.getSession().getUserID());
+ return wsNode;
+ }
+
+ public WorkingSetItem(RulesRepository rulesRepository, Node node) {
+ super(rulesRepository, node);
+ }
+
+ @Override
+ public WorkingSetItem getPrecedingVersion() throws RulesRepositoryException {
+ Node prev = getPrecedingVersionNode();
+ if (prev != null) {
+ return new WorkingSetItem(rulesRepository, prev);
+ }
+ return null;
+ }
+
+ @Override
+ public WorkingSetItem getSucceedingVersion() throws RulesRepositoryException {
+ Node next = getSucceedingVersionNode();
+ if (next != null) {
+ return new WorkingSetItem(rulesRepository, next);
+ }
+ return null;
+ }
+
+ public Node getWorkingSetFolderNode() throws RepositoryException {
+ try {
+ return getNode().getNode(WORKINGSETS_FOLDER_NAME);
+ } catch (PathNotFoundException e) {
+ return getNode().addNode(WORKINGSETS_FOLDER_NAME, "nt:folder");
+ }
+
+ }
+
+ public WorkingSetItem addWorkingSet(String name, String description) throws RepositoryException {
+ return new WorkingSetItem(name, description, getPackageName(), getRulesRepository(), getWorkingSetFolderNode());
+ }
+
+ public String getPackageName() {
+ return getStringProperty(PACKAGE_NAME_PROPERTY);
+ }
+
+ public String[] getValidFacts() {
+ return getStringPropertyArray(VALID_FACTS_PROPERTY);
+ }
+
+ public void updateValidFacts(String[] validFacts) {
+ updateStringArrayProperty(validFacts, VALID_FACTS_PROPERTY, true);
+ }
+
+ public Iterator<WorkingSetItem> listChildren() {
+ try {
+ return new WorkingSetItemIterator(getRulesRepository(), getNode().getNode(WORKINGSETS_FOLDER_NAME).getNodes());
+ } catch (PathNotFoundException e) {
+ return Collections.<WorkingSetItem>emptyList().iterator();
+ } catch (RepositoryException e) {
+ throw new RulesRepositoryException(e);
+ }
+ }
+}
Property changes on: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/WorkingSetItem.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/WorkingSetItemIterator.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/WorkingSetItemIterator.java (rev 0)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/WorkingSetItemIterator.java 2010-03-05 21:12:36 UTC (rev 31973)
@@ -0,0 +1,29 @@
+package org.drools.repository;
+
+import java.util.Iterator;
+
+import javax.jcr.NodeIterator;
+
+public class WorkingSetItemIterator implements Iterator<WorkingSetItem> {
+
+ private RulesRepository rulesRepository;
+ private NodeIterator wsIterator;
+
+ public WorkingSetItemIterator(RulesRepository rulesRepository, NodeIterator wsIterator) {
+ this.rulesRepository = rulesRepository;
+ this.wsIterator = wsIterator;
+ }
+
+ public boolean hasNext() {
+ return wsIterator.hasNext();
+ }
+
+ public WorkingSetItem next() {
+ return new WorkingSetItem(rulesRepository, wsIterator.nextNode());
+ }
+
+ public void remove() {
+ wsIterator.remove();
+ }
+
+}
Property changes on: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/main/java/org/drools/repository/WorkingSetItemIterator.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java 2010-03-05 21:08:30 UTC (rev 31972)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java 2010-03-05 21:12:36 UTC (rev 31973)
@@ -74,7 +74,7 @@
repo.save();
- PackageItem pkgNested = p.createPackage("NestedGoodness");
+ PackageItem pkgNested = p.createSubPackage("NestedGoodness");
assertNotNull(pkgNested);
int n = iteratorToList(repo.listPackages()).size();
More information about the jboss-svn-commits
mailing list