[jboss-svn-commits] JBL Code SVN: r20928 - in labs/jbossrules/trunk/drools-repository/src: test/java/org/drools/repository and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Jul 6 11:27:36 EDT 2008
Author: jervisliu
Date: 2008-07-06 11:27:35 -0400 (Sun, 06 Jul 2008)
New Revision: 20928
Added:
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositoryFilter.java
Modified:
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java
Log:
Return a list of artifacts using a filter. JBRULES-1018.
Added: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositoryFilter.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositoryFilter.java (rev 0)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositoryFilter.java 2008-07-06 15:27:35 UTC (rev 20928)
@@ -0,0 +1,6 @@
+package org.drools.repository;
+
+
+public interface RepositoryFilter {
+ boolean accept(Object artifact, String action);
+}
Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java 2008-07-06 11:19:30 UTC (rev 20927)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java 2008-07-06 15:27:35 UTC (rev 20928)
@@ -711,14 +711,26 @@
* returned (you will have to delve into the rules deepest darkest history
* yourself... mahahahaha).
*
+ */
+ public AssetPageList findAssetsByCategory(String categoryTag, boolean seekArchivedAsset, int skip, int numRowsToReturn) throws RulesRepositoryException {
+ return findAssetsByCategory(categoryTag, seekArchivedAsset, skip, numRowsToReturn, null);
+ }
+
+ /**
+ * This will retrieve a list of RuleItem objects - that are allocated to the
+ * provided category. Only the latest versions of each RuleItem will be
+ * returned (you will have to delve into the rules deepest darkest history
+ * yourself... mahahahaha).
+ *
* Pass in startRow of 0 to start at zero, numRowsToReturn can be set to -1 should you want it all.
+ * @param filter an AssetItem filter
*/
- public AssetPageList findAssetsByCategory(String categoryTag, boolean seekArchivedAsset, int skip, int numRowsToReturn) throws RulesRepositoryException {
+ public AssetPageList findAssetsByCategory(String categoryTag, boolean seekArchivedAsset, int skip, int numRowsToReturn, RepositoryFilter filter) throws RulesRepositoryException {
CategoryItem item = this.loadCategory( categoryTag );
try {
return loadLinkedAssets(seekArchivedAsset, skip, numRowsToReturn,
- item.getNode());
+ item.getNode(), filter);
} catch ( RepositoryException e ) {
throw new RulesRepositoryException( e );
}
@@ -729,17 +741,27 @@
* Similar to finding by category.
*/
public AssetPageList findAssetsByState(String stateName, boolean seekArchivedAsset, int skip, int numRowsToReturn) throws RulesRepositoryException {
+ return findAssetsByState(stateName, seekArchivedAsset, skip, numRowsToReturn, null);
+ }
+
+ /**
+ * Finds the AssetItem's linked to the requested state.
+ * Similar to finding by category.
+ * @param filter an AssetItem filter
+ *
+ */
+ public AssetPageList findAssetsByState(String stateName, boolean seekArchivedAsset, int skip, int numRowsToReturn, RepositoryFilter filter) throws RulesRepositoryException {
StateItem item = this.getState(stateName);
try {
return loadLinkedAssets(seekArchivedAsset, skip, numRowsToReturn,
- item.getNode());
+ item.getNode(), filter);
} catch ( RepositoryException e ) {
throw new RulesRepositoryException( e );
}
}
-
+
private AssetPageList loadLinkedAssets(boolean seekArchivedAsset, int skip,
- int numRowsToReturn, Node n)
+ int numRowsToReturn, Node n, RepositoryFilter filter)
throws RepositoryException {
int rows = 0;
List results = new ArrayList();
@@ -751,11 +773,13 @@
Property ruleLink = (Property) it.next();
Node parentNode = ruleLink.getParent();
if ( isNotSnapshot( parentNode ) && parentNode.getPrimaryNodeType().getName().equals( AssetItem.RULE_NODE_TYPE_NAME ) ) {
- if ( seekArchivedAsset || !parentNode.getProperty( AssetItem.CONTENT_PROPERTY_ARCHIVE_FLAG ).getBoolean() )
- {
- results.add( new AssetItem( this, parentNode ) );
+ if ( seekArchivedAsset || !parentNode.getProperty( AssetItem.CONTENT_PROPERTY_ARCHIVE_FLAG ).getBoolean() ) {
+ AssetItem ai = new AssetItem( this, parentNode );
+ if(filter == null || filter.accept(ai, "read")) {
+ results.add(ai);
rows++;
}
+ }
}
}
Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java 2008-07-06 11:19:30 UTC (rev 20927)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java 2008-07-06 15:27:35 UTC (rev 20928)
@@ -16,6 +16,7 @@
import org.drools.repository.migration.MigrateDroolsPackage;
+
import junit.framework.TestCase;
public class RulesRepositoryTest extends TestCase {
@@ -319,7 +320,67 @@
assertTrue(found);
}
+
+ public void testFindAssetsByState() throws Exception {
+ RulesRepository repo = RepositorySessionUtil.getRepository();
+ repo.loadCategory( "/" ).addCategory( "testFindAssetsByStateCat", "X" );
+ PackageItem pkg = repo.createPackage( "testFindAssetsByStatePac", "");
+ pkg.addAsset( "testCat1", "x", "/testFindAssetsByStateCat", "drl");
+ pkg.addAsset( "testCat2", "x", "/testFindAssetsByStateCat", "drl");
+
+ repo.save();
+
+ AssetPageList apl = repo.findAssetsByState( "Draft", false, 0, -1, new RepositoryFilter() {
+ public boolean accept(Object artifact, String action) {
+ if (!(artifact instanceof AssetItem))
+ return false;
+
+
+ if (((AssetItem)artifact).getName().equalsIgnoreCase("testCat1")) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ });
+
+ assertEquals(1, apl.assets.size());
+ assertEquals("testCat1", ((AssetItem)apl.assets.get(0)).getName());
+ }
+
+
+ public void testFindAssetsByCategory() throws Exception {
+ RulesRepository repo = RepositorySessionUtil.getRepository();
+ repo.loadCategory( "/" ).addCategory( "testFindAssetsByCategoryUsingFilterCat", "X" );
+
+ PackageItem pkg = repo.createPackage( "testFindAssetsByCategoryUsingFilterPack", "");
+ pkg.addAsset( "testCat1", "x", "/testFindAssetsByCategoryUsingFilterCat", "drl");
+ pkg.addAsset( "testCat2", "x", "/testFindAssetsByCategoryUsingFilterCat", "drl");
+
+ repo.save();
+
+ List items = repo.findAssetsByCategory( "/testFindAssetsByCategoryUsingFilterCat", 0, -1 ).assets;
+ assertEquals(2, items.size());
+
+ AssetPageList apl = repo.findAssetsByCategory( "/testFindAssetsByCategoryUsingFilterCat", false, 0, -1, new RepositoryFilter() {
+ public boolean accept(Object artifact, String action) {
+ if (!(artifact instanceof AssetItem))
+ return false;
+
+
+ if (((AssetItem)artifact).getName().equalsIgnoreCase("testCat1")) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ });
+
+ assertEquals(1, apl.assets.size());
+ assertEquals("testCat1", ((AssetItem)apl.assets.get(0)).getName());
+ }
+
/**
* Here we are testing to make sure that category links don't pick up stuff in snapshots area.
*/
More information about the jboss-svn-commits
mailing list