[jboss-svn-commits] JBL Code SVN: r31366 - in labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban: drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Feb 2 16:52:51 EST 2010
Author: baunax
Date: 2010-02-02 16:52:50 -0500 (Tue, 02 Feb 2010)
New Revision: 31366
Added:
labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/CopyExpressionVisitor.java
labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionCollectionIndex.java
labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionText.java
labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionVisitable.java
labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionVisitor.java
Modified:
labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngine.java
labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionCollection.java
labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionField.java
labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionFormLine.java
labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionMethod.java
labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionPart.java
labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionVariable.java
labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionBuilder.java
Log:
- added collection support to ExpressionBuilder
Modified: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngine.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngine.java 2010-02-02 18:59:48 UTC (rev 31365)
+++ labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngine.java 2010-02-02 21:52:50 UTC (rev 31366)
@@ -547,9 +547,12 @@
* @return
*/
public String getFactNameFromType(String type) {
+ if (type == null) {
+ return null;
+ }
if (modelFields.containsKey(type)) {
return type;
- }
+ }
for (Map.Entry<String, ModelField[]> entry : modelFields.entrySet()) {
for (ModelField mf : entry.getValue()) {
if ("this".equals(mf.getName()) && type.equals(mf.getClassName())) {
Added: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/CopyExpressionVisitor.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/CopyExpressionVisitor.java (rev 0)
+++ labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/CopyExpressionVisitor.java 2010-02-02 21:52:50 UTC (rev 31366)
@@ -0,0 +1,79 @@
+package org.drools.guvnor.client.modeldriven.brl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class CopyExpressionVisitor implements ExpressionVisitor {
+
+ private ExpressionPart root;
+ private ExpressionPart curr;
+
+ public ExpressionPart copy(ExpressionPart part) {
+ root = null;
+ curr = null;
+ part.accept(this);
+ return root;
+ }
+
+ public void visit(ExpressionPart part) {
+ throw new RuntimeException("can't copy an abstract class: " + ExpressionPart.class.getName());
+ }
+
+ public void visit(ExpressionField part) {
+ add(new ExpressionField(part.getName(), part.getClassType(), part.getGenericType(), part.getParametricType()));
+ moveNext();
+ }
+
+ public void visit(ExpressionMethod part) {
+ ExpressionMethod method = new ExpressionMethod(part.getName(), part.getClassType(), part.getGenericType(), part.getParametricType());
+ copyMethodParams(part, method);
+ add(method);
+ moveNext();
+ }
+
+ public void visit(ExpressionVariable part) {
+ add(new ExpressionVariable(part.getFact()));
+ moveNext();
+ }
+
+ public void visit(ExpressionCollection part) {
+ add(new ExpressionCollection(part.getName(), part.getClassType(), part.getGenericType(), part.getParametricType()));
+ moveNext();
+ }
+
+ public void visit(ExpressionCollectionIndex part) {
+ ExpressionCollectionIndex method = new ExpressionCollectionIndex(part.getName(), part.getClassType(), part.getGenericType(), part.getParametricType());
+ copyMethodParams(part, method);
+ add(method);
+ moveNext();
+ }
+
+ public void visit(ExpressionText part) {
+ add(new ExpressionText(part.getName()));
+ moveNext();
+ }
+
+ private void copyMethodParams(ExpressionMethod part, ExpressionMethod method) {
+ Map<String, ExpressionFormLine> params = new HashMap<String, ExpressionFormLine>();
+ for (Map.Entry<String, ExpressionFormLine> entry : part.getParams().entrySet()) {
+ params.put(entry.getKey(), new ExpressionFormLine(entry.getValue()));
+ }
+ method.setParams(params);
+ }
+
+ private void moveNext() {
+ if (curr.getNext() != null) {
+ curr.getNext().accept(this);
+ }
+ }
+
+ private void add(ExpressionPart p) {
+ if (root == null) {
+ root = p;
+ curr = p;
+ } else {
+ curr.setNext(p);
+ curr = p;
+ }
+ }
+}
Property changes on: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/CopyExpressionVisitor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionCollection.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionCollection.java 2010-02-02 18:59:48 UTC (rev 31365)
+++ labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionCollection.java 2010-02-02 21:52:50 UTC (rev 31366)
@@ -13,7 +13,12 @@
@Override
public String getText() {
- return getName();
+ return "." + getName() + (getNext() == null ? "" : getNext().getText());
}
+
+ @Override
+ public void accept(ExpressionVisitor visitor) {
+ super.accept(visitor);
+ }
}
Added: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionCollectionIndex.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionCollectionIndex.java (rev 0)
+++ labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionCollectionIndex.java 2010-02-02 21:52:50 UTC (rev 31366)
@@ -0,0 +1,29 @@
+package org.drools.guvnor.client.modeldriven.brl;
+
+public class ExpressionCollectionIndex extends ExpressionMethod {
+
+ protected ExpressionCollectionIndex() {}
+
+ public ExpressionCollectionIndex(String name, String classType,
+ String genericType, String parametricType) {
+ super(name, classType, genericType, parametricType);
+ }
+
+ public ExpressionCollectionIndex(String name, String returnClassType,
+ String returnGenericType) {
+ super(name, returnClassType, returnGenericType);
+ }
+
+ @Override
+ public String getText() {
+ return "[" + paramsToString() + "]"
+ + (getNext() == null ? "" : getNext().getText());
+ }
+
+ @Override
+ public void accept(ExpressionVisitor visitor) {
+ super.accept(visitor);
+ }
+
+
+}
Property changes on: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionCollectionIndex.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionField.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionField.java 2010-02-02 18:59:48 UTC (rev 31365)
+++ labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionField.java 2010-02-02 21:52:50 UTC (rev 31366)
@@ -9,8 +9,17 @@
super(fieldName, fieldClassType, fieldGenericType);
}
+ public ExpressionField(String fieldName, String fieldClassType, String fieldGenericType, String parametricType) {
+ super(fieldName, fieldClassType, fieldGenericType, parametricType);
+ }
+
@Override
public String getText() {
return "." + getName() + (getNext() == null ? "" : getNext().getText());
}
+
+ @Override
+ public void accept(ExpressionVisitor visitor) {
+ super.accept(visitor);
+ }
}
Modified: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionFormLine.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionFormLine.java 2010-02-02 18:59:48 UTC (rev 31365)
+++ labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionFormLine.java 2010-02-02 21:52:50 UTC (rev 31366)
@@ -2,12 +2,24 @@
import java.util.LinkedList;
-public class ExpressionFormLine implements IAction, IPattern {
+public class ExpressionFormLine implements IAction, IPattern, Cloneable {
private LinkedList<ExpressionPart> parts = new LinkedList<ExpressionPart>() ;
public ExpressionFormLine() {}
+ public ExpressionFormLine(ExpressionPart part) {
+ appendPart(part);
+ }
+
+ public ExpressionFormLine(ExpressionFormLine other) {
+ CopyExpressionVisitor copier = new CopyExpressionVisitor();
+
+ for (ExpressionPart exp = copier.copy(other.getRootExpression()); exp != null; exp = exp.getNext()) {
+ parts.add(exp);
+ }
+ }
+
public String getText() {
return parts.isEmpty() ? "" : parts.getFirst().getText();
}
@@ -35,13 +47,21 @@
public String getPreviousType() {
ExpressionPart last = getPreviousPart();
- return last.getPrevious() == null ? null : last.getPrevious().getType();
+ return last.getPrevious() == null ? null : last.getPrevious().getClassType();
}
- public String getType() {
- return parts.getLast().getType();
+ public String getClassType() {
+ return parts.getLast().getClassType();
}
+
+ public String getGenericType() {
+ return parts.getLast().getGenericType();
+ }
+ public String getParametricType() {
+ return parts.getLast().getParametricType();
+ }
+
public boolean isEmpty() {
return parts.isEmpty();
}
@@ -54,4 +74,8 @@
ExpressionPart previousPart = getPreviousPart();
return previousPart == null ? null : previousPart.getName();
}
+
+ public ExpressionPart getRootExpression() {
+ return parts.getFirst();
+ }
}
Modified: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionMethod.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionMethod.java 2010-02-02 18:59:48 UTC (rev 31365)
+++ labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionMethod.java 2010-02-02 21:52:50 UTC (rev 31366)
@@ -5,39 +5,51 @@
public class ExpressionMethod extends ExpressionPart {
- private Map<String, ExpressionPart> params = new LinkedHashMap<String, ExpressionPart>();
+ private Map<String, ExpressionFormLine> params = new LinkedHashMap<String, ExpressionFormLine>();
- @SuppressWarnings("unused")
- private ExpressionMethod() {}
+ protected ExpressionMethod() {}
public ExpressionMethod(String methodName, String returnClassType, String returnGenericType) {
super(methodName, returnClassType, returnGenericType);
}
- public Map<String, ExpressionPart> getParams() {
+ public ExpressionMethod(String name, String classType, String genericType,
+ String parametricType) {
+ super(name, classType, genericType, parametricType);
+ }
+
+ public Map<String, ExpressionFormLine> getParams() {
return params;
}
- public void setParams(Map<String, ExpressionPart> params) {
- this.params = params;
+ public void setParams(Map<String, ExpressionFormLine> params) {
+ this.params.putAll(params);
}
+
+ public void putParam(String name, ExpressionFormLine expression) {
+ this.params.put(name, expression);
+ }
@Override
public String getText() {
- return "." + getName() + paramsToString()
+ return "." + getName() + "(" + paramsToString() + ")"
+ (getNext() == null ? "" : getNext().getText());
}
- private String paramsToString() {
+ protected String paramsToString() {
if (params.isEmpty()) {
- return "()";
+ return "";
}
String sep = ", ";
StringBuilder s = new StringBuilder();
- for (ExpressionPart expr : params.values()) {
+ for (ExpressionFormLine expr : params.values()) {
s.append(sep).append(expr.getText());
}
- return "(" + s.substring(sep.length()) + ")";
+ return s.substring(sep.length());
}
+ @Override
+ public void accept(ExpressionVisitor visitor) {
+ super.accept(visitor);
+ }
}
Modified: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionPart.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionPart.java 2010-02-02 18:59:48 UTC (rev 31365)
+++ labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionPart.java 2010-02-02 21:52:50 UTC (rev 31366)
@@ -1,6 +1,6 @@
package org.drools.guvnor.client.modeldriven.brl;
-public abstract class ExpressionPart implements IPattern, IAction {
+public abstract class ExpressionPart implements IPattern, IAction, ExpressionVisitable {
private ExpressionPart prev;
private ExpressionPart next;
private String name;
@@ -28,7 +28,7 @@
public abstract String getText();
- public final String getType() {
+ public final String getClassType() {
return classType;
}
@@ -66,4 +66,8 @@
public String toString() {
return getText();
}
+
+ public void accept(ExpressionVisitor visitor) {
+ visitor.visit(this);
+ }
}
Added: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionText.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionText.java (rev 0)
+++ labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionText.java 2010-02-02 21:52:50 UTC (rev 31366)
@@ -0,0 +1,18 @@
+package org.drools.guvnor.client.modeldriven.brl;
+
+import org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine;
+
+public class ExpressionText extends ExpressionPart {
+
+ protected ExpressionText() {}
+
+ public ExpressionText(String name) {
+ super(name, "java.lang.String", SuggestionCompletionEngine.TYPE_STRING);
+ }
+
+ @Override
+ public String getText() {
+ return getName() + (getNext() == null ? "" : getNext().getClass());
+ }
+
+}
Property changes on: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionText.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionVariable.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionVariable.java 2010-02-02 18:59:48 UTC (rev 31365)
+++ labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionVariable.java 2010-02-02 21:52:50 UTC (rev 31366)
@@ -23,4 +23,9 @@
public FactPattern getFact() {
return fact;
}
+
+ @Override
+ public void accept(ExpressionVisitor visitor) {
+ super.accept(visitor);
+ }
}
Added: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionVisitable.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionVisitable.java (rev 0)
+++ labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionVisitable.java 2010-02-02 21:52:50 UTC (rev 31366)
@@ -0,0 +1,5 @@
+package org.drools.guvnor.client.modeldriven.brl;
+
+public interface ExpressionVisitable {
+ void accept(ExpressionVisitor visitor);
+}
Property changes on: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionVisitable.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionVisitor.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionVisitor.java (rev 0)
+++ labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionVisitor.java 2010-02-02 21:52:50 UTC (rev 31366)
@@ -0,0 +1,11 @@
+package org.drools.guvnor.client.modeldriven.brl;
+
+public interface ExpressionVisitor {
+ void visit(ExpressionPart part);
+ void visit(ExpressionField part);
+ void visit(ExpressionMethod part);
+ void visit(ExpressionVariable part);
+ void visit(ExpressionCollection part);
+ void visit(ExpressionCollectionIndex part);
+ void visit(ExpressionText part);
+}
Property changes on: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/ExpressionVisitor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionBuilder.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionBuilder.java 2010-02-02 18:59:48 UTC (rev 31365)
+++ labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ExpressionBuilder.java 2010-02-02 21:52:50 UTC (rev 31366)
@@ -10,9 +10,12 @@
import org.drools.guvnor.client.modeldriven.MethodInfo;
import org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine;
import org.drools.guvnor.client.modeldriven.brl.ExpressionCollection;
+import org.drools.guvnor.client.modeldriven.brl.ExpressionCollectionIndex;
import org.drools.guvnor.client.modeldriven.brl.ExpressionField;
import org.drools.guvnor.client.modeldriven.brl.ExpressionFormLine;
import org.drools.guvnor.client.modeldriven.brl.ExpressionMethod;
+import org.drools.guvnor.client.modeldriven.brl.ExpressionPart;
+import org.drools.guvnor.client.modeldriven.brl.ExpressionText;
import org.drools.guvnor.client.modeldriven.brl.ExpressionVariable;
import org.drools.guvnor.client.modeldriven.brl.FactPattern;
import org.drools.guvnor.client.modeldriven.brl.RuleModel;
@@ -111,7 +114,7 @@
return createStartPointWidget();
}
String factName = getCompletionEngine().getFactNameFromType(
- getCurrentType());
+ getCurrentClassType());
if (factName != null) {
ListBox lb = new ListBox();
lb.setVisibleItemCount(1);
@@ -132,41 +135,65 @@
}
});
return lb;
- } else if (isCollection()) {
+ } else {//if (SuggestionCompletionEngine.TYPE_COLLECTION.equals(getCurrentGenericType())) {
ListBox lb = new ListBox();
lb.setVisibleItemCount(1);
lb.addItem(constants.ChooseDotDotDot(), "");
+ lb.addItem("<==" + constants.DeleteItem(), DELETE_VALUE);
+ for (Map.Entry<String, String> entry : getCompletionsForCurrentType().entrySet()) {
+ lb.addItem(entry.getKey(), entry.getValue());
+ }
+ lb.addChangeListener(new ChangeListener() {
+ public void onChange(Widget sender) {
+ ListBox box = (ListBox) sender;
+ panel.remove(box);
+ if (box.getSelectedIndex() > 0) {
+ onChangeSelection(box.getValue(box.getSelectedIndex()));
+ }
+ }
+ });
return lb;
- } else if (isDate()) {
-
}
- return null;
+// return null;
}
- private boolean isDate() {
- // TODO Auto-generated method stub
- return false;
- }
-
- private boolean isCollection() {
- String previousType = expression.getPreviousType();
- String factName = getCompletionEngine().getFactNameFromType(
- previousType);
- return true;
- }
-
private void onChangeSelection(String value) {
String prevFactName = null;
if (DELETE_VALUE.equals(value)) {
expression.removeLast();
+ } else if (SuggestionCompletionEngine.TYPE_COLLECTION.equals(getCurrentGenericType())) {
+ if ("size".contains(value)) {
+ expression.appendPart(new ExpressionMethod("size", "int", SuggestionCompletionEngine.TYPE_NUMERIC));
+ } else if ("isEmpty".equals(value)) {
+ expression.appendPart(new ExpressionMethod("isEmpty", "boolean", SuggestionCompletionEngine.TYPE_BOOLEAN));
+ } else {
+ ExpressionCollectionIndex collectionIndex;
+ String factName = getCompletionEngine().getFactNameFromType(getCurrentParametricType());
+ if (getCurrentParametricType() != null && factName != null) {
+ collectionIndex = new ExpressionCollectionIndex("get", getCurrentParametricType(), factName);
+ } else {
+ collectionIndex = new ExpressionCollectionIndex("get", "java.lang.Object", SuggestionCompletionEngine.TYPE_OBJECT);
+ }
+ if ("first".equals(value)) {
+ collectionIndex.putParam("index", new ExpressionFormLine(new ExpressionText("0")));
+ expression.appendPart(collectionIndex);
+ } else if ("last".equals(value)) {
+ ExpressionFormLine index = new ExpressionFormLine(expression);
+ index.appendPart(new ExpressionMethod("size", "int", SuggestionCompletionEngine.TYPE_NUMERIC));
+ index.appendPart(new ExpressionText("-1"));
+
+ collectionIndex.putParam("index", index);
+ expression.appendPart(collectionIndex);
+ }
+ }
} else {
int dotPos = value.indexOf('.');
String prefix = value.substring(0, dotPos);
String attrib = value.substring(dotPos + 1);
prevFactName = getCompletionEngine().getFactNameFromType(
- getCurrentType());
- String genericType = SuggestionCompletionEngine.TYPE_OBJECT;
+ getCurrentClassType());
+// String genericType = SuggestionCompletionEngine.TYPE_OBJECT;
if (FIElD_VALUE_PREFIX.equals(prefix)) {
String fieldClassName = getCompletionEngine().getFieldClassName(prevFactName, attrib);
String fieldGenericType = getCompletionEngine().getFieldType(prevFactName, attrib);
@@ -198,7 +225,31 @@
private Map<String, String> getCompletionsForCurrentType() {
Map<String, String> completions = new LinkedHashMap<String, String>();
- String factName = getCompletionEngine().getFactNameFromType(getCurrentType());
+
+ if (SuggestionCompletionEngine.TYPE_COLLECTION.equals(getCurrentGenericType())) {
+ completions.put("size()", "size");
+ completions.put("first()","first");
+ completions.put("last()", "last");
+ completions.put("isEmpty()", "isEmpty");
+ return completions;
+ }
+
+ if (SuggestionCompletionEngine.TYPE_STRING.equals(getCurrentGenericType())) {
+ completions.put("size()", METHOD_VALUE_PREFIX + "size");
+ completions.put("isEmpty()", METHOD_VALUE_PREFIX + "isEmpty");
+ return completions;
+ }
+
+ if (SuggestionCompletionEngine.TYPE_BOOLEAN.equals(getCurrentGenericType()) ||
+ SuggestionCompletionEngine.TYPE_NUMERIC.equals(getCurrentGenericType()) ||
+ SuggestionCompletionEngine.TYPE_DATE.equals(getCurrentGenericType()) ||
+ SuggestionCompletionEngine.TYPE_OBJECT.equals(getCurrentGenericType())) {
+ completions.put("size()", METHOD_VALUE_PREFIX + "size");
+ completions.put("isEmpty()", METHOD_VALUE_PREFIX + "isEmpty");
+ return completions;
+ }
+
+ String factName = getCompletionEngine().getFactNameFromType(getCurrentClassType());
if (factName != null) {
List<String> methodNames = getCompletionEngine()
.getMethodFullNames(factName);
@@ -209,8 +260,7 @@
for (Iterator<String> i = methodNames.iterator(); i.hasNext();) {
String method = i.next();
if (method.startsWith(field)) {
- completions.put(method, METHOD_VALUE_PREFIX + "."
- + method);
+ completions.put(method, METHOD_VALUE_PREFIX + "." + method);
i.remove();
changed = true;
}
@@ -220,7 +270,7 @@
}
}
} else {
- String prevFactName = getCompletionEngine().getFactNameFromType(getPreviousType());
+ String prevFactName = getCompletionEngine().getFactNameFromType(getPreviousClassType());
if (prevFactName != null) {
// getCompletionEngine().get
}
@@ -240,11 +290,23 @@
return modeller.getSuggestionCompletions();
}
- public String getCurrentType() {
- return expression.getType();
+ private String getCurrentClassType() {
+ return expression.getClassType();
}
- public String getPreviousType() {
+ private String getCurrentGenericType() {
+ return expression.getGenericType();
+ }
+
+ private String getCurrentParametricType() {
+ return expression.getParametricType();
+ }
+
+ private String getPreviousClassType() {
return expression.getPreviousType();
}
+
+ private ExpressionPart getRootExpression() {
+ return expression.getRootExpression();
+ }
}
More information about the jboss-svn-commits
mailing list