[jboss-svn-commits] JBL Code SVN: r31092 - in labs/jbossrules/trunk/drools-verifier: src/main/java/org/drools/verifier and 14 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jan 14 11:57:52 EST 2010
Author: Rikkola
Date: 2010-01-14 11:57:51 -0500 (Thu, 14 Jan 2010)
New Revision: 31092
Added:
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/imports.drl
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/model.jar
Modified:
labs/jbossrules/trunk/drools-verifier/.classpath
labs/jbossrules/trunk/drools-verifier/.project
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/Verifier.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Field.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/LiteralRestriction.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/ObjectType.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierData.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataMaps.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/FindMissingNumber.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MissingNumberPattern.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/html/ComponentsReportVisitor.java
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/opposites/Restrictions.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/overlaps/Restrictions.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Clean.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Dates.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Doubles.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Integers.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/NumberPatterns.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Variables.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Restrictions.drl
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/TestBase.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/components/LiteralRestrictionTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/PackageDescrVisitorTest.java
Log:
JBRULES-2405 : Fact model can be passed to verifier as a jar for additional information.
Modified: labs/jbossrules/trunk/drools-verifier/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-verifier/.classpath 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/.classpath 2010-01-14 16:57:51 UTC (rev 31092)
@@ -12,9 +12,9 @@
<classpathentry kind="var" path="M2_REPO/org/apache/jasper/springsource/com.springsource.org.apache.jasper.org.eclipse.jdt.springsource/6.0.20.S2-r5956/com.springsource.org.apache.jasper.org.eclipse.jdt.springsource-6.0.20.S2-r5956.jar"/>
<classpathentry kind="var" path="M2_REPO/org/codehaus/janino/com.springsource.org.codehaus.janino/2.5.15/com.springsource.org.codehaus.janino-2.5.15.jar"/>
<classpathentry kind="var" path="M2_REPO/org/xmlpull/com.springsource.org.xmlpull/1.1.4.c/com.springsource.org.xmlpull-1.1.4.c.jar"/>
- <classpathentry kind="src" path="/drools-api"/>
- <classpathentry kind="src" path="/drools-compiler"/>
- <classpathentry kind="src" path="/drools-core"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-api/5.1.0.SNAPSHOT/drools-api-5.1.0.SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-compiler/5.1.0.SNAPSHOT/drools-compiler-5.1.0.SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-core/5.1.0.SNAPSHOT/drools-core-5.1.0.SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/com/google/collections/google-collections/0.8/google-collections-0.8.jar"/>
<classpathentry kind="var" path="M2_REPO/org/antlr/gunit/3.1.3/gunit-3.1.3.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
Modified: labs/jbossrules/trunk/drools-verifier/.project
===================================================================
--- labs/jbossrules/trunk/drools-verifier/.project 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/.project 2010-01-14 16:57:51 UTC (rev 31092)
@@ -1,11 +1,7 @@
<projectDescription>
<name>drools-verifier</name>
<comment>A rule production system</comment>
- <projects>
- <project>drools-api</project>
- <project>drools-compiler</project>
- <project>drools-core</project>
- </projects>
+ <projects/>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/Verifier.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/Verifier.java 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/Verifier.java 2010-01-14 16:57:51 UTC (rev 31092)
@@ -1,6 +1,7 @@
package org.drools.verifier;
import java.util.List;
+import java.util.jar.JarInputStream;
import org.drools.builder.ResourceType;
import org.drools.io.Resource;
@@ -17,9 +18,9 @@
ResourceType type);
/**
- * TODO: Something like this, takes a look at the objects and finds out
+ * Give model info optionally as a jar. This way verifier doesn't have to figure out the field types.
*/
- // public void addObjectModel();
+ public void addObjectModel(JarInputStream jar);
/**
*
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java 2010-01-14 16:57:51 UTC (rev 31092)
@@ -4,6 +4,7 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import java.util.jar.JarInputStream;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
@@ -47,6 +48,8 @@
private VerifierReport result = VerifierReportFactory.newVerifierReport();
+ private List<JarInputStream> jars = new ArrayList<JarInputStream>();
+
public VerifierImpl(VerifierConfiguration conf) {
this.conf = conf;
}
@@ -71,6 +74,7 @@
PackageDescrVisitor ruleFlattener = new PackageDescrVisitor();
ruleFlattener.addPackageDescrToData( descr,
+ jars,
result.getVerifierData() );
} catch ( Throwable t ) {
@@ -78,6 +82,10 @@
}
}
+ public void addObjectModel(JarInputStream jar) {
+ this.jars.add( jar );
+ }
+
/*
* (non-Javadoc)
*
@@ -175,6 +183,7 @@
public void addResourcesToVerify(Resource resource,
ResourceType type) {
+ // TODO: Other than DRL
if ( type.matchesExtension( ".drl" ) ) {
DrlParser p = new DrlParser();
@@ -197,7 +206,6 @@
addPackageDescr( pkg );
- // TODO: Move this into a method
addDrlData( drl.toString() );
reader.close();
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Field.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Field.java 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Field.java 2010-01-14 16:57:51 UTC (rev 31092)
@@ -11,34 +11,21 @@
implements
Cause {
- public static class FieldType {
- public static final FieldType BOOLEAN = new FieldType( "boolean" );
- public static final FieldType STRING = new FieldType( "String" );
- public static final FieldType INT = new FieldType( "int" );
- public static final FieldType DOUBLE = new FieldType( "double" );
- public static final FieldType DATE = new FieldType( "Date" );
- public static final FieldType VARIABLE = new FieldType( "Variable" );
- public static final FieldType OBJECT = new FieldType( "Object" );
- public static final FieldType ENUM = new FieldType( "Enum" );
- public static final FieldType UNKNOWN = new FieldType( "Unknown" );
+ public static final String BOOLEAN = "boolean";
+ public static final String STRING = "java.lang.String";
+ public static final String INT = "int";
+ public static final String DOUBLE = "double";
+ public static final String DATE = "java.util.Date";
+ public static final String VARIABLE = "Variable";
+ public static final String OBJECT = "Object";
+ public static final String ENUM = "Enum";
+ public static final String UNKNOWN = "Unknown";
- private final String string;
+ private String objectTypeGuid;
+ protected String objectTypeName;
+ protected String name;
+ private String fieldType;
- private FieldType(String string) {
- this.string = string;
- }
-
- @Override
- public String toString() {
- return string;
- }
- }
-
- private String objectTypeGuid;
- protected String objectTypeName;
- protected String name;
- private FieldType fieldType;
-
public VerifierComponentType getVerifierComponentType() {
return VerifierComponentType.FIELD;
}
@@ -55,13 +42,13 @@
this.name = name;
}
- public FieldType getFieldType() {
+ public String getFieldType() {
return fieldType;
}
- public void setFieldType(FieldType fieldType) {
+ public void setFieldType(String fieldType) {
// Only set fieldType to variable if there is no other fieldType found.
- if ( fieldType == FieldType.VARIABLE && this.fieldType == null ) {
+ if ( fieldType == VARIABLE && this.fieldType == null ) {
this.fieldType = fieldType;
} else {
this.fieldType = fieldType;
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/LiteralRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/LiteralRestriction.java 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/LiteralRestriction.java 2010-01-14 16:57:51 UTC (rev 31092)
@@ -15,17 +15,17 @@
implements
Cause {
- private Field.FieldType valueType;
+ private String valueType;
- private boolean booleanValue;
+ private boolean booleanValue;
- private int intValue;
+ private int intValue;
- private double doubleValue;
+ private double doubleValue;
- private String stringValue;
+ private String stringValue;
- private Date dateValue;
+ private Date dateValue;
public RestrictionType getRestrictionType() {
return Restriction.RestrictionType.LITERAL;
@@ -42,13 +42,13 @@
* If data was not supported.
*/
public int compareValues(LiteralRestriction restriction) throws DataFormatException {
- if ( restriction.getValueType() != valueType ) {
+ if ( !restriction.getValueType().equals( valueType ) ) {
throw new DataFormatException( "Value types did not match. Value type " + restriction.getValueType() + " was compared to " + valueType );
}
- if ( valueType == Field.FieldType.DATE ) {
+ if ( valueType == Field.DATE ) {
return dateValue.compareTo( restriction.getDateValue() );
- } else if ( valueType == Field.FieldType.DOUBLE ) {
+ } else if ( valueType == Field.DOUBLE ) {
if ( doubleValue > restriction.getDoubleValue() ) {
return 1;
} else if ( doubleValue < restriction.getDoubleValue() ) {
@@ -56,7 +56,7 @@
} else {
return 0;
}
- } else if ( valueType == Field.FieldType.INT ) {
+ } else if ( valueType == Field.INT ) {
if ( intValue > restriction.getIntValue() ) {
return 1;
} else if ( intValue < restriction.getIntValue() ) {
@@ -64,9 +64,9 @@
} else {
return 0;
}
- } else if ( valueType == Field.FieldType.STRING ) {
+ } else if ( valueType == Field.STRING ) {
return stringValue.compareTo( restriction.getValueAsString() );
- } else if ( valueType == Field.FieldType.UNKNOWN ) {
+ } else if ( valueType == Field.UNKNOWN ) {
return 0;
}
@@ -74,13 +74,13 @@
}
public Object getValueAsObject() {
- if ( valueType == Field.FieldType.BOOLEAN ) {
+ if ( valueType == Field.BOOLEAN ) {
return Boolean.valueOf( booleanValue );
- } else if ( valueType == Field.FieldType.DATE ) {
+ } else if ( valueType == Field.DATE ) {
return dateValue;
- } else if ( valueType == Field.FieldType.DOUBLE ) {
+ } else if ( valueType == Field.DOUBLE ) {
return Double.valueOf( doubleValue );
- } else if ( valueType == Field.FieldType.INT ) {
+ } else if ( valueType == Field.INT ) {
return Integer.valueOf( intValue );
}
return stringValue;
@@ -98,7 +98,7 @@
return intValue;
}
- public Field.FieldType getValueType() {
+ public String getValueType() {
return valueType;
}
@@ -110,22 +110,22 @@
if ( value == null ) {
stringValue = null;
- valueType = Field.FieldType.UNKNOWN;
+ valueType = Field.UNKNOWN;
return;
}
stringValue = value;
- valueType = Field.FieldType.STRING;
+ valueType = Field.STRING;
if ( "true".equals( value ) || "false".equals( value ) ) {
booleanValue = value.equals( "true" );
- valueType = Field.FieldType.BOOLEAN;
+ valueType = Field.BOOLEAN;
stringValue = value;
}
try {
intValue = Integer.parseInt( value );
- valueType = Field.FieldType.INT;
+ valueType = Field.INT;
stringValue = value;
return;
} catch ( NumberFormatException e ) {
@@ -134,7 +134,7 @@
try {
doubleValue = Double.parseDouble( value );
- valueType = Field.FieldType.DOUBLE;
+ valueType = Field.DOUBLE;
stringValue = value;
return;
} catch ( NumberFormatException e ) {
@@ -150,7 +150,7 @@
dateValue = new SimpleDateFormat( fmt,
Locale.ENGLISH ).parse( value );
- valueType = Field.FieldType.DATE;
+ valueType = Field.DATE;
stringValue = value;
return;
} catch ( Exception e ) {
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/ObjectType.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/ObjectType.java 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/ObjectType.java 2010-01-14 16:57:51 UTC (rev 31092)
@@ -15,17 +15,19 @@
Serializable {
private static final long serialVersionUID = -783733402566313623L;
- private int offset = 0;
-
+ private int offset = 0;
+
+ private String fullName;
+
private String name;
private Set<Field> fields = new HashSet<Field>();
-
+
public int getOffset() {
offset++;
return offset % 2;
}
-
+
public String getName() {
return name;
}
@@ -42,8 +44,20 @@
this.fields = fields;
}
-
public VerifierComponentType getVerifierComponentType() {
return VerifierComponentType.OBJECT_TYPE;
}
+
+ public String getFullName() {
+ return fullName;
+ }
+
+ public void setFullName(String fullName) {
+ this.fullName = fullName;
+ }
+
+ public String toString() {
+ return "ObjectType: " + fullName;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierData.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierData.java 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierData.java 2010-01-14 16:57:51 UTC (rev 31092)
@@ -29,7 +29,7 @@
public Variable getVariableByRuleAndVariableName(String ruleName,
String base);
- public ObjectType getObjectTypeByName(String name);
+ public ObjectType getObjectTypeByFullName(String name);
public Field getFieldByObjectTypeAndFieldName(String base,
String fieldName);
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java 2010-01-14 16:57:51 UTC (rev 31092)
@@ -53,7 +53,7 @@
return new ArrayList( list );
}
- public ObjectType getObjectTypeByName(String name) {
+ public ObjectType getObjectTypeByFullName(String name) {
return null;
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataMaps.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataMaps.java 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataMaps.java 2010-01-14 16:57:51 UTC (rev 31092)
@@ -2,6 +2,7 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -33,7 +34,7 @@
private Map<VerifierComponentType, Map<String, VerifierComponent>> all = new TreeMap<VerifierComponentType, Map<String, VerifierComponent>>();
private Map<String, RulePackage> packagesByName = new TreeMap<String, RulePackage>();
- private Map<String, ObjectType> objectTypesByName = new TreeMap<String, ObjectType>();
+ private Map<String, ObjectType> objectTypesByFullName = new TreeMap<String, ObjectType>();
private Map<String, Field> fieldsByObjectTypeAndFieldName = new TreeMap<String, Field>();
private Multimap<String, Field> fieldsByObjectTypeId = new TreeMultimap<String, Field>();
private Map<String, FieldObjectTypeLink> fieldObjectTypeLinkByPath = new TreeMap<String, FieldObjectTypeLink>();
@@ -57,8 +58,8 @@
return set;
}
- public ObjectType getObjectTypeByName(String name) {
- return objectTypesByName.get( name );
+ public ObjectType getObjectTypeByFullName(String name) {
+ return objectTypesByFullName.get( name );
}
public Field getFieldByObjectTypeAndFieldName(String objectTypeName,
@@ -128,7 +129,7 @@
Field field = (Field) object;
ObjectType objectType = (ObjectType) getVerifierObject( VerifierComponentType.OBJECT_TYPE,
field.getObjectTypeGuid() );
- fieldsByObjectTypeAndFieldName.put( objectType.getName() + "." + field.getName(),
+ fieldsByObjectTypeAndFieldName.put( objectType.getFullName() + "." + field.getName(),
field );
fieldsByObjectTypeId.put( field.getObjectTypeGuid(),
@@ -168,8 +169,8 @@
rulePackage );
} else if ( VerifierComponentType.OBJECT_TYPE.equals( object.getVerifierComponentType() ) ) {
ObjectType objectType = (ObjectType) object;
- objectTypesByName.put( objectType.getName(),
- objectType );
+ objectTypesByFullName.put( objectType.getFullName(),
+ objectType );
} else if ( VerifierComponentType.ENTRY_POINT_DESCR.equals( object.getVerifierComponentType() ) ) {
VerifierEntryPointDescr entryPoint = (VerifierEntryPointDescr) object;
entryPointsByEntryId.put( entryPoint.getEntryId(),
@@ -195,7 +196,13 @@
// public <T extends VerifierComponent> Collection<T> getAll(VerifierComponentType type) {
public Collection< ? extends VerifierComponent> getAll(VerifierComponentType type) {
- return all.get( type ).values();
+ Map<String, VerifierComponent> result = all.get( type );
+
+ if ( result == null ) {
+ return Collections.emptyList();
+ } else {
+ return result.values();
+ }
}
// public <T extends VerifierComponent> T getVerifierObject(VerifierComponentType type,
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/FindMissingNumber.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/FindMissingNumber.java 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/FindMissingNumber.java 2010-01-14 16:57:51 UTC (rev 31092)
@@ -9,152 +9,146 @@
public class FindMissingNumber {
- public static final int MIN_NUMBER_OF_RESTRICTIONS = 4;
+ public static final int MIN_NUMBER_OF_RESTRICTIONS = 4;
- /**
- * Test if the values in constraints are in pattern.
- *
- * @param restrictions
- * @return false if can't find a pattern or constraints list is null or size
- * of the list is under 3.
- */
- public static Number testForPattern(
- Collection<LiteralRestriction> restrictions) {
+ /**
+ * Test if the values in constraints are in pattern.
+ *
+ * @param restrictions
+ * @return false if can't find a pattern or constraints list is null or size
+ * of the list is under 3.
+ */
+ public static Number testForPattern(Collection<LiteralRestriction> restrictions) {
- if (restrictions == null
- || restrictions.size() < MIN_NUMBER_OF_RESTRICTIONS) {
- return null;
- }
+ if ( restrictions == null || restrictions.size() < MIN_NUMBER_OF_RESTRICTIONS ) {
+ return null;
+ }
- BigDecimal[] numbers = new BigDecimal[restrictions.size()];
+ BigDecimal[] numbers = new BigDecimal[restrictions.size()];
- int index = 0;
- for (LiteralRestriction restriction : restrictions) {
- if (restriction.getValueType() == Field.FieldType.DOUBLE) {
- numbers[index++] = BigDecimal.valueOf(restriction
- .getDoubleValue());
- } else if (restriction.getValueType() == Field.FieldType.INT) {
- numbers[index++] = BigDecimal
- .valueOf(restriction.getIntValue());
- }
- }
+ int index = 0;
+ for ( LiteralRestriction restriction : restrictions ) {
+ if ( restriction.getValueType() == Field.DOUBLE ) {
+ numbers[index++] = BigDecimal.valueOf( restriction.getDoubleValue() );
+ } else if ( restriction.getValueType() == Field.INT ) {
+ numbers[index++] = BigDecimal.valueOf( restriction.getIntValue() );
+ }
+ }
- Arrays.sort(numbers);
+ Arrays.sort( numbers );
- Number missingNumber = findSumPattern(numbers);
- if (missingNumber != null) {
- return missingNumber;
- } else {
- missingNumber = findMultiplicationPattern(numbers);
- if (missingNumber != null) {
- return missingNumber;
- }
- }
+ Number missingNumber = findSumPattern( numbers );
+ if ( missingNumber != null ) {
+ return missingNumber;
+ } else {
+ missingNumber = findMultiplicationPattern( numbers );
+ if ( missingNumber != null ) {
+ return missingNumber;
+ }
+ }
- return null;
- }
+ return null;
+ }
- /**
- * Looks for sum pattern, on each step x is added or removed. -x is the same
- * as +(-x) so this works for both.
- *
- * @param numbers
- * @return true if pattern is found.
- */
- protected static Number findSumPattern(BigDecimal[] numbers) {
- if (numbers == null || numbers.length < MIN_NUMBER_OF_RESTRICTIONS) {
- return null;
- }
- BigDecimal gap = null;
- Number missingNumber = null;
+ /**
+ * Looks for sum pattern, on each step x is added or removed. -x is the same
+ * as +(-x) so this works for both.
+ *
+ * @param numbers
+ * @return true if pattern is found.
+ */
+ protected static Number findSumPattern(BigDecimal[] numbers) {
+ if ( numbers == null || numbers.length < MIN_NUMBER_OF_RESTRICTIONS ) {
+ return null;
+ }
+ BigDecimal gap = null;
+ Number missingNumber = null;
- BigDecimal a = numbers[0];
- BigDecimal b = numbers[1];
- BigDecimal c = numbers[2];
- BigDecimal d = numbers[3];
+ BigDecimal a = numbers[0];
+ BigDecimal b = numbers[1];
+ BigDecimal c = numbers[2];
+ BigDecimal d = numbers[3];
- // Uses first four numbers to check if there is a pattern and to
- // calculate the gap between them. One missing value is allowed.
- if (b.subtract(a).equals(c.subtract(b))) {
- gap = b.subtract(a);
- } else if (c.subtract(b).equals(d.subtract(c))) {
- gap = c.subtract(b);
- } else if (b.subtract(a).equals(d.subtract(c))) {
- gap = b.subtract(a);
- } else {
- // No pattern found.
- return null;
- }
+ // Uses first four numbers to check if there is a pattern and to
+ // calculate the gap between them. One missing value is allowed.
+ if ( b.subtract( a ).equals( c.subtract( b ) ) ) {
+ gap = b.subtract( a );
+ } else if ( c.subtract( b ).equals( d.subtract( c ) ) ) {
+ gap = c.subtract( b );
+ } else if ( b.subtract( a ).equals( d.subtract( c ) ) ) {
+ gap = b.subtract( a );
+ } else {
+ // No pattern found.
+ return null;
+ }
- for (int i = 0; i < (numbers.length - 1); i++) {
- BigDecimal first = numbers[i];
- BigDecimal second = numbers[i + 1];
+ for ( int i = 0; i < (numbers.length - 1); i++ ) {
+ BigDecimal first = numbers[i];
+ BigDecimal second = numbers[i + 1];
- if (missingNumber == null && !second.subtract(first).equals(gap)) {
- missingNumber = second.subtract(gap);
- } else if (!second.subtract(first).equals(gap)
- && missingNumber != null) {
- // Happends if there is no pattern found, or more than 1
- // missing number.
- return null;
- }
- }
+ if ( missingNumber == null && !second.subtract( first ).equals( gap ) ) {
+ missingNumber = second.subtract( gap );
+ } else if ( !second.subtract( first ).equals( gap ) && missingNumber != null ) {
+ // Happends if there is no pattern found, or more than 1
+ // missing number.
+ return null;
+ }
+ }
- return missingNumber;
- }
+ return missingNumber;
+ }
- /**
- * Looks for multiplication pattern, on each step x multiplied or divided.
- * *x is the same as *(1/x) so this works for both.
- *
- * @param numbers
- * @return true if pattern is found.
- */
- protected static Number findMultiplicationPattern(BigDecimal[] numbers) {
- if (numbers == null || numbers.length < MIN_NUMBER_OF_RESTRICTIONS) {
- return null;
- }
- try {
+ /**
+ * Looks for multiplication pattern, on each step x multiplied or divided.
+ * *x is the same as *(1/x) so this works for both.
+ *
+ * @param numbers
+ * @return true if pattern is found.
+ */
+ protected static Number findMultiplicationPattern(BigDecimal[] numbers) {
+ if ( numbers == null || numbers.length < MIN_NUMBER_OF_RESTRICTIONS ) {
+ return null;
+ }
+ try {
- BigDecimal gap = null;
- Number missingNumber = null;
+ BigDecimal gap = null;
+ Number missingNumber = null;
- BigDecimal a = numbers[0];
- BigDecimal b = numbers[1];
- BigDecimal c = numbers[2];
- BigDecimal d = numbers[3];
+ BigDecimal a = numbers[0];
+ BigDecimal b = numbers[1];
+ BigDecimal c = numbers[2];
+ BigDecimal d = numbers[3];
- // Uses first four numbers to check if there is a pattern and to
- // calculate the gap between them. One missing value is allowed.
- if (b.divide(a).equals(c.divide(b))) {
- gap = b.divide(a);
- } else if (c.divide(b).equals(d.divide(c))) {
- gap = c.divide(b);
- } else if (b.divide(a).equals(d.divide(c))) {
- gap = b.divide(a);
- } else {
- // No pattern found.
- return null;
- }
+ // Uses first four numbers to check if there is a pattern and to
+ // calculate the gap between them. One missing value is allowed.
+ if ( b.divide( a ).equals( c.divide( b ) ) ) {
+ gap = b.divide( a );
+ } else if ( c.divide( b ).equals( d.divide( c ) ) ) {
+ gap = c.divide( b );
+ } else if ( b.divide( a ).equals( d.divide( c ) ) ) {
+ gap = b.divide( a );
+ } else {
+ // No pattern found.
+ return null;
+ }
- BigDecimal first = null;
- BigDecimal second = null;
- for (int i = 0; i < (numbers.length - 1); i++) {
- first = numbers[i];
- second = numbers[i + 1];
+ BigDecimal first = null;
+ BigDecimal second = null;
+ for ( int i = 0; i < (numbers.length - 1); i++ ) {
+ first = numbers[i];
+ second = numbers[i + 1];
- if (missingNumber == null && !second.divide(first).equals(gap)) {
- missingNumber = first.multiply(gap);
- } else if (!second.divide(first).equals(gap)
- && missingNumber != null) {
- // Happends if there is no pattern found, or more than 1
- // missing number.
- return null;
- }
- }
- return missingNumber;
- } catch (Exception e) {
- return null;
- }
- }
+ if ( missingNumber == null && !second.divide( first ).equals( gap ) ) {
+ missingNumber = first.multiply( gap );
+ } else if ( !second.divide( first ).equals( gap ) && missingNumber != null ) {
+ // Happends if there is no pattern found, or more than 1
+ // missing number.
+ return null;
+ }
+ }
+ return missingNumber;
+ } catch ( Exception e ) {
+ return null;
+ }
+ }
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java 2010-01-14 16:57:51 UTC (rev 31092)
@@ -1,8 +1,15 @@
package org.drools.verifier.misc;
import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.jar.JarInputStream;
import org.drools.base.evaluators.Operator;
+import org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine;
+import org.drools.guvnor.server.rules.SuggestionCompletionLoader;
import org.drools.lang.descr.AccessorDescr;
import org.drools.lang.descr.AccumulateDescr;
import org.drools.lang.descr.AndDescr;
@@ -20,6 +27,7 @@
import org.drools.lang.descr.ForallDescr;
import org.drools.lang.descr.FromDescr;
import org.drools.lang.descr.FunctionCallDescr;
+import org.drools.lang.descr.ImportDescr;
import org.drools.lang.descr.LiteralRestrictionDescr;
import org.drools.lang.descr.MethodAccessDescr;
import org.drools.lang.descr.NotDescr;
@@ -74,19 +82,22 @@
*/
public class PackageDescrVisitor {
- private Solvers solvers = new Solvers();
+ private Solvers solvers = new Solvers();
- private VerifierData data;
+ private VerifierData data;
+ private List<JarInputStream> jars = null;
- private RulePackage currentPackage = null;
- private VerifierRule currentRule = null;
- private Pattern currentPattern = null;
- private Constraint currentConstraint = null;
- private ObjectType currentObjectType = null;
- private Field currentField = null;
+ Map<String, String> imports = new HashMap<String, String>();
- private WorkingMemory workingMemory = null;
+ private RulePackage currentPackage = null;
+ private VerifierRule currentRule = null;
+ private Pattern currentPattern = null;
+ private Constraint currentConstraint = null;
+ private ObjectType currentObjectType = null;
+ private Field currentField = null;
+ private WorkingMemory workingMemory = null;
+
/**
* Adds packageDescr to given VerifierData object
*
@@ -97,9 +108,11 @@
* @throws UnknownDescriptionException
*/
public void addPackageDescrToData(PackageDescr packageDescr,
+ List<JarInputStream> jars,
VerifierData data) throws UnknownDescriptionException {
this.data = data;
+ this.jars = jars;
visit( packageDescr );
@@ -503,6 +516,48 @@
private void visit(PackageDescr descr) throws UnknownDescriptionException {
RulePackage rulePackage = data.getPackageByName( descr.getName() );
+ // Imports
+ StringBuilder header = new StringBuilder();
+ for ( ImportDescr i : descr.getImports() ) {
+ String fullPath = i.getTarget();
+ String name = fullPath.substring( fullPath.lastIndexOf( "." ) + 1 );
+
+ header.append( "import " );
+ header.append( fullPath );
+ header.append( "\n" );
+
+ imports.put( name,
+ fullPath );
+
+ ObjectType objectType = this.data.getObjectTypeByFullName( fullPath );
+ if ( objectType == null ) objectType = new ObjectType();
+ objectType.setName( name );
+ objectType.setFullName( fullPath );
+ data.add( objectType );
+ }
+
+ SuggestionCompletionLoader loader = new SuggestionCompletionLoader();
+ SuggestionCompletionEngine engine = loader.getSuggestionEngine( header.toString(),
+ jars,
+ Collections.EMPTY_LIST );
+ for ( String factTypeName : engine.getFactTypes() ) {
+ for ( String fieldName : engine.getFieldCompletions( factTypeName ) ) {
+ ObjectType ot = this.data.getObjectTypeByFullName( imports.get( factTypeName ) );
+
+ Field field = data.getFieldByObjectTypeAndFieldName( ot.getFullName(),
+ fieldName );
+ if ( field == null ) {
+ field = createField( fieldName,
+ ot );
+ field.setFieldType( engine.getFieldType( ot.getName(),
+ fieldName ) );
+ data.add( field );
+ }
+ }
+ }
+
+ // TODO: Declaretions
+
if ( rulePackage == null ) {
rulePackage = new RulePackage();
@@ -531,7 +586,7 @@
Consequence consequence = visitConsequence( rule,
descr.getConsequence() );
-
+
rule.getMetadata().putAll( descr.getMetaAttributes() );
rule.setConsequenceGuid( consequence.getGuid() );
rule.setConsequenceType( consequence.getConsequenceType() );
@@ -699,13 +754,11 @@
VerifierComponent parent,
int orderNumber) throws UnknownDescriptionException {
- Field field = data.getFieldByObjectTypeAndFieldName( currentObjectType.getName(),
+ Field field = data.getFieldByObjectTypeAndFieldName( currentObjectType.getFullName(),
descr.getFieldName() );
if ( field == null ) {
field = createField( descr.getFieldName(),
- currentObjectType.getGuid(),
- currentObjectType.getName(),
- parent );
+ currentObjectType );
data.add( field );
}
currentField = field;
@@ -806,7 +859,7 @@
restriction.setParentType( parent.getVerifierComponentType() );
// Set field value, if it is unset.
- currentField.setFieldType( Field.FieldType.VARIABLE );
+ currentField.setFieldType( Field.VARIABLE );
data.add( restriction );
solvers.addRestriction( restriction );
@@ -912,7 +965,7 @@
restriction.setParentType( parent.getVerifierComponentType() );
// Set field value, if it is not set.
- currentField.setFieldType( Field.FieldType.VARIABLE );
+ currentField.setFieldType( Field.VARIABLE );
variable.setObjectTypeType( VerifierComponentType.FIELD.getType() );
@@ -953,7 +1006,7 @@
restriction.setParentType( parent.getVerifierComponentType() );
// Set field value, if it is not set.
- currentField.setFieldType( Field.FieldType.ENUM );
+ currentField.setFieldType( Field.ENUM );
data.add( restriction );
solvers.addRestriction( restriction );
@@ -961,27 +1014,28 @@
}
private ObjectType findOrCreateNewObjectType(String name) {
- ObjectType objectType = data.getObjectTypeByName( name );
+ ObjectType objectType = data.getObjectTypeByFullName( name );
if ( objectType == null ) {
objectType = new ObjectType();
objectType.setName( name );
+ String fullName = imports.get( name );
+ if ( fullName == null ) fullName = name;
+ objectType.setFullName( fullName );
data.add( objectType );
}
return objectType;
}
private Field createField(String fieldName,
- String classGuid,
- String className,
- VerifierComponent parent) {
+ ObjectType ot) {
Field field = new Field();
- field.setObjectTypeGuid( classGuid );
- field.setObjectTypeName( className );
+ field.setObjectTypeGuid( ot.getGuid() );
+ field.setObjectTypeName( ot.getFullName() );
field.setName( fieldName );
- field.setParentGuid( parent.getGuid() );
- field.setParentType( parent.getVerifierComponentType() );
+ field.setParentGuid( ot.getGuid() );
+ field.setParentType( ot.getVerifierComponentType() );
- currentObjectType.getFields().add( field );
+ ot.getFields().add( field );
return field;
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MissingNumberPattern.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MissingNumberPattern.java 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MissingNumberPattern.java 2010-01-14 16:57:51 UTC (rev 31092)
@@ -11,69 +11,75 @@
*
* @author Toni Rikkola
*/
-public class MissingNumberPattern extends MissingRange implements
- RangeCheckCause, Comparable<MissingRange> {
+public class MissingNumberPattern extends MissingRange
+ implements
+ RangeCheckCause,
+ Comparable<MissingRange> {
- private final Field.FieldType valueType;
+ private final String valueType;
- private final String value;
+ private final String value;
- public int compareTo(MissingRange another) {
- return super.compareTo(another);
- }
+ public int compareTo(MissingRange another) {
+ return super.compareTo( another );
+ }
- public CauseType getCauseType() {
- return CauseType.RANGE_CHECK_CAUSE;
- }
+ public CauseType getCauseType() {
+ return CauseType.RANGE_CHECK_CAUSE;
+ }
- public MissingNumberPattern(Field field, Operator operator,
- Field.FieldType valueType, String value) {
- super(field, operator);
+ public MissingNumberPattern(Field field,
+ Operator operator,
+ String valueType,
+ String value) {
+ super( field,
+ operator );
- this.valueType = valueType;
- this.value = value;
- }
+ this.valueType = valueType;
+ this.value = value;
+ }
- /**
- * Returns alway null, because there is no rule that this is related to.
- */
- public String getRuleName() {
- return null;
- }
+ /**
+ * Returns alway null, because there is no rule that this is related to.
+ */
+ public String getRuleName() {
+ return null;
+ }
- public String getValueAsString() {
- return value;
- }
+ public String getValueAsString() {
+ return value;
+ }
- public Object getValueAsObject() {
- if (valueType == Field.FieldType.BOOLEAN) {
- return Boolean.valueOf(value);
- } else if (valueType == Field.FieldType.DATE) {
- try {
- String fmt = System.getProperty("drools.dateformat");
- if (fmt == null) {
- fmt = "dd-MMM-yyyy";
- }
+ public Object getValueAsObject() {
+ if ( valueType == Field.BOOLEAN ) {
+ return Boolean.valueOf( value );
+ } else if ( valueType == Field.DATE ) {
+ try {
+ String fmt = System.getProperty( "drools.dateformat" );
+ if ( fmt == null ) {
+ fmt = "dd-MMM-yyyy";
+ }
- return new SimpleDateFormat(fmt, Locale.ENGLISH).parse(value);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- } else if (valueType == Field.FieldType.DOUBLE) {
- return Double.valueOf(value);
- } else if (valueType == Field.FieldType.INT) {
- return Integer.valueOf(value);
- }
+ return new SimpleDateFormat( fmt,
+ Locale.ENGLISH ).parse( value );
+ } catch ( ParseException e ) {
+ e.printStackTrace();
+ }
+ } else if ( valueType == Field.DOUBLE ) {
+ return Double.valueOf( value );
+ } else if ( valueType == Field.INT ) {
+ return Integer.valueOf( value );
+ }
- return value;
- }
+ return value;
+ }
- public Field.FieldType getValueType() {
- return valueType;
- }
+ public String getValueType() {
+ return valueType;
+ }
- @Override
- public String toString() {
- return "Missing restriction " + operator + " " + value;
- }
+ @Override
+ public String toString() {
+ return "Missing restriction " + operator + " " + value;
+ }
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/html/ComponentsReportVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/html/ComponentsReportVisitor.java 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/html/ComponentsReportVisitor.java 2010-01-14 16:57:51 UTC (rev 31092)
@@ -129,7 +129,7 @@
map.put( "rules",
rules );
- if ( field.getFieldType() == Field.FieldType.DOUBLE || field.getFieldType() == Field.FieldType.DATE || field.getFieldType() == Field.FieldType.INT ) {
+ if ( field.getFieldType() == Field.DOUBLE || field.getFieldType() == Field.DATE || field.getFieldType() == Field.INT ) {
Collection<RangeCheckCause> causes = result.getRangeCheckCausesByFieldId( field.getGuid() );
Collection<Restriction> restrictions = data.getRestrictionsByFieldGuid( field.getGuid() );
map.put( "ranges",
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/opposites/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/opposites/Restrictions.drl 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/opposites/Restrictions.drl 2010-01-14 16:57:51 UTC (rev 31092)
@@ -4,7 +4,7 @@
#list any import classes here.
import org.drools.verifier.components.LiteralRestriction;
import org.drools.verifier.components.VariableRestriction;
-import org.drools.verifier.components.Field.FieldType;
+import org.drools.verifier.components.Field;
import org.drools.verifier.report.components.Cause;
import org.drools.verifier.report.components.MissingRange;
@@ -139,7 +139,7 @@
when
$left :LiteralRestriction(
operator == Operator.LESS,
- ( valueType == Field.FieldType.INT || == Field.FieldType.DATE )
+ ( valueType == Field.INT || == Field.DATE )
)
$right :LiteralRestriction(
@@ -175,7 +175,7 @@
when
$left :LiteralRestriction(
operator == Operator.GREATER_OR_EQUAL,
- ( valueType == Field.FieldType.INT || == Field.FieldType.DATE )
+ ( valueType == Field.INT || == Field.DATE )
)
$right :LiteralRestriction(
@@ -232,3 +232,4 @@
then
insert( new Opposites( $r1, $r2 ) );
end
+
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/overlaps/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/overlaps/Restrictions.drl 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/overlaps/Restrictions.drl 2010-01-14 16:57:51 UTC (rev 31092)
@@ -8,7 +8,6 @@
import org.drools.verifier.data.VerifierReport;
import org.drools.verifier.components.LiteralRestriction;
-import org.drools.verifier.components.Field.FieldType;
import org.drools.verifier.report.components.Subsumption;
import org.drools.verifier.report.components.VerifierMessage;
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Clean.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Clean.drl 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Clean.drl 2010-01-14 16:57:51 UTC (rev 31092)
@@ -86,7 +86,7 @@
when
# Covered x > 10
$lower :LiteralRestriction(
- valueType == Field.FieldType.INT,
+ valueType == Field.INT,
( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL)
)
@@ -139,7 +139,7 @@
when
# Covered x > 10
$lower :LiteralRestriction(
- valueType == Field.FieldType.INT,
+ valueType == Field.INT,
( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL)
)
@@ -192,7 +192,7 @@
when
# Covered x > 10.0
$lower :LiteralRestriction(
- valueType == Field.FieldType.DOUBLE,
+ valueType == Field.DOUBLE,
( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL)
)
@@ -245,7 +245,7 @@
when
# Covered x > 10.0
$lower :LiteralRestriction(
- valueType == Field.FieldType.DOUBLE,
+ valueType == Field.DOUBLE,
( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL)
)
@@ -298,7 +298,7 @@
when
# Covered x > "01-Oct-2007"
$lower :LiteralRestriction(
- valueType == Field.FieldType.DATE,
+ valueType == Field.DATE,
( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL)
)
@@ -351,7 +351,7 @@
when
# Covered x > "01-Oct-2007"
$lower :LiteralRestriction(
- valueType == Field.FieldType.DATE,
+ valueType == Field.DATE,
( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL)
)
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Dates.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Dates.drl 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Dates.drl 2010-01-14 16:57:51 UTC (rev 31092)
@@ -37,7 +37,7 @@
rule "Range check for dates, if smaller than or equal is missing"
@verifying_scopes(knowledge-package, decision-table)
when
- $f :Field( fieldType == Field.FieldType.DATE )
+ $f :Field( fieldType == Field.DATE )
# Foo( bar > "27-Oct-2007" )
$r :LiteralRestriction(
@@ -69,7 +69,7 @@
rule "Range check for dates, if greater than or equal is missing"
@verifying_scopes(knowledge-package, decision-table)
when
- $f :Field( fieldType == Field.FieldType.DATE )
+ $f :Field( fieldType == Field.DATE )
# Foo( bar > "27-Oct-2007" )
$r :LiteralRestriction(
@@ -102,7 +102,7 @@
rule "Range check for dates, equal and greater than"
@verifying_scopes(knowledge-package, decision-table)
when
- $f :Field( fieldType == Field.FieldType.DATE )
+ $f :Field( fieldType == Field.DATE )
# Foo( bar == "27-Oct-2007" )
$r :LiteralRestriction(
@@ -143,7 +143,7 @@
rule "Range check for dates, equal and smaller than"
@verifying_scopes(knowledge-package, decision-table)
when
- $f :Field( fieldType == Field.FieldType.DATE )
+ $f :Field( fieldType == Field.DATE )
# Foo( bar == "27-Oct-2007" )
$r :LiteralRestriction(
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Doubles.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Doubles.drl 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Doubles.drl 2010-01-14 16:57:51 UTC (rev 31092)
@@ -23,7 +23,7 @@
rule "Range check for doubles, if smaller than or equal is missing"
@verifying_scopes(knowledge-package, decision-table)
when
- $f :Field( fieldType == Field.FieldType.DOUBLE )
+ $f :Field( fieldType == Field.DOUBLE )
# Foo( bar > 42 )
$r :LiteralRestriction(
@@ -55,7 +55,7 @@
rule "Range check for doubles, if greater than or equal is missing"
@verifying_scopes(knowledge-package, decision-table)
when
- $f :Field( fieldType == Field.FieldType.DOUBLE )
+ $f :Field( fieldType == Field.DOUBLE )
# Foo( bar > 42 )
$r :LiteralRestriction(
@@ -88,7 +88,7 @@
rule "Range check for doubles, equal and greater than"
@verifying_scopes(knowledge-package, decision-table)
when
- $f :Field( fieldType == Field.FieldType.DOUBLE )
+ $f :Field( fieldType == Field.DOUBLE )
# Foo( bar == 42 )
$r :LiteralRestriction(
@@ -121,7 +121,7 @@
rule "Range check for doubles, equal and smaller than"
@verifying_scopes(knowledge-package, decision-table)
when
- $f :Field( fieldType == Field.FieldType.DOUBLE )
+ $f :Field( fieldType == Field.DOUBLE )
# Foo( bar == 42 )
$r :LiteralRestriction(
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Integers.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Integers.drl 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Integers.drl 2010-01-14 16:57:51 UTC (rev 31092)
@@ -21,7 +21,7 @@
rule "Range check for integers, if smaller than or equal is missing"
@verifying_scopes(knowledge-package, decision-table)
when
- $f :Field( fieldType == Field.FieldType.INT )
+ $f :Field( fieldType == Field.INT )
# Foo( bar > 42 )
$r :LiteralRestriction(
@@ -53,7 +53,7 @@
rule "Range check for integers, if greater than or equal is missing"
@verifying_scopes(knowledge-package, decision-table)
when
- $f :Field( fieldType == Field.FieldType.INT )
+ $f :Field( fieldType == Field.INT )
# Foo( bar > 42 )
$r :LiteralRestriction(
@@ -86,7 +86,7 @@
rule "Range check for integers, equal and greater than"
@verifying_scopes(knowledge-package, decision-table)
when
- $f :Field( fieldType == Field.FieldType.INT )
+ $f :Field( fieldType == Field.INT )
# Foo( bar == 42 )
$r :LiteralRestriction(
@@ -127,7 +127,7 @@
rule "Range check for integers, equal and smaller than"
@verifying_scopes(knowledge-package, decision-table)
when
- $f :Field( fieldType == Field.FieldType.INT )
+ $f :Field( fieldType == Field.INT )
# Foo( bar == 42 )
$r :LiteralRestriction(
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/NumberPatterns.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/NumberPatterns.drl 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/NumberPatterns.drl 2010-01-14 16:57:51 UTC (rev 31092)
@@ -28,7 +28,7 @@
@verifying_scopes(knowledge-package, decision-table)
when
$f :Field(
- ( fieldType == Field.FieldType.INT || == Field.FieldType.DOUBLE )
+ ( fieldType == Field.INT || == Field.DOUBLE )
)
(
# Where pattern is false.
@@ -70,7 +70,7 @@
@verifying_scopes(knowledge-package, decision-table)
when
$f :Field(
- ( fieldType == Field.FieldType.INT || == Field.FieldType.DOUBLE )
+ ( fieldType == Field.INT || == Field.DOUBLE )
)
(
# Where pattern is false.
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Variables.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Variables.drl 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/rangeChecks/Variables.drl 2010-01-14 16:57:51 UTC (rev 31092)
@@ -23,7 +23,7 @@
rule "Range check for variables when restriction is VariableRestriction"
when
# Find a field that is of type variable.
- $f :Field( fieldType == Field.FieldType.VARIABLE )
+ $f :Field( fieldType == Field.VARIABLE )
# Find constraint that matches this field
# Find variable that is on the right side of this constraint i.e. bar > $foo
# Find another variable that points to the same field.
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Restrictions.drl 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Restrictions.drl 2010-01-14 16:57:51 UTC (rev 31092)
@@ -2,9 +2,9 @@
package org.drools.verifier.subsumption.patterns
import org.drools.base.evaluators.Operator;
+import org.drools.verifier.components.Field;
import org.drools.verifier.components.LiteralRestriction;
-import org.drools.verifier.components.Field.FieldType;
import org.drools.verifier.report.components.Subsumption;
@@ -21,7 +21,7 @@
when
# Covered x > 10
$lower:LiteralRestriction(
- ( valueType == Field.FieldType.INT || == Field.FieldType.DOUBLE || == Field.FieldType.DATE ),
+ ( valueType == Field.INT || == Field.DOUBLE || == Field.DATE ),
( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL )
)
@@ -65,7 +65,7 @@
when
# Covered x < 10
$higher :LiteralRestriction(
- ( valueType == Field.FieldType.INT || == Field.FieldType.DOUBLE || == Field.FieldType.DATE ),
+ ( valueType == Field.INT || == Field.DOUBLE || == Field.DATE ),
( operator == Operator.LESS || == Operator.LESS_OR_EQUAL )
)
Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/TestBase.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/TestBase.java 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/TestBase.java 2010-01-14 16:57:51 UTC (rev 31092)
@@ -4,6 +4,7 @@
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Collection;
+import java.util.Collections;
import java.util.Map;
import java.util.Set;
@@ -112,6 +113,7 @@
PackageDescrVisitor ruleFlattener = new PackageDescrVisitor();
ruleFlattener.addPackageDescrToData( descr,
+ Collections.EMPTY_LIST,
data );
// Rules with relations
Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java 2010-01-14 16:57:51 UTC (rev 31092)
@@ -1,11 +1,18 @@
package org.drools.verifier;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.jar.JarInputStream;
+
import junit.framework.TestCase;
import org.drools.builder.ResourceType;
import org.drools.io.impl.ClassPathResource;
import org.drools.verifier.builder.VerifierBuilder;
import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.components.Field;
+import org.drools.verifier.components.ObjectType;
+import org.drools.verifier.components.VerifierComponentType;
import org.drools.verifier.data.VerifierReport;
import org.drools.verifier.report.components.Severity;
import org.drools.verifier.report.components.VerifierMessageBase;
@@ -45,6 +52,58 @@
}
+ public void testFactTypesFromJar() {
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+ // Check that the builder works.
+ assertFalse( vBuilder.hasErrors() );
+ assertEquals( 0,
+ vBuilder.getErrors().size() );
+
+ Verifier verifier = vBuilder.newVerifier();
+
+ try {
+
+ JarInputStream jar = new JarInputStream( this.getClass().getResourceAsStream( "model.jar" ) );
+
+ verifier.addObjectModel( jar );
+
+ } catch ( IOException e ) {
+ fail( e.getMessage() );
+ }
+
+ verifier.addResourcesToVerify( new ClassPathResource( "imports.drl",
+ Verifier.class ),
+ ResourceType.DRL );
+
+ assertFalse( verifier.hasErrors() );
+ assertEquals( 0,
+ verifier.getErrors().size() );
+
+ boolean works = verifier.fireAnalysis();
+
+ assertTrue( works );
+
+ VerifierReport result = verifier.getResult();
+
+ Collection<ObjectType> objectTypes = result.getVerifierData().getAll( VerifierComponentType.OBJECT_TYPE );
+
+ assertNotNull( objectTypes );
+ assertEquals( 3,
+ objectTypes.size() );
+
+ Collection<Field> fields = result.getVerifierData().getAll( VerifierComponentType.FIELD );
+
+ for ( Field field : fields ) {
+ System.out.println( field );
+ }
+ assertNotNull( fields );
+ assertEquals( 10,
+ fields.size() );
+
+ System.out.println( "Done" );
+ }
+
public void testCustomRule() {
VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/components/LiteralRestrictionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/components/LiteralRestrictionTest.java 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/components/LiteralRestrictionTest.java 2010-01-14 16:57:51 UTC (rev 31092)
@@ -4,41 +4,53 @@
public class LiteralRestrictionTest extends TestCase {
- public void testSetValue() {
- LiteralRestriction booleanRestriction = new LiteralRestriction();
- booleanRestriction.setValue("true");
+ public void testSetValue() {
+ LiteralRestriction booleanRestriction = new LiteralRestriction();
+ booleanRestriction.setValue( "true" );
- assertEquals(Field.FieldType.BOOLEAN, booleanRestriction.getValueType());
- assertEquals(true, booleanRestriction.getBooleanValue());
+ assertEquals( Field.BOOLEAN,
+ booleanRestriction.getValueType() );
+ assertEquals( true,
+ booleanRestriction.getBooleanValue() );
- LiteralRestriction intRestriction = new LiteralRestriction();
- intRestriction.setValue("1");
+ LiteralRestriction intRestriction = new LiteralRestriction();
+ intRestriction.setValue( "1" );
- assertEquals(Field.FieldType.INT, intRestriction.getValueType());
- assertEquals(1, intRestriction.getIntValue());
+ assertEquals( Field.INT,
+ intRestriction.getValueType() );
+ assertEquals( 1,
+ intRestriction.getIntValue() );
- LiteralRestriction doubleRestriction = new LiteralRestriction();
- doubleRestriction.setValue("1.0");
+ LiteralRestriction doubleRestriction = new LiteralRestriction();
+ doubleRestriction.setValue( "1.0" );
- assertEquals(Field.FieldType.DOUBLE, doubleRestriction.getValueType());
- assertEquals(1.0, doubleRestriction.getDoubleValue());
+ assertEquals( Field.DOUBLE,
+ doubleRestriction.getValueType() );
+ assertEquals( 1.0,
+ doubleRestriction.getDoubleValue() );
- LiteralRestriction dateRestriction = new LiteralRestriction();
- dateRestriction.setValue("11-jan-2008");
+ LiteralRestriction dateRestriction = new LiteralRestriction();
+ dateRestriction.setValue( "11-jan-2008" );
- assertEquals(Field.FieldType.DATE, dateRestriction.getValueType());
+ assertEquals( Field.DATE,
+ dateRestriction.getValueType() );
- LiteralRestriction stringRestriction = new LiteralRestriction();
- stringRestriction.setValue("test test");
+ LiteralRestriction stringRestriction = new LiteralRestriction();
+ stringRestriction.setValue( "test test" );
- assertEquals(Field.FieldType.STRING, stringRestriction.getValueType());
- assertEquals("test test", stringRestriction.getValueAsString());
+ assertEquals( Field.STRING,
+ stringRestriction.getValueType() );
+ assertEquals( "test test",
+ stringRestriction.getValueAsString() );
- LiteralRestriction nullRestriction = new LiteralRestriction();
- nullRestriction.setValue(null);
+ LiteralRestriction nullRestriction = new LiteralRestriction();
+ nullRestriction.setValue( null );
- assertEquals(Field.FieldType.UNKNOWN, nullRestriction.getValueType());
- assertEquals(null, nullRestriction.getValueAsString());
- assertEquals(null, nullRestriction.getValueAsObject());
- }
+ assertEquals( Field.UNKNOWN,
+ nullRestriction.getValueType() );
+ assertEquals( null,
+ nullRestriction.getValueAsString() );
+ assertEquals( null,
+ nullRestriction.getValueAsObject() );
+ }
}
Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/PackageDescrVisitorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/PackageDescrVisitorTest.java 2010-01-14 13:54:44 UTC (rev 31091)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/PackageDescrVisitorTest.java 2010-01-14 16:57:51 UTC (rev 31092)
@@ -3,6 +3,7 @@
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Collection;
+import java.util.Collections;
import org.drools.compiler.DrlParser;
import org.drools.compiler.DroolsParserException;
@@ -32,12 +33,13 @@
assertNotNull( packageDescr );
visitor.addPackageDescrToData( packageDescr,
+ Collections.EMPTY_LIST,
data );
Collection<VerifierComponent> all = data.getAll();
assertNotNull( all );
- assertEquals( 50,
+ assertEquals( 51,
all.size() );
// for ( VerifierComponent verifierComponent : all ) {
@@ -58,6 +60,7 @@
assertNotNull( packageDescr );
visitor.addPackageDescrToData( packageDescr,
+ Collections.EMPTY_LIST,
data );
Collection<VerifierComponent> all = data.getAll();
Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/imports.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/imports.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/imports.drl 2010-01-14 16:57:51 UTC (rev 31092)
@@ -0,0 +1,5 @@
+package com.misc.someData
+
+import org.test.Person;
+import org.test.Pet;
+import org.test.Rambo;
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/model.jar
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/model.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
More information about the jboss-svn-commits
mailing list