[jboss-svn-commits] JBL Code SVN: r33460 - in labs/jbossrules/trunk: drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven and 8 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Jun 11 18:07:10 EDT 2010
Author: baunax
Date: 2010-06-11 18:07:09 -0400 (Fri, 11 Jun 2010)
New Revision: 33460
Added:
labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionPartHelper.java
labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionUnboundFact.java
labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/SingleFieldConstraintEBLeftSide.java
Modified:
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/ClickableLabel.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/InfoPopup.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/HumanReadable.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ConstraintValueEditor.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FactPatternWidget.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModellerWidget.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/factPattern/Connectives.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/factPattern/PopupCreator.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/PackageEditor.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/ListUtil.java
labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/PackageDeploymentServletTest.java
labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/SuggestionCompletionEngine.java
labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/CopyExpressionVisitor.java
labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionFieldVariable.java
labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionFormLine.java
labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionVisitor.java
labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ISingleFieldConstraint.java
labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/RuleModel.java
labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/SingleFieldConstraint.java
labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/server/util/BRDRLPersistence.java
Log:
GUVNOR-559 Allow to use the Expression Builder on the left side of a constraints
- changes to support the ExpressionBuilder be displayed on the left side of constraints
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/ClickableLabel.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/ClickableLabel.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/ClickableLabel.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -1,15 +1,22 @@
package org.drools.guvnor.client.common;
+import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.HTML;
public class ClickableLabel extends HTML {
+ @Deprecated
public ClickableLabel(String text, ClickListener event, boolean enabled) {
super(doText(text, enabled));
if (enabled) this.addClickListener(event);
}
+ public ClickableLabel(String text, ClickHandler event, boolean enabled) {
+ super(doText(text, enabled));
+ if (enabled) this.addClickHandler(event);
+ }
+
private static String doText(String text, boolean enabled) {
if (enabled)
return "<div class='x-form-field'><span class='selectable-label'>" + text + "</span></div>";
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/InfoPopup.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/InfoPopup.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/common/InfoPopup.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -15,14 +15,11 @@
* limitations under the License.
*/
-
-
-import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Image;
-import com.google.gwt.user.client.ui.Widget;
-
/**
* This is handy for in-place context help.
*
@@ -33,14 +30,14 @@
public InfoPopup(final String title, final String message) {
Image info = new Image("images/information.gif");
info.setTitle( message );
- info.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
- final FormStylePopup pop = new FormStylePopup("images/information.gif", title);
- pop.addRow( new SmallLabel(message) );
+ info.addClickHandler(new ClickHandler() {
- pop.show();
- }
- } );
+ public void onClick(ClickEvent event) {
+ final FormStylePopup pop = new FormStylePopup("images/information.gif", title);
+ pop.addRow(new SmallLabel(message));
+ pop.show();
+ }
+ });
initWidget( info );
}
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/HumanReadable.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/HumanReadable.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/HumanReadable.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -14,18 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-
-
-import org.drools.guvnor.client.messages.Constants;
-
import java.util.HashMap;
import java.util.Map;
+import org.drools.guvnor.client.messages.Constants;
+
import com.google.gwt.core.client.GWT;
-import org.drools.ide.common.client.modeldriven.brl.FromCompositeFactPattern;
-
/**
* This contains some simple mappings between operators, conditional elements and the human readable
* equivalent.
@@ -37,9 +32,9 @@
*/
public class HumanReadable {
- public static Map operatorDisplayMap = new HashMap();
- public static Map ceDisplayMap = new HashMap();
- public static Map actionDisplayMap = new HashMap();
+ public static Map<String, String> operatorDisplayMap = new HashMap<String, String>();
+ public static Map<String, String> ceDisplayMap = new HashMap<String, String>();
+ public static Map<String, String> actionDisplayMap = new HashMap<String, String>();
public static final String[] CONDITIONAL_ELEMENTS = new String[] {"not", "exists", "or"};
public static final String[] FROM_CONDITIONAL_ELEMENTS = new String[] {"from","from accumulate","from collect"};
@@ -95,9 +90,6 @@
}
-
-
-
public static String getOperatorDisplayName(String op) {
return lookup(op, operatorDisplayMap);
}
@@ -106,16 +98,12 @@
return lookup( ce, ceDisplayMap );
}
- private static String lookup(String ce, Map map) {
- if (map.containsKey(ce)) {
- return (String) map.get(ce);
- } else {
- return ce;
- }
+ private static String lookup(String ce, Map<String, String> map) {
+ String ret = map.get(ce);
+ return ret == null ? ce : ret;
}
public static String getActionDisplayName(String action) {
return lookup(action, actionDisplayMap);
}
-
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ConstraintValueEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ConstraintValueEditor.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ConstraintValueEditor.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -15,7 +15,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import com.google.gwt.event.dom.client.ChangeEvent;
import java.util.List;
import org.drools.guvnor.client.common.DirtyableComposite;
@@ -32,11 +31,12 @@
import org.drools.ide.common.client.modeldriven.brl.SingleFieldConstraint;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.Button;
-import com.google.gwt.user.client.ui.ChangeListener;
-import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
@@ -85,23 +85,17 @@
valueType = sce.getFieldType(pattern.factType, fieldName);
this.fieldType = valueType;
- if (SuggestionCompletionEngine.TYPE_NUMERIC.equals(valueType)) {
- this.numericValue = true;
- } else {
- this.numericValue = false;
- }
+ this.numericValue = SuggestionCompletionEngine.TYPE_NUMERIC.equals(valueType);
this.readOnly = readOnly;
if (SuggestionCompletionEngine.TYPE_BOOLEAN.equals(valueType)) {
this.dropDownData = DropDownData.create(new String[]{"true", "false"}); //NON-NLS
} else {
- this.dropDownData = sce.getEnums(pattern,
- fieldName);
+ this.dropDownData = sce.getEnums(pattern, fieldName);
}
refreshEditor();
initWidget(panel);
-
}
private void refreshEditor() {
@@ -109,11 +103,10 @@
Widget constraintWidget = null;
if (constraint.constraintValueType == SingleFieldConstraint.TYPE_UNDEFINED) {
Image clickme = new Image("images/edit.gif"); //NON-NLS
- clickme.addClickListener(new ClickListener() {
-
- public void onClick(Widget w) {
- showTypeChoice(w,
- constraint);
+ clickme.addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ showTypeChoice((Widget) event.getSource(), constraint);
}
});
constraintWidget = clickme;
@@ -169,7 +162,7 @@
case SingleFieldConstraint.TYPE_RET_VALUE:
constraintWidget = returnValueEditor();
break;
- case SingleFieldConstraint.TYPE_EXPR_BUILDER:
+ case SingleFieldConstraint.TYPE_EXPR_BUILDER_VALUE:
constraintWidget = expressionEditor();
break;
case SingleFieldConstraint.TYPE_VARIABLE:
@@ -191,7 +184,7 @@
return new SmallLabel(this.constraint.value);
}
- List vars = this.model.getBoundVariablesInScope(this.constraint);
+ List<String> vars = this.model.getBoundVariablesInScope(this.constraint);
final ListBox box = new ListBox();
@@ -200,8 +193,7 @@
}
int j = 0;
- for (int i = 0; i < vars.size(); i++) {
- String var = (String) vars.get(i);
+ for (String var : vars) {
FactPattern f = model.getBoundFact(var);
String fv = model.getFieldConstraint(var);
if ((f != null && f.factType.equals(this.fieldType)) || (fv != null && fv.equals(this.fieldType))) {
@@ -224,10 +216,10 @@
}
}
- box.addChangeListener(new ChangeListener() {
-
- public void onChange(Widget w) {
- executeOnValueChangeCommand();
+ box.addChangeHandler(new ChangeHandler() {
+
+ public void onChange(ChangeEvent event) {
+ executeOnValueChangeCommand();
constraint.value = box.getItemText(box.getSelectedIndex());
}
});
@@ -259,19 +251,25 @@
if (!(this.constraint instanceof SingleFieldConstraint)) {
throw new IllegalArgumentException("Expected SingleFieldConstraint, but " + constraint.getClass().getName() + " found.");
}
- ExpressionBuilder builder = new ExpressionBuilder(this.modeller, ((SingleFieldConstraint) this.constraint).getExpression());
+ ExpressionBuilder builder = new ExpressionBuilder(this.modeller, ((SingleFieldConstraint) this.constraint).getExpressionValue());
+ builder.addExpressionTypeChangeHandler(new ExpressionTypeChangeHandler() {
+
+ public void onExpressionTypeChanged(ExpressionTypeChangeEvent event) {
+ System.out.println("type changed: " + event.getOldType() + " -> " + event.getNewType());
+ }
+ });
builder.addOnModifiedCommand(new Command() {
public void execute() {
executeOnValueChangeCommand();
}
});
- String msg = constants.ExpressionEditor();
+// String msg = constants.ExpressionEditor();
Widget ed = widgets(new HTML(" "),
builder);
return ed;
}
-
+
/**
* Show a list of possibilities for the value type.
*/
@@ -281,10 +279,9 @@
constants.FieldValue());
Button lit = new Button(constants.LiteralValue());
- lit.addClickListener(new ClickListener() {
-
- public void onClick(Widget w) {
- con.constraintValueType = SingleFieldConstraint.TYPE_LITERAL;
+ lit.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent event) {
+ con.constraintValueType = SingleFieldConstraint.TYPE_LITERAL;
doTypeChosen(form);
}
});
@@ -296,8 +293,8 @@
if (modeller.isTemplate()) {
String templateKeyLabel = constants.TemplateKey();
Button templateKeyButton = new Button(templateKeyLabel);
- templateKeyButton.addClickListener(new ClickListener() {
- public void onClick(Widget arg0) {
+ templateKeyButton.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent event) {
con.constraintValueType = ISingleFieldConstraint.TYPE_TEMPLATE;
doTypeChosen(form);
}
@@ -314,14 +311,15 @@
//only want to show variables if we have some !
if (this.model.getBoundVariablesInScope(this.constraint).size() > 0 || SuggestionCompletionEngine.TYPE_COLLECTION.equals(this.fieldType)) {
- List vars = this.model.getBoundFacts();
+ List<String> vars = this.model.getBoundFacts();
boolean foundABouncVariableThatMatches = false;
- for (int i = 0; i < vars.size(); i++) {
- String var = (String) vars.get(i);
+ for (String var : vars) {
FactPattern f = model.getBoundFact(var);
String fieldConstraint = model.getFieldConstraint(var);
- if ((f != null && f.factType.equals(this.fieldType)) || this.fieldType.equals(fieldConstraint)) {
+ if ((f != null && f.factType != null && this.fieldType != null)
+ && (f.factType.equals(this.fieldType)
+ || this.fieldType.equals(fieldConstraint))) {
foundABouncVariableThatMatches = true;
break;
} else {
@@ -334,11 +332,10 @@
}
}
}
- if (foundABouncVariableThatMatches == true) {
+ if (foundABouncVariableThatMatches) {
Button variable = new Button(constants.BoundVariable());
- variable.addClickListener(new ClickListener() {
-
- public void onClick(Widget w) {
+ variable.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent event) {
con.constraintValueType = SingleFieldConstraint.TYPE_VARIABLE;
doTypeChosen(form);
}
@@ -351,9 +348,8 @@
}
Button formula = new Button(constants.NewFormula());
- formula.addClickListener(new ClickListener() {
-
- public void onClick(Widget w) {
+ formula.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent event) {
con.constraintValueType = SingleFieldConstraint.TYPE_RET_VALUE;
doTypeChosen(form);
}
@@ -365,10 +361,9 @@
constants.FormulaExpressionTip())));
Button expression = new Button(constants.ExpressionEditor());
- expression.addClickListener(new ClickListener() {
-
- public void onClick(Widget w) {
- con.constraintValueType = SingleFieldConstraint.TYPE_EXPR_BUILDER;
+ expression.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent event) {
+ con.constraintValueType = SingleFieldConstraint.TYPE_EXPR_BUILDER_VALUE;
doTypeChosen(form);
}
});
@@ -378,7 +373,6 @@
new InfoPopup(constants.ExpressionEditor(),
constants.ExpressionEditor())));
-
form.show();
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FactPatternWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FactPatternWidget.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/FactPatternWidget.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -26,18 +26,30 @@
import org.drools.guvnor.client.modeldriven.HumanReadable;
import org.drools.guvnor.client.modeldriven.ui.factPattern.Connectives;
import org.drools.guvnor.client.modeldriven.ui.factPattern.PopupCreator;
-import org.drools.ide.common.client.modeldriven.SuggestionCompletionEngine;
import org.drools.ide.common.client.modeldriven.brl.CompositeFieldConstraint;
import org.drools.ide.common.client.modeldriven.brl.FactPattern;
import org.drools.ide.common.client.modeldriven.brl.FieldConstraint;
import org.drools.ide.common.client.modeldriven.brl.IPattern;
import org.drools.ide.common.client.modeldriven.brl.SingleFieldConstraint;
+import org.drools.ide.common.client.modeldriven.brl.SingleFieldConstraintEBLeftSide;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.ChangeEvent;
+import com.google.gwt.event.dom.client.ChangeHandler;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Window;
-import com.google.gwt.user.client.ui.*;
+import com.google.gwt.user.client.ui.FlexTable;
+import com.google.gwt.user.client.ui.HTML;
+import com.google.gwt.user.client.ui.HasHorizontalAlignment;
+import com.google.gwt.user.client.ui.HasVerticalAlignment;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
import com.gwtext.client.util.Format;
@@ -49,7 +61,6 @@
public class FactPatternWidget extends RuleModellerWidget {
private FactPattern pattern;
- private SuggestionCompletionEngine completions;
private DirtyableFlexTable layout = new DirtyableFlexTable();
private Connectives connectives;
private PopupCreator popupCreator;
@@ -87,17 +98,16 @@
String customLabel, boolean canBind, Boolean readOnly) {
super(mod);
this.pattern = (FactPattern) p;
- this.completions = mod.getSuggestionCompletions();
this.bindable = canBind;
this.connectives = new Connectives();
- this.connectives.setCompletions(completions);
+ this.connectives.setCompletions(mod.getSuggestionCompletions());
this.connectives.setModeller(mod);
this.connectives.setPattern(pattern);
this.popupCreator = new PopupCreator();
this.popupCreator.setBindable(bindable);
- this.popupCreator.setCompletions(completions);
+ this.popupCreator.setCompletions(mod.getSuggestionCompletions());
this.popupCreator.setModeller(mod);
this.popupCreator.setPattern(pattern);
@@ -105,7 +115,7 @@
//if readOnly == null, the RO attribute is calculated.
if (readOnly == null){
- this.readOnly = !completions.containsFactType(this.pattern.factType);
+ this.readOnly = !connectives.getCompletions().containsFactType(this.pattern.factType);
}else{
this.readOnly = readOnly;
}
@@ -175,17 +185,17 @@
final int currentRow = i;
Image clear = new ImageButton("images/delete_faded.gif");//NON-NLS
clear.setTitle(constants.RemoveThisWholeRestriction());
- clear.addClickListener(new ClickListener() {
-
- public void onClick(Widget w) {
- if (Window.confirm(constants.RemoveThisItem())) {
+ clear.addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ if (Window.confirm(constants.RemoveThisItem())) {
setModified(true);
pattern.removeConstraint(currentRow);
getModeller().refreshWidget();
}
- }
- });
-
+ }
+ });
+
if (!this.readOnly) {
table.setWidget(currentRow, 5, clear);
}
@@ -254,11 +264,10 @@
FlexTable t = new FlexTable();
String desc = null;
-
- ClickListener click = new ClickListener() {
-
- public void onClick(Widget w) {
- popupCreator.showPatternPopupForComposite(w, constraint);
+ ClickHandler click = new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ popupCreator.showPatternPopupForComposite((Widget) event.getSource(), constraint);
}
};
@@ -282,17 +291,16 @@
final int currentRow = i;
Image clear = new ImageButton("images/delete_faded.gif"); //NON-NLS
clear.setTitle(constants.RemoveThisNestedRestriction());
-
- clear.addClickListener(new ClickListener() {
-
- public void onClick(Widget w) {
- if (Window.confirm(constants.RemoveThisItemFromNestedConstraint())) {
+ clear.addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ if (Window.confirm(constants.RemoveThisItemFromNestedConstraint())) {
setModified(true);
constraint.removeConstraint(currentRow);
getModeller().refreshWidget();
}
- }
- });
+ }
+ });
if (!this.readOnly) {
inner.setWidget(i, 5, clear);
}
@@ -308,26 +316,50 @@
* Applies a single field constraint to the given table, and start row.
*/
private void renderSingleFieldConstraint(final RuleModeller modeller,
- final DirtyableFlexTable inner, int row, final SingleFieldConstraint constraint,
- boolean showBinding, int tabs) {
+ final DirtyableFlexTable inner, final int row, final SingleFieldConstraint constraint,
+ boolean showBinding, final int tabs) {
- int col = 1; //for offsetting, just a slight indent
+ final int col = 1; //for offsetting, just a slight indent
-
inner.setWidget(row, 0, new HTML(" "));
//inner.getFlexCellFormatter().setWidth(row, 0, "15%");
//DOCNHERON
if (constraint.constraintValueType != SingleFieldConstraint.TYPE_PREDICATE) {
- inner.setWidget(row, 0 + col, fieldLabel(constraint, showBinding, tabs * 20));
+ HorizontalPanel ebContainer = null;
+ if (constraint instanceof SingleFieldConstraintEBLeftSide) {
+ ebContainer = expressionBuilderLS(
+ (SingleFieldConstraintEBLeftSide) constraint, showBinding, tabs * 20);
+ inner.setWidget(row, 0 + col, ebContainer);
+ } else {
+ inner.setWidget(row, 0 + col, fieldLabel(constraint, showBinding, tabs * 20));
+ }
inner.setWidget(row, 1 + col, operatorDropDown(constraint));
inner.setWidget(row, 2 + col, valueEditor(constraint, constraint.fieldType));
inner.setWidget(row, 3 + col, connectives.connectives(constraint, constraint.fieldType));
+
+ if (ebContainer != null && ebContainer.getWidgetCount() > 0) {
+ if (ebContainer.getWidget(0) instanceof ExpressionBuilder) {
+ ExpressionBuilder eb = (ExpressionBuilder) ebContainer.getWidget(0);
+ eb.addExpressionTypeChangeHandler(new ExpressionTypeChangeHandler() {
+
+ public void onExpressionTypeChanged(ExpressionTypeChangeEvent event) {
+ try {
+ constraint.fieldType = event.getNewType();
+ inner.setWidget(row, 1 + col, operatorDropDown(constraint, constraint.fieldType));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ }
+ }
+
Image addConnective = new ImageButton("images/add_connective.gif"); //NON-NLS
addConnective.setTitle(constants.AddMoreOptionsToThisFieldsValues());
- addConnective.addClickListener(new ClickListener() {
-
- public void onClick(Widget w) {
+ addConnective.addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
setModified(true);
constraint.addNewConnective();
modeller.refreshWidget();
@@ -342,7 +374,7 @@
inner.getFlexCellFormatter().setColSpan(row, 1, 5);
}
}
-
+
/**
* This provides an inline formula editor, not unlike a spreadsheet does.
*/
@@ -362,10 +394,10 @@
box.setText(c.value);
if (!this.readOnly) {
- box.addChangeListener(new ChangeListener() {
-
- public void onChange(Widget w) {
- setModified(true);
+ box.addChangeHandler(new ChangeHandler() {
+
+ public void onChange(ChangeEvent event) {
+ setModified(true);
c.value = box.getText();
getModeller().makeDirty();
}
@@ -383,11 +415,11 @@
* This returns the pattern label.
*/
private Widget getPatternLabel() {
- ClickListener click = new ClickListener() {
-
- public void onClick(Widget w) {
+ ClickHandler click = new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
String factTypeShortName = (pattern.factType.contains(".")?pattern.factType.substring(pattern.factType.lastIndexOf(".")+1):pattern.factType);
- popupCreator.showPatternPopup(w, factTypeShortName, null);
+ popupCreator.showPatternPopup((Widget) event.getSource(), factTypeShortName, null);
}
};
@@ -433,9 +465,16 @@
return constraintValueEditor;
}
+
+
private Widget operatorDropDown(final SingleFieldConstraint c) {
+ return operatorDropDown(c, connectives.getCompletions()
+ .getFieldType(pattern.factType, c.fieldName));
+ }
+
+ private Widget operatorDropDown(final SingleFieldConstraint c, String type) {
if (!this.readOnly) {
- String[] ops = completions.getOperatorCompletions(pattern.factType, c.fieldName);
+ String[] ops = connectives.getCompletions().getOperatorCompletions(type);
final ListBox box = new ListBox();
box.addItem(constants.pleaseChoose(), "");
for (int i = 0; i < ops.length; i++) {
@@ -447,9 +486,9 @@
}
- box.addChangeListener(new ChangeListener() {
-
- public void onChange(Widget w) {
+ box.addChangeHandler(new ChangeHandler() {
+
+ public void onChange(ChangeEvent event) {
setModified(true);
c.operator = box.getValue(box.getSelectedIndex());
if (c.operator.equals("")) {
@@ -467,29 +506,46 @@
}
+ private HorizontalPanel expressionBuilderLS(final SingleFieldConstraintEBLeftSide con, boolean showBinding, int padding) {
+ HorizontalPanel ab = new HorizontalPanel();
+ ab.setStyleName("modeller-field-Label");
+
+ if (!con.isBound()) {
+ if (bindable && showBinding && !this.readOnly) {
+ ExpressionBuilder eb = new ExpressionBuilder(getModeller(), con.getExpressionLeftSide());
+ ab.add(eb);
+ } else {
+ ab.add(new SmallLabel(con.getExpressionLeftSide().getText()));
+ }
+ } else {
+ ab.add(new SmallLabel(con.fieldName));
+ ab.add(new SmallLabel(" <b>[" + con.fieldBinding + "]</b>")); //NON-NLS
+ }
+ return ab;
+ }
+
/**
* get the field widget. This may be a simple label, or it may
* be bound (and show the var name) or a icon to create a binding.
* It will only show the binding option of showBinding is true.
*/
- private Widget fieldLabel(final SingleFieldConstraint con, boolean showBinding, int padding) {//, final Command onChange) {
+ private Widget fieldLabel(final SingleFieldConstraint con, boolean showBinding, int padding) {//, final Command onChange) {
HorizontalPanel ab = new HorizontalPanel();
ab.setStyleName("modeller-field-Label");
if (!con.isBound()) {
if (bindable && showBinding && !this.readOnly) {
-
- ClickListener click = new ClickListener() {
-
- public void onClick(Widget w) {
- String[] fields = completions.getFieldCompletions(con.fieldType);
- popupCreator.showBindFieldPopup(w, con, fields, popupCreator);
+ ClickHandler click = new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ String[] fields = connectives.getCompletions().getFieldCompletions(con.fieldType);
+ popupCreator.showBindFieldPopup((Widget) event.getSource(), con, fields, popupCreator);
}
};
Image bind = new ImageButton("images/edit_tiny.gif", constants.GiveFieldVarName()); //NON-NLS
- bind.addClickListener(click);
+ bind.addClickHandler(click);
ClickableLabel cl = new ClickableLabel(con.fieldName, click, !this.readOnly);
DOM.setStyleAttribute(cl.getElement(), "marginLeft", "" + padding + "pt"); //NON-NLS
ab.add(cl);
@@ -503,7 +559,6 @@
ab.add(new SmallLabel(" <b>[" + con.fieldBinding + "]</b>")); //NON-NLS
}
-
return ab;
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModellerWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModellerWidget.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/RuleModellerWidget.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -40,6 +40,10 @@
}
this.modified = modified;
}
+
+ protected boolean isModified() {
+ return modified;
+ }
public void addOnModifiedCommand(Command command){
this.onModifiedCommands.add(command);
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/factPattern/Connectives.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/factPattern/Connectives.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/factPattern/Connectives.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -1,20 +1,21 @@
package org.drools.guvnor.client.modeldriven.ui.factPattern;
import org.drools.guvnor.client.common.DirtyableHorizontalPane;
+import org.drools.guvnor.client.messages.Constants;
import org.drools.guvnor.client.modeldriven.HumanReadable;
import org.drools.guvnor.client.modeldriven.ui.ConstraintValueEditor;
import org.drools.guvnor.client.modeldriven.ui.RuleModeller;
-import org.drools.guvnor.client.messages.Constants;
import org.drools.ide.common.client.modeldriven.SuggestionCompletionEngine;
import org.drools.ide.common.client.modeldriven.brl.ConnectiveConstraint;
import org.drools.ide.common.client.modeldriven.brl.FactPattern;
import org.drools.ide.common.client.modeldriven.brl.ISingleFieldConstraint;
import org.drools.ide.common.client.modeldriven.brl.SingleFieldConstraint;
-import com.google.gwt.user.client.ui.ChangeListener;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.ChangeEvent;
+import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Widget;
-import com.google.gwt.core.client.GWT;
public class Connectives {
private FactPattern pattern;
@@ -96,15 +97,15 @@
if ( op.equals( con.operator ) ) {
box.setSelectedIndex( i + 1 );
}
-
}
- box.addChangeListener( new ChangeListener() {
- public void onChange(Widget w) {
- con.operator = box.getValue( box.getSelectedIndex() );
- }
- } );
+ box.addChangeHandler(new ChangeHandler() {
+ public void onChange(ChangeEvent event) {
+ con.operator = box.getValue(box.getSelectedIndex());
+ }
+ });
+
return box;
}
}
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/factPattern/PopupCreator.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/factPattern/PopupCreator.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/factPattern/PopupCreator.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -3,24 +3,27 @@
import org.drools.guvnor.client.common.FormStylePopup;
import org.drools.guvnor.client.common.InfoPopup;
import org.drools.guvnor.client.common.SmallLabel;
+import org.drools.guvnor.client.messages.Constants;
import org.drools.guvnor.client.modeldriven.ui.RuleModeller;
-import org.drools.guvnor.client.messages.Constants;
import org.drools.ide.common.client.modeldriven.FieldAccessorsAndMutators;
import org.drools.ide.common.client.modeldriven.SuggestionCompletionEngine;
import org.drools.ide.common.client.modeldriven.brl.CompositeFieldConstraint;
+import org.drools.ide.common.client.modeldriven.brl.ExpressionFormLine;
+import org.drools.ide.common.client.modeldriven.brl.ExpressionUnboundFact;
import org.drools.ide.common.client.modeldriven.brl.FactPattern;
import org.drools.ide.common.client.modeldriven.brl.FieldConstraint;
import org.drools.ide.common.client.modeldriven.brl.SingleFieldConstraint;
+import org.drools.ide.common.client.modeldriven.brl.SingleFieldConstraintEBLeftSide;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
-import com.google.gwt.user.client.ui.ChangeListener;
-import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
-import com.google.gwt.core.client.GWT;
import com.gwtext.client.util.Format;
public class PopupCreator {
@@ -101,9 +104,8 @@
vn.add(varName);
vn.add(ok);
- ok.addClickListener(new ClickListener() {
-
- public void onClick(Widget w) {
+ ok.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent event) {
String var = varName.getText();
if (modeller.isVariableNameUsed(var)) {
Window.alert(Format.format(constants.TheVariableName0IsAlreadyTaken(), var));
@@ -118,9 +120,8 @@
if (fields != null) {
Button sub = new Button(constants.ShowSubFields());
popup.addAttribute(Format.format(constants.ApplyAConstraintToASubFieldOf0(), con.fieldName), sub);
- sub.addClickListener(new ClickListener() {
-
- public void onClick(Widget sender) {
+ sub.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent event) {
popup.hide();
popupCreator.showPatternPopup(w, con.fieldType, con);
}
@@ -146,9 +147,8 @@
box.setSelectedIndex(0);
- box.addChangeListener(new ChangeListener() {
-
- public void onChange(Widget w) {
+ box.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent event) {
composite.addConstraint(new SingleFieldConstraint(box.getItemText(box.getSelectedIndex())));
modeller.refreshWidget();
popup.hide();
@@ -163,9 +163,8 @@
composites.addItem(constants.AnyOfOr(), CompositeFieldConstraint.COMPOSITE_TYPE_OR);
composites.setSelectedIndex(0);
- composites.addChangeListener(new ChangeListener() {
-
- public void onChange(Widget w) {
+ composites.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent event) {
CompositeFieldConstraint comp = new CompositeFieldConstraint();
comp.compositeJunctionType = composites.getValue(composites.getSelectedIndex());
composite.addConstraint(comp);
@@ -204,12 +203,11 @@
box.setSelectedIndex(0);
- box.addChangeListener(new ChangeListener() {
-
- public void onChange(Widget w) {
+ box.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent event) {
String fieldName = box.getItemText(box.getSelectedIndex());
String qualifiedName = factType + "." + fieldName;
- String fieldType = (String) completions.getFieldType(qualifiedName);
+ String fieldType = completions.getFieldType(qualifiedName);
pattern.addConstraint(new SingleFieldConstraint(fieldName, fieldType, con));
modeller.refreshWidget();
popup.hide();
@@ -217,16 +215,14 @@
});
popup.addAttribute(constants.AddARestrictionOnAField(), box);
-
final ListBox composites = new ListBox();
composites.addItem("...");
composites.addItem(constants.AllOfAnd(), CompositeFieldConstraint.COMPOSITE_TYPE_AND);
composites.addItem(constants.AnyOfOr(), CompositeFieldConstraint.COMPOSITE_TYPE_OR);
composites.setSelectedIndex(0);
- composites.addChangeListener(new ChangeListener() {
-
- public void onChange(Widget w) {
+ composites.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent event) {
CompositeFieldConstraint comp = new CompositeFieldConstraint();
comp.compositeJunctionType = composites.getValue(composites.getSelectedIndex());
pattern.addConstraint(comp);
@@ -245,14 +241,11 @@
popup.addAttribute(constants.MultipleFieldConstraint(), horiz);
}
-
- //popup.addRow( new HTML("<hr/>") );
if (con == null) {
popup.addRow(new SmallLabel("<i>" + constants.AdvancedOptionsColon() + "</i>")); //NON-NLS
- final Button predicate = new Button(constants.NewFormula());
- predicate.addClickListener(new ClickListener() {
-
- public void onClick(Widget w) {
+ Button predicate = new Button(constants.NewFormula());
+ predicate.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent event) {
SingleFieldConstraint con = new SingleFieldConstraint();
con.constraintValueType = SingleFieldConstraint.TYPE_PREDICATE;
pattern.addConstraint(con);
@@ -261,7 +254,21 @@
}
});
popup.addAttribute(constants.AddANewFormulaStyleExpression(), predicate);
-
+
+ Button ebBtn = new Button(constants.ExpressionEditor());
+
+ ebBtn.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent event) {
+ SingleFieldConstraintEBLeftSide con = new SingleFieldConstraintEBLeftSide();
+ con.constraintValueType = SingleFieldConstraint.TYPE_UNDEFINED;
+ pattern.addConstraint(con);
+ con.setExpressionLeftSide(new ExpressionFormLine(new ExpressionUnboundFact(pattern)));
+ modeller.refreshWidget();
+ popup.hide();
+ }
+ });
+ popup.addAttribute(constants.ExpressionEditor(), ebBtn);
+
doBindingEditor(popup);
}
@@ -288,9 +295,8 @@
varName.add(varTxt);
Button bindVar = new Button(constants.Set());
- bindVar.addClickListener(new ClickListener() {
-
- public void onClick(Widget w) {
+ bindVar.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent event) {
String var = varTxt.getText();
if (modeller.isVariableNameUsed(var)) {
Window.alert(Format.format(constants.TheVariableName0IsAlreadyTaken(), var));
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/PackageEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/PackageEditor.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/PackageEditor.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -39,6 +39,8 @@
import org.drools.guvnor.client.messages.Constants;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
@@ -301,16 +303,17 @@
addbutton.setTitle( constants.CreateCategoryRule() );
- addbutton.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
- if ( exw.getSelectedPath().length() > 0 && ruleName.getText().trim().length() > 0 ) {
+ addbutton.addClickHandler(new ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ if ( exw.getSelectedPath().length() > 0 && ruleName.getText().trim().length() > 0 ) {
addToCatRules( exw.getSelectedPath(),
ruleName.getText() );
}
refreshWidgets();
pop.hide();
- }
- } );
+ }
+ });
pop.addAttribute( constants.AllTheRulesInFollowingCategory(),
exw );
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/ListUtil.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/ListUtil.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/ListUtil.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -24,10 +24,10 @@
public class ListUtil {
- public static List filter(DSLSentence[] source,
+ public static List<DSLSentence> filter(DSLSentence[] source,
String filterVal) {
- ArrayList filteredList = new ArrayList();
+ List<DSLSentence> filteredList = new ArrayList<DSLSentence>();
for ( int i = 0; i < source.length; i++ ) {
DSLSentence item = source[i];
if (filterVal.equals( "" ) || item.sentence.startsWith( filterVal )) {
Modified: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/PackageDeploymentServletTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/PackageDeploymentServletTest.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/PackageDeploymentServletTest.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -28,12 +28,11 @@
import org.drools.repository.AssetItem;
import org.drools.repository.PackageItem;
import org.drools.repository.RulesRepository;
+import org.drools.util.codec.Base64;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.servlet.Context;
import org.mortbay.jetty.servlet.ServletHolder;
-import sun.misc.BASE64Encoder;
-
public class PackageDeploymentServletTest extends TestCase {
public void FIXMEtestLoadingRules() throws Exception {
@@ -271,12 +270,12 @@
ServiceImplementation impl = new ServiceImplementation();
impl.repository = repo;
- PackageItem pkg = repo.createPackage("testScenariosURL", "");
+ repo.createPackage("testScenariosURL", "");
impl.createPackageSnapshot("testScenariosURL", "SNAP1", false, "");
- BASE64Encoder enc = new sun.misc.BASE64Encoder();
+ Base64 enc = new Base64();
String userpassword = "test" + ":" + "password";
- final String encodedAuthorization = enc.encode( userpassword.getBytes() );
+ final String encodedAuthorization = enc.encodeToString( userpassword.getBytes() );
Map<String, String> headers = new HashMap<String, String>() {
{
Modified: labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/SuggestionCompletionEngine.java
===================================================================
--- labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/SuggestionCompletionEngine.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/SuggestionCompletionEngine.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -204,21 +204,23 @@
public String[] getOperatorCompletions(final String factType,
final String fieldName) {
- final String type = this.getFieldType( factType, fieldName );
- if ( type == null ) {
- return STANDARD_OPERATORS;
- } else if ( type.equals( TYPE_STRING ) ) {
- return STRING_OPERATORS;
- } else if ( type.equals( TYPE_COMPARABLE ) || type.equals( TYPE_DATE ) || type.equals( TYPE_NUMERIC ) ) {
- return COMPARABLE_OPERATORS;
- } else if ( type.equals( TYPE_COLLECTION ) ) {
- return COLLECTION_OPERATORS;
- } else {
- return STANDARD_OPERATORS;
- }
-
+ return getOperatorCompletions(getFieldType( factType, fieldName ));
}
+ public String[] getOperatorCompletions(final String type) {
+ if (type == null) {
+ return STANDARD_OPERATORS;
+ } else if (type.equals(TYPE_STRING)) {
+ return STRING_OPERATORS;
+ } else if (type.equals(TYPE_COMPARABLE) || type.equals(TYPE_DATE) || type.equals(TYPE_NUMERIC)) {
+ return COMPARABLE_OPERATORS;
+ } else if (type.equals(TYPE_COLLECTION)) {
+ return COLLECTION_OPERATORS;
+ } else {
+ return STANDARD_OPERATORS;
+ }
+ }
+
public String[] getFieldCompletionsForGlobalVariable(final String varName) {
final String type = this.getGlobalVariable( varName );
return this.getModelFields(type);
@@ -248,6 +250,9 @@
public DropDownData getEnums(FactPattern pat,
String field) {
+ if (field == null) {
+ return null;
+ }
Map<String, Object> dataEnumLookupFields = loadDataEnumLookupFields();
if ( pat.constraintList != null && pat.constraintList.constraints != null ) {
Modified: labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/CopyExpressionVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/CopyExpressionVisitor.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/CopyExpressionVisitor.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -36,6 +36,11 @@
moveNext(part);
}
+ public void visit(ExpressionUnboundFact part) {
+ add(new ExpressionUnboundFact(part.getFact()));
+ moveNext(part);
+ }
+
public void visit(ExpressionCollection part) {
add(new ExpressionCollection(part.getName(), part.getClassType(), part.getGenericType(), part.getParametricType()));
moveNext(part);
Modified: labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionFieldVariable.java
===================================================================
--- labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionFieldVariable.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionFieldVariable.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -9,9 +9,6 @@
*/
public class ExpressionFieldVariable extends ExpressionText {
- @SuppressWarnings("unused")
- private ExpressionFieldVariable() {}
-
public ExpressionFieldVariable(String name) {
super(name, "java.lang.String", SuggestionCompletionEngine.TYPE_FINAL_OBJECT);
}
Modified: labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionFormLine.java
===================================================================
--- labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionFormLine.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionFormLine.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -5,7 +5,8 @@
public class ExpressionFormLine implements IAction, IPattern, Cloneable {
- private LinkedList<ExpressionPart> parts = new LinkedList<ExpressionPart>() ;
+ private String bindVariable = null;
+ private LinkedList<ExpressionPart> parts = new LinkedList<ExpressionPart>() ;
public ExpressionFormLine() {}
@@ -22,7 +23,7 @@
}
public String getText() {
- return new ToStringVisitor().buildString(getRootExpression());
+ return new ToStringVisitor().buildString(getBindVariable(), getRootExpression());
}
public void appendPart(ExpressionPart part) {
@@ -46,7 +47,7 @@
return parts.getLast();
}
- public String getPreviousType() {
+ public String getPreviousClassType() {
ExpressionPart last = getPreviousPart();
return last.getPrevious() == null ? null : last.getPrevious().getClassType();
}
@@ -56,8 +57,13 @@
}
public String getGenericType() {
- return parts.getLast().getGenericType();
+ return parts.isEmpty() ? null : parts.getLast().getGenericType();
}
+
+ public String getPreviousGenericType() {
+ ExpressionPart prev = getPreviousPart().getPrevious();
+ return prev == null ? null : prev.getGenericType();
+ }
public String getParametricType() {
return parts.getLast().getParametricType();
@@ -79,15 +85,29 @@
public ExpressionPart getRootExpression() {
return parts.isEmpty() ? null : parts.getFirst();
}
+
+ public boolean isBound() {
+ return bindVariable != null;
+ }
+ public String getBindVariable() {
+ return bindVariable;
+ }
+
+ public void setBindVariable(String bindVariable) {
+ this.bindVariable = bindVariable;
+ }
+
private static class ToStringVisitor implements ExpressionVisitor {
private StringBuilder str;
+ private boolean first;
- public String buildString(ExpressionPart exp) {
+ public String buildString(String bindVariable, ExpressionPart exp) {
if (exp == null) {
return "";
}
- str = new StringBuilder();
+ str = new StringBuilder(bindVariable == null ? "" : bindVariable );
+ first = true;
exp.accept(this);
return str.toString();
}
@@ -97,12 +117,18 @@
}
public void visit(ExpressionField part) {
- str.append('.').append(part.getName());
+ if (!first) {
+ str.append('.');
+ }
+ str.append(part.getName());
moveNext(part);
}
public void visit(ExpressionMethod part) {
- str.append('.').append(part.getName())
+ if (!first) {
+ str.append('.');
+ }
+ str.append(part.getName())
.append('(')
.append(paramsToString(part.getParams()))
.append(')');
@@ -114,13 +140,21 @@
moveNext(part);
}
+ public void visit(ExpressionUnboundFact part) {
+ moveNext(part, false);
+ }
+
+
public void visit(ExpressionGlobalVariable part) {
str.append(part.getName());
moveNext(part);
}
public void visit(ExpressionCollection part) {
- str.append('.').append(part.getName());
+ if (!first) {
+ str.append('.');
+ }
+ str.append(part.getName());
moveNext(part);
}
@@ -141,13 +175,20 @@
ToStringVisitor stringVisitor = new ToStringVisitor();
StringBuilder strParams = new StringBuilder();
for (ExpressionFormLine param : params.values()) {
- strParams.append(", ").append(stringVisitor.buildString(param.getRootExpression()));
+ strParams.append(", ").append(stringVisitor.buildString(param.getBindVariable(), param.getRootExpression()));
}
return strParams.substring(2);
}
private void moveNext(ExpressionPart exp) {
+ moveNext(exp, true);
+ }
+
+ private void moveNext(ExpressionPart exp, boolean resetFirst) {
if (exp.getNext() != null) {
+ if (resetFirst) {
+ first = false;
+ }
exp.getNext().accept(this);
}
}
Added: labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionPartHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionPartHelper.java (rev 0)
+++ labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionPartHelper.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -0,0 +1,31 @@
+package org.drools.ide.common.client.modeldriven.brl;
+
+import org.drools.ide.common.client.modeldriven.MethodInfo;
+import org.drools.ide.common.client.modeldriven.SuggestionCompletionEngine;
+
+public class ExpressionPartHelper {
+ public static ExpressionPart getExpressionPartForMethod(SuggestionCompletionEngine sce, String factName, String methodName) {
+ MethodInfo mi = sce.getMethodinfo(factName, methodName);
+ if (SuggestionCompletionEngine.TYPE_COLLECTION.equals(mi.getGenericType())) {
+ return new ExpressionCollection(methodName, mi.getReturnClassType(),
+ mi.getGenericType(), mi.getParametricReturnType());
+ }
+ return new ExpressionMethod(mi.getName(), mi.getReturnClassType(), mi.getGenericType());
+ }
+
+ public static ExpressionPart getExpressionPartForField(SuggestionCompletionEngine sce, String factName, String fieldName) {
+ String fieldClassName = sce.getFieldClassName(factName, fieldName);
+ String fieldGenericType = sce.getFieldType(factName, fieldName);
+ if (SuggestionCompletionEngine.TYPE_COLLECTION.equals(fieldGenericType)) {
+ String fieldParametricType = sce.getParametricFieldType(factName, fieldName);
+ return new ExpressionCollection(fieldName, fieldClassName, fieldGenericType,
+ fieldParametricType);
+ }
+ return new ExpressionField(fieldName, fieldClassName, fieldGenericType);
+ }
+
+ public static ExpressionPart getExpressionPartForGlobalVariable(SuggestionCompletionEngine sce, String varName) {
+ String globalVarType = sce.getGlobalVariable(varName);
+ return new ExpressionGlobalVariable(varName, globalVarType, globalVarType);
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionPartHelper.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionUnboundFact.java
===================================================================
--- labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionUnboundFact.java (rev 0)
+++ labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionUnboundFact.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -0,0 +1,23 @@
+package org.drools.ide.common.client.modeldriven.brl;
+
+
+public class ExpressionUnboundFact extends ExpressionPart {
+ private FactPattern fact;
+
+ @SuppressWarnings("unused")
+ private ExpressionUnboundFact() {}
+
+ public ExpressionUnboundFact(FactPattern fact) {
+ super(fact.factType, fact.factType, fact.factType);
+ this.fact = fact;
+ }
+
+ public FactPattern getFact() {
+ return fact;
+ }
+
+ @Override
+ public void accept(ExpressionVisitor visitor) {
+ visitor.visit(this);
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionUnboundFact.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionVisitor.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ExpressionVisitor.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -9,4 +9,5 @@
void visit(ExpressionCollection part);
void visit(ExpressionCollectionIndex part);
void visit(ExpressionText part);
+ void visit(ExpressionUnboundFact part);
}
Modified: labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ISingleFieldConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ISingleFieldConstraint.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/ISingleFieldConstraint.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -31,11 +31,6 @@
public static final int TYPE_RET_VALUE = 3;
/**
- * This is for a "expression builder" that calculates a value.
- */
- public static final int TYPE_EXPR_BUILDER = 6;
-
- /**
* This is not used yet. ENUMs are not suitable for business rules
* until we can get data driven non code enums.
*/
@@ -45,11 +40,21 @@
* The fieldName and fieldBinding is not used in the case of a predicate.
*/
public static final int TYPE_PREDICATE = 5;
+
+ /**
+ * This is for a "expression builder" that calculates a value.
+ */
+ public static final int TYPE_EXPR_BUILDER_VALUE = 6;
/**
* This is for a field to be a placeholder for a template
*/
public static final int TYPE_TEMPLATE = 7;
+
+ /**
+ * This is for a "expression builder" in the left side of a constraint.
+ */
+// public static final int TYPE_EXPR_BUILDER_LEFT_SIDE = 8;
public String value;
public int constraintValueType;
Modified: labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/RuleModel.java
===================================================================
--- labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/RuleModel.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/RuleModel.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -127,27 +127,27 @@
for (int j = 0; j < fact.getFieldConstraints().length; j++) {
FieldConstraint fc = fact.getFieldConstraints()[j];
- List<String> s = giveFieldBinding(fc);
+ List<String> s = getFieldBinding(fc);
result.addAll(s);
}
return result;
}
- private List<String> giveFieldBinding(FieldConstraint f) {
+ private List<String> getFieldBinding(FieldConstraint f) {
List<String> result = new ArrayList<String>();
if (f instanceof SingleFieldConstraint) {
- SingleFieldConstraint s = (SingleFieldConstraint) f;
- if (s.isBound() == true) {
- result.add(s.fieldBinding);
+ SingleFieldConstraint sfc = (SingleFieldConstraint) f;
+ if (sfc.isBound()) {
+ result.add(sfc.fieldBinding);
}
}
if (f instanceof CompositeFieldConstraint) {
- CompositeFieldConstraint s = (CompositeFieldConstraint) f;
+ CompositeFieldConstraint cfc = (CompositeFieldConstraint) f;
//If the user didn't add any constraint yet, s.constraints is null
- if (s.constraints != null){
- for (FieldConstraint ss : s.constraints) {
- List<String> t = giveFieldBinding(ss);
+ if (cfc.constraints != null){
+ for (FieldConstraint ss : cfc.constraints) {
+ List<String> t = getFieldBinding(ss);
result.addAll(t);
}
}
Modified: labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/SingleFieldConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/SingleFieldConstraint.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/SingleFieldConstraint.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -62,14 +62,14 @@
* Returns true of there is a field binding.
*/
public boolean isBound() {
- return this.fieldBinding != null && this.fieldBinding.length() > 0 ;
+ return this.fieldBinding != null && this.fieldBinding.length() > 0;
}
- public ExpressionFormLine getExpression() {
+ public ExpressionFormLine getExpressionValue() {
return expression;
}
- public void setExpression(ExpressionFormLine expression) {
+ public void setExpressionValue(ExpressionFormLine expression) {
this.expression = expression;
}
}
Added: labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/SingleFieldConstraintEBLeftSide.java
===================================================================
--- labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/SingleFieldConstraintEBLeftSide.java (rev 0)
+++ labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/SingleFieldConstraintEBLeftSide.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -0,0 +1,38 @@
+package org.drools.ide.common.client.modeldriven.brl;
+
+
+/**
+ * @author baunax at gmail.com
+ */
+public class SingleFieldConstraintEBLeftSide extends SingleFieldConstraint {
+
+ public SingleFieldConstraintEBLeftSide() {
+ super();
+ }
+
+ public SingleFieldConstraintEBLeftSide(String field, String fieldType, FieldConstraint parent) {
+ super(field, fieldType, parent);
+ }
+
+ public SingleFieldConstraintEBLeftSide(String field) {
+ super(field);
+ }
+
+ private ExpressionFormLine expLeftSide = new ExpressionFormLine();
+
+ /**
+ * Returns true of there is a field binding.
+ */
+ public boolean isBound() {
+ return super.isBound()
+ || (expLeftSide != null && expLeftSide.isBound()) ;
+ }
+
+ public ExpressionFormLine getExpressionLeftSide() {
+ return expLeftSide;
+ }
+
+ public void setExpressionLeftSide(ExpressionFormLine expression) {
+ this.expLeftSide = expression;
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/client/modeldriven/brl/SingleFieldConstraintEBLeftSide.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/server/util/BRDRLPersistence.java
===================================================================
--- labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/server/util/BRDRLPersistence.java 2010-06-11 21:54:53 UTC (rev 33459)
+++ labs/jbossrules/trunk/drools-ide-common/src/main/java/org/drools/ide/common/server/util/BRDRLPersistence.java 2010-06-11 22:07:09 UTC (rev 33460)
@@ -399,7 +399,9 @@
buf.append(" : ");
}
if ((constr.operator != null && constr.value != null)
- || constr.fieldBinding != null || constr.constraintValueType == ISingleFieldConstraint.TYPE_EXPR_BUILDER) {
+ || constr.fieldBinding != null
+ || constr.constraintValueType == ISingleFieldConstraint.TYPE_EXPR_BUILDER_VALUE
+ || constr instanceof SingleFieldConstraintEBLeftSide) {
SingleFieldConstraint parent = (SingleFieldConstraint) constr.parent;
StringBuilder parentBuf = new StringBuilder();
while (parent != null) {
@@ -407,13 +409,17 @@
parent = (SingleFieldConstraint) parent.parent;
}
buf.append(parentBuf);
- buf.append(constr.fieldName);
+ if (constr instanceof SingleFieldConstraintEBLeftSide) {
+ buf.append(((SingleFieldConstraintEBLeftSide) constr).getExpressionLeftSide().getText());
+ } else {
+ buf.append(constr.fieldName);
+ }
}
-
- addFieldRestriction(buf, constr.constraintValueType,
- constr.operator, constr.value,constr.getExpression());
-
- // and now do the connectives.
+
+ addFieldRestriction(buf, constr.constraintValueType, constr.operator, constr.value, constr
+ .getExpressionValue());
+
+ // and now do the connectives.
if (constr.connectives != null) {
for (int j = 0; j < constr.connectives.length; j++) {
final ConnectiveConstraint conn = constr.connectives[j];
@@ -449,7 +455,7 @@
buf.append('"');
}
break;
- case ISingleFieldConstraint.TYPE_EXPR_BUILDER:
+ case ISingleFieldConstraint.TYPE_EXPR_BUILDER_VALUE:
if (expression!=null){
buf.append(expression.getText());
}
More information about the jboss-svn-commits
mailing list