[jboss-svn-commits] JBL Code SVN: r32056 - in labs/jbossrules/soa_branches/BRMS-5.0.1: drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Mar 12 08:06:10 EST 2010
Author: jervisliu
Date: 2010-03-12 08:06:08 -0500 (Fri, 12 Mar 2010)
New Revision: 32056
Modified:
labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngine.java
labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngineTest.java
labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ConstraintValueEditor.java
labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/LiteralEditor.java
labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java
Log:
Merged BRMS-121(enums partially broken when using external functions) from trunk.
Merge log:
1.replaced SuggestionCompletionEngine with 29015 version.
replaced SuggestionCompletionEngineTest with 27831 version.
This is because SuggestionCompletionEngine has a previous version 27831:
/labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngine.java
/labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngineTest.java
2. replaced ConstraintValueEditor with 29015 version.
replaced LiteralEditor with 29008 version
NOTE: ConstraintValueEditor has a previous version 29008:
/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/LiteralEditor.java
3. as /labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java has too many previous versions, I only changed ServiceImplementation with the code change made to version 27008:
line 2214, added:
if ( valuePairs[i] == null ) {
return new String[0];
}
4. changed ServiceImplementationTest with the code change made to version 27008:
line 2467, added
public void testLoadDropDownNoValuePairs() throws Exception {
ServiceImplementation serv = new ServiceImplementation();
String[] pairs = new String[]{null};
String expression = "['@{f1}', '@{f2}']";
String[] r = serv.loadDropDownExpression(pairs, expression);
assertEquals(0, r.length);
}
Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngine.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngine.java 2010-03-12 11:46:01 UTC (rev 32055)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngine.java 2010-03-12 13:06:08 UTC (rev 32056)
@@ -86,7 +86,7 @@
* Contains a map of { TypeName.field : String[] } - where a list is valid
* values to display in a drop down for a given Type.field combination.
*/
- public Map<String, String[]> dataEnumLists = new HashMap(); // TODO this is
+ public Map<String, String[]> dataEnumLists = new HashMap<String, String[]>(); // TODO this is
// a PROBLEM as
// its not
// always
@@ -276,12 +276,14 @@
if ( pat.constraintList != null && pat.constraintList.constraints != null ) {
// we may need to check for data dependent enums
Object _typeFields = dataEnumLookupFields.get( pat.factType + "." + field );
+
if ( _typeFields instanceof String ) {
String typeFields = (String) _typeFields;
FieldConstraint[] cons = pat.constraintList.constraints;
- String key = pat.factType + "." + field + "[";
+ String key = pat.factType + "." + field;
+ boolean addOpeninColumn = true;
String[] splitTypeFields = typeFields.split( "," );
for ( int j = 0; j < splitTypeFields.length; j++ ) {
String typeField = splitTypeFields[j];
@@ -292,6 +294,10 @@
SingleFieldConstraint sfc = (SingleFieldConstraint) con;
if ( sfc.fieldName.trim().equals( typeField.trim() ) ) {
+ if ( addOpeninColumn ) {
+ key += "[";
+ addOpeninColumn = false;
+ }
key += typeField + "=" + sfc.value;
if ( j != (splitTypeFields.length - 1) ) {
@@ -302,10 +308,12 @@
}
}
- key += "]";
+ if ( !addOpeninColumn ) {
+ key += "]";
+ }
return DropDownData.create( (String[]) this.dataEnumLists.get( key ) );
-
+
} else if ( _typeFields != null ) {
// these enums are calculated on demand, server side...
String[] fieldsNeeded = (String[]) _typeFields;
@@ -328,8 +336,11 @@
}
}
}
- return DropDownData.create( queryString,
- valuePairs );
+
+ if ( valuePairs.length > 0 && valuePairs[0] != null ) {
+ return DropDownData.create( queryString,
+ valuePairs );
+ }
}
}
return DropDownData.create( getEnumValues( pat.factType,
@@ -427,7 +438,7 @@
String predicate = key.substring( ix + 1,
key.indexOf( ']' ) );
if ( predicate.indexOf( '=' ) > -1 ) {
-
+
String[] bits = predicate.split( "," );
String typeField = "";
@@ -438,7 +449,7 @@
typeField += ",";
}
}
-
+
dataEnumLookupFields.put( factField,
typeField );
} else {
@@ -485,8 +496,8 @@
for ( MethodInfo info : infos ) {
methodList.add( info.getName() );
}
- }
+ }
return methodList;
}
-}
+}
\ No newline at end of file
Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngineTest.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngineTest.java 2010-03-12 11:46:01 UTC (rev 32055)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/guvnor/client/modeldriven/SuggestionCompletionEngineTest.java 2010-03-12 13:06:08 UTC (rev 32056)
@@ -18,18 +18,26 @@
String pkg = "package org.test\n import org.drools.guvnor.client.modeldriven.SuggestionCompletionEngineTest.NestedClass";
SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
- SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg, new ArrayList(), new ArrayList());
+ SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg,
+ new ArrayList(),
+ new ArrayList() );
- assertEquals( "String", engine.getFieldType( "SuggestionCompletionEngineTest$NestedClass", "name" ) );
+ assertEquals( "String",
+ engine.getFieldType( "SuggestionCompletionEngineTest$NestedClass",
+ "name" ) );
}
public void testStringNonNumeric() {
String pkg = "package org.test\n import org.drools.guvnor.client.modeldriven.Alert";
SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
- SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg, new ArrayList(),new ArrayList() );
+ SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg,
+ new ArrayList(),
+ new ArrayList() );
- assertEquals( SuggestionCompletionEngine.TYPE_STRING, engine.getFieldType( "Alert", "message" ) );
+ assertEquals( SuggestionCompletionEngine.TYPE_STRING,
+ engine.getFieldType( "Alert",
+ "message" ) );
}
@@ -40,29 +48,105 @@
List enums = new ArrayList();
- enums.add( "'Person.age' : [42, 43] \n 'Person.sex' : ['M', 'F']");
+ enums.add( "'Person.age' : [42, 43] \n 'Person.sex' : ['M', 'F']" );
enums.add( "'Driver.sex' : ['M', 'F']" );
+ SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg,
+ new ArrayList(),
+ new ArrayList(),
+ enums );
+ assertEquals( "String",
+ engine.getFieldType( "SuggestionCompletionEngineTest$NestedClass",
+ "name" ) );
- SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg, new ArrayList(), new ArrayList() , enums);
- assertEquals( "String", engine.getFieldType( "SuggestionCompletionEngineTest$NestedClass", "name" ) );
-
- assertEquals(3, engine.dataEnumLists.size());
+ assertEquals( 3,
+ engine.dataEnumLists.size() );
String[] items = (String[]) engine.dataEnumLists.get( "Person.age" );
- assertEquals(2, items.length);
- assertEquals("42", items[0]);
- assertEquals("43", items[1]);
+ assertEquals( 2,
+ items.length );
+ assertEquals( "42",
+ items[0] );
+ assertEquals( "43",
+ items[1] );
- items = engine.getEnums(new FactPattern("Person"), "age").fixedList;
- assertEquals(2, items.length);
- assertEquals("42", items[0]);
- assertEquals("43", items[1]);
+ items = engine.getEnums( new FactPattern( "Person" ),
+ "age" ).fixedList;
+ assertEquals( 2,
+ items.length );
+ assertEquals( "42",
+ items[0] );
+ assertEquals( "43",
+ items[1] );
- assertNull(engine.getEnums(new FactPattern("Nothing"), "age"));
+ assertNull( engine.getEnums( new FactPattern( "Nothing" ),
+ "age" ) );
+ assertEquals( null,
+ engine.getEnums( new FactPattern( "Something" ),
+ "else" ) );
- assertEquals(null, engine.getEnums(new FactPattern("Something"), "else"));
+ }
+ public void testDataEnums2() {
+ String pkg = "package org.test\n import org.drools.guvnor.client.modeldriven.SuggestionCompletionEngineTest.Fact";
+
+ SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
+
+ List enums = new ArrayList();
+
+ enums.add( "'Fact.field1' : ['val1', 'val2'] 'Fact.field2' : ['val3', 'val4'] 'Fact.field2[field1=val1]' : ['f1val1a', 'f1val1b'] 'Fact.field2[field1=val2]' : ['f1val2a', 'f1val2b']" );
+
+ SuggestionCompletionEngine engine = loader.getSuggestionEngine( pkg,
+ new ArrayList(),
+ new ArrayList(),
+ enums );
+ assertEquals( "String",
+ engine.getFieldType( "SuggestionCompletionEngineTest$Fact",
+ "field1" ) );
+ assertEquals( "String",
+ engine.getFieldType( "SuggestionCompletionEngineTest$Fact",
+ "field2" ) );
+
+ assertEquals( 4,
+ engine.dataEnumLists.size() );
+
+ String[] items = (String[]) engine.dataEnumLists.get( "Fact.field2" );
+ assertEquals( 2,
+ items.length );
+ assertEquals( "val3",
+ items[0] );
+ assertEquals( "val4",
+ items[1] );
+
+ FactPattern pat = new FactPattern( "Fact" );
+ SingleFieldConstraint sfc = new SingleFieldConstraint( "field2" );
+ pat.addConstraint( sfc );
+ items = engine.getEnums( pat,
+ "field2" ).fixedList;
+ assertEquals( 2,
+ items.length );
+ assertEquals( "val3",
+ items[0] );
+ assertEquals( "val4",
+ items[1] );
+
+ items = (String[]) engine.dataEnumLists.get( "Fact.field1" );
+ assertEquals( 2,
+ items.length );
+ assertEquals( "val1",
+ items[0] );
+ assertEquals( "val2",
+ items[1] );
+
+ items = engine.getEnums( new FactPattern( "Fact" ),
+ "field1" ).fixedList;
+ assertEquals( 2,
+ items.length );
+ assertEquals( "val1",
+ items[0] );
+ assertEquals( "val2",
+ items[1] );
+
}
public void testCompletions() {
@@ -203,7 +287,9 @@
assertEquals( 2,
c.length );
- assertEquals("Numeric", com.getFieldType( "Person", "age" ));
+ assertEquals( "Numeric",
+ com.getFieldType( "Person",
+ "age" ) );
}
@@ -230,178 +316,248 @@
}
public void testSmartEnums() {
- final SuggestionCompletionEngine sce = new SuggestionCompletionEngine();
- sce.dataEnumLists = new HashMap();
- sce.dataEnumLists.put("Fact.type", new String[] {"sex", "colour"});
- sce.dataEnumLists.put("Fact.value[type=sex]", new String[] {"M", "F"});
- sce.dataEnumLists.put("Fact.value[type=colour]", new String[] {"RED", "WHITE", "BLUE"});
+ final SuggestionCompletionEngine sce = new SuggestionCompletionEngine();
+ sce.dataEnumLists = new HashMap();
+ sce.dataEnumLists.put( "Fact.type",
+ new String[]{"sex", "colour"} );
+ sce.dataEnumLists.put( "Fact.value[type=sex]",
+ new String[]{"M", "F"} );
+ sce.dataEnumLists.put( "Fact.value[type=colour]",
+ new String[]{"RED", "WHITE", "BLUE"} );
- FactPattern pat = new FactPattern("Fact");
- SingleFieldConstraint sfc = new SingleFieldConstraint("type");
- sfc.value = "sex";
- pat.addConstraint(sfc);
- String[] result = sce.getEnums(pat, "value").fixedList;
- assertEquals(2, result.length);
- assertEquals("M", result[0]);
- assertEquals("F", result[1]);
+ FactPattern pat = new FactPattern( "Fact" );
+ SingleFieldConstraint sfc = new SingleFieldConstraint( "type" );
+ sfc.value = "sex";
+ pat.addConstraint( sfc );
+ String[] result = sce.getEnums( pat,
+ "value" ).fixedList;
+ assertEquals( 2,
+ result.length );
+ assertEquals( "M",
+ result[0] );
+ assertEquals( "F",
+ result[1] );
+ pat = new FactPattern( "Fact" );
+ sfc = new SingleFieldConstraint( "type" );
+ sfc.value = "colour";
+ pat.addConstraint( sfc );
- pat = new FactPattern("Fact");
- sfc = new SingleFieldConstraint("type");
- sfc.value = "colour";
- pat.addConstraint(sfc);
+ result = sce.getEnums( pat,
+ "value" ).fixedList;
+ assertEquals( 3,
+ result.length );
+ assertEquals( "RED",
+ result[0] );
+ assertEquals( "WHITE",
+ result[1] );
+ assertEquals( "BLUE",
+ result[2] );
- result = sce.getEnums(pat, "value").fixedList;
- assertEquals(3, result.length);
- assertEquals("RED", result[0]);
- assertEquals("WHITE", result[1]);
- assertEquals("BLUE", result[2]);
+ result = sce.getEnums( pat,
+ "type" ).fixedList;
+ assertEquals( 2,
+ result.length );
+ assertEquals( "sex",
+ result[0] );
+ assertEquals( "colour",
+ result[1] );
- result = sce.getEnums(pat, "type").fixedList;
- assertEquals(2, result.length);
- assertEquals("sex", result[0]);
- assertEquals("colour", result[1]);
+ ActionFieldValue[] vals = new ActionFieldValue[2];
+ vals[0] = new ActionFieldValue( "type",
+ "sex",
+ "blah" );
+ vals[1] = new ActionFieldValue( "value",
+ null,
+ "blah" );
+ result = sce.getEnums( "Fact",
+ vals,
+ "value" ).fixedList;
+ assertNotNull( result );
+ assertEquals( 2,
+ result.length );
+ assertEquals( "M",
+ result[0] );
+ assertEquals( "F",
+ result[1] );
+ assertNull( sce.getEnums( "Nothing",
+ vals,
+ "value" ) );
- ActionFieldValue[] vals = new ActionFieldValue[2];
- vals[0] = new ActionFieldValue("type", "sex", "blah");
- vals[1] = new ActionFieldValue("value", null, "blah");
- result = sce.getEnums("Fact", vals, "value").fixedList;
- assertNotNull(result);
- assertEquals(2, result.length);
- assertEquals("M", result[0]);
- assertEquals("F", result[1]);
+ }
- assertNull(sce.getEnums("Nothing", vals, "value"));
-
- }
-
public void testSmartEnumsDependingOfSeveralFieldsTwo() {
final SuggestionCompletionEngine sce = new SuggestionCompletionEngine();
sce.dataEnumLists = new HashMap();
- sce.dataEnumLists.put("Fact.field1", new String[] {"a1", "a2"});
- sce.dataEnumLists.put("Fact.field2", new String[] {"b1", "b2"});
- sce.dataEnumLists.put("Fact.field3[field1=a1,field2=b1]", new String[] {"c1","c2","c3"});
- sce.dataEnumLists.put("Fact.field4[field1=a1]", new String[] {"d1", "d2"});
-
- FactPattern pat = new FactPattern("Fact");
- SingleFieldConstraint sfc = new SingleFieldConstraint("field1");
+ sce.dataEnumLists.put( "Fact.field1",
+ new String[]{"a1", "a2"} );
+ sce.dataEnumLists.put( "Fact.field2",
+ new String[]{"b1", "b2"} );
+ sce.dataEnumLists.put( "Fact.field3[field1=a1,field2=b1]",
+ new String[]{"c1", "c2", "c3"} );
+ sce.dataEnumLists.put( "Fact.field4[field1=a1]",
+ new String[]{"d1", "d2"} );
+
+ FactPattern pat = new FactPattern( "Fact" );
+ SingleFieldConstraint sfc = new SingleFieldConstraint( "field1" );
sfc.value = "a1";
- pat.addConstraint(sfc);
- SingleFieldConstraint sfc2 = new SingleFieldConstraint("field2");
+ pat.addConstraint( sfc );
+ SingleFieldConstraint sfc2 = new SingleFieldConstraint( "field2" );
sfc2.value = "b1";
- pat.addConstraint(sfc2);
-
- String[] result = sce.getEnums(pat, "field3").fixedList;
- assertEquals(3, result.length);
- assertEquals("c1", result[0]);
- assertEquals("c2", result[1]);
- assertEquals("c3", result[2]);
+ pat.addConstraint( sfc2 );
+ String[] result = sce.getEnums( pat,
+ "field3" ).fixedList;
+ assertEquals( 3,
+ result.length );
+ assertEquals( "c1",
+ result[0] );
+ assertEquals( "c2",
+ result[1] );
+ assertEquals( "c3",
+ result[2] );
+
}
-
+
public void testSmartEnumsDependingOfSeveralFieldsFive() {
final SuggestionCompletionEngine sce = new SuggestionCompletionEngine();
sce.dataEnumLists = new HashMap();
- sce.dataEnumLists.put("Fact.field1", new String[] {"a1", "a2"});
- sce.dataEnumLists.put("Fact.field2", new String[] {"b1", "b2"});
- sce.dataEnumLists.put("Fact.field3", new String[] {"c1","c2","c3"});
- sce.dataEnumLists.put("Fact.longerField4", new String[] {"d1", "d2"});
- sce.dataEnumLists.put("Fact.field5", new String[] {"e1", "e2"});
- sce.dataEnumLists.put("Fact.field6[field1=a1, field2=b2, field3=c3,longerField4=d1,field5=e2]", new String[] {"f1", "f2"});
-
- FactPattern pat = new FactPattern("Fact");
- SingleFieldConstraint sfc = new SingleFieldConstraint("field1");
+ sce.dataEnumLists.put( "Fact.field1",
+ new String[]{"a1", "a2"} );
+ sce.dataEnumLists.put( "Fact.field2",
+ new String[]{"b1", "b2"} );
+ sce.dataEnumLists.put( "Fact.field3",
+ new String[]{"c1", "c2", "c3"} );
+ sce.dataEnumLists.put( "Fact.longerField4",
+ new String[]{"d1", "d2"} );
+ sce.dataEnumLists.put( "Fact.field5",
+ new String[]{"e1", "e2"} );
+ sce.dataEnumLists.put( "Fact.field6[field1=a1, field2=b2, field3=c3,longerField4=d1,field5=e2]",
+ new String[]{"f1", "f2"} );
+
+ FactPattern pat = new FactPattern( "Fact" );
+ SingleFieldConstraint sfc = new SingleFieldConstraint( "field1" );
sfc.value = "a1";
- pat.addConstraint(sfc);
- SingleFieldConstraint sfc2 = new SingleFieldConstraint("field2");
+ pat.addConstraint( sfc );
+ SingleFieldConstraint sfc2 = new SingleFieldConstraint( "field2" );
sfc2.value = "b2";
- pat.addConstraint(sfc2);
- SingleFieldConstraint sfc3 = new SingleFieldConstraint("field3");
+ pat.addConstraint( sfc2 );
+ SingleFieldConstraint sfc3 = new SingleFieldConstraint( "field3" );
sfc3.value = "c3";
- pat.addConstraint(sfc3);
- SingleFieldConstraint sfc4 = new SingleFieldConstraint("longerField4");
+ pat.addConstraint( sfc3 );
+ SingleFieldConstraint sfc4 = new SingleFieldConstraint( "longerField4" );
sfc4.value = "d1";
- pat.addConstraint(sfc4);
-
- assertNull( sce.getEnums(pat, "field6") );
+ pat.addConstraint( sfc4 );
- SingleFieldConstraint sfc5 = new SingleFieldConstraint("field5");
+ assertNull( sce.getEnums( pat,
+ "field6" ) );
+
+ SingleFieldConstraint sfc5 = new SingleFieldConstraint( "field5" );
sfc5.value = "e2";
- pat.addConstraint(sfc5);
-
- String[] result2 = sce.getEnums(pat, "field6").fixedList;
- assertEquals(2, result2.length);
- assertEquals("f1", result2[0]);
- assertEquals("f2", result2[1]);
+ pat.addConstraint( sfc5 );
+
+ String[] result2 = sce.getEnums( pat,
+ "field6" ).fixedList;
+ assertEquals( 2,
+ result2.length );
+ assertEquals( "f1",
+ result2[0] );
+ assertEquals( "f2",
+ result2[1] );
}
public void testSmarterLookupEnums() {
- final SuggestionCompletionEngine sce = new SuggestionCompletionEngine();
- sce.dataEnumLists = new HashMap();
- sce.dataEnumLists.put("Fact.type", new String[] {"sex", "colour"});
- sce.dataEnumLists.put("Fact.value[f1, f2]", new String[] {"select something from database where x=@{f1} and y=@{f2}"});
+ final SuggestionCompletionEngine sce = new SuggestionCompletionEngine();
+ sce.dataEnumLists = new HashMap();
+ sce.dataEnumLists.put( "Fact.type",
+ new String[]{"sex", "colour"} );
+ sce.dataEnumLists.put( "Fact.value[f1, f2]",
+ new String[]{"select something from database where x=@{f1} and y=@{f2}"} );
+ FactPattern fp = new FactPattern( "Fact" );
+ String[] drops = sce.getEnums( fp,
+ "type" ).fixedList;
+ assertEquals( 2,
+ drops.length );
+ assertEquals( "sex",
+ drops[0] );
+ assertEquals( "colour",
+ drops[1] );
+ Map lookupFields = sce.loadDataEnumLookupFields();
+ assertEquals( 1,
+ lookupFields.size() );
+ String[] flds = (String[]) lookupFields.get( "Fact.value" );
+ assertEquals( 2,
+ flds.length );
+ assertEquals( "f1",
+ flds[0] );
+ assertEquals( "f2",
+ flds[1] );
- FactPattern fp = new FactPattern("Fact");
- String[] drops = sce.getEnums(fp, "type").fixedList;
- assertEquals(2, drops.length);
- assertEquals("sex", drops[0]);
- assertEquals("colour", drops[1]);
+ FactPattern pat = new FactPattern( "Fact" );
+ SingleFieldConstraint sfc = new SingleFieldConstraint( "f1" );
+ sfc.value = "f1val";
+ pat.addConstraint( sfc );
+ sfc = new SingleFieldConstraint( "f2" );
+ sfc.value = "f2val";
+ pat.addConstraint( sfc );
+ DropDownData dd = sce.getEnums( pat,
+ "value" );
+ assertNull( dd.fixedList );
+ assertNotNull( dd.queryExpression );
+ assertNotNull( dd.valuePairs );
- Map lookupFields = sce.loadDataEnumLookupFields();
- assertEquals(1, lookupFields.size());
- String[] flds = (String[]) lookupFields.get("Fact.value");
- assertEquals(2, flds.length);
- assertEquals("f1", flds[0]);
- assertEquals("f2", flds[1]);
+ assertEquals( 2,
+ dd.valuePairs.length );
+ assertEquals( "select something from database where x=@{f1} and y=@{f2}",
+ dd.queryExpression );
+ assertEquals( "f1=f1val",
+ dd.valuePairs[0] );
+ assertEquals( "f2=f2val",
+ dd.valuePairs[1] );
+ //and now for the RHS
+ ActionFieldValue[] vals = new ActionFieldValue[2];
+ vals[0] = new ActionFieldValue( "f1",
+ "f1val",
+ "blah" );
+ vals[1] = new ActionFieldValue( "f2",
+ "f2val",
+ "blah" );
+ dd = sce.getEnums( "Fact",
+ vals,
+ "value" );
+ assertNull( dd.fixedList );
+ assertNotNull( dd.queryExpression );
+ assertNotNull( dd.valuePairs );
+ assertEquals( 2,
+ dd.valuePairs.length );
+ assertEquals( "select something from database where x=@{f1} and y=@{f2}",
+ dd.queryExpression );
+ assertEquals( "f1=f1val",
+ dd.valuePairs[0] );
+ assertEquals( "f2=f2val",
+ dd.valuePairs[1] );
- FactPattern pat = new FactPattern("Fact");
- SingleFieldConstraint sfc = new SingleFieldConstraint("f1");
- sfc.value = "f1val";
- pat.addConstraint(sfc);
- sfc = new SingleFieldConstraint("f2");
- sfc.value = "f2val";
- pat.addConstraint(sfc);
-
-
- DropDownData dd = sce.getEnums(pat, "value");
- assertNull(dd.fixedList);
- assertNotNull(dd.queryExpression);
- assertNotNull(dd.valuePairs);
-
- assertEquals(2, dd.valuePairs.length);
- assertEquals("select something from database where x=@{f1} and y=@{f2}", dd.queryExpression);
- assertEquals("f1=f1val", dd.valuePairs[0]);
- assertEquals("f2=f2val", dd.valuePairs[1]);
-
-
- //and now for the RHS
- ActionFieldValue[] vals = new ActionFieldValue[2];
- vals[0] = new ActionFieldValue("f1", "f1val", "blah");
- vals[1] = new ActionFieldValue("f2", "f2val", "blah");
- dd = sce.getEnums("Fact", vals, "value");
- assertNull(dd.fixedList);
- assertNotNull(dd.queryExpression);
- assertNotNull(dd.valuePairs);
- assertEquals(2, dd.valuePairs.length);
- assertEquals("select something from database where x=@{f1} and y=@{f2}", dd.queryExpression);
- assertEquals("f1=f1val", dd.valuePairs[0]);
- assertEquals("f2=f2val", dd.valuePairs[1]);
-
-
}
public void testSimpleEnums() {
- final SuggestionCompletionEngine sce = new SuggestionCompletionEngine();
- sce.dataEnumLists = new HashMap();
- sce.dataEnumLists.put("Fact.type", new String[] {"sex", "colour"});
- assertEquals(2, sce.getEnumValues("Fact", "type").length);
- assertEquals("sex", sce.getEnumValues("Fact", "type")[0]);
- assertEquals("colour", sce.getEnumValues("Fact", "type")[1]);
+ final SuggestionCompletionEngine sce = new SuggestionCompletionEngine();
+ sce.dataEnumLists = new HashMap();
+ sce.dataEnumLists.put( "Fact.type",
+ new String[]{"sex", "colour"} );
+ assertEquals( 2,
+ sce.getEnumValues( "Fact",
+ "type" ).length );
+ assertEquals( "sex",
+ sce.getEnumValues( "Fact",
+ "type" )[0] );
+ assertEquals( "colour",
+ sce.getEnumValues( "Fact",
+ "type" )[1] );
}
@@ -438,12 +594,13 @@
}
public void testDataDropDown() {
- assertNull( DropDownData.create(null) );
- assertNull( DropDownData.create(null, null));
- assertTrue( DropDownData.create(new String[] {"hey"}) instanceof DropDownData);
- assertTrue( DropDownData.create("abc", new String[] {"hey"}) instanceof DropDownData);
+ assertNull( DropDownData.create( null ) );
+ assertNull( DropDownData.create( null,
+ null ) );
+ assertTrue( DropDownData.create( new String[]{"hey"} ) instanceof DropDownData );
+ assertTrue( DropDownData.create( "abc",
+ new String[]{"hey"} ) instanceof DropDownData );
-
}
public static class NestedClass {
@@ -457,4 +614,26 @@
this.name = name;
}
}
-}
+
+ public static class Fact {
+ private String field1;
+ private String field2;
+
+ public String getField1() {
+ return field1;
+ }
+
+ public void setField1(String field1) {
+ this.field1 = field1;
+ }
+
+ public String getField2() {
+ return field2;
+ }
+
+ public void setField2(String field2) {
+ this.field2 = field2;
+ }
+
+ }
+}
\ No newline at end of file
Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ConstraintValueEditor.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ConstraintValueEditor.java 2010-03-12 11:46:01 UTC (rev 32055)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/ConstraintValueEditor.java 2010-03-12 13:06:08 UTC (rev 32056)
@@ -44,8 +44,6 @@
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
-import com.google.gwt.user.client.ui.KeyboardListener;
-import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.SimplePanel;
@@ -62,16 +60,17 @@
*/
public class ConstraintValueEditor extends DirtyableComposite {
- private final ISingleFieldConstraint constraint;
- private final Panel panel;
- private final RuleModel model;
- private final boolean numericValue;
- private DropDownData dropDownData;
- private Constants constants = ((Constants) GWT.create( Constants.class ));
- private String fieldType;
+ private final FactPattern pattern;
+ private final String fieldName;
+ private final SuggestionCompletionEngine sce;
+ private final ISingleFieldConstraint constraint;
+ private final Panel panel;
+ private final RuleModel model;
+ private final boolean numericValue;
+ private DropDownData dropDownData;
+ private Constants constants = ((Constants) GWT.create( Constants.class ));
+ private String fieldType;
- //private String[] enumeratedValues;
-
/**
* @param con The constraint being edited.
*/
@@ -80,11 +79,13 @@
ISingleFieldConstraint con,
RuleModeller modeller,
String valueType /* eg is numeric */) {
+ this.pattern = pattern;
+ this.fieldName = fieldName;
this.constraint = con;
- valueType = modeller.getSuggestionCompletions().getFieldType( pattern.factType,
- fieldName );
+ this.sce = modeller.getSuggestionCompletions();
+ valueType = sce.getFieldType( pattern.factType,
+ fieldName );
this.fieldType = valueType;
- SuggestionCompletionEngine sce = modeller.getSuggestionCompletions();
if ( SuggestionCompletionEngine.TYPE_NUMERIC.equals( valueType ) ) {
this.numericValue = true;
} else {
@@ -120,7 +121,10 @@
} else {
switch ( constraint.constraintValueType ) {
case SingleFieldConstraint.TYPE_LITERAL :
- panel.add( new LiteralEditor( constraint,
+ panel.add( new LiteralEditor( this.pattern,
+ this.fieldName,
+ this.sce,
+ this.constraint,
this.dropDownData,
this.fieldType,
this.numericValue ) );
@@ -194,7 +198,7 @@
//if we have to do it lazy, we will hit up the server when the widget gets focus
if ( dropData.fixedList == null && dropData.queryExpression != null ) {
- DeferredCommand.addCommand( new Command() {
+ DeferredCommand.addCommand( new Command() {
public void execute() {
LoadingPopup.showMessage( cs.RefreshingList() );
RepositoryServiceFactory.getService().loadDropDownExpression( dropData.valuePairs,
@@ -203,6 +207,11 @@
public void onSuccess(Object data) {
LoadingPopup.close();
String[] list = (String[]) data;
+
+ if ( list.length == 0 ) {
+ list = new String[]{cs.UnableToLoadList()};
+ }
+
doDropDown( currentValue,
list,
box );
Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/LiteralEditor.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/LiteralEditor.java 2010-03-12 11:46:01 UTC (rev 32055)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/client/modeldriven/ui/LiteralEditor.java 2010-03-12 13:06:08 UTC (rev 32056)
@@ -5,6 +5,7 @@
import org.drools.guvnor.client.messages.Constants;
import org.drools.guvnor.client.modeldriven.DropDownData;
import org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine;
+import org.drools.guvnor.client.modeldriven.brl.FactPattern;
import org.drools.guvnor.client.modeldriven.brl.ISingleFieldConstraint;
import com.google.gwt.core.client.GWT;
@@ -21,36 +22,45 @@
import com.google.gwt.user.client.ui.Widget;
/**
- *
- * Editor for literal values.
- * Normally shows the value as text, when clicked opens a custom editor for dates,
+ *
+ * Editor for literal values.
+ * Normally shows the value as text, when clicked opens a custom editor for dates,
* enums etc or by default a textbox.
- *
+ *
* @author Toni Rikkola
*
*/
public class LiteralEditor extends Composite {
- private Constants constants = ((Constants) GWT.create( Constants.class ));
- protected Panel panel = new HorizontalPanel();
- protected Label labelWidget = new Label();
- private ISingleFieldConstraint constraint;
- private DropDownData dropDownData;
- private String fieldType;
- private final boolean numericValue;
+ private final FactPattern pattern;
+ private final String fieldName;
+ private final SuggestionCompletionEngine sce;
+ private Constants constants = ((Constants) GWT.create( Constants.class ));
+ protected Panel panel = new HorizontalPanel();
+ protected Label labelWidget = new Label();
+ private ISingleFieldConstraint constraint;
+ private DropDownData dropDownData;
+ private String fieldType;
+ private final boolean numericValue;
- private final Button okButton = new Button( constants.OK() );
- private final ValueChanged valueChanged = new ValueChanged() {
- public void valueChanged(String newValue) {
- constraint.value = newValue;
- okButton.click();
- }
- };
+ private final Button okButton = new Button( constants.OK() );
+ private final ValueChanged valueChanged = new ValueChanged() {
+ public void valueChanged(String newValue) {
+ constraint.value = newValue;
+ okButton.click();
+ }
+ };
- public LiteralEditor(ISingleFieldConstraint constraint,
+ public LiteralEditor(FactPattern pattern,
+ String fieldName,
+ SuggestionCompletionEngine sce,
+ ISingleFieldConstraint constraint,
DropDownData dropDownData,
String fieldType,
boolean numericValue) {
+ this.pattern = pattern;
+ this.fieldName = fieldName;
+ this.sce = sce;
this.constraint = constraint;
this.dropDownData = dropDownData;
this.fieldType = fieldType;
@@ -80,8 +90,6 @@
labelWidget.addClickListener( new ClickListener() {
public void onClick(Widget arg0) {
- // panel.clear();
- // panel.add( getWidget() );
showPopup();
}
} );
@@ -126,6 +134,10 @@
//use a drop down if we have a fixed list
if ( this.dropDownData != null ) {
+
+ this.dropDownData = sce.getEnums( pattern,
+ fieldName );
+
ListBox box = ConstraintValueEditor.enumDropDown( constraint.value,
valueChanged,
this.dropDownData );
Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java 2010-03-12 11:46:01 UTC (rev 32055)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java 2010-03-12 13:06:08 UTC (rev 32056)
@@ -2188,6 +2188,9 @@
String expression) {
Map<String, String> context = new HashMap<String, String>();
for ( int i = 0; i < valuePairs.length; i++ ) {
+ if ( valuePairs[i] == null ) {
+ return new String[0];
+ }
String[] pair = valuePairs[i].split( "=" );
context.put( pair[0],
pair[1] );
Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java 2010-03-12 11:46:01 UTC (rev 32055)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java 2010-03-12 13:06:08 UTC (rev 32056)
@@ -2463,6 +2463,17 @@
}
+
+ public void testLoadDropDownNoValuePairs() throws Exception {
+ ServiceImplementation serv = new ServiceImplementation();
+ String[] pairs = new String[]{null};
+ String expression = "['@{f1}', '@{f2}']";
+ String[] r = serv.loadDropDownExpression(pairs, expression);
+
+ assertEquals(0, r.length);
+
+ }
+
public void testListUserPermisisons() throws Exception {
ServiceImplementation serv = getService();
Map<String, List<String>> r = serv.listUserPermissions();
More information about the jboss-svn-commits
mailing list