[jboss-svn-commits] JBL Code SVN: r32174 - in labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client: ruleeditor and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Mar 22 15:50:38 EDT 2010


Author: eaa
Date: 2010-03-22 15:50:37 -0400 (Mon, 22 Mar 2010)
New Revision: 32174

Added:
   labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/WorkingSetManager.java
Modified:
   labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/WorkingSetSelectorPopup.java
Log:
WorkingSetManager created.
WorkingSetSelectorPopup makes use of WorkingSetManager and now set the active WS checked on TreePanel.

Added: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/WorkingSetManager.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/WorkingSetManager.java	                        (rev 0)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/WorkingSetManager.java	2010-03-22 19:50:37 UTC (rev 32174)
@@ -0,0 +1,165 @@
+package org.drools.guvnor.client.packages;
+
+import com.google.gwt.user.client.Command;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import org.drools.guvnor.client.common.GenericCallback;
+import org.drools.guvnor.client.modeldriven.FactTypeFilter;
+import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
+import org.drools.guvnor.client.rpc.RuleAsset;
+import org.drools.guvnor.client.rpc.WorkingSetConfigData;
+
+/**
+ *
+ * @author esteban.aliverti at gmail.com
+ */
+public class WorkingSetManager {
+
+    private static WorkingSetManager INSTANCE = null;
+    Map<String, Set<RuleAsset>> activeWorkingSets = new HashMap<String, Set<RuleAsset>>();
+
+    public synchronized static WorkingSetManager getInstance() {
+        if (INSTANCE == null) {
+            INSTANCE = new WorkingSetManager();
+        }
+        return INSTANCE;
+    }
+
+    /**
+     * Convenient method to call {@link #applyWorkingSets(java.lang.String, java.util.Set, com.google.gwt.user.client.Command) }
+     * when you have the WorkingSets' UUID instead of the WorkingSetConfigData
+     * objects
+     * @param packageName the package name.
+     * @param wsUUIDs the set of WorkingSets' UUIDs
+     * @param done the command to execute after the SCE and internal map are
+     * refreshed.
+     * @see #applyWorkingSets(java.lang.String, java.util.Set, com.google.gwt.user.client.Command)
+     */
+    public void applyWorkingSets(final String packageName, final String[] wsUUIDs, final Command done) {
+        RepositoryServiceFactory.getService().loadRuleAssets(wsUUIDs, new GenericCallback<RuleAsset[]>() {
+
+            public void onSuccess(RuleAsset[] result) {
+                final Set<RuleAsset> wss = new HashSet<RuleAsset>();
+                wss.addAll(Arrays.asList(result));
+
+                applyWorkingSets(packageName, wss, done);
+            }
+        });
+
+    }
+
+    /**
+     * Applies the workingSets' valid facts to SCE. This method updates the
+     * internal activeWorkingSets map. If no workingSet is supplied, the
+     * SCE is refreshed to remove any existing filter.
+     * @param packageName the package name.
+     * @param wss the WorkingSet' assets list
+     * @param done the command to execute after the SCE and internal map are
+     * refreshed.
+     */
+    public void applyWorkingSets(final String packageName, final Set<RuleAsset> wss, final Command done) {
+
+        Command cmd = new Command() {
+
+            public void execute() {
+                //update the map
+                activeWorkingSets.remove(packageName);
+                if (wss != null && !wss.isEmpty()){
+                    activeWorkingSets.put(packageName, wss);
+                }
+                
+                if (done != null) {
+                    done.execute();
+                }
+            }
+        };
+
+
+        if (wss == null || wss.isEmpty()) {
+            //if no WS, we refresh the SCE (release any filter)
+            SuggestionCompletionCache.getInstance().refreshPackage(packageName, cmd);
+            //update the map
+            this.activeWorkingSets.remove(packageName);
+            return;
+        } else {
+
+            final Set<String> validFacts = new HashSet<String>();
+            for (RuleAsset asset : wss) {
+                WorkingSetConfigData wsConfig = (WorkingSetConfigData) asset.content;
+                validFacts.addAll(Arrays.asList(wsConfig.validFacts));
+            }
+
+            FactTypeFilter filter = new FactTypeFilter() {
+
+                public boolean filter(String originalFact) {
+                    return !validFacts.contains(originalFact);
+                }
+            };
+
+            SuggestionCompletionCache.getInstance().applyFactFilter(packageName, filter, cmd);
+        }
+
+    }
+
+    /**
+     * Returns the active WorkingSets for a package (as RuleAsset), or null if any.
+     * @param packageName the package name
+     * @return the active WorkingSets for a package (as RuleAsset), or null if any.
+     */
+    public Set<RuleAsset> getActiveAssets(String packageName){
+        return this.activeWorkingSets.get(packageName);
+    }
+
+    /**
+     * Returns the active WorkingSets for a package, or null if any.
+     * @param packageName the package name
+     * @return the active WorkingSets for a package, or null if any.
+     */
+    public Set<WorkingSetConfigData> getActiveWorkingSets(String packageName){
+        Set<RuleAsset> assets = this.activeWorkingSets.get(packageName);
+        if (assets == null){
+            return null;
+        }
+
+        Set<WorkingSetConfigData> result = new HashSet<WorkingSetConfigData>();
+        for (RuleAsset ruleAsset : assets) {
+            result.add((WorkingSetConfigData) ruleAsset.content);
+        }
+
+        return result;
+    }
+
+    /**
+     * Returns whether the given (WorkingSet) RuleSet is active in a package or not.
+     * @param packageName the package name.
+     * @param workingSetAsset the (WorkingSet) RuleSet
+     * @return whether the given (WorkingSet) RuleSet is active in a package or not.
+     */
+    public boolean isWorkingSetActive(String packageName, RuleAsset workingSetAsset){
+        return this.isWorkingSetActive(packageName, workingSetAsset.uuid);
+    }
+
+    /**
+     * Returns whether the given (WorkingSet) RuleSet is active in a package or not.
+     * @param packageName the package name.
+     * @param workingSetAsset the (WorkingSet) RuleSet
+     * @return whether the given (WorkingSet) RuleSet is active in a package or not.
+     */
+    public boolean isWorkingSetActive(String packageName, String ruleAssetUUID){
+        if (!this.activeWorkingSets.containsKey(packageName)){
+            return false;
+        }
+
+        Set<RuleAsset> wss = this.activeWorkingSets.get(packageName);
+        for (RuleAsset asset : wss) {
+            if (asset.uuid.equals(ruleAssetUUID)){
+                return true;
+            }
+        }
+
+        return false;
+    }
+}

Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/WorkingSetSelectorPopup.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/WorkingSetSelectorPopup.java	2010-03-22 19:40:14 UTC (rev 32173)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/WorkingSetSelectorPopup.java	2010-03-22 19:50:37 UTC (rev 32174)
@@ -15,21 +15,15 @@
  * limitations under the License.
  */
 
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
 
 import org.drools.guvnor.client.common.AssetFormats;
 import org.drools.guvnor.client.common.FormStylePopup;
 import org.drools.guvnor.client.common.GenericCallback;
 import org.drools.guvnor.client.common.LoadingPopup;
 import org.drools.guvnor.client.messages.Constants;
-import org.drools.guvnor.client.modeldriven.FactTypeFilter;
-import org.drools.guvnor.client.packages.SuggestionCompletionCache;
 import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
 import org.drools.guvnor.client.rpc.RuleAsset;
 import org.drools.guvnor.client.rpc.TableDataResult;
-import org.drools.guvnor.client.rpc.WorkingSetConfigData;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.user.client.Command;
@@ -38,8 +32,8 @@
 import com.google.gwt.user.client.ui.Widget;
 import com.gwtext.client.widgets.tree.TreeNode;
 import com.gwtext.client.widgets.tree.TreePanel;
-import org.drools.guvnor.client.common.ErrorPopup;
 import org.drools.guvnor.client.modeldriven.ui.RuleModeller;
+import org.drools.guvnor.client.packages.WorkingSetManager;
 
 public class WorkingSetSelectorPopup {
 
@@ -70,10 +64,11 @@
         RepositoryServiceFactory.getService().listAssets(asset.metaData.packageUUID, new String[]{AssetFormats.WORKING_SET}, 0, -1, "workingsetList", new GenericCallback<TableDataResult>() {
 
             public void onSuccess(TableDataResult result) {
+
                 for (int i = 0; i < result.data.length; i++) {
                     TreeNode node = new TreeNode(result.data[i].getDisplayName());
                     node.setUserObject(result.data[i].id);
-                    node.setChecked(false);
+                    node.setChecked(WorkingSetManager.getInstance().isWorkingSetActive(asset.metaData.packageName, result.data[i].id));
                     root.appendChild(node);
                 }
             }
@@ -90,62 +85,16 @@
                     TreeNode treeNode = checked[i];
                     wsUUIDs[i] = (String) treeNode.getUserObject();
                 }
-                //TODO: move this code to a class
 
-                //if there are no WS checked, remove any SCE filter.
-                if (wsUUIDs.length == 0) {
-                    SuggestionCompletionCache.getInstance().refreshPackage(asset.metaData.packageName, new Command() {
 
+                WorkingSetManager.getInstance().applyWorkingSets(asset.metaData.packageName, wsUUIDs, new Command() {
+
                         public void execute() {
                             LoadingPopup.close();
                             pop.hide();
                             modeller.refreshWidget();
                         }
                     });
-                    return;
-                }
-
-                
-                RepositoryServiceFactory.getService().loadRuleAssets(wsUUIDs, new GenericCallback<RuleAsset[]>() {
-
-                    public void onSuccess(RuleAsset[] result) {
-                        final Set<String> validFacts = new HashSet<String>();
-                        for (RuleAsset asset : result) {
-                            WorkingSetConfigData wsConfig = (WorkingSetConfigData) asset.content;
-                            validFacts.addAll(Arrays.asList(wsConfig.validFacts));
-                        }
-
-
-                        FactTypeFilter filter = new FactTypeFilter() {
-
-                            public boolean filter(String originalFact) {
-                                return !validFacts.contains(originalFact);
-                            }
-                        };
-
-                        Command done = new Command() {
-
-                            public void execute() {
-                                LoadingPopup.close();
-                                pop.hide();
-                                modeller.refreshWidget();
-                            }
-                        };
-
-                        SuggestionCompletionCache.getInstance().applyFactFilter(asset.metaData.packageName, filter, done);
-
-
-                    }
-
-                    @Override
-                    public void onFailure(Throwable t) {
-                        LoadingPopup.close();
-                        pop.hide();
-                        ErrorPopup.showMessage(constants.ErrorLoadingRules());
-                    }
-                });
-
-
             }
         });
 



More information about the jboss-svn-commits mailing list