[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