[jboss-svn-commits] JBL Code SVN: r29649 - in labs/jbossrules/trunk/drools-guvnor/src: main/java/org/drools/guvnor/client/rpc and 6 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Oct 18 23:37:51 EDT 2009


Author: jervisliu
Date: 2009-10-18 23:37:50 -0400 (Sun, 18 Oct 2009)
New Revision: 29649

Added:
   labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/selector/BuiltInSelectorTest.java
Modified:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/PackageBuilderWidget.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/ContentPackageAssembler.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/selector/BuiltInSelector.java
   labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java
   labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/builder/ContentPackageAssemblerTest.java
Log:
GUVNOR-467: Enhancement to BuiltInSelector

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/PackageBuilderWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/PackageBuilderWidget.java	2009-10-19 02:37:20 UTC (rev 29648)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/PackageBuilderWidget.java	2009-10-19 03:37:50 UTC (rev 29649)
@@ -20,6 +20,8 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.drools.guvnor.client.categorynav.CategoryExplorerWidget;
+import org.drools.guvnor.client.categorynav.CategorySelectHandler;
 import org.drools.guvnor.client.common.FormStyleLayout;
 import org.drools.guvnor.client.common.FormStylePopup;
 import org.drools.guvnor.client.common.GenericCallback;
@@ -37,6 +39,7 @@
 import com.google.gwt.user.client.DeferredCommand;
 import com.google.gwt.user.client.Window;
 import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.CheckBox;
 import com.google.gwt.user.client.ui.ClickListener;
 import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.HTML;
@@ -47,6 +50,7 @@
 import com.google.gwt.user.client.ui.ListBox;
 import com.google.gwt.user.client.ui.Panel;
 import com.google.gwt.user.client.ui.RadioButton;
+import com.google.gwt.user.client.ui.ScrollPanel;
 import com.google.gwt.user.client.ui.SimplePanel;
 import com.google.gwt.user.client.ui.TextArea;
 import com.google.gwt.user.client.ui.TextBox;
@@ -87,6 +91,8 @@
     private final FormStyleLayout customSelectorLayout     = new FormStyleLayout();
     private String buildMode = "buildWholePackage";
 
+    private String                 initialCategory;
+
     public PackageBuilderWidget(final PackageConfigData conf,
 			EditItemEvent editEvent) {
 		layout = new FormStyleLayout();
@@ -152,21 +158,49 @@
 
 
 		//Built-in selector layout
-        HorizontalPanel builtInSelectorPanel = new HorizontalPanel();
-        builtInSelectorPanel.add( new HTML("&nbsp;&nbsp;<i>" + "Status" + ": </i>") ); 
-        
-        final ListBox operator = new ListBox();
-        String[] vals = new String[]{"=", "!=", "<", ">"};
+	    builtInSelectorLayout.addRow(new HTML("&nbsp;&nbsp;<i>" + "Build package using following assets" + ": </i>") );
+	       
+	    HorizontalPanel builtInSelectorStatusPanel = new HorizontalPanel();
+        final CheckBox enableStatusCheckBox = new CheckBox();
+        enableStatusCheckBox.setChecked(false);
+        builtInSelectorStatusPanel.add(enableStatusCheckBox);
+        builtInSelectorStatusPanel.add( new HTML("&nbsp;&nbsp;<i>" + "When status" + ": </i>") );    
+        final ListBox statusOperator = new ListBox();
+        String[] vals = new String[]{"=", "!="};
         for ( int i = 0; i < vals.length; i++ ) {
-        	operator.addItem( vals[i], vals[i]);
+        	statusOperator.addItem( vals[i], vals[i]);
         }
-        builtInSelectorPanel.add( operator );
+        builtInSelectorStatusPanel.add( statusOperator );
         
         final TextBox statusValue = new TextBox();
         statusValue.setTitle( constants.WildCardsSearchTip() );
-        builtInSelectorPanel.add(statusValue );                  
- 
-        builtInSelectorLayout.addRow(builtInSelectorPanel);
+        builtInSelectorStatusPanel.add(statusValue );                  
+
+        builtInSelectorLayout.addRow(builtInSelectorStatusPanel);
+        
+        HorizontalPanel builtInSelectorCatPanel = new HorizontalPanel();
+        final CheckBox enableCategoryCheckBox = new CheckBox();
+        enableCategoryCheckBox.setChecked(false);
+        builtInSelectorCatPanel.add(enableCategoryCheckBox);
+        builtInSelectorCatPanel.add( new HTML("&nbsp;&nbsp;<i>" + "When category" + ": </i>") );
+        final ListBox catOperator = new ListBox();
+        String[] catVals = new String[]{"=", "!="};
+        for ( int i = 0; i < catVals.length; i++ ) {
+        	catOperator.addItem( catVals[i], catVals[i]);
+        }
+        builtInSelectorCatPanel.add( catOperator );
+        final CategoryExplorerWidget catChooser = new CategoryExplorerWidget( new CategorySelectHandler() {
+            public void selected(String selectedPath) {
+                initialCategory = selectedPath;
+            }
+        });
+        ScrollPanel catScroll = new ScrollPanel(catChooser);
+        catScroll.setAlwaysShowScrollBars(true);
+        catScroll.setSize("300px", "130px");
+        
+        builtInSelectorCatPanel.add(catScroll);               
+        builtInSelectorLayout.addRow(builtInSelectorCatPanel);
+
         layout.addRow( builtInSelectorLayout );
         
         
@@ -188,7 +222,9 @@
 		b.setTitle(constants.ThisWillValidateAndCompileAllTheAssetsInAPackage());
 		b.addClickListener(new ClickListener() {
 			public void onClick(Widget w) {
-				doBuild(buildResults, operator.getValue(operator.getSelectedIndex()), statusValue.getText(), customSelector.getSelectedIndex() != -1?customSelector.getValue(customSelector.getSelectedIndex()):null);
+				doBuild(buildResults, statusOperator.getValue(statusOperator.getSelectedIndex()), statusValue.getText(), enableStatusCheckBox.isChecked(), 
+						catOperator.getValue(catOperator.getSelectedIndex()), catChooser.getSelectedPath(), enableCategoryCheckBox.isChecked(),
+						customSelector.getSelectedIndex() != -1?customSelector.getValue(customSelector.getSelectedIndex()):null);
 			}
 		});
 
@@ -215,7 +251,7 @@
 
 		initWidget(layout);
 	}
-
+    
 	private void loadCustomSelectorList(final ListBox customSelector) {
 		RepositoryServiceFactory.getService().getCustomSelectors( new GenericCallback<String[]>() {
 
@@ -227,7 +263,8 @@
         });
 	}
 	
-	private void doBuild(final Panel buildResults, final String operator, final String statusValue, final String customSelector) {
+	private void doBuild(final Panel buildResults, final String statusOperator, final String statusValue, final boolean enableStatusSelector, 
+			final String categoryOperator, final String category, final boolean enableCategorySelector, final String customSelector) {
 		buildResults.clear();
 
 		final HorizontalPanel busy = new HorizontalPanel();
@@ -239,7 +276,8 @@
 
 		DeferredCommand.addCommand(new Command() {
 			public void execute() {
-				RepositoryServiceFactory.getService().buildPackage(conf.uuid, true, buildMode, operator, statusValue, customSelector, 
+				RepositoryServiceFactory.getService().buildPackage(conf.uuid, true, buildMode, statusOperator, statusValue, enableStatusSelector, 
+						categoryOperator, category, enableCategorySelector, customSelector, 
 						new GenericCallback<BuilderResult[]>() {
 							public void onSuccess(BuilderResult[] result) {
                                 LoadingPopup.close();

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java	2009-10-19 02:37:20 UTC (rev 29648)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java	2009-10-19 03:37:50 UTC (rev 29649)
@@ -291,7 +291,9 @@
      * in the systems selectors.properties file. This will then apply the filter to the
      * package being built.
      */
-    public BuilderResult[] buildPackage(String packageUUID,  boolean force, String buildMode, String operator, String statusDescriptionValue, 
+    public BuilderResult[] buildPackage(String packageUUID,  boolean force, String buildMode, 
+    		String operator, String statusDescriptionValue, boolean enableStatusSelector, 
+    		String categoryOperator, String category, boolean enableCategorySelector,
 			String customSelectorName) throws SerializableException;
 
     /**

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java	2009-10-19 02:37:20 UTC (rev 29648)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java	2009-10-19 03:37:50 UTC (rev 29649)
@@ -71,7 +71,7 @@
 	public void quickFindAsset(java.lang.String p0, int p1, boolean p2, AsyncCallback<org.drools.guvnor.client.rpc.TableDataResult> cb);
 	public void removeCategory(java.lang.String p0, AsyncCallback cb);
 	public void loadSuggestionCompletionEngine(java.lang.String p0, AsyncCallback<org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine> cb);
-	public void buildPackage(java.lang.String p0, boolean p1, java.lang.String p2, java.lang.String p3, java.lang.String p4, java.lang.String p5, AsyncCallback<org.drools.guvnor.client.rpc.BuilderResult[]> cb);
+	public void buildPackage(java.lang.String p0, boolean p1, java.lang.String p2, java.lang.String p3, java.lang.String p4, boolean p5, java.lang.String p6, java.lang.String p7, boolean p8, java.lang.String p9, AsyncCallback<org.drools.guvnor.client.rpc.BuilderResult[]> cb);
 	public void getCustomSelectors(AsyncCallback<java.lang.String[]> cb);
 	public void buildPackageSource(java.lang.String p0, AsyncCallback<java.lang.String> cb);
 	public void buildAssetSource(org.drools.guvnor.client.rpc.RuleAsset p0, AsyncCallback<java.lang.String> cb);

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java	2009-10-19 02:37:20 UTC (rev 29648)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java	2009-10-19 03:37:50 UTC (rev 29649)
@@ -205,8 +205,10 @@
 	public org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine loadSuggestionCompletionEngine(java.lang.String p0) throws com.google.gwt.user.client.rpc.SerializableException {
 		 return getService().loadSuggestionCompletionEngine( p0);
 	}
-	public org.drools.guvnor.client.rpc.BuilderResult[] buildPackage(java.lang.String p0, boolean p1, java.lang.String p2, java.lang.String p3 ,java.lang.String p4, java.lang.String p5) throws com.google.gwt.user.client.rpc.SerializableException {
-		 return getService().buildPackage( p0,  p1,  p2, p3, p4, p5);
+	public org.drools.guvnor.client.rpc.BuilderResult[] buildPackage(java.lang.String p0, boolean p1, java.lang.String p2, 
+			java.lang.String p3, java.lang.String p4 , boolean p5, 
+			java.lang.String p6, java.lang.String p7, boolean p8, java.lang.String p9) throws com.google.gwt.user.client.rpc.SerializableException {
+		 return getService().buildPackage( p0,  p1,  p2, p3, p4, p5, p6, p7, p8, p9);
 	}
 	public java.lang.String[] getCustomSelectors() throws com.google.gwt.user.client.rpc.SerializableException {
 		 return getService().getCustomSelectors();

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java	2009-10-19 02:37:20 UTC (rev 29648)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java	2009-10-19 03:37:50 UTC (rev 29649)
@@ -1440,12 +1440,14 @@
     @Restrict("#{identity.loggedIn}")
     public BuilderResult[] buildPackage(String packageUUID, boolean force)
 			throws SerializableException {
-		return buildPackage(packageUUID, force, null, null, null, null);
+		return buildPackage(packageUUID, force, null, null, null, false, null, null, false, null);
 	}
     
     @WebRemote
     @Restrict("#{identity.loggedIn}")
-    public BuilderResult[] buildPackage(String packageUUID, boolean force, String buildMode, String operator, String statusDescriptionValue, 
+    public BuilderResult[] buildPackage(String packageUUID, boolean force, String buildMode, 
+    		String statusOperator, String statusDescriptionValue, boolean enableStatusSelector,
+    		String categoryOperator, String category, boolean enableCategorySelector,
 			String customSelectorName)
 			throws SerializableException {
 		if (Contexts.isSessionContextActive()) {
@@ -1455,7 +1457,9 @@
 		}
 		PackageItem item = repository.loadPackageByUUID(packageUUID);
 		try {
-			return buildPackage(item, force, buildMode, operator, statusDescriptionValue, customSelectorName);
+			return buildPackage(item, force, buildMode, statusOperator, 
+					statusDescriptionValue, enableStatusSelector, 
+					categoryOperator, category, enableCategorySelector, customSelectorName);
 		} catch (NoClassDefFoundError e) {
 			throw new DetailedSerializableException(
 					"Unable to find a class that was needed when building the package  ["
@@ -1475,15 +1479,21 @@
 			throws SerializableException {
 		return SelectorManager.getInstance().getCustomSelectors();
 	}
+ 
+    private BuilderResult[] buildPackage(PackageItem item, boolean force) throws DetailedSerializableException {
+    	return buildPackage(item, force, null, null, null, false, null, null, false, null);
+    }
     
     private BuilderResult[] buildPackage(PackageItem item, boolean force, String buildMode,
-			String operator, String statusDescriptionValue,
+			String statusOperator, String statusDescriptionValue, boolean enableStatusSelector,
+			String categoryOperator, String category, boolean enableCategorySelector,
 			String selectorConfigName) throws DetailedSerializableException {
         if ( !force && item.isBinaryUpToDate() ) {
             // we can just return all OK if its up to date.
             return null;
         }
-        ContentPackageAssembler asm = new ContentPackageAssembler( item, true, buildMode, operator, statusDescriptionValue, selectorConfigName );
+        ContentPackageAssembler asm = new ContentPackageAssembler( item, true, buildMode, statusOperator, statusDescriptionValue, enableStatusSelector, 
+        		categoryOperator, category, enableCategorySelector, selectorConfigName );
         if ( asm.hasErrors() ) {
             BuilderResult[] result = generateBuilderResults( asm );
             return result;
@@ -1772,7 +1782,7 @@
                 PackageItem snap = repository.loadPackageSnapshot( pkg.getName(),
                                                                    snapName );
                 BuilderResult[] res = this.buildPackage( snap.getUUID(),
-                                                         true, null, null, null, null );
+                                                         true);
                 if ( res != null ) {
                     StringBuffer buf = new StringBuffer();
                     for ( int i = 0; i < res.length; i++ ) {
@@ -1933,7 +1943,7 @@
                 this.ruleBaseCache.put( item.getUUID(),
                                         rb );
             } else {
-                BuilderResult[] errs = this.buildPackage(item, false, null, null, null, null);
+                BuilderResult[] errs = this.buildPackage(item, false);
                 if ( errs == null || errs.length == 0 ) {
                     rb = loadRuleBase( item,
                                        buildCl );
@@ -1960,7 +1970,7 @@
             log.error( e );
             log.info( "...but trying to rebuild binaries..." );
             try {
-                BuilderResult[] res = this.buildPackage(item, true, null, null, null, null);
+                BuilderResult[] res = this.buildPackage(item, true);
                 if ( res != null && res.length > 0 ) {
                     throw new DetailedSerializableException( "There were errors when rebuilding the knowledgebase.",
                                                              "" );
@@ -2076,7 +2086,7 @@
                                             loadRuleBase( item,
                                                           cl ) );
                 } else {
-                    BuilderResult[] errs = this.buildPackage(item, false, null, null, null, null);
+                    BuilderResult[] errs = this.buildPackage(item, false);
                     if ( errs == null || errs.length == 0 ) {
                         this.ruleBaseCache.put( item.getUUID(),
                                                 loadRuleBase( item,
@@ -2301,7 +2311,7 @@
             PackageItem pkg = (PackageItem) pkit.next();
             try {
                 BuilderResult[] res = this.buildPackage( pkg.getUUID(),
-                                                         true, null, null, null, null );
+                                                         true);
                 if ( res != null ) {
                     errs.append( "Unable to build package name [" + pkg.getName() + "]\n" );
                     StringBuffer buf = new StringBuffer();

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/ContentPackageAssembler.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/ContentPackageAssembler.java	2009-10-19 02:37:20 UTC (rev 29648)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/builder/ContentPackageAssembler.java	2009-10-19 03:37:50 UTC (rev 29649)
@@ -67,8 +67,12 @@
 
 	private String customSelectorName;
 	private String buildMode;
-	private String operator;
+	private String statusOperator;
 	private String statusDescriptionValue;
+	private boolean enableStatusSelector;
+	private String categoryOperator;
+	private String categoryValue;
+	private boolean enableCategorySelector;	
 
 	/**
 	 * Use this if you want to build the whole package.
@@ -88,7 +92,7 @@
 	 *            source.
 	 */
 	public ContentPackageAssembler(PackageItem pkg, boolean compile) {
-		this(pkg, compile, null, null, null, null);
+		this(pkg, compile, null, null, null, false, null, null, false, null);
 	}
 
 	/**
@@ -100,14 +104,20 @@
 	 * @param selectorConfigName
 	 */
 	public ContentPackageAssembler(PackageItem assetPackage, boolean compile, String buildMode,
-			String operator, String statusDescriptionValue, String selectorConfigName) {
+			String statusOperator, String statusDescriptionValue, boolean enableStatusSelector,
+			String categoryOperator, String categoryValue, boolean enableCategorySelector,
+			String selectorConfigName) {
 
 		this.pkg = assetPackage;
 		this.customSelectorName = selectorConfigName;
 		this.buildMode = buildMode;
-		this.operator = operator;
+		this.statusOperator = statusOperator;
 		this.statusDescriptionValue = statusDescriptionValue;
-
+		this.enableStatusSelector = enableStatusSelector;
+		this.categoryOperator = categoryOperator;
+		this.categoryValue = categoryValue;
+		this.enableCategorySelector = enableCategorySelector;
+		
 		createBuilder();
 
 		if (compile && preparePackage()) {
@@ -165,8 +175,12 @@
 		} else if ("builtInSelector".equals(buildMode)) {
 			selector = (BuiltInSelector)SelectorManager.getInstance().getSelector(
 			"BuiltInSelector");
-	        ((BuiltInSelector)selector).setOperator(operator);
-	        ((BuiltInSelector)selector).setStatus(statusDescriptionValue);			
+	        ((BuiltInSelector)selector).setStatusOperator(statusOperator);
+	        ((BuiltInSelector)selector).setStatus(statusDescriptionValue);	
+	        ((BuiltInSelector)selector).setEnableStatusSelector(enableStatusSelector);
+	        ((BuiltInSelector)selector).setCategory(categoryValue);
+	        ((BuiltInSelector)selector).setCategoryOperator(categoryOperator);
+	        ((BuiltInSelector)selector).setEnableCategorySelector(enableCategorySelector);
 		} else {
 			//return the NilSelector, i.e., allows everything
 			selector = SelectorManager.getInstance().getSelector(null);				

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/selector/BuiltInSelector.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/selector/BuiltInSelector.java	2009-10-19 02:37:20 UTC (rev 29648)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/selector/BuiltInSelector.java	2009-10-19 03:37:50 UTC (rev 29649)
@@ -1,48 +1,116 @@
 package org.drools.guvnor.server.selector;
 
+import org.drools.guvnor.server.security.CategoryPathType;
+import org.drools.guvnor.server.security.RoleTypes;
 import org.drools.repository.AssetItem;
+import org.drools.repository.CategoryItem;
+import org.jboss.seam.security.Identity;
 
 public class BuiltInSelector implements AssetSelector {
 	private String status;
-	public String getStatus() {
-		return status;
+	private String statusOperator;
+	private String category;
+	private String categoryOperator;
+	private boolean enableStatusSelector;
+	private boolean enableCategorySelector;	
+
+    public BuiltInSelector() {
+	}	
+    
+ 	public boolean isEnableStatusSelector() {
+		return enableStatusSelector;
 	}
 
-	public void setStatus(String status) {
-		this.status = status;
+	public void setEnableStatusSelector(boolean enableStatusSelector) {
+		this.enableStatusSelector = enableStatusSelector;
 	}
 
-	public String getOperator() {
-		return operator;
+	public boolean isEnableCategorySelector() {
+		return enableCategorySelector;
 	}
 
-	public void setOperator(String operator) {
-		this.operator = operator;
+	public void setEnableCategorySelector(boolean enableCategorySelector) {
+		this.enableCategorySelector = enableCategorySelector;
 	}
+	
+    public String getCategory() {
+		return category;
+	}
 
-	private String operator;
+	public void setCategory(String category) {
+		this.category = category;
+	}
 
-    public BuiltInSelector(String status, String operator) {
-    	this.status = status;
-    	this.operator = operator;
+	public String getCategoryOperator() {
+		return categoryOperator;
 	}
 
-    public BuiltInSelector() {
+	public void setCategoryOperator(String categoryOperator) {
+		this.categoryOperator = categoryOperator;
 	}
+		
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public String getStatusOperator() {
+		return statusOperator;
+	}
+
+	public void setStatusOperator(String statusOperator) {
+		this.statusOperator = statusOperator;
+	}
     
 	public boolean isAssetAllowed(AssetItem item) {
-		if("=".equals(operator)) {
+		if(enableStatusSelector && enableCategorySelector) {
+			return (isStatusAllowed(item) && isCategoryAllowed(item));
+		} else if (enableStatusSelector) {
+			return isStatusAllowed(item);
+		} else if (enableCategorySelector) {
+			return isCategoryAllowed(item);
+		}
+		
+		//allow everything if none enabled.
+		return true;
+	}
+	
+	private boolean isStatusAllowed(AssetItem item) {
+		if("=".equals(statusOperator)) {
 		    if (item.getStateDescription().equals(status))
 			    return true;
 		    else
 			    return false;
-		} else if ("!=".equals(operator)) {
+		} else if ("!=".equals(statusOperator)) {
 			if (!item.getStateDescription().equals(status))
 			    return true;
 		    else
 			    return false;
 		}
 	
-		return false;
+		return false;		
 	}
+	
+	private boolean isCategoryAllowed(AssetItem item) {
+		if("=".equals(categoryOperator)) {			
+            for ( CategoryItem cat : item.getCategories() ) {
+            	if (cat.getName().equals(category)) {
+            		return true;
+            	}
+            }
+            return false;
+		} else if ("!=".equals(categoryOperator)) {
+            for ( CategoryItem cat : item.getCategories() ) {
+            	if (!cat.getName().equals(category)) {
+            		return true;
+            	}
+            }
+            return false;
+		}
+	
+		return false;		
+	}
 }

Modified: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java	2009-10-19 02:37:20 UTC (rev 29648)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java	2009-10-19 03:37:50 UTC (rev 29649)
@@ -1267,7 +1267,7 @@
 				.updateContent(" rule abc \n when \n then \n System.out.println(42); \n end");
 		item.checkin("");
 
-		BuilderResult[] res = impl.buildPackage(pkg.getUUID(), true, null, null, null, "");
+		BuilderResult[] res = impl.buildPackage(pkg.getUUID(), true);
 		assertNull(res);
 
 		impl.createPackageSnapshot("testSnapshotRebuild", "SNAP", false, "");

Modified: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/builder/ContentPackageAssemblerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/builder/ContentPackageAssemblerTest.java	2009-10-19 02:37:20 UTC (rev 29648)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/builder/ContentPackageAssemblerTest.java	2009-10-19 03:37:50 UTC (rev 29649)
@@ -598,8 +598,7 @@
 
 
         ContentPackageAssembler asm = new ContentPackageAssembler( pkg,
-                                                                   false,
-                                                                   null, null, null, null );
+                                                                   false);
         String drl = asm.getDRL();
 
         assertNotNull( drl );
@@ -709,8 +708,7 @@
         assertRule3.checkin( "" );
 
         ContentPackageAssembler asm = new ContentPackageAssembler( pkg,
-                                                                   true,
-                                                                   null, null, null, null );
+                                                                   true);
         assertFalse( asm.hasErrors() );
         Package p = asm.builder.getPackage();
 
@@ -939,7 +937,7 @@
                           } );
 
         ContentPackageAssembler asm = new ContentPackageAssembler( pkg, true, 
-                                                                   "customSelector", null, null, "testSelect");
+                                                                   "customSelector", null, null, false, null, null, false, "testSelect");
 
         Package pk = asm.getBinaryPackage();
         assertEquals( 1,
@@ -953,7 +951,7 @@
         assertEquals( 2,
                       pk.getRules().length );
 
-        asm = new ContentPackageAssembler( pkg, true, "customSelector", null, null,
+        asm = new ContentPackageAssembler( pkg, true, "customSelector", null, null, false, null, null, false,
                                            "nothing valid" );
         assertTrue( asm.hasErrors() );
         assertEquals( 1,
@@ -961,7 +959,7 @@
         assertEquals( pkg,
                       asm.getErrors().get( 0 ).itemInError );
 
-        asm = new ContentPackageAssembler( pkg, true, "customSelector", null, null,
+        asm = new ContentPackageAssembler( pkg, true, "customSelector", null, null, false, null, null, false,
                                            "" );
         pk = asm.getBinaryPackage();
         assertEquals( 2,

Added: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/selector/BuiltInSelectorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/selector/BuiltInSelectorTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/selector/BuiltInSelectorTest.java	2009-10-19 03:37:50 UTC (rev 29649)
@@ -0,0 +1,151 @@
+package org.drools.guvnor.server.selector;
+
+import org.drools.guvnor.client.rpc.RepositoryService;
+import org.drools.guvnor.server.ServiceImplementation;
+import org.drools.guvnor.server.util.TestEnvironmentSessionHelper;
+import org.drools.repository.AssetItem;
+import org.drools.repository.CategoryItem;
+import org.drools.repository.RulesRepository;
+
+import junit.framework.TestCase;
+
+public class BuiltInSelectorTest extends TestCase {
+
+    public void testBuiltInSelector() throws Exception {
+		ServiceImplementation impl = getService();
+		impl.repository.loadDefaultPackage();
+		impl.repository.createPackage("testBuiltInSelectorPackage", "woot");
+		impl.repository.createState("Dev");
+		impl.repository.createState("QA");
+		
+		CategoryItem cat = impl.repository.loadCategory("/");
+		cat.addCategory("testBuiltInSelectorCat1", "yeah");
+		cat.addCategory("testBuiltInSelectorCat2", "yeah");
+
+		String uuid1 = impl.createNewRule("test AddRule1", "a description",
+				"testBuiltInSelectorCat1", "testBuiltInSelectorPackage", "txt");
+		AssetItem item1 = impl.repository.loadAssetByUUID(uuid1);		
+		item1.updateState("Dev");
+		String uuid2 = impl.createNewRule("test AddRule2", "a description",
+				"testBuiltInSelectorCat1", "testBuiltInSelectorPackage", "txt");
+		AssetItem item2 = impl.repository.loadAssetByUUID(uuid2);			
+		item2.updateState("QA");
+		String uuid3 = impl.createNewRule("test AddRule3", "a description",
+				"testBuiltInSelectorCat2", "testBuiltInSelectorPackage", "txt");
+		AssetItem item3 = impl.repository.loadAssetByUUID(uuid3);			
+		item3.updateState("Dev");
+		String uuid4 = impl.createNewRule("test AddRule4", "a description",
+				"testBuiltInSelectorCat2", "testBuiltInSelectorPackage", "txt");
+		AssetItem item4 = impl.repository.loadAssetByUUID(uuid4);			
+		item4.updateState("QA");
+		
+		//Select asset using "category =" 
+    	BuiltInSelector selector1 = (BuiltInSelector)SelectorManager.getInstance().getSelector( "BuiltInSelector" );
+    	selector1.setCategory("testBuiltInSelectorCat1");
+    	selector1.setCategoryOperator("=");
+    	selector1.setEnableCategorySelector(true);
+    	selector1.setStatus("Dev");
+    	selector1.setStatusOperator("=");
+    	selector1.setEnableStatusSelector(false); 
+		
+		assertTrue(selector1.isAssetAllowed(item1));
+		assertTrue(selector1.isAssetAllowed(item2));
+		assertFalse(selector1.isAssetAllowed(item3));
+		assertFalse(selector1.isAssetAllowed(item4));		
+		
+		//Select asset using "category !=" 
+		BuiltInSelector selector2 = (BuiltInSelector)SelectorManager.getInstance().getSelector( "BuiltInSelector" );
+		selector2.setCategory("testBuiltInSelectorCat1");
+    	selector2.setCategoryOperator("!=");
+    	selector2.setEnableCategorySelector(true);
+    	selector2.setStatus("Dev");
+    	selector2.setStatusOperator("=");
+    	selector2.setEnableStatusSelector(false); 
+		
+    	assertFalse(selector2.isAssetAllowed(item1));
+    	assertFalse(selector2.isAssetAllowed(item2));
+    	assertTrue(selector2.isAssetAllowed(item3));
+		assertTrue(selector2.isAssetAllowed(item4));	
+		
+		//Select asset using "status =" 
+		BuiltInSelector selector3 = (BuiltInSelector)SelectorManager.getInstance().getSelector( "BuiltInSelector" );
+    	selector3.setCategory("testBuiltInSelectorCat1");
+    	selector3.setCategoryOperator("!=");
+    	selector3.setEnableCategorySelector(false);
+    	selector3.setStatus("Dev");
+    	selector3.setStatusOperator("=");
+    	selector3.setEnableStatusSelector(true);     	
+		
+    	assertTrue(selector3.isAssetAllowed(item1));
+    	assertFalse(selector3.isAssetAllowed(item2));
+    	assertTrue(selector3.isAssetAllowed(item3));
+    	assertFalse(selector3.isAssetAllowed(item4));	    
+    	
+		//Select asset using "status !=" 
+		BuiltInSelector selector4 = (BuiltInSelector)SelectorManager.getInstance().getSelector( "BuiltInSelector" );
+		selector4.setCategory("testBuiltInSelectorCat1");
+		selector4.setCategoryOperator("!=");
+		selector4.setEnableCategorySelector(false);
+		selector4.setStatus("Dev");
+		selector4.setStatusOperator("!=");
+		selector4.setEnableStatusSelector(true);     	
+		
+		assertFalse(selector4.isAssetAllowed(item1));
+    	assertTrue(selector4.isAssetAllowed(item2));
+    	assertFalse(selector4.isAssetAllowed(item3));
+    	assertTrue(selector4.isAssetAllowed(item4));	
+    	
+		//Select asset using "status =" AND "category ="
+		BuiltInSelector selector5 = (BuiltInSelector)SelectorManager.getInstance().getSelector( "BuiltInSelector" );
+		selector5.setCategory("testBuiltInSelectorCat1");
+		selector5.setCategoryOperator("=");
+		selector5.setEnableCategorySelector(true);
+		selector5.setStatus("Dev");
+		selector5.setStatusOperator("=");
+		selector5.setEnableStatusSelector(true);     	
+		
+		assertTrue(selector5.isAssetAllowed(item1));
+		assertFalse(selector5.isAssetAllowed(item2));
+    	assertFalse(selector5.isAssetAllowed(item3));
+    	assertFalse(selector5.isAssetAllowed(item4));	  
+    	    	
+		//Select asset using "status =" AND "category !="
+		BuiltInSelector selector6 = (BuiltInSelector)SelectorManager.getInstance().getSelector( "BuiltInSelector" );
+		selector6.setCategory("testBuiltInSelectorCat1");
+		selector6.setCategoryOperator("!=");
+		selector6.setEnableCategorySelector(true);
+		selector6.setStatus("Dev");
+		selector6.setStatusOperator("=");
+		selector6.setEnableStatusSelector(true);     	
+		
+		assertFalse(selector6.isAssetAllowed(item1));
+		assertFalse(selector6.isAssetAllowed(item2));
+		assertTrue(selector6.isAssetAllowed(item3));
+    	assertFalse(selector6.isAssetAllowed(item4));	 
+    	
+    	
+		//Allow everything if both selectors are disabled
+		BuiltInSelector selector7 = (BuiltInSelector)SelectorManager.getInstance().getSelector( "BuiltInSelector" );
+		selector7.setCategory("testBuiltInSelectorCat1");
+		selector7.setCategoryOperator("!=");
+		selector7.setEnableCategorySelector(false);
+		selector7.setStatus("Dev");
+		selector7.setStatusOperator("=");
+		selector7.setEnableStatusSelector(false);     	
+		
+		assertTrue(selector6.isAssetAllowed(item1));
+		assertTrue(selector6.isAssetAllowed(item2));
+		assertTrue(selector6.isAssetAllowed(item3));
+		assertTrue(selector6.isAssetAllowed(item4));	 
+    }
+    
+	private ServiceImplementation getService() throws Exception {
+		ServiceImplementation impl = new ServiceImplementation();
+		impl.repository = new RulesRepository(TestEnvironmentSessionHelper
+				.getSession());
+
+
+		return impl;
+	}
+
+}


Property changes on: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/selector/BuiltInSelectorTest.java
___________________________________________________________________
Name: svn:keywords
   + Rev Date
Name: svn:eol-style
   + native



More information about the jboss-svn-commits mailing list