[jboss-svn-commits] JBL Code SVN: r33094 - in labs/jbossrules/trunk/drools-factconstraint/src: main/java/org/drools/factconstraints/server/predefined and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed May 26 11:20:27 EDT 2010
Author: eaa
Date: 2010-05-26 11:20:26 -0400 (Wed, 26 May 2010)
New Revision: 33094
Added:
labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultFieldConstraintImpl.java
labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/InvalidFieldConstraint.java
labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraints/server/predefined/InvalidFieldConstraintTest.java
Removed:
labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultConstraintImpl.java
Modified:
labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultMultiRulesConstraintImpl.java
labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/IntegerConstraint.java
labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/MatchesConstraint.java
labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotMatchesConstraint.java
labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotNullConstraint.java
labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraints/server/predefined/RangeConstraintTest.java
Log:
GUVNOR-541: Add the possibility of create Working Sets
- DefaultContraintImpl was renamed to DefaultFieldConstraintImpl
- New Constraint added: InvalidFieldConstraint. This Constraint will fail when a Constraint is set to a particular Field (no matter what type of Constraint)
Deleted: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultConstraintImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultConstraintImpl.java 2010-05-26 14:50:52 UTC (rev 33093)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultConstraintImpl.java 2010-05-26 15:20:26 UTC (rev 33094)
@@ -1,296 +0,0 @@
-package org.drools.factconstraints.server;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.drools.base.evaluators.Operator;
-import org.drools.factconstraints.client.ArgumentNotSetException;
-import org.drools.factconstraints.client.ConstraintConfiguration;
-import org.drools.factconstraints.client.ValidationResult;
-import org.drools.verifier.report.components.Severity;
-
-/**
- *
- * @author esteban.aliverti at gmail.com
- * @author baunax at gmail.com
- */
-public abstract class DefaultConstraintImpl implements Constraint {
-
- private static final long serialVersionUID = 501L;
- private long ruleNum = 0;
-
- public static List<Operator> supportedOperators = new ArrayList<Operator>();
- static{
- supportedOperators.add(Operator.EQUAL);
- supportedOperators.add(Operator.NOT_EQUAL);
- supportedOperators.add(Operator.GREATER);
- supportedOperators.add(Operator.GREATER_OR_EQUAL);
- supportedOperators.add(Operator.LESS);
- supportedOperators.add(Operator.LESS_OR_EQUAL);
- }
-
- private String concatRule(ConstraintConfiguration config, Map<String, Object> context) {
- StringBuilder rule = new StringBuilder();
-
- rule.append(this.getVerifierPackagePrefixTemplate(config, context));
- rule.append(this.getVerifierPackageTemplate(config, context));
- rule.append(this.getVerifierPackageSufixTemplate(config, context));
-
- rule.append(this.getVerifierImportsPrefixTemplate(config, context));
- rule.append(this.getVerifierImportsTemplate(config, context));
- rule.append(this.getVerifierImportsSufixTemplate(config, context));
-
- rule.append(this.getVerifierGlobalsPrefixTemplate(config, context));
- rule.append(this.getVerifierGlobalsTemplate(config, context));
- rule.append(this.getVerifierGlobalsSufixTemplate(config, context));
-
- rule.append(this.getVerifierRuleNamePrefixTemplate(config, context));
- rule.append(this.getVerifierRuleNameTemplate(config, context));
- rule.append(this.getVerifierRuleNameSufixTemplate(config, context));
-
- rule.append(this.getVerifierRuleWhenTemplate(config, context));
-
- rule.append(this.getVerifierFieldPatternPrefixTemplate(config, context));
- rule.append(this.getVerifierFieldPatternTemplate(config, context));
- rule.append(this.getVerifierFieldPatternSufixTemplate(config, context));
-
- rule.append(this.getVerifierRestrictionPatternPrefixTemplate(config, context));
- rule.append(this.getVerifierRestrictionPatternTemplate(config, context));
- rule.append(this.getVerifierRestrictionPatternSufixTemplate(config, context));
-
- rule.append(this.getVerifierRuleThenTemplate(config, context));
-
- rule.append(this.getVerifierActionPrefixTemplate(config, context));
- rule.append(this.getVerifierActionTemplate(config, context));
- rule.append(this.getVerifierActionSufixTemplate(config, context));
-
- rule.append(this.getVerifierRuleEndTemplate(config, context));
- rule.append(this.getVerifierRuleEndSufixTemplate(config, context));
-
- return rule.toString();
-
- }
-
- protected String createVerifierRuleTemplate(ConstraintConfiguration config, Map<String, Object> context, String ruleName, List<String> constraints, String message) {
- if (ruleName == null) {
- ruleName = "Constraint_rule";
-
- }
- ruleName += "_" + ruleNum++;
- String rule = this.concatRule(config, context).replace("${ruleName}", ruleName);
- rule = rule.replace("${factType}", config.getFactType());
- rule = rule.replace("${fieldName}", config.getFieldName());
- if (constraints != null && !constraints.isEmpty()) {
- String constraintsTxt = "";
- String delimiter = "";
- for (String c : constraints) {
- constraintsTxt += delimiter + c + "\n";
- if (delimiter.equals("")) {
- delimiter = ",";
- }
- }
- rule = rule.replace("${constraints}", constraintsTxt);
- }
- rule = rule.replace("${message}", (message == null || message.equals("")) ? "Invalid Value" : message);
-
- return rule;
- }
-
- protected Object getMandatoryArgument(String key, ConstraintConfiguration conf) throws ArgumentNotSetException {
- if (!conf.containsArgument(key)) {
- throw new ArgumentNotSetException("The argument " + key + " doesn't exist.");
- }
-
- Object value = conf.getArgumentValue(key);
-
- if (value == null) {
- throw new ArgumentNotSetException("The argument " + key + " is null.");
- }
-
- return value;
- }
-
- public ValidationResult validate(Object value, ConstraintConfiguration config) {
- ValidationResult result = new ValidationResult();
- result.setSuccess(true);
-
- return result;
- }
-
- protected Map<String, Object> createContext() {
- return new HashMap<String, Object>();
- }
-
- public final String getVerifierRule(ConstraintConfiguration config) {
- return internalVerifierRule(config, createContext());
- }
-
- abstract protected String internalVerifierRule(ConstraintConfiguration config, Map<String, Object> context);
-
- public String getConstraintName() {
- return getClass().getName().substring(getClass().getName().lastIndexOf('.') + 1);
- }
-
- /* Action */
- protected String getVerifierActionTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- StringBuilder verifierActionTemplate = new StringBuilder();
-
- //by default, add an ERROR
- verifierActionTemplate.append(this.addResult(Severity.ERROR));
-
-// verifierActionTemplate.append(" System.out.println(\"doubleValue= \"+$restriction.getDoubleValue());\n");
-// verifierActionTemplate.append(" System.out.println(\"intValue= \"+$restriction.getIntValue());\n");
-
- return verifierActionTemplate.toString();
- }
-
- protected String addResult(Severity severity){
- StringBuilder addString = new StringBuilder();
- addString.append(" result.add(new VerifierMessage(\n");
- addString.append(" impactedRules,\n");
- if (severity.compareTo(Severity.ERROR) == 0){
- addString.append(" Severity.ERROR,\n");
- }else if(severity.compareTo(Severity.NOTE) == 0){
- addString.append(" Severity.NOTE,\n");
- }else if(severity.compareTo(Severity.WARNING) == 0){
- addString.append(" Severity.WARNING,\n");
- }
- addString.append(" MessageType.NOT_SPECIFIED,\n");
- addString.append(" $restriction,\n");
- addString.append(" \"${message}\" ) );\n");
- return addString.toString();
- }
-
- protected String getVerifierActionPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- StringBuilder verifierActionPrefixTemplate = new StringBuilder();
- verifierActionPrefixTemplate.append(" Map<String,String> impactedRules = new HashMap<String,String>();\n")
- .append(" impactedRules.put( $restriction.getPackagePath(), $restriction.getRuleName());\n");
- return verifierActionPrefixTemplate.toString();
- }
-
- protected String getVerifierActionSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return "";
- }
-
- /* Field Pattern */
- protected String getVerifierFieldPatternTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- StringBuilder verifierFieldPatternTemplate = new StringBuilder();
- verifierFieldPatternTemplate.append(" $field :Field(\n");
- verifierFieldPatternTemplate.append(" objectTypeName == \"${factType}\",\n");
- verifierFieldPatternTemplate.append(" name == \"${fieldName}\"\n");
- verifierFieldPatternTemplate.append(" )\n");
- return verifierFieldPatternTemplate.toString();
- }
-
- protected String getVerifierFieldPatternPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return "";
- }
-
- protected String getVerifierFieldPatternSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return "";
- }
-
- /* Globals*/
- protected String getVerifierGlobalsTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return "global VerifierReport result;\n";
- }
-
- protected String getVerifierGlobalsPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return "";
- }
-
- protected String getVerifierGlobalsSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return "";
- }
-
- /* Imports */
- protected String getVerifierImportsTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- StringBuilder verifierImportsTemplate = new StringBuilder();
- verifierImportsTemplate.append("import org.drools.verifier.components.*;\n");
- verifierImportsTemplate.append("import java.util.Map;\n");
- verifierImportsTemplate.append("import java.util.HashMap;\n");
- verifierImportsTemplate.append("import org.drools.verifier.report.components.VerifierMessage;\n");
- verifierImportsTemplate.append("import org.drools.verifier.data.VerifierReport;\n");
- verifierImportsTemplate.append("import org.drools.verifier.report.components.Severity;\n");
- verifierImportsTemplate.append("import org.drools.verifier.report.components.MessageType;\n");
-
- return verifierImportsTemplate.toString();
-
- }
-
- protected String getVerifierImportsPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return "";
- }
-
- protected String getVerifierImportsSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return "";
- }
-
- protected String getVerifierPackageTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return "package org.drools.verifier.consequence\n";
- }
-
- protected String getVerifierPackagePrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return "";
- }
-
- protected String getVerifierPackageSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return "";
- }
-
- /* Restriction Pattern */
- protected String getVerifierRestrictionPatternTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- StringBuilder verifierRestrictionPatternTemplate = new StringBuilder();
- verifierRestrictionPatternTemplate.append(" $restriction :LiteralRestriction(\n");
- verifierRestrictionPatternTemplate.append(" fieldPath == $field.path,\n");
- verifierRestrictionPatternTemplate.append(" ${constraints}\n");
- verifierRestrictionPatternTemplate.append(" )\n");
-
- return verifierRestrictionPatternTemplate.toString();
- }
-
- protected String getVerifierRestrictionPatternPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return "";
- }
-
- protected String getVerifierRestrictionPatternSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return "";
- }
-
- /* end */
- protected String getVerifierRuleEndTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return "end\n";
- }
-
- protected String getVerifierRuleEndSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return "";
- }
-
- /* Rule Name */
- protected String getVerifierRuleNameTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return "rule \"${ruleName}\"\n";
- }
-
- protected String getVerifierRuleNamePrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return "";
- }
-
- protected String getVerifierRuleNameSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return "";
- }
-
- /* then */
- protected String getVerifierRuleThenTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return " then\n";
- }
-
- /* when */
- protected String getVerifierRuleWhenTemplate(ConstraintConfiguration config, Map<String, Object> context) {
- return " when\n";
- }
-
- public List<String> getArgumentKeys() {
- return new ArrayList<String>();
- }
-}
Added: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultFieldConstraintImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultFieldConstraintImpl.java (rev 0)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultFieldConstraintImpl.java 2010-05-26 15:20:26 UTC (rev 33094)
@@ -0,0 +1,303 @@
+package org.drools.factconstraints.server;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.base.evaluators.Operator;
+import org.drools.factconstraints.client.ArgumentNotSetException;
+import org.drools.factconstraints.client.ConstraintConfiguration;
+import org.drools.factconstraints.client.ValidationResult;
+import org.drools.verifier.report.components.Severity;
+
+/**
+ *
+ * @author esteban.aliverti at gmail.com
+ * @author baunax at gmail.com
+ */
+public abstract class DefaultFieldConstraintImpl implements Constraint {
+
+ private static final long serialVersionUID = 501L;
+ private long ruleNum = 0;
+
+ public static final List<Operator> supportedOperators = new ArrayList<Operator>();
+ static{
+ supportedOperators.add(Operator.EQUAL);
+ supportedOperators.add(Operator.NOT_EQUAL);
+ supportedOperators.add(Operator.GREATER);
+ supportedOperators.add(Operator.GREATER_OR_EQUAL);
+ supportedOperators.add(Operator.LESS);
+ supportedOperators.add(Operator.LESS_OR_EQUAL);
+ }
+
+
+ private String concatRule(ConstraintConfiguration config, Map<String, Object> context) {
+ StringBuilder rule = new StringBuilder();
+
+ rule.append(this.getVerifierPackagePrefixTemplate(config, context));
+ rule.append(this.getVerifierPackageTemplate(config, context));
+ rule.append(this.getVerifierPackageSufixTemplate(config, context));
+
+ rule.append(this.getVerifierImportsPrefixTemplate(config, context));
+ rule.append(this.getVerifierImportsTemplate(config, context));
+ rule.append(this.getVerifierImportsSufixTemplate(config, context));
+
+ rule.append(this.getVerifierGlobalsPrefixTemplate(config, context));
+ rule.append(this.getVerifierGlobalsTemplate(config, context));
+ rule.append(this.getVerifierGlobalsSufixTemplate(config, context));
+
+ rule.append(this.getVerifierRuleNamePrefixTemplate(config, context));
+ rule.append(this.getVerifierRuleNameTemplate(config, context));
+ rule.append(this.getVerifierRuleNameSufixTemplate(config, context));
+
+ rule.append(this.getVerifierRuleWhenTemplate(config, context));
+
+ rule.append(this.getVerifierFieldPatternPrefixTemplate(config, context));
+ rule.append(this.getVerifierFieldPatternTemplate(config, context));
+ rule.append(this.getVerifierFieldPatternSufixTemplate(config, context));
+
+ rule.append(this.getVerifierRestrictionPatternPrefixTemplate(config, context));
+ rule.append(this.getVerifierRestrictionPatternTemplate(config, context));
+ rule.append(this.getVerifierRestrictionPatternSufixTemplate(config, context));
+
+ rule.append(this.getVerifierRuleThenTemplate(config, context));
+
+ rule.append(this.getVerifierActionPrefixTemplate(config, context));
+ rule.append(this.getVerifierActionTemplate(config, context));
+ rule.append(this.getVerifierActionSufixTemplate(config, context));
+
+ rule.append(this.getVerifierRuleEndTemplate(config, context));
+ rule.append(this.getVerifierRuleEndSufixTemplate(config, context));
+
+ return rule.toString();
+
+ }
+
+ protected String createVerifierRuleTemplate(ConstraintConfiguration config, Map<String, Object> context, String ruleName, List<String> constraints, String message) {
+ if (ruleName == null) {
+ ruleName = "Constraint_rule";
+
+ }
+ ruleName += "_" + ruleNum++;
+ String rule = this.concatRule(config, context).replace("${ruleName}", ruleName);
+ rule = rule.replace("${factType}", config.getFactType());
+ rule = rule.replace("${fieldName}", config.getFieldName());
+ StringBuilder constraintsTxt = new StringBuilder();
+ if (constraints != null && !constraints.isEmpty()) {
+ for (String c : constraints) {
+ constraintsTxt.append(",\n");
+ constraintsTxt.append(c);
+ }
+ }
+ rule = rule.replace("${constraints}", constraintsTxt);
+ rule = rule.replace("${message}", (message == null || message.equals("")) ? "Invalid Value" : message);
+
+ return rule;
+ }
+
+ protected Object getMandatoryArgument(String key, ConstraintConfiguration conf) throws ArgumentNotSetException {
+ if (!conf.containsArgument(key)) {
+ throw new ArgumentNotSetException("The argument " + key + " doesn't exist.");
+ }
+
+ Object value = conf.getArgumentValue(key);
+
+ if (value == null) {
+ throw new ArgumentNotSetException("The argument " + key + " is null.");
+ }
+
+ return value;
+ }
+
+ /**
+ * Used for on-demand validation
+ * @param value
+ * @param config
+ * @return
+ * @deprecated Use drools-verifier instead of this method:
+ * {@link #getVerifierRule(org.drools.factconstraints.client.ConstraintConfiguration) }
+ */
+ @Deprecated
+ public ValidationResult validate(Object value, ConstraintConfiguration config) {
+ ValidationResult result = new ValidationResult();
+ result.setSuccess(true);
+
+ return result;
+ }
+
+ protected Map<String, Object> createContext() {
+ return new HashMap<String, Object>();
+ }
+
+ public final String getVerifierRule(ConstraintConfiguration config) {
+ return internalVerifierRule(config, createContext());
+ }
+
+ abstract protected String internalVerifierRule(ConstraintConfiguration config, Map<String, Object> context);
+
+ public String getConstraintName() {
+ return getClass().getName().substring(getClass().getName().lastIndexOf('.') + 1);
+ }
+
+ /* Action */
+ protected String getVerifierActionTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ StringBuilder verifierActionTemplate = new StringBuilder();
+
+ //by default, add an ERROR
+ verifierActionTemplate.append(this.addResult(Severity.ERROR));
+
+// verifierActionTemplate.append(" System.out.println(\"doubleValue= \"+$restriction.getDoubleValue());\n");
+// verifierActionTemplate.append(" System.out.println(\"intValue= \"+$restriction.getIntValue());\n");
+
+ return verifierActionTemplate.toString();
+ }
+
+ protected String addResult(Severity severity){
+ StringBuilder addString = new StringBuilder();
+ addString.append(" result.add(new VerifierMessage(\n");
+ addString.append(" impactedRules,\n");
+ if (severity.compareTo(Severity.ERROR) == 0){
+ addString.append(" Severity.ERROR,\n");
+ }else if(severity.compareTo(Severity.NOTE) == 0){
+ addString.append(" Severity.NOTE,\n");
+ }else if(severity.compareTo(Severity.WARNING) == 0){
+ addString.append(" Severity.WARNING,\n");
+ }
+ addString.append(" MessageType.NOT_SPECIFIED,\n");
+ addString.append(" $restriction,\n");
+ addString.append(" \"${message}\" ) );\n");
+ return addString.toString();
+ }
+
+ protected String getVerifierActionPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ StringBuilder verifierActionPrefixTemplate = new StringBuilder();
+ verifierActionPrefixTemplate.append(" Map<String,String> impactedRules = new HashMap<String,String>();\n")
+ .append(" impactedRules.put( $restriction.getPackagePath(), $restriction.getRuleName());\n");
+ return verifierActionPrefixTemplate.toString();
+ }
+
+ protected String getVerifierActionSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return "";
+ }
+
+ /* Field Pattern */
+ protected String getVerifierFieldPatternTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ StringBuilder verifierFieldPatternTemplate = new StringBuilder();
+ verifierFieldPatternTemplate.append(" $field :Field(\n");
+ verifierFieldPatternTemplate.append(" objectTypeName == \"${factType}\",\n");
+ verifierFieldPatternTemplate.append(" name == \"${fieldName}\"\n");
+ verifierFieldPatternTemplate.append(" )\n");
+ return verifierFieldPatternTemplate.toString();
+ }
+
+ protected String getVerifierFieldPatternPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return "";
+ }
+
+ protected String getVerifierFieldPatternSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return "";
+ }
+
+ /* Globals*/
+ protected String getVerifierGlobalsTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return "global VerifierReport result;\n";
+ }
+
+ protected String getVerifierGlobalsPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return "";
+ }
+
+ protected String getVerifierGlobalsSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return "";
+ }
+
+ /* Imports */
+ protected String getVerifierImportsTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ StringBuilder verifierImportsTemplate = new StringBuilder();
+ verifierImportsTemplate.append("import org.drools.verifier.components.*;\n");
+ verifierImportsTemplate.append("import java.util.Map;\n");
+ verifierImportsTemplate.append("import java.util.HashMap;\n");
+ verifierImportsTemplate.append("import org.drools.verifier.report.components.VerifierMessage;\n");
+ verifierImportsTemplate.append("import org.drools.verifier.data.VerifierReport;\n");
+ verifierImportsTemplate.append("import org.drools.verifier.report.components.Severity;\n");
+ verifierImportsTemplate.append("import org.drools.verifier.report.components.MessageType;\n");
+
+ return verifierImportsTemplate.toString();
+
+ }
+
+ protected String getVerifierImportsPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return "";
+ }
+
+ protected String getVerifierImportsSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return "";
+ }
+
+ protected String getVerifierPackageTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return "package org.drools.verifier.consequence\n";
+ }
+
+ protected String getVerifierPackagePrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return "";
+ }
+
+ protected String getVerifierPackageSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return "";
+ }
+
+ /* Restriction Pattern */
+ protected String getVerifierRestrictionPatternTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ StringBuilder verifierRestrictionPatternTemplate = new StringBuilder();
+ verifierRestrictionPatternTemplate.append(" $restriction :LiteralRestriction(\n");
+ verifierRestrictionPatternTemplate.append(" fieldPath == $field.path\n");
+ verifierRestrictionPatternTemplate.append(" ${constraints}\n");
+ verifierRestrictionPatternTemplate.append(" )\n");
+
+ return verifierRestrictionPatternTemplate.toString();
+ }
+
+ protected String getVerifierRestrictionPatternPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return "";
+ }
+
+ protected String getVerifierRestrictionPatternSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return "";
+ }
+
+ /* end */
+ protected String getVerifierRuleEndTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return "end\n";
+ }
+
+ protected String getVerifierRuleEndSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return "";
+ }
+
+ /* Rule Name */
+ protected String getVerifierRuleNameTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return "rule \"${ruleName}\"\n";
+ }
+
+ protected String getVerifierRuleNamePrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return "";
+ }
+
+ protected String getVerifierRuleNameSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return "";
+ }
+
+ /* then */
+ protected String getVerifierRuleThenTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return " then\n";
+ }
+
+ /* when */
+ protected String getVerifierRuleWhenTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+ return " when\n";
+ }
+
+ public List<String> getArgumentKeys() {
+ return new ArrayList<String>();
+ }
+}
Modified: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultMultiRulesConstraintImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultMultiRulesConstraintImpl.java 2010-05-26 14:50:52 UTC (rev 33093)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/DefaultMultiRulesConstraintImpl.java 2010-05-26 15:20:26 UTC (rev 33094)
@@ -12,7 +12,7 @@
* The counter must be handled by subclasses.
* @author esteban.aliverti at gmail.com
*/
-public abstract class DefaultMultiRulesConstraintImpl extends DefaultConstraintImpl {
+public abstract class DefaultMultiRulesConstraintImpl extends DefaultFieldConstraintImpl {
private static final long serialVersionUID = 501L;
protected static final String RULE_COUNT = "ruleCount";
Modified: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/IntegerConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/IntegerConstraint.java 2010-05-26 14:50:52 UTC (rev 33093)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/IntegerConstraint.java 2010-05-26 15:20:26 UTC (rev 33094)
@@ -6,13 +6,13 @@
import org.drools.factconstraints.client.ConstraintConfiguration;
import org.drools.factconstraints.client.ValidationResult;
-import org.drools.factconstraints.server.DefaultConstraintImpl;
+import org.drools.factconstraints.server.DefaultFieldConstraintImpl;
/**
*
* @author esteban.aliverti at gmail.com
*/
-public class IntegerConstraint extends DefaultConstraintImpl {
+public class IntegerConstraint extends DefaultFieldConstraintImpl {
private static final long serialVersionUID = 501L;
public static final String NAME = "IntegerConstraint";
Added: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/InvalidFieldConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/InvalidFieldConstraint.java (rev 0)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/InvalidFieldConstraint.java 2010-05-26 15:20:26 UTC (rev 33094)
@@ -0,0 +1,32 @@
+package org.drools.factconstraints.server.predefined;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.factconstraints.client.ConstraintConfiguration;
+import org.drools.factconstraints.client.ValidationResult;
+import org.drools.factconstraints.server.DefaultFieldConstraintImpl;
+
+/**
+ *
+ * @author esteban.aliverti at gmail.com
+ */
+public class InvalidFieldConstraint extends DefaultFieldConstraintImpl {
+ private static final long serialVersionUID = 501L;
+ public static final String NAME = "IvalidFieldConstraint";
+
+ public InvalidFieldConstraint(){}
+
+ @Override
+ protected String internalVerifierRule(ConstraintConfiguration config,
+ Map<String, Object> context) {
+ return this.createVerifierRuleTemplate(config, context, "Invalid_Field_Constraint", null, "The field can not be used in this rule"); //I18N
+ }
+
+ @Override
+ public ValidationResult validate(Object value, ConstraintConfiguration config) {
+ return null;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/MatchesConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/MatchesConstraint.java 2010-05-26 14:50:52 UTC (rev 33093)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/MatchesConstraint.java 2010-05-26 15:20:26 UTC (rev 33094)
@@ -5,9 +5,9 @@
import java.util.Map;
import org.drools.factconstraints.client.ConstraintConfiguration;
-import org.drools.factconstraints.server.DefaultConstraintImpl;
+import org.drools.factconstraints.server.DefaultFieldConstraintImpl;
-public class MatchesConstraint extends DefaultConstraintImpl {
+public class MatchesConstraint extends DefaultFieldConstraintImpl {
public static final String MATCHES_ARGUMENT = "matches";
private static final long serialVersionUID = 501L;
Modified: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotMatchesConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotMatchesConstraint.java 2010-05-26 14:50:52 UTC (rev 33093)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotMatchesConstraint.java 2010-05-26 15:20:26 UTC (rev 33094)
@@ -5,9 +5,9 @@
import java.util.Map;
import org.drools.factconstraints.client.ConstraintConfiguration;
-import org.drools.factconstraints.server.DefaultConstraintImpl;
+import org.drools.factconstraints.server.DefaultFieldConstraintImpl;
-public class NotMatchesConstraint extends DefaultConstraintImpl {
+public class NotMatchesConstraint extends DefaultFieldConstraintImpl {
public static final String NOT_MATCHES_ARGUMENT = "matches";
private static final long serialVersionUID = 501L;
Modified: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotNullConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotNullConstraint.java 2010-05-26 14:50:52 UTC (rev 33093)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotNullConstraint.java 2010-05-26 15:20:26 UTC (rev 33094)
@@ -6,13 +6,13 @@
import org.drools.factconstraints.client.ConstraintConfiguration;
import org.drools.factconstraints.client.ValidationResult;
-import org.drools.factconstraints.server.DefaultConstraintImpl;
+import org.drools.factconstraints.server.DefaultFieldConstraintImpl;
/**
*
* @author esteban.aliverti at gmail.com
*/
-public class NotNullConstraint extends DefaultConstraintImpl {
+public class NotNullConstraint extends DefaultFieldConstraintImpl {
private static final long serialVersionUID = 501L;
public static final String NAME = "NotNull";
Added: labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraints/server/predefined/InvalidFieldConstraintTest.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraints/server/predefined/InvalidFieldConstraintTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraints/server/predefined/InvalidFieldConstraintTest.java 2010-05-26 15:20:26 UTC (rev 33094)
@@ -0,0 +1,123 @@
+package org.drools.factconstraints.server.predefined;
+
+import java.util.Collection;
+
+import org.drools.builder.ResourceType;
+import org.drools.factconstraints.client.ConstraintConfiguration;
+import org.drools.factconstraints.client.config.SimpleConstraintConfigurationImpl;
+import org.drools.factconstraints.server.Constraint;
+import org.drools.io.ResourceFactory;
+import org.drools.verifier.Verifier;
+import org.drools.verifier.VerifierConfiguration;
+import org.drools.verifier.VerifierConfigurationImpl;
+import org.drools.verifier.VerifierError;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.data.VerifierReport;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.VerifierMessageBase;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ * @author esteban.aliverti at gmail.com
+ */
+public class InvalidFieldConstraintTest {
+
+ private ConstraintConfiguration conf;
+
+ @Before
+ public void setup() {
+ conf = new SimpleConstraintConfigurationImpl();
+ conf.setFactType("Person");
+ conf.setFieldName("age");
+ }
+
+ @Test
+ public void testUsingVerifier() {
+
+ String ruleToVerify = "";
+ int fail = 0;
+
+ //FAIL
+ ruleToVerify += "package org.drools.factconstraint.test\n\n";
+ ruleToVerify += "import org.drools.factconstraint.model.*\n";
+ ruleToVerify += "rule \"rule1\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(age == 20)\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n\n";
+ fail++;
+
+ //OK
+ ruleToVerify += "rule \"rule2\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(name == \"Peter\")\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n\n";
+
+ //FAIL
+ ruleToVerify += "rule \"rule3\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(name == \"Peter\")\n";
+ ruleToVerify += " Person(age == 20)\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n";
+ fail++;
+
+ //FAIL
+ ruleToVerify += "rule \"rule4\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Number() from collect(Person(age == 20))\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n";
+ fail++;
+
+
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+ //VerifierConfiguration conf = new DefaultVerifierConfiguration();
+ VerifierConfiguration vconf = new VerifierConfigurationImpl();
+
+ Constraint cons = new InvalidFieldConstraint();
+ System.out.println("\n\n\n"+cons.getVerifierRule(conf)+"\n\n\n");
+ vconf.getVerifyingResources().put(ResourceFactory.newByteArrayResource(cons.getVerifierRule(conf).getBytes()), ResourceType.DRL);
+
+ Verifier verifier = vBuilder.newVerifier(vconf);
+
+ verifier.addResourcesToVerify(ResourceFactory.newByteArrayResource(ruleToVerify.getBytes()),
+ ResourceType.DRL);
+
+ if (verifier.hasErrors()) {
+ for (VerifierError error : verifier.getErrors()) {
+ System.out.println(error.getMessage());
+ }
+ throw new RuntimeException("Error building verifier");
+ }
+
+ Assert.assertFalse(verifier.hasErrors());
+
+ boolean noProblems = verifier.fireAnalysis();
+ Assert.assertTrue(noProblems);
+
+ VerifierReport result = verifier.getResult();
+
+ Collection<VerifierMessageBase> warnings = result.getBySeverity(Severity.ERROR);
+
+ int counter = 0;
+ for (VerifierMessageBase message : warnings) {
+ System.out.println(message);
+ counter++;
+ }
+
+ Assert.assertEquals(fail, counter);
+
+ verifier.dispose();
+ }
+}
Modified: labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraints/server/predefined/RangeConstraintTest.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraints/server/predefined/RangeConstraintTest.java 2010-05-26 14:50:52 UTC (rev 33093)
+++ labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraints/server/predefined/RangeConstraintTest.java 2010-05-26 15:20:26 UTC (rev 33094)
@@ -7,7 +7,6 @@
import org.drools.factconstraints.client.ValidationResult;
import org.drools.factconstraints.client.config.SimpleConstraintConfigurationImpl;
import org.drools.factconstraints.server.Constraint;
-import org.drools.factconstraints.server.predefined.RangeConstraint;
import org.drools.io.ResourceFactory;
import org.drools.verifier.Verifier;
import org.drools.verifier.VerifierConfiguration;
@@ -15,6 +14,8 @@
import org.drools.verifier.VerifierError;
import org.drools.verifier.builder.VerifierBuilder;
import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.components.PatternComponent;
+import org.drools.verifier.components.RuleComponent;
import org.drools.verifier.data.VerifierReport;
import org.drools.verifier.report.components.Severity;
import org.drools.verifier.report.components.VerifierMessageBase;
@@ -40,11 +41,11 @@
}
//@Test
- public void testValidConstraint(){
+ public void testValidConstraint() {
conf.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MIN, "-0.5");
conf.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MAX, "100");
-
+
ValidationResult result = cons.validate(12, conf);
Assert.assertTrue(result.isSuccess());
@@ -66,43 +67,43 @@
}
//@Test
- public void testInvalidConstraint(){
+ public void testInvalidConstraint() {
conf.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MIN, "-0.5");
conf.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MAX, "100");
ValidationResult result = cons.validate(new Object(), conf);
Assert.assertFalse(result.isSuccess());
- System.out.println("Message: "+result.getMessage());
+ System.out.println("Message: " + result.getMessage());
result = cons.validate(null, conf);
Assert.assertFalse(result.isSuccess());
- System.out.println("Message: "+result.getMessage());
+ System.out.println("Message: " + result.getMessage());
result = cons.validate("", conf);
Assert.assertFalse(result.isSuccess());
- System.out.println("Message: "+result.getMessage());
+ System.out.println("Message: " + result.getMessage());
result = cons.validate("ABC", conf);
Assert.assertFalse(result.isSuccess());
- System.out.println("Message: "+result.getMessage());
+ System.out.println("Message: " + result.getMessage());
result = cons.validate(new Long("-100"), conf);
Assert.assertFalse(result.isSuccess());
- System.out.println("Message: "+result.getMessage());
+ System.out.println("Message: " + result.getMessage());
result = cons.validate(-0.5, conf);
Assert.assertFalse(result.isSuccess());
- System.out.println("Message: "+result.getMessage());
+ System.out.println("Message: " + result.getMessage());
result = cons.validate(100, conf);
Assert.assertFalse(result.isSuccess());
- System.out.println("Message: "+result.getMessage());
+ System.out.println("Message: " + result.getMessage());
}
- @Test
+ //@Test
public void testUsingVerifier() {
//age constraint
@@ -217,8 +218,8 @@
ruleToVerify += " then\n";
ruleToVerify += " System.out.println(\"Rule fired\");\n";
ruleToVerify += "end\n";
- fail+=2;
-
+ fail += 2;
+
//FAIL both (creates 2 warnings) - 8,9
ruleToVerify += "rule \"rule12\"\n";
ruleToVerify += " when\n";
@@ -226,7 +227,7 @@
ruleToVerify += " then\n";
ruleToVerify += " System.out.println(\"Rule fired\");\n";
ruleToVerify += "end\n";
- fail+=2;
+ fail += 2;
VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
@@ -262,4 +263,107 @@
verifier.dispose();
}
+ @Test
+ public void testNestedPatternsUsingVerifier() {
+
+ System.out.println("\n\n\n\ntestNestedPatternsUsingVerifier\n");
+
+ //age constraint
+ conf.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MIN, "0");
+ conf.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MAX, "120");
+ System.out.println("Validation Rule:\n" + cons.getVerifierRule(conf) + "\n\n");
+
+ String ruleToVerify = "";
+ int fail = 0;
+
+ //OK
+ ruleToVerify += "package org.drools.factconstraint.test\n\n";
+ ruleToVerify += "import org.drools.factconstraint.model.*\n";
+// ruleToVerify += "rule \"rule1\"\n";
+// ruleToVerify += " when\n";
+// ruleToVerify += " java.util.List() from collect(Person(age == 10))\n";
+// ruleToVerify += " then\n";
+// ruleToVerify += " System.out.println(\"Rule fired\");\n";
+// ruleToVerify += "end\n\n";
+
+ //FAIL - 1
+ ruleToVerify += "rule \"rule2\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " java.util.List() from collect(Person(age == 10))\n";
+ ruleToVerify += " java.util.List() from collect(Person(age == 130))\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n\n";
+ fail++;
+
+ //FAIL - 2
+ ruleToVerify += "rule \"rule3\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(age == 10)\n";
+ ruleToVerify += " Person(age == 20)\n";
+ ruleToVerify += " exists (Person (age == 130))\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n\n";
+ fail++;
+
+ ruleToVerify += "rule \"rule4\"\n";
+ ruleToVerify += " when\n";
+ ruleToVerify += " Person(age == 10)\n";
+ ruleToVerify += " exists (Person (age == 30) OR Person (age == 130))\n";
+ ruleToVerify += " then\n";
+ ruleToVerify += " System.out.println(\"Rule fired\");\n";
+ ruleToVerify += "end\n\n";
+ fail++;
+
+
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+ VerifierConfiguration vconf = new VerifierConfigurationImpl();
+
+ vconf.getVerifyingResources().put(ResourceFactory.newByteArrayResource(cons.getVerifierRule(this.conf).getBytes()), ResourceType.DRL);
+
+ Verifier verifier = vBuilder.newVerifier(vconf);
+
+ verifier.addResourcesToVerify(ResourceFactory.newByteArrayResource(ruleToVerify.getBytes()),
+ ResourceType.DRL);
+
+ if (verifier.hasErrors()) {
+ for (VerifierError error : verifier.getErrors()) {
+ System.out.println(error.getMessage());
+ }
+ throw new RuntimeException("Error building verifier");
+ }
+
+ Assert.assertFalse(verifier.hasErrors());
+
+ boolean noProblems = verifier.fireAnalysis();
+ Assert.assertTrue(noProblems);
+
+ VerifierReport result = verifier.getResult();
+
+ Collection<VerifierMessageBase> errors = result.getBySeverity(Severity.ERROR);
+
+ System.out.println(errors);
+
+ Assert.assertEquals(fail, errors.size());
+
+ System.out.println("\nOrders:");
+ for (VerifierMessageBase message : errors) {
+ if (message.getFaulty() instanceof PatternComponent) {
+ int rootPatternOrderNumber = this.getRootPatternOrderNumber((PatternComponent) message.getFaulty());
+ System.out.println(((PatternComponent) message.getFaulty()).getPath()+". Order= "+rootPatternOrderNumber);
+ }
+ }
+
+ verifier.dispose();
+ }
+
+ private int getRootPatternOrderNumber(RuleComponent pattern){
+ if (pattern.getParentPatternComponent() == null){
+ return (pattern instanceof PatternComponent)?((PatternComponent)pattern).getPatternOrderNumber():pattern.getOrderNumber();
+ }else{
+ return getRootPatternOrderNumber(pattern.getParentPatternComponent());
+ }
+ }
}
More information about the jboss-svn-commits
mailing list