[jboss-svn-commits] JBL Code SVN: r32311 - in labs/jbossrules/trunk: drools-factconstraint/src/main/java/org/drools/factconstraint/server and 15 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Mar 30 15:20:10 EDT 2010


Author: baunax
Date: 2010-03-30 15:20:05 -0400 (Tue, 30 Mar 2010)
New Revision: 32311

Added:
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/Constraint.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/DefaultConstraintImpl.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/DefaultMultiRulesConstraintImpl.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/factory/
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/factory/ConstraintsFactory.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/ConstraintConfiguration.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/config/
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/config/SimpleConstraintConfigurationImpl.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/DefaultFieldDataProviderImpl.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/NotNullConstraint.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/RangeConstraint.java
Removed:
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/Constraint.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/DefaultConstraintImpl.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/DefaultMultiRulesConstraintImpl.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/dataprovider/predefined/DefaultFieldDataProviderImpl.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/predefined/
   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/NotNullConstraint.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/RangeConstraint.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/guvnor/client/factconstraints/
Modified:
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/ArgumentNotSetException.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/helper/ConstraintsContainer.java
   labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/IntegerConstraintTest.java
   labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/NotNullConstraintTest.java
   labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/RangeConstraintSingleOperatorTest.java
   labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/RangeConstraintTest.java
   labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/helper/ConstraintsConstrainerTest.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/WorkingSetManager.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/WorkingSetConfigData.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/ConstraintEditor.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/WorkingSetEditor.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
Log:
refactored drools-constraint to separate constraint configuration from constraint evaluation. In this way we can separate what goes to the client and what need to live in the server. 

Added: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/Constraint.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/Constraint.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/Constraint.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -0,0 +1,21 @@
+package org.drools.factconstraint.server;
+
+import java.io.Serializable;
+import java.util.List;
+
+import org.drools.factconstraints.client.ConstraintConfiguration;
+import org.drools.factconstraints.client.ValidationResult;
+
+/**
+ *
+ * @author esteban.aliverti at gmail.com
+ * @author baunax at gmail.com
+ */
+public interface Constraint extends Serializable {
+    public List<String> getArgumentKeys();
+
+    public ValidationResult validate(Object value, ConstraintConfiguration config);
+    public String getVerifierRule(ConstraintConfiguration config);
+	public String getConstraintName();
+	
+}


Property changes on: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/Constraint.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Copied: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/DefaultConstraintImpl.java (from rev 32282, labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/DefaultConstraintImpl.java)
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/DefaultConstraintImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/DefaultConstraintImpl.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -0,0 +1,297 @@
+package org.drools.factconstraint.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");
+//        verifierActionTemplate.append("      impactedRules.put( $restriction.getPath(), $restriction.getRuleName());\n");
+//        verifierActionTemplate.append("      impactedRules.put( $r.getPath(), $r.getName());\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>();
+    }
+}

Copied: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/DefaultMultiRulesConstraintImpl.java (from rev 32282, labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/DefaultMultiRulesConstraintImpl.java)
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/DefaultMultiRulesConstraintImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/DefaultMultiRulesConstraintImpl.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -0,0 +1,104 @@
+package org.drools.factconstraint.server;
+
+import java.util.Map;
+
+import org.drools.factconstraints.client.ConstraintConfiguration;
+
+/**
+ * Default implementation for constraints that creates more than one rule
+ * in its {@link #getVerifierRule()} method.
+ * This class contains an internal counter to avoid multiple declaration of
+ * package, imports and globals.
+ * The counter must be handled by subclasses.
+ * @author esteban.aliverti at gmail.com
+ */
+public abstract class DefaultMultiRulesConstraintImpl extends DefaultConstraintImpl {
+
+	private static final long serialVersionUID = 501L;
+	protected static final String RULE_COUNT = "ruleCount";
+	
+    protected void resetRuleCount(Map<String, Object> context){
+        context.put(RULE_COUNT, 0);
+    }
+
+    protected void incrementRuleCount(Map<String, Object> context){
+    	int rc = (Integer) context.get(RULE_COUNT);
+        context.put(RULE_COUNT, ++rc);
+    }
+
+    protected int getRuleCount(Map<String, Object> context){
+    	return (Integer) context.get(RULE_COUNT);
+    }
+    
+    @Override
+    protected String getVerifierGlobalsPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        if (getRuleCount(context) == 0) {
+            return super.getVerifierGlobalsPrefixTemplate(config, context);
+        }
+        return "";
+    }
+
+    @Override
+    protected String getVerifierGlobalsSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        if (getRuleCount(context) == 0) {
+            return super.getVerifierGlobalsSufixTemplate(config, context);
+        }
+        return "";
+    }
+
+    @Override
+    protected String getVerifierGlobalsTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        if (getRuleCount(context) == 0) {
+            return super.getVerifierGlobalsTemplate(config, context);
+        }
+        return "";
+    }
+
+    @Override
+    protected String getVerifierImportsPrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        if (getRuleCount(context) == 0) {
+            return super.getVerifierImportsPrefixTemplate(config, context);
+        }
+        return "";
+    }
+
+    @Override
+    protected String getVerifierImportsSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        if (getRuleCount(context) == 0) {
+            return super.getVerifierImportsSufixTemplate(config, context);
+        }
+        return "";
+    }
+
+    @Override
+    protected String getVerifierImportsTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        if (getRuleCount(context) == 0) {
+            return super.getVerifierImportsTemplate(config, context);
+        }
+        return "";
+    }
+
+    @Override
+    protected String getVerifierPackagePrefixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        if (getRuleCount(context) == 0) {
+            return super.getVerifierPackagePrefixTemplate(config, context);
+        }
+        return "";
+    }
+
+    @Override
+    protected String getVerifierPackageSufixTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        if (getRuleCount(context) == 0) {
+            return super.getVerifierPackageSufixTemplate(config, context);
+        }
+        return "";
+    }
+
+    @Override
+    protected String getVerifierPackageTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+        if (getRuleCount(context) == 0) {
+            return super.getVerifierPackageTemplate(config, context);
+        }
+        return "";
+    }
+}

Added: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/factory/ConstraintsFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/factory/ConstraintsFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/factory/ConstraintsFactory.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -0,0 +1,33 @@
+package org.drools.factconstraint.server.factory;
+
+import org.drools.factconstraint.server.Constraint;
+import org.drools.factconstraints.client.ConstraintConfiguration;
+import org.drools.factconstraints.server.predefined.IntegerConstraint;
+import org.drools.factconstraints.server.predefined.NotNullConstraint;
+import org.drools.factconstraints.server.predefined.RangeConstraint;
+
+public class ConstraintsFactory {
+	private final static ConstraintsFactory INSTANCE = new ConstraintsFactory();
+	
+	public static ConstraintsFactory getInstance() {
+		return INSTANCE;
+	}
+	
+	private ConstraintsFactory() {}
+	
+	public Constraint buildConstraint(ConstraintConfiguration config) {
+		if (NotNullConstraint.NAME.equals(config.getConstraintName())) {
+			return new NotNullConstraint();
+		} else if (IntegerConstraint.NAME.equals(config.getConstraintName())) {
+			return new IntegerConstraint();
+		} else if (RangeConstraint.NAME.equals(config.getConstraintName())) {
+			return new RangeConstraint();
+		} else {
+			throw new IllegalArgumentException("Constraint unknown: " + config.getConstraintName());
+		}
+	}
+	
+	public String getVerifierRule(ConstraintConfiguration config) {
+		return buildConstraint(config).getVerifierRule(config);
+	}
+}


Property changes on: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraint/server/factory/ConstraintsFactory.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/ArgumentNotSetException.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/ArgumentNotSetException.java	2010-03-30 19:14:06 UTC (rev 32310)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/ArgumentNotSetException.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -6,11 +6,22 @@
  */
 public class ArgumentNotSetException extends Exception {
 
-    public ArgumentNotSetException(String message) {
-        super(message);
-    }
+	private static final long serialVersionUID = 501L;
 
-    public ArgumentNotSetException() {
-    }
+	public ArgumentNotSetException() {
+		super();
+	}
 
+	public ArgumentNotSetException(String message, Throwable cause) {
+		super(message, cause);
+	}
+
+	public ArgumentNotSetException(String message) {
+		super(message);
+	}
+
+	public ArgumentNotSetException(Throwable cause) {
+		super(cause);
+	}
+
 }

Deleted: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/Constraint.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/Constraint.java	2010-03-30 19:14:06 UTC (rev 32310)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/Constraint.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -1,23 +0,0 @@
-package org.drools.factconstraints.client;
-
-import java.io.Serializable;
-import java.util.Set;
-
-/**
- *
- * @author esteban.aliverti at gmail.com
- * @author baunax at gmail.com
- */
-public interface Constraint extends Serializable {
-	public String getFactType();
-    public void setFactType(String factType);
-    public String getFieldName();
-    public void setFieldName(String fieldName);
-    public Set<String> getArgumentKeys();
-    public Object getArgumentValue(String key);
-    public void setArgumentValue(String key, String value);
-
-    public ValidationResult validate(Object value);
-    public String getVerifierRule();
-	public String getConstraintName();
-}

Added: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/ConstraintConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/ConstraintConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/ConstraintConfiguration.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -0,0 +1,25 @@
+package org.drools.factconstraints.client;
+
+import java.io.Serializable;
+import java.util.Set;
+
+/**
+ *
+ * @author esteban.aliverti at gmail.com
+ * @author baunax at gmail.com
+ */
+public interface ConstraintConfiguration extends Serializable {
+	public String getFactType();
+    public void setFactType(String factType);
+    
+    public String getFieldName();
+    public void setFieldName(String fieldName);
+    
+    public Set<String> getArgumentKeys();
+    public Object getArgumentValue(String key);
+    public void setArgumentValue(String key, String value);
+    public boolean containsArgument(String key);
+
+	public String getConstraintName();
+	public void setConstraintName(String name);
+}


Property changes on: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/ConstraintConfiguration.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Deleted: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/DefaultConstraintImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/DefaultConstraintImpl.java	2010-03-30 19:14:06 UTC (rev 32310)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/DefaultConstraintImpl.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -1,321 +0,0 @@
-package org.drools.factconstraints.client;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import org.drools.base.evaluators.Operator;
-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 long ruleNum = 0;
-    private String factType;
-    private String fieldName;
-    private Map<String, String> arguments = new HashMap<String, String>();
-
-
-    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);
-    }
-
-    public DefaultConstraintImpl() {
-
-    }
-
-    private String concatRule() {
-        StringBuilder rule = new StringBuilder();
-
-        rule.append(this.getVerifierPackagePrefixTemplate());
-        rule.append(this.getVerifierPackageTemplate());
-        rule.append(this.getVerifierPackageSufixTemplate());
-
-        rule.append(this.getVerifierImportsPrefixTemplate());
-        rule.append(this.getVerifierImportsTemplate());
-        rule.append(this.getVerifierImportsSufixTemplate());
-
-        rule.append(this.getVerifierGlobalsPrefixTemplate());
-        rule.append(this.getVerifierGlobalsTemplate());
-        rule.append(this.getVerifierGlobalsSufixTemplate());
-
-        rule.append(this.getVerifierRuleNamePrefixTemplate());
-        rule.append(this.getVerifierRuleNameTemplate());
-        rule.append(this.getVerifierRuleNameSufixTemplate());
-
-        rule.append(this.getVerifierRuleWhenTemplate());
-
-        rule.append(this.getVerifierFieldPatternPrefixTemplate());
-        rule.append(this.getVerifierFieldPatternTemplate());
-        rule.append(this.getVerifierFieldPatternSufixTemplate());
-
-        rule.append(this.getVerifierRestrictionPatternPrefixTemplate());
-        rule.append(this.getVerifierRestrictionPatternTemplate());
-        rule.append(this.getVerifierRestrictionPatternSufixTemplate());
-
-        rule.append(this.getVerifierRuleThenTemplate());
-
-        rule.append(this.getVerifierActionPrefixTemplate());
-        rule.append(this.getVerifierActionTemplate());
-        rule.append(this.getVerifierActionSufixTemplate());
-
-        rule.append(this.getVerifierRuleEndTemplate());
-        rule.append(this.getVerifierRuleEndSufixTemplate());
-
-
-        return rule.toString();
-
-    }
-
-    protected String createVerifierRuleTemplate(String ruleName, List<String> constraints, String message) {
-        if (ruleName == null) {
-            ruleName = "Constraint_rule";
-
-        }
-        ruleName += "_" + ruleNum++;
-        String rule = this.concatRule().replace("${ruleName}", ruleName);
-        rule = rule.replace("${factType}", this.getFactType());
-        rule = rule.replace("${fieldName}", this.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) throws ArgumentNotSetException {
-        if (!this.arguments.containsKey(key)) {
-            throw new ArgumentNotSetException("The argument " + key + " doesn't exist.");
-        }
-
-        Object value = this.getArgumentValue(key);
-
-        if (value == null) {
-            throw new ArgumentNotSetException("The argument " + key + " is null.");
-        }
-
-        return value;
-    }
-
-    public void setFactType(String factType) {
-        this.factType = factType;
-    }
-
-    public void setFieldName(String fieldName) {
-        this.fieldName = fieldName;
-    }
-
-    public String getFactType() {
-        return factType;
-    }
-
-    public String getFieldName() {
-        return fieldName;
-    }
-
-    public Set<String> getArgumentKeys() {
-        return this.arguments.keySet();
-    }
-
-    public Object getArgumentValue(String key) {
-        return this.arguments.get(key);
-    }
-
-    public void setArgumentValue(String key, String value) {
-        this.arguments.put(key, value);
-    }
-
-    public ValidationResult validate(Object value) {
-        ValidationResult result = new ValidationResult();
-        result.setSuccess(true);
-
-        return result;
-    }
-
-    public String getVerifierRule() {
-        return null;
-    }
-
-    public String getConstraintName() {
-    	return getClass().getName().substring(getClass().getName().lastIndexOf('.') + 1);
-    }
-
-    /* Action */
-    protected String getVerifierActionTemplate() {
-        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() {
-        StringBuilder verifierActionPrefixTemplate = new StringBuilder();
-        verifierActionPrefixTemplate.append("      Map<String,String> impactedRules = new HashMap<String,String>();\n");
-//        verifierActionTemplate.append("      impactedRules.put( $restriction.getPath(), $restriction.getRuleName());\n");
-//        verifierActionTemplate.append("      impactedRules.put( $r.getPath(), $r.getName());\n");
-        return verifierActionPrefixTemplate.toString();
-    }
-
-    protected String getVerifierActionSufixTemplate() {
-        return "";
-    }
-
-    /* Field Pattern */
-    protected String getVerifierFieldPatternTemplate() {
-        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() {
-        return "";
-    }
-
-    protected String getVerifierFieldPatternSufixTemplate() {
-        return "";
-    }
-
-    /* Globals*/
-    protected String getVerifierGlobalsTemplate() {
-        return "global VerifierReport result;\n";
-    }
-
-    protected String getVerifierGlobalsPrefixTemplate() {
-        return "";
-    }
-
-    protected String getVerifierGlobalsSufixTemplate() {
-        return "";
-    }
-
-    /* Imports */
-    protected String getVerifierImportsTemplate() {
-        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() {
-        return "";
-    }
-
-    protected String getVerifierImportsSufixTemplate() {
-        return "";
-    }
-
-    protected String getVerifierPackageTemplate() {
-        return "package org.drools.verifier.consequence\n";
-    }
-
-    protected String getVerifierPackagePrefixTemplate() {
-        return "";
-    }
-
-    protected String getVerifierPackageSufixTemplate() {
-        return "";
-    }
-
-    /* Restriction Pattern */
-    protected String getVerifierRestrictionPatternTemplate() {
-        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() {
-        return "";
-    }
-
-    protected String getVerifierRestrictionPatternSufixTemplate() {
-        return "";
-    }
-
-    /* end */
-    protected String getVerifierRuleEndTemplate() {
-        return "end\n";
-    }
-
-    protected String getVerifierRuleEndSufixTemplate() {
-        return "";
-    }
-
-    /* Rule Name */
-    protected String getVerifierRuleNameTemplate() {
-        return "rule \"${ruleName}\"\n";
-    }
-
-    protected String getVerifierRuleNamePrefixTemplate() {
-        return "";
-    }
-
-    protected String getVerifierRuleNameSufixTemplate() {
-        return "";
-    }
-
-    /* then */
-    protected String getVerifierRuleThenTemplate() {
-        return "  then\n";
-    }
-
-    /* when */
-    protected String getVerifierRuleWhenTemplate() {
-        return "  when\n";
-    }
-
-
-}

Deleted: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/DefaultMultiRulesConstraintImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/DefaultMultiRulesConstraintImpl.java	2010-03-30 19:14:06 UTC (rev 32310)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/DefaultMultiRulesConstraintImpl.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -1,94 +0,0 @@
-package org.drools.factconstraints.client;
-
-/**
- * Default implementation for constraints that creates more than one rule
- * in its {@link #getVerifierRule()} method.
- * This class contains an internal counter to avoid multiple declaration of
- * package, imports and globals.
- * The counter must be handled by subclasses.
- * @author esteban.aliverti at gmail.com
- */
-public class DefaultMultiRulesConstraintImpl extends DefaultConstraintImpl {
-
-    private int ruleCount;
-
-    protected void resetRuleCount(){
-        this.ruleCount = 0;
-    }
-
-    protected void incrementRuleCount(){
-        this.ruleCount++;
-    }
-
-    @Override
-    protected String getVerifierGlobalsPrefixTemplate() {
-        if (ruleCount == 0) {
-            return super.getVerifierGlobalsPrefixTemplate();
-        }
-        return "";
-    }
-
-    @Override
-    protected String getVerifierGlobalsSufixTemplate() {
-        if (ruleCount == 0) {
-            return super.getVerifierGlobalsSufixTemplate();
-        }
-        return "";
-    }
-
-    @Override
-    protected String getVerifierGlobalsTemplate() {
-        if (ruleCount == 0) {
-            return super.getVerifierGlobalsTemplate();
-        }
-        return "";
-    }
-
-    @Override
-    protected String getVerifierImportsPrefixTemplate() {
-        if (ruleCount == 0) {
-            return super.getVerifierImportsPrefixTemplate();
-        }
-        return "";
-    }
-
-    @Override
-    protected String getVerifierImportsSufixTemplate() {
-        if (ruleCount == 0) {
-            return super.getVerifierImportsSufixTemplate();
-        }
-        return "";
-    }
-
-    @Override
-    protected String getVerifierImportsTemplate() {
-        if (ruleCount == 0) {
-            return super.getVerifierImportsTemplate();
-        }
-        return "";
-    }
-
-    @Override
-    protected String getVerifierPackagePrefixTemplate() {
-        if (ruleCount == 0) {
-            return super.getVerifierPackagePrefixTemplate();
-        }
-        return "";
-    }
-
-    @Override
-    protected String getVerifierPackageSufixTemplate() {
-        if (ruleCount == 0) {
-            return super.getVerifierPackageSufixTemplate();
-        }
-        return "";
-    }
-
-    @Override
-    protected String getVerifierPackageTemplate() {
-        if (ruleCount == 0) {
-            return super.getVerifierPackageTemplate();
-        }
-        return "";
-    }
-}

Added: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/config/SimpleConstraintConfigurationImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/config/SimpleConstraintConfigurationImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/config/SimpleConstraintConfigurationImpl.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -0,0 +1,56 @@
+package org.drools.factconstraints.client.config;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.factconstraints.client.ConstraintConfiguration;
+
+public class SimpleConstraintConfigurationImpl implements ConstraintConfiguration {
+
+	private static final long serialVersionUID = 501L;
+	private Map<String, String> args = new HashMap<String, String>();
+	private String constraintName = null;
+	private String factType;
+	private String fieldName;
+
+	public Set<String> getArgumentKeys() {
+		return args.keySet();
+	}
+
+	public Object getArgumentValue(String key) {
+		return args.get(key);
+	}
+
+	public String getConstraintName() {
+		return constraintName;
+	}
+
+	public void setConstraintName(String constraintName) {
+		this.constraintName = constraintName;
+	}
+
+	public String getFactType() {
+		return factType;
+	}
+
+	public String getFieldName() {
+		return fieldName;
+	}
+
+	public void setArgumentValue(String key, String value) {
+		args.put(key, value);
+	}
+
+	public void setFactType(String factType) {
+		this.factType = factType;
+	}
+
+	public void setFieldName(String fieldName) {
+		this.fieldName = fieldName;
+	}
+	
+	public boolean containsArgument(String key) {
+		return args.containsKey(key);
+	}
+}


Property changes on: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/config/SimpleConstraintConfigurationImpl.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Deleted: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/dataprovider/predefined/DefaultFieldDataProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/dataprovider/predefined/DefaultFieldDataProviderImpl.java	2010-03-30 19:14:06 UTC (rev 32310)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/dataprovider/predefined/DefaultFieldDataProviderImpl.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -1,65 +0,0 @@
-package org.drools.factconstraints.client.dataprovider.predefined;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.drools.factconstraints.client.ArgumentNotSetException;
-import org.drools.factconstraints.client.dataprovider.FieldDataProvider;
-
-/**
- *
- * @author esteban.aliverti at gmail.com
- */
-public abstract class DefaultFieldDataProviderImpl implements FieldDataProvider {
-
-    private String factType;
-    private String fieldName;
-    private Map<String, Object> arguments = new HashMap<String, Object>();
-
-    public DefaultFieldDataProviderImpl() {
-
-    }
-
-    protected Object getMandatoryArgument(String key) throws ArgumentNotSetException {
-        if (!this.arguments.containsKey(key)) {
-            throw new ArgumentNotSetException("The argument " + key + " doesn't exist.");
-        }
-
-        Object value = this.getArgumentValue(key);
-
-        if (value == null) {
-            throw new ArgumentNotSetException("The argument " + key + " is null.");
-        }
-
-        return value;
-    }
-
-    public void setFactType(String factType) {
-        this.factType = factType;
-    }
-
-    public void setFieldName(String fieldName) {
-        this.fieldName = fieldName;
-    }
-
-    public String getFactType() {
-        return factType;
-    }
-
-    public String getFieldName() {
-        return fieldName;
-    }
-
-    public String[] getArgumentKeys() {
-        return this.arguments.keySet().toArray(new String[this.arguments.size()]);
-    }
-
-    public Object getArgumentValue(String key) {
-        return this.arguments.get(key);
-    }
-
-    public void setArgumentValue(String key, Object value) {
-        this.arguments.put(key, value);
-    }
-
-}

Modified: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/helper/ConstraintsContainer.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/helper/ConstraintsContainer.java	2010-03-30 19:14:06 UTC (rev 32310)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/helper/ConstraintsContainer.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -8,18 +8,37 @@
 import java.util.List;
 import java.util.Map;
 
-import org.drools.factconstraints.client.Constraint;
+import org.drools.factconstraints.client.ConstraintConfiguration;
+import org.drools.factconstraints.client.config.SimpleConstraintConfigurationImpl;
 
 public class ConstraintsContainer {
-	Map<String, List<Constraint>> constraints = new HashMap<String, List<Constraint>>();
+	private static final Map<String, ConstraintConfiguration> constraintConfigs = new HashMap<String, ConstraintConfiguration>();
 	
-	public ConstraintsContainer(Constraint[] constraints) {
+	static {
+		ConstraintConfiguration config = new SimpleConstraintConfigurationImpl();
+		config.setConstraintName("NotNull");
+		constraintConfigs.put(config.getConstraintName(), config);
+		
+		config = new SimpleConstraintConfigurationImpl();
+		config.setConstraintName("IntegerConstraint");
+		constraintConfigs.put(config.getConstraintName(), config);
+		
+		config = new SimpleConstraintConfigurationImpl();
+		config.setConstraintName("RangeConstraint");
+		config.setArgumentValue("Min.value", "0");
+		config.setArgumentValue("Max.value", "0");
+		constraintConfigs.put(config.getConstraintName(), config);
+	}
+	
+	private Map<String, List<ConstraintConfiguration>> constraints = new HashMap<String, List<ConstraintConfiguration>>();
+	
+	public ConstraintsContainer(ConstraintConfiguration[] constraints) {
 		this(Arrays.asList(constraints));
 	}
 	
-	public ConstraintsContainer(Collection<Constraint> constraints) {
+	public ConstraintsContainer(Collection<ConstraintConfiguration> constraints) {
 		if (constraints != null && !constraints.isEmpty()) {
-			for (Constraint c : constraints) {
+			for (ConstraintConfiguration c : constraints) {
 				addConstraint(c);
 			}
 		}
@@ -29,34 +48,34 @@
 		
 	}
 	
-	public void removeConstraint(Constraint c) {
-		List<Constraint> list = constraints.get(c.getFactType());
+	public void removeConstraint(ConstraintConfiguration c) {
+		List<ConstraintConfiguration> list = constraints.get(c.getFactType());
 		if (list != null) {
 			list.remove(c);
 		}
 	}
 	
-	public void addConstraint(Constraint c) {
-		List<Constraint> list = constraints.get(c.getFactType());
+	public void addConstraint(ConstraintConfiguration c) {
+		List<ConstraintConfiguration> list = constraints.get(c.getFactType());
 		if (list == null) {
-			list = new LinkedList<Constraint>();
+			list = new LinkedList<ConstraintConfiguration>();
 			constraints.put(c.getFactType(), list);
 		}
 		list.add(c);
 	}
 
-	public List<Constraint> getConstraints(String factType) {
+	public List<ConstraintConfiguration> getConstraints(String factType) {
 		return Collections.unmodifiableList(constraints.get(factType));
 	}
 	
-	public List<Constraint> getConstraints(String factType, String fieldName) {
+	public List<ConstraintConfiguration> getConstraints(String factType, String fieldName) {
 		
-		List<Constraint> list = constraints.get(factType);
+		List<ConstraintConfiguration> list = constraints.get(factType);
 		if (list == null || list.isEmpty()) {
 			return Collections.emptyList();
 		}
-		List<Constraint> res = new LinkedList<Constraint>();
-		for (Constraint c : list) {
+		List<ConstraintConfiguration> res = new LinkedList<ConstraintConfiguration>();
+		for (ConstraintConfiguration c : list) {
 			if (fieldName.equals(c.getFieldName())) {
 				res.add(c);
 			}
@@ -67,4 +86,12 @@
 	public boolean hasConstraints(String FactType) {
 		return constraints.containsKey(FactType);
 	}
+	
+	public static Map<String, ConstraintConfiguration> getAllConfigurations() {
+		return constraintConfigs;
+	}
+ 	
+	public static ConstraintConfiguration getEmptyConfiguration(String constraintName) {
+		return getAllConfigurations().get(constraintName);
+	}
 }

Copied: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined (from rev 32282, labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/predefined)

Copied: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/DefaultFieldDataProviderImpl.java (from rev 32282, labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/dataprovider/predefined/DefaultFieldDataProviderImpl.java)
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/DefaultFieldDataProviderImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/DefaultFieldDataProviderImpl.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -0,0 +1,64 @@
+package org.drools.factconstraints.server.predefined;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.factconstraints.client.ArgumentNotSetException;
+import org.drools.factconstraints.client.dataprovider.FieldDataProvider;
+
+/**
+ *
+ * @author esteban.aliverti at gmail.com
+ */
+public abstract class DefaultFieldDataProviderImpl implements FieldDataProvider {
+
+    private String factType;
+    private String fieldName;
+    private Map<String, Object> arguments = new HashMap<String, Object>();
+
+    public DefaultFieldDataProviderImpl() {
+
+    }
+
+    protected Object getMandatoryArgument(String key) throws ArgumentNotSetException {
+        if (!this.arguments.containsKey(key)) {
+            throw new ArgumentNotSetException("The argument " + key + " doesn't exist.");
+        }
+
+        Object value = this.getArgumentValue(key);
+
+        if (value == null) {
+            throw new ArgumentNotSetException("The argument " + key + " is null.");
+        }
+
+        return value;
+    }
+
+    public void setFactType(String factType) {
+        this.factType = factType;
+    }
+
+    public void setFieldName(String fieldName) {
+        this.fieldName = fieldName;
+    }
+
+    public String getFactType() {
+        return factType;
+    }
+
+    public String getFieldName() {
+        return fieldName;
+    }
+
+    public String[] getArgumentKeys() {
+        return this.arguments.keySet().toArray(new String[this.arguments.size()]);
+    }
+
+    public Object getArgumentValue(String key) {
+        return this.arguments.get(key);
+    }
+
+    public void setArgumentValue(String key, Object value) {
+        this.arguments.put(key, value);
+    }
+}
\ No newline at end of file

Deleted: 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/client/predefined/IntegerConstraint.java	2010-03-29 18:05:47 UTC (rev 32282)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/IntegerConstraint.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -1,52 +0,0 @@
-package org.drools.factconstraints.client.predefined;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.drools.factconstraints.client.DefaultConstraintImpl;
-import org.drools.factconstraints.client.ValidationResult;
-
-/**
- *
- * @author esteban.aliverti at gmail.com
- */
-public class IntegerConstraint extends DefaultConstraintImpl {
-
-
-    public IntegerConstraint(){
-    }
-
-    @Override
-    public String getVerifierRule() {
-        List<String> constraints = new ArrayList<String>();
-        constraints.add("valueType != Field.INT");
-
-        return this.createVerifierRuleTemplate("Integer_Field_Constraint", constraints, "The value must be an integer"); //I18N
-    }
-
-    @Override
-    public ValidationResult validate(Object value) {
-        ValidationResult result = new ValidationResult();
-
-        if (value == null){
-            result.setSuccess(false);
-            result.setMessage("The value is null"); //TODO: I18N
-        }else if (value instanceof Integer){
-            result.setSuccess(true);
-        }else if (value instanceof String){
-            try{
-                Integer.parseInt((String)value);
-                result.setSuccess(true);
-            } catch(NumberFormatException ex){
-                result.setSuccess(false);
-                result.setMessage(ex.getMessage()); //TODO: I18N
-            }
-        }else{
-            result.setSuccess(false);
-            result.setMessage("Invalid value type "+value.getClass().getName()); //TODO: I18N
-        }
-
-        return result;
-    }
-    
-}

Copied: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/IntegerConstraint.java (from rev 32284, labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/predefined/IntegerConstraint.java)
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/IntegerConstraint.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/IntegerConstraint.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -0,0 +1,54 @@
+package org.drools.factconstraints.server.predefined;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.factconstraint.server.DefaultConstraintImpl;
+import org.drools.factconstraints.client.ConstraintConfiguration;
+import org.drools.factconstraints.client.ValidationResult;
+
+/**
+ *
+ * @author esteban.aliverti at gmail.com
+ */
+public class IntegerConstraint extends DefaultConstraintImpl {
+	private static final long serialVersionUID = 501L;
+	public static final String NAME = "IntegerConstraint";
+	
+    public IntegerConstraint(){}
+
+    @Override
+    protected String internalVerifierRule(ConstraintConfiguration config,
+    		Map<String, Object> context) {
+        List<String> constraints = new ArrayList<String>();
+        constraints.add("valueType != Field.INT");
+
+        return this.createVerifierRuleTemplate(config, context, "Integer_Field_Constraint", constraints, "The value must be an integer"); //I18N
+    }
+
+    @Override
+    public ValidationResult validate(Object value, ConstraintConfiguration config) {
+        ValidationResult result = new ValidationResult();
+
+        if (value == null){
+            result.setSuccess(false);
+            result.setMessage("The value is null"); //TODO: I18N
+        }else if (value instanceof Integer){
+            result.setSuccess(true);
+        }else if (value instanceof String){
+            try{
+                Integer.parseInt((String)value);
+                result.setSuccess(true);
+            } catch(NumberFormatException ex){
+                result.setSuccess(false);
+                result.setMessage(ex.getMessage()); //TODO: I18N
+            }
+        }else{
+            result.setSuccess(false);
+            result.setMessage("Invalid value type "+value.getClass().getName()); //TODO: I18N
+        }
+
+        return result;
+    }
+}

Deleted: 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/client/predefined/NotNullConstraint.java	2010-03-29 18:05:47 UTC (rev 32282)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotNullConstraint.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -1,41 +0,0 @@
-package org.drools.factconstraints.client.predefined;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.drools.factconstraints.client.DefaultConstraintImpl;
-import org.drools.factconstraints.client.ValidationResult;
-
-/**
- *
- * @author esteban.aliverti at gmail.com
- */
-public class NotNullConstraint extends DefaultConstraintImpl {
-
-
-    public NotNullConstraint(){
-    }
-
-    @Override
-    public String getVerifierRule() {
-        List<String> constraints = new ArrayList<String>();
-        constraints.add("valueType == Field.UNKNOWN");
-
-        return this.createVerifierRuleTemplate("Not_null_Field_Constraint", constraints, "The value could not be null"); //I18N
-    }
-
-    @Override
-    public ValidationResult validate(Object value) {
-        ValidationResult result = new ValidationResult();
-
-        if (value == null){
-            result.setSuccess(false);
-            result.setMessage("The value could not be null"); //TODO: I18N
-        }else {
-            result.setSuccess(true);
-        }
-
-        return result;
-    }
-    
-}

Copied: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotNullConstraint.java (from rev 32284, labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/predefined/NotNullConstraint.java)
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotNullConstraint.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/NotNullConstraint.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -0,0 +1,48 @@
+package org.drools.factconstraints.server.predefined;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.factconstraint.server.DefaultConstraintImpl;
+import org.drools.factconstraints.client.ConstraintConfiguration;
+import org.drools.factconstraints.client.ValidationResult;
+
+/**
+ * 
+ * @author esteban.aliverti at gmail.com
+ */
+public class NotNullConstraint extends DefaultConstraintImpl {
+	private static final long serialVersionUID = 501L;
+	public static final String NAME = "NotNull";
+
+	public NotNullConstraint() {
+	}
+
+	@Override
+	protected String internalVerifierRule(ConstraintConfiguration config,
+			Map<String, Object> context) {
+		List<String> constraints = new ArrayList<String>();
+		constraints.add("valueType == Field.UNKNOWN");
+
+		return this.createVerifierRuleTemplate(config, context, 
+				"Not_null_Field_Constraint", constraints,
+				"The value could not be null"); // I18N
+	}
+
+	@Override
+	public ValidationResult validate(Object value,
+			ConstraintConfiguration config) {
+		ValidationResult result = new ValidationResult();
+
+		if (value == null) {
+			result.setSuccess(false);
+			result.setMessage("The value could not be null"); // TODO: I18N
+		} else {
+			result.setSuccess(true);
+		}
+
+		return result;
+	}
+
+}

Deleted: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/RangeConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/predefined/RangeConstraint.java	2010-03-29 18:05:47 UTC (rev 32282)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/RangeConstraint.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -1,138 +0,0 @@
-package org.drools.factconstraints.client.predefined;
-
-import org.drools.base.evaluators.Operator;
-import org.drools.factconstraints.client.ArgumentNotSetException;
-import org.drools.factconstraints.client.DefaultMultiRulesConstraintImpl;
-import org.drools.factconstraints.client.ValidationResult;
-import org.drools.verifier.report.components.Severity;
-
-/**
- *
- * @author esteban.aliverti at gmail.com
- */
-public class RangeConstraint extends DefaultMultiRulesConstraintImpl {
-
-    public static final String RANGE_CONSTRAINT_MIN = "Min.value";
-    public static final String RANGE_CONSTRAINT_MAX = "Max.value";
-
-    private Operator currentOperator;
-
-    public RangeConstraint() {
-        //set default values
-        this.setArgumentValue(RANGE_CONSTRAINT_MIN, "0");
-        this.setArgumentValue(RANGE_CONSTRAINT_MAX, "0");
-    }
-
-    @Override
-    public String getVerifierRule() {
-
-        this.resetRuleCount();
-
-        StringBuilder rules = new StringBuilder();
-        for (Operator operator : RangeConstraint.supportedOperators) {
-            this.currentOperator = operator;
-            rules.append(this.createVerifierRuleTemplate("Range_Field_Constraint_"+this.currentOperator.getOperatorString(), null, this.getResultMessage()));
-            this.incrementRuleCount();
-        }
-
-        return rules.toString();
-    }
-
-    private String getResultMessage(){
-        if (this.currentOperator.getOperatorString().equals(Operator.NOT_EQUAL.getOperatorString())){
-            return "The value must be between " + getMin() + " and " + getMax(); //I18N
-        }else{
-            return "The value must be between " + getMin() + " and " + getMax(); //I18N
-        }
-    }
-
-    @Override
-    public ValidationResult validate(Object value) {
-        ValidationResult result = new ValidationResult();
-
-        try {
-            if (value == null || !(value instanceof Number || value instanceof String)) {
-                result.setSuccess(false);
-                if (value == null) {
-                    result.setMessage("The value is null"); //TODO: I18N
-                } else {
-                    result.setMessage("Invalid value type " + value.getClass().getName()); //TODO: I18N
-                }
-            } else {
-                double min = Double.parseDouble(getMin());
-                double max = Double.parseDouble(getMax());
-                double d = Double.parseDouble(value.toString());
-                result.setSuccess(d > min && d < max);
-                if (!result.isSuccess()) {
-                    result.setMessage("The value should be between " + min + " and " + max); //TODO: I18N
-                }
-            }
-        } catch (Throwable t) {
-            result.setSuccess(false);
-            result.setMessage(t.getMessage()); //TODO: I18N
-        }
-
-        return result;
-    }
-
-    public String getMin() {
-        try {
-            return (String) this.getMandatoryArgument(RANGE_CONSTRAINT_MIN);
-        } catch (ArgumentNotSetException e) {
-            throw new IllegalStateException(e);
-        }
-    }
-
-    public String getMax() {
-        try {
-            return (String) this.getMandatoryArgument(RANGE_CONSTRAINT_MAX);
-        } catch (ArgumentNotSetException e) {
-            throw new IllegalStateException(e);
-        }
-    }
-
-    @Override
-    protected String getVerifierRestrictionPatternTemplate() {
-        StringBuilder restrictionPattern = new StringBuilder();
-
-        restrictionPattern.append("      ($restriction :LiteralRestriction(\n");
-        restrictionPattern.append("            fieldPath == $field.path,\n");
-        restrictionPattern.append(this.getOperatorPattern());
-        restrictionPattern.append("            ((valueType == Field.INT && (intValue < " + getMin() + " || > " + getMax() + ")) ");
-        restrictionPattern.append("             || ");
-        restrictionPattern.append("            (valueType == Field.DOUBLE && (doubleValue < " + getMin() + " || > " + getMax() + ")) ");
-        restrictionPattern.append("      )))\n");
-
-        return restrictionPattern.toString();
-    }
-
-    private String getOperatorPattern() {
-        return "            operator.operatorString == '"+this.currentOperator.getOperatorString()+"',\n";
-    }
-
-    @Override
-    protected String getVerifierActionTemplate() {
-        StringBuilder verifierActionTemplate = new StringBuilder();
-
-
-        if (this.currentOperator.getOperatorString().equals(Operator.EQUAL.getOperatorString())){
-            verifierActionTemplate.append(this.addResult(Severity.ERROR));
-        } else if (this.currentOperator.getOperatorString().equals(Operator.NOT_EQUAL.getOperatorString())){
-            verifierActionTemplate.append(this.addResult(Severity.WARNING));
-        } else{
-            return super.getVerifierActionTemplate();
-        }
-
-        return verifierActionTemplate.toString();
-    }
-
-//    @Override
-//    protected String getVerifierImportsSufixTemplate() {
-//        return "import org.drools.base.evaluators.Operator;\n";
-//    }
-//
-//    @Override
-//    protected String getVerifierActionSufixTemplate() {
-//        return "System.out.println(\"OPERATOR= \"+$restriction.getOperator().getOperatorString()+\". Operator.EQUAL= \"+Operator.EQUAL.getOperatorString());\n";
-//    }
-}

Copied: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/RangeConstraint.java (from rev 32284, labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/predefined/RangeConstraint.java)
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/RangeConstraint.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/server/predefined/RangeConstraint.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -0,0 +1,158 @@
+package org.drools.factconstraints.server.predefined;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.base.evaluators.Operator;
+import org.drools.factconstraint.server.DefaultMultiRulesConstraintImpl;
+import org.drools.factconstraints.client.ArgumentNotSetException;
+import org.drools.factconstraints.client.ConstraintConfiguration;
+import org.drools.factconstraints.client.ValidationResult;
+import org.drools.factconstraints.client.config.SimpleConstraintConfigurationImpl;
+import org.drools.verifier.report.components.Severity;
+
+/**
+ * 
+ * @author esteban.aliverti at gmail.com
+ */
+public class RangeConstraint extends DefaultMultiRulesConstraintImpl {
+
+	private static final long serialVersionUID = 501L;
+	public static final String NAME = "RangeConstraint";
+
+	public static final String RANGE_CONSTRAINT_MIN = "Min.value";
+	public static final String RANGE_CONSTRAINT_MAX = "Max.value";
+
+	public static final String CURRENT_OPERATOR = "currOperator";
+	
+//	private Operator currentOperator;
+
+	@Override
+	protected String internalVerifierRule(ConstraintConfiguration config, Map<String, Object> context) {
+
+		this.resetRuleCount(context);
+
+		StringBuilder rules = new StringBuilder();
+		for (Operator operator : RangeConstraint.supportedOperators) {
+			setCurrentOperator(context, operator);
+			rules.append(this.createVerifierRuleTemplate(config, context, 
+					"Range_Field_Constraint_" + operator.getOperatorString(), 
+					Collections.<String> emptyList(), this.getResultMessage(config, context)));
+			this.incrementRuleCount(context);
+		}
+
+		return rules.toString();
+	}
+
+	private String getResultMessage(ConstraintConfiguration conf, Map<String, Object> context) {
+		if (getCurrentOperator(context).getOperatorString().equals(Operator.NOT_EQUAL.getOperatorString())) {
+			return "The value must be between " + getMin(conf) + " and " + getMax(conf); // I18N
+		} else {
+			return "The value must be between " + getMin(conf) + " and " + getMax(conf); // I18N
+		}
+	}
+
+	@Override
+	public ValidationResult validate(Object value, ConstraintConfiguration config) {
+		ValidationResult result = new ValidationResult();
+
+		try {
+			if (value == null || !(value instanceof Number || value instanceof String)) {
+				result.setSuccess(false);
+				if (value == null) {
+					result.setMessage("The value is null"); // TODO: I18N
+				} else {
+					result.setMessage("Invalid value type " + value.getClass().getName()); // TODO:
+																							// I18N
+				}
+			} else {
+				double min = Double.parseDouble(getMin(config));
+				double max = Double.parseDouble(getMax(config));
+				double d = Double.parseDouble(value.toString());
+				result.setSuccess(d > min && d < max);
+				if (!result.isSuccess()) {
+					result.setMessage("The value should be between " + min + " and " + max); // TODO:
+																								// I18N
+				}
+			}
+		} catch (Throwable t) {
+			result.setSuccess(false);
+			result.setMessage(t.getMessage()); // TODO: I18N
+		}
+
+		return result;
+	}
+
+	public String getMin(ConstraintConfiguration conf) {
+		try {
+			return (String) this.getMandatoryArgument(RANGE_CONSTRAINT_MIN, conf);
+		} catch (ArgumentNotSetException e) {
+			throw new IllegalStateException(e);
+		}
+	}
+
+	public String getMax(ConstraintConfiguration conf) {
+		try {
+			return (String) this.getMandatoryArgument(RANGE_CONSTRAINT_MAX, conf);
+		} catch (ArgumentNotSetException e) {
+			throw new IllegalStateException(e);
+		}
+	}
+
+	@Override
+	protected String getVerifierRestrictionPatternTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+		StringBuilder restrictionPattern = new StringBuilder();
+
+		restrictionPattern.append("      ($restriction :LiteralRestriction(\n");
+		restrictionPattern.append("            fieldPath == $field.path,\n");
+		restrictionPattern.append(this.getOperatorPattern(context));
+		restrictionPattern.append("            ((valueType == Field.INT && (intValue < ")
+			.append(getMin(config)).append(" || > ").append(getMax(config)).append(")) ");
+		restrictionPattern.append("             || \n");
+		restrictionPattern.append("            (valueType == Field.DOUBLE && (doubleValue < ")
+			.append(getMin(config)).append(" || > ").append(getMax(config)).append(")) ");
+		restrictionPattern.append("      )))\n");
+
+		return restrictionPattern.toString();
+	}
+
+	private String getOperatorPattern(Map<String, Object> context) {
+		return "            operator.operatorString == '" + getCurrentOperator(context).getOperatorString() + "',\n";
+	}
+
+	@Override
+	protected String getVerifierActionTemplate(ConstraintConfiguration config, Map<String, Object> context) {
+		StringBuilder verifierActionTemplate = new StringBuilder();
+
+		if (getCurrentOperator(context).getOperatorString().equals(Operator.EQUAL.getOperatorString())) {
+			verifierActionTemplate.append(this.addResult(Severity.ERROR));
+		} else if (getCurrentOperator(context).getOperatorString().equals(Operator.NOT_EQUAL.getOperatorString())) {
+			verifierActionTemplate.append(this.addResult(Severity.WARNING));
+		} else {
+			return super.getVerifierActionTemplate(config, context);
+		}
+
+		return verifierActionTemplate.toString();
+	}
+
+	public List<String> getArgumentKeys() {
+		return Arrays.asList(new String[] { RANGE_CONSTRAINT_MIN, RANGE_CONSTRAINT_MAX });
+	}
+	
+	private Operator getCurrentOperator(Map<String, Object> context) {
+		return (Operator) context.get(CURRENT_OPERATOR);
+	}
+	
+	private void setCurrentOperator(Map<String, Object> context, Operator operator) {
+		context.put(CURRENT_OPERATOR, operator);
+	}
+	
+	public static ConstraintConfiguration getEmptyConfiguration() {
+		ConstraintConfiguration config = new SimpleConstraintConfigurationImpl();
+		config.setArgumentValue("Min.value", "0");
+		config.setArgumentValue("Max.value", "0");
+		return config;
+	}
+}

Modified: labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/IntegerConstraintTest.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/IntegerConstraintTest.java	2010-03-30 19:14:06 UTC (rev 32310)
+++ labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/IntegerConstraintTest.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -3,9 +3,11 @@
 import java.util.Collection;
 
 import org.drools.builder.ResourceType;
-import org.drools.factconstraints.client.Constraint;
+import org.drools.factconstraint.server.Constraint;
+import org.drools.factconstraints.client.ConstraintConfiguration;
 import org.drools.factconstraints.client.ValidationResult;
-import org.drools.factconstraints.client.predefined.IntegerConstraint;
+import org.drools.factconstraints.client.config.SimpleConstraintConfigurationImpl;
+import org.drools.factconstraints.server.predefined.IntegerConstraint;
 import org.drools.io.ResourceFactory;
 import org.drools.verifier.Verifier;
 import org.drools.verifier.VerifierConfiguration;
@@ -26,65 +28,61 @@
  */
 public class IntegerConstraintTest {
 
-    private Constraint cons;
+    private ConstraintConfiguration conf;
 
     @Before
     public void setup() {
-        cons = new IntegerConstraint();
-        cons.setFactType("Person");
-        cons.setFieldName("age");
-
-
-        System.out.println("Validation Rule:\n" + cons.getVerifierRule() + "\n\n");
-
+        conf = new SimpleConstraintConfigurationImpl();
+        conf.setFactType("Person");
+        conf.setFieldName("age");
     }
 
     @Test
     public void testValidConstraint() {
-
-        ValidationResult result = cons.validate(12);
+    	Constraint cons = new IntegerConstraint();
+    	
+        ValidationResult result = cons.validate(12, conf);
         Assert.assertTrue(result.isSuccess());
 
-        result = cons.validate(new Integer("12"));
+        result = cons.validate(new Integer("12"), conf);
         Assert.assertTrue(result.isSuccess());
 
-        result = cons.validate("12");
+        result = cons.validate("12", conf);
         Assert.assertTrue(result.isSuccess());
 
     }
 
     @Test
     public void testInvalidConstraint() {
-
-        ValidationResult result = cons.validate(new Object());
+    	Constraint cons = new IntegerConstraint();
+    	
+        ValidationResult result = cons.validate(new Object(), conf);
         Assert.assertFalse(result.isSuccess());
         System.out.println("Message: " + result.getMessage());
 
-        result = cons.validate("");
+        result = cons.validate("", conf);
         Assert.assertFalse(result.isSuccess());
         System.out.println("Message: " + result.getMessage());
 
-        result = cons.validate("ABC");
+        result = cons.validate("ABC", conf);
         Assert.assertFalse(result.isSuccess());
         System.out.println("Message: " + result.getMessage());
 
-        result = cons.validate(null);
+        result = cons.validate(null, conf);
         Assert.assertFalse(result.isSuccess());
         System.out.println("Message: " + result.getMessage());
 
-        result = cons.validate(new Long("12"));
+        result = cons.validate(new Long("12"), conf);
         Assert.assertFalse(result.isSuccess());
         System.out.println("Message: " + result.getMessage());
 
-        result = cons.validate(12L);
+        result = cons.validate(12L, conf);
         Assert.assertFalse(result.isSuccess());
         System.out.println("Message: " + result.getMessage());
 
-        result = cons.validate(12.8);
+        result = cons.validate(12.8, conf);
         Assert.assertFalse(result.isSuccess());
         System.out.println("Message: " + result.getMessage());
-
-
     }
 
     @Test
@@ -122,11 +120,12 @@
         VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
 
         //VerifierConfiguration conf = new DefaultVerifierConfiguration();
-        VerifierConfiguration conf = new VerifierConfigurationImpl();
+        VerifierConfiguration vconf = new VerifierConfigurationImpl();
 
-        conf.getVerifyingResources().put(ResourceFactory.newByteArrayResource(cons.getVerifierRule().getBytes()), ResourceType.DRL);
+        Constraint cons = new IntegerConstraint();
+        vconf.getVerifyingResources().put(ResourceFactory.newByteArrayResource(cons.getVerifierRule(conf).getBytes()), ResourceType.DRL);
 
-        Verifier verifier = vBuilder.newVerifier(conf);
+        Verifier verifier = vBuilder.newVerifier(vconf);
 
         verifier.addResourcesToVerify(ResourceFactory.newByteArrayResource(ruleToVerify.getBytes()),
                 ResourceType.DRL);
@@ -153,8 +152,7 @@
             counter++;
         }
 
-        Assert.assertEquals(2,
-                counter);
+        Assert.assertEquals(2, counter);
 
         verifier.dispose();
     }

Modified: labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/NotNullConstraintTest.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/NotNullConstraintTest.java	2010-03-30 19:14:06 UTC (rev 32310)
+++ labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/NotNullConstraintTest.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -1,10 +1,13 @@
 package org.drools.factconstraint;
 
 import java.util.Collection;
+
 import org.drools.builder.ResourceType;
-import org.drools.factconstraints.client.Constraint;
+import org.drools.factconstraint.server.Constraint;
+import org.drools.factconstraints.client.ConstraintConfiguration;
 import org.drools.factconstraints.client.ValidationResult;
-import org.drools.factconstraints.client.predefined.NotNullConstraint;
+import org.drools.factconstraints.client.config.SimpleConstraintConfigurationImpl;
+import org.drools.factconstraints.server.predefined.NotNullConstraint;
 import org.drools.io.ResourceFactory;
 import org.drools.verifier.Verifier;
 import org.drools.verifier.VerifierConfiguration;
@@ -25,46 +28,44 @@
  */
 public class NotNullConstraintTest {
 
+    private ConstraintConfiguration conf;
     private Constraint cons;
-
+    
     @Before
     public void setup() {
+        conf = new SimpleConstraintConfigurationImpl();
+        conf.setFactType("Person");
+        conf.setFieldName("name");
+        
         cons = new NotNullConstraint();
-        cons.setFactType("Person");
-        cons.setFieldName("name");
-        System.out.println("Validation Rule:\n" + cons.getVerifierRule() + "\n\n");
-
     }
 
     @Test
     public void testValidConstraint(){
-
-        ValidationResult result = cons.validate(new Object());
+    	
+        ValidationResult result = cons.validate(new Object(), conf);
         Assert.assertTrue(result.isSuccess());
 
-        result = cons.validate("");
+        result = cons.validate("", conf);
         Assert.assertTrue(result.isSuccess());
 
-        result = cons.validate("ABC");
+        result = cons.validate("ABC", conf);
         Assert.assertTrue(result.isSuccess());
 
-        result = cons.validate(new Long("12"));
+        result = cons.validate(new Long("12"), conf);
         Assert.assertTrue(result.isSuccess());
 
-        result = cons.validate(12L);
+        result = cons.validate(12L, conf);
         Assert.assertTrue(result.isSuccess());
 
-        result = cons.validate(12.8);
+        result = cons.validate(12.8, conf);
         Assert.assertTrue(result.isSuccess());
-
-
-
     }
 
     @Test
     public void testInvalidConstraint(){
 
-        ValidationResult result = cons.validate(null);
+        ValidationResult result = cons.validate(null, conf);
         Assert.assertFalse(result.isSuccess());
         System.out.println("Message: "+result.getMessage());
 
@@ -104,12 +105,11 @@
 
         VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
 
-        //VerifierConfiguration conf = new DefaultVerifierConfiguration();
-        VerifierConfiguration conf = new VerifierConfigurationImpl();
+        VerifierConfiguration vconf = new VerifierConfigurationImpl();
 
-        conf.getVerifyingResources().put(ResourceFactory.newByteArrayResource(cons.getVerifierRule().getBytes()), ResourceType.DRL);
+        vconf.getVerifyingResources().put(ResourceFactory.newByteArrayResource(cons.getVerifierRule(this.conf).getBytes()), ResourceType.DRL);
 
-        Verifier verifier = vBuilder.newVerifier(conf);
+        Verifier verifier = vBuilder.newVerifier(vconf);
 
         verifier.addResourcesToVerify(ResourceFactory.newByteArrayResource(ruleToVerify.getBytes()),
                 ResourceType.DRL);

Modified: labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/RangeConstraintSingleOperatorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/RangeConstraintSingleOperatorTest.java	2010-03-30 19:14:06 UTC (rev 32310)
+++ labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/RangeConstraintSingleOperatorTest.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -1,9 +1,12 @@
 package org.drools.factconstraint;
 
 import java.util.Collection;
+
 import org.drools.builder.ResourceType;
-import org.drools.factconstraints.client.Constraint;
-import org.drools.factconstraints.client.predefined.RangeConstraint;
+import org.drools.factconstraint.server.Constraint;
+import org.drools.factconstraints.client.ConstraintConfiguration;
+import org.drools.factconstraints.client.config.SimpleConstraintConfigurationImpl;
+import org.drools.factconstraints.server.predefined.RangeConstraint;
 import org.drools.io.ResourceFactory;
 import org.drools.verifier.Verifier;
 import org.drools.verifier.VerifierConfiguration;
@@ -27,15 +30,14 @@
 
     private Verifier verifier;
     private Constraint cons;
+    private ConstraintConfiguration conf;
 
     @Before
     public void setup() {
         cons = new RangeConstraint();
-        cons.setFactType("Person");
-        cons.setFieldName("age");
-
-        System.out.println("Validation Rule:\n" + cons.getVerifierRule() + "\n\n");
-
+        conf = new SimpleConstraintConfigurationImpl();
+        conf.setFactType("Person");
+        conf.setFieldName("age");
     }
 
     @After
@@ -49,9 +51,9 @@
     public void testEq() {
 
         //age constraint
-        cons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MIN, "0");
-        cons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MAX, "120");
-        System.out.println("Validation Rule:\n" + cons.getVerifierRule() + "\n\n");
+        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 rulesToVerify = "";
@@ -98,13 +100,11 @@
     public void testNotEq() {
 
         //age constraint
-        cons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MIN, "0");
-        cons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MAX, "120");
-        System.out.println("Validation Rule:\n" + cons.getVerifierRule() + "\n\n");
+        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 rulesToVerify = "";
-        int fail = 0;
         int warning = 0;
 
         //FAIL
@@ -148,11 +148,11 @@
         VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
 
         //VerifierConfiguration conf = new DefaultVerifierConfiguration();
-        VerifierConfiguration conf = new VerifierConfigurationImpl();
+        VerifierConfiguration vconf = new VerifierConfigurationImpl();
 
-        conf.getVerifyingResources().put(ResourceFactory.newByteArrayResource(cons.getVerifierRule().getBytes()), ResourceType.DRL);
+        vconf.getVerifyingResources().put(ResourceFactory.newByteArrayResource(cons.getVerifierRule(this.conf).getBytes()), ResourceType.DRL);
 
-        verifier = vBuilder.newVerifier(conf);
+        verifier = vBuilder.newVerifier(vconf);
 
         verifier.addResourcesToVerify(ResourceFactory.newByteArrayResource(rulesToVerify.getBytes()),
                 ResourceType.DRL);

Modified: labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/RangeConstraintTest.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/RangeConstraintTest.java	2010-03-30 19:14:06 UTC (rev 32310)
+++ labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/RangeConstraintTest.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -1,10 +1,13 @@
 package org.drools.factconstraint;
 
 import java.util.Collection;
+
 import org.drools.builder.ResourceType;
-import org.drools.factconstraints.client.Constraint;
+import org.drools.factconstraint.server.Constraint;
+import org.drools.factconstraints.client.ConstraintConfiguration;
 import org.drools.factconstraints.client.ValidationResult;
-import org.drools.factconstraints.client.predefined.RangeConstraint;
+import org.drools.factconstraints.client.config.SimpleConstraintConfigurationImpl;
+import org.drools.factconstraints.server.predefined.RangeConstraint;
 import org.drools.io.ResourceFactory;
 import org.drools.verifier.Verifier;
 import org.drools.verifier.VerifierConfiguration;
@@ -26,39 +29,38 @@
 public class RangeConstraintTest {
 
     private Constraint cons;
+    private ConstraintConfiguration conf;
 
     @Before
     public void setup() {
         cons = new RangeConstraint();
-        cons.setFactType("Person");
-        cons.setFieldName("age");
-
-        System.out.println("Validation Rule:\n" + cons.getVerifierRule() + "\n\n");
-
+        conf = new SimpleConstraintConfigurationImpl();
+        conf.setFactType("Person");
+        conf.setFieldName("age");
     }
 
     @Test
     public void testValidConstraint(){
 
-        cons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MIN, "-0.5");
-        cons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MAX, "100");
+        conf.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MIN, "-0.5");
+        conf.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MAX, "100");
         
-        ValidationResult result = cons.validate(12);
+        ValidationResult result = cons.validate(12, conf);
         Assert.assertTrue(result.isSuccess());
 
-        result = cons.validate(new Integer("12"));
+        result = cons.validate(new Integer("12"), conf);
         Assert.assertTrue(result.isSuccess());
 
-        result = cons.validate("12");
+        result = cons.validate("12", conf);
         Assert.assertTrue(result.isSuccess());
 
-        result = cons.validate(0.6);
+        result = cons.validate(0.6, conf);
         Assert.assertTrue(result.isSuccess());
 
-        result = cons.validate(new Float("-0.3"));
+        result = cons.validate(new Float("-0.3"), conf);
         Assert.assertTrue(result.isSuccess());
 
-        result = cons.validate("90.76");
+        result = cons.validate("90.76", conf);
         Assert.assertTrue(result.isSuccess());
 
     }
@@ -66,34 +68,34 @@
     @Test
     public void testInvalidConstraint(){
 
-        cons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MIN, "-0.5");
-        cons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MAX, "100");
+        conf.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MIN, "-0.5");
+        conf.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MAX, "100");
 
-        ValidationResult result = cons.validate(new Object());
+        ValidationResult result = cons.validate(new Object(), conf);
         Assert.assertFalse(result.isSuccess());
         System.out.println("Message: "+result.getMessage());
 
-        result = cons.validate(null);
+        result = cons.validate(null, conf);
         Assert.assertFalse(result.isSuccess());
         System.out.println("Message: "+result.getMessage());
 
-        result = cons.validate("");
+        result = cons.validate("", conf);
         Assert.assertFalse(result.isSuccess());
         System.out.println("Message: "+result.getMessage());
 
-        result = cons.validate("ABC");
+        result = cons.validate("ABC", conf);
         Assert.assertFalse(result.isSuccess());
         System.out.println("Message: "+result.getMessage());
 
-        result = cons.validate(new Long("-100"));
+        result = cons.validate(new Long("-100"), conf);
         Assert.assertFalse(result.isSuccess());
         System.out.println("Message: "+result.getMessage());
 
-        result = cons.validate(-0.5);
+        result = cons.validate(-0.5, conf);
         Assert.assertFalse(result.isSuccess());
         System.out.println("Message: "+result.getMessage());
 
-        result = cons.validate(100);
+        result = cons.validate(100, conf);
         Assert.assertFalse(result.isSuccess());
         System.out.println("Message: "+result.getMessage());
 
@@ -104,18 +106,18 @@
     public void testUsingVerifier() {
 
         //age constraint
-        cons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MIN, "0");
-        cons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MAX, "120");
-        System.out.println("Validation Rule:\n" + cons.getVerifierRule() + "\n\n");
+        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");
 
         //salary constraint
-        Constraint salaryCons = new RangeConstraint();
+        ConstraintConfiguration salaryCons = new SimpleConstraintConfigurationImpl();
         salaryCons.setFactType("Person");
         salaryCons.setFieldName("salary");
         salaryCons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MIN, "0");
         salaryCons.setArgumentValue(RangeConstraint.RANGE_CONSTRAINT_MAX, "1000.6");
 
-        System.out.println("Validation Rule:\n" + salaryCons.getVerifierRule() + "\n\n");
+        System.out.println("Validation Rule:\n" + cons.getVerifierRule(salaryCons) + "\n\n");
 
 
         String ruleToVerify = "";
@@ -228,13 +230,12 @@
 
         VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
 
-        //VerifierConfiguration conf = new DefaultVerifierConfiguration();
-        VerifierConfiguration conf = new VerifierConfigurationImpl();
+        VerifierConfiguration vconf = new VerifierConfigurationImpl();
 
-        conf.getVerifyingResources().put(ResourceFactory.newByteArrayResource(cons.getVerifierRule().getBytes()), ResourceType.DRL);
-        conf.getVerifyingResources().put(ResourceFactory.newByteArrayResource(salaryCons.getVerifierRule().getBytes()), ResourceType.DRL);
+        vconf.getVerifyingResources().put(ResourceFactory.newByteArrayResource(cons.getVerifierRule(this.conf).getBytes()), ResourceType.DRL);
+        vconf.getVerifyingResources().put(ResourceFactory.newByteArrayResource(cons.getVerifierRule(salaryCons).getBytes()), ResourceType.DRL);
 
-        Verifier verifier = vBuilder.newVerifier(conf);
+        Verifier verifier = vBuilder.newVerifier(vconf);
 
         verifier.addResourcesToVerify(ResourceFactory.newByteArrayResource(ruleToVerify.getBytes()),
                 ResourceType.DRL);

Modified: labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/helper/ConstraintsConstrainerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/helper/ConstraintsConstrainerTest.java	2010-03-30 19:14:06 UTC (rev 32310)
+++ labs/jbossrules/trunk/drools-factconstraint/src/test/java/org/drools/factconstraint/helper/ConstraintsConstrainerTest.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -1,13 +1,15 @@
 package org.drools.factconstraint.helper;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
 import java.util.LinkedList;
 
-import org.drools.factconstraints.client.Constraint;
+import org.drools.factconstraints.client.ConstraintConfiguration;
+import org.drools.factconstraints.client.config.SimpleConstraintConfigurationImpl;
 import org.drools.factconstraints.client.helper.ConstraintsContainer;
-import org.drools.factconstraints.client.predefined.IntegerConstraint;
-import org.drools.factconstraints.client.predefined.NotNullConstraint;
-
-import static org.junit.Assert.*;
 import org.junit.Test;
 
 
@@ -15,33 +17,33 @@
 
 	@Test
 	public void test() {
-		LinkedList<Constraint> list = new LinkedList<Constraint>();
-		Constraint cons = new IntegerConstraint();
-        cons.setFactType("Person");
-        cons.setFieldName("age");
+		LinkedList<ConstraintConfiguration> list = new LinkedList<ConstraintConfiguration>();
+		ConstraintConfiguration conf = new SimpleConstraintConfigurationImpl();
+        conf.setFactType("Person");
+        conf.setFieldName("age");
         
-        list.add(cons);
+        list.add(conf);
 		ConstraintsContainer cc = new ConstraintsContainer(list);
 		assertTrue(cc.hasConstraints("Person"));
 		assertFalse(cc.hasConstraints("Person3"));
 		
 		assertEquals(1, cc.getConstraints("Person").size());
 		
-		cons = new NotNullConstraint();
-        cons.setFactType("Person");
-        cons.setFieldName("name");
+		conf = new SimpleConstraintConfigurationImpl();
+        conf.setFactType("Person");
+        conf.setFieldName("name");
         
-        cc.addConstraint(cons);
+        cc.addConstraint(conf);
         assertEquals(2, cc.getConstraints("Person").size());
         assertEquals(1, cc.getConstraints("Person", "age").size());
-        assertSame(cons, cc.getConstraints("Person", "name").get(0));
+        assertSame(conf, cc.getConstraints("Person", "name").get(0));
         assertEquals(0, cc.getConstraints("Person", "toothCount").size());
         
-        cons = new NotNullConstraint();
-        cons.setFactType("Pet");
-        cons.setFieldName("name");
+        conf = new SimpleConstraintConfigurationImpl();
+        conf.setFactType("Pet");
+        conf.setFieldName("name");
 		
-        cc.addConstraint(cons);
+        cc.addConstraint(conf);
         
         assertEquals(1, cc.getConstraints("Pet").size());
         

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/WorkingSetManager.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/WorkingSetManager.java	2010-03-30 19:14:06 UTC (rev 32310)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/packages/WorkingSetManager.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -1,6 +1,5 @@
 package org.drools.guvnor.client.packages;
 
-import com.google.gwt.user.client.Command;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -8,13 +7,15 @@
 import java.util.Map;
 import java.util.Set;
 
-import org.drools.factconstraints.client.Constraint;
+import org.drools.factconstraints.client.ConstraintConfiguration;
 import org.drools.guvnor.client.common.GenericCallback;
 import org.drools.guvnor.client.modeldriven.FactTypeFilter;
 import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
 import org.drools.guvnor.client.rpc.RuleAsset;
 import org.drools.guvnor.client.rpc.WorkingSetConfigData;
 
+import com.google.gwt.user.client.Command;
+
 /**
  *
  * @author esteban.aliverti at gmail.com
@@ -80,7 +81,6 @@
             }
         };
 
-
         if (wss == null || wss.isEmpty()) {
             //if no WS, we refresh the SCE (release any filter)
             SuggestionCompletionCache.getInstance().refreshPackage(packageName, cmd);
@@ -178,7 +178,6 @@
         return false;
     }
 
-
     /**
      * Returns a Set of Constraints for a Fact Type's field. This method uses
      * the active Working Sets of the package in order to get the Constraints.
@@ -187,17 +186,17 @@
      * @param fieldName the field name
      * @return a Set of Constraints for a Fact Type's field.
      */
-    public Set<Constraint> getFieldContraints(String packageName, String factType, String fieldName ){
+    public Set<ConstraintConfiguration> getFieldContraints(String packageName, String factType, String fieldName ){
 
-        Set<Constraint> result = new HashSet<Constraint>();
+        Set<ConstraintConfiguration> result = new HashSet<ConstraintConfiguration>();
 
         //TODO: Change this with a centralized way of Constraint Administration.
         Set<RuleAsset> activeAssets = this.getActiveAssets(packageName);
         if (activeAssets != null){
             for (RuleAsset ruleAsset : activeAssets) {
-                List<Constraint> constraints = ((WorkingSetConfigData)ruleAsset.content).constraints;
+                List<ConstraintConfiguration> constraints = ((WorkingSetConfigData)ruleAsset.content).constraints;
                 if (constraints != null) {
-                	for (Constraint constraint : constraints) {
+                	for (ConstraintConfiguration constraint : constraints) {
                 		if (constraint.getFactType().equals(factType) && constraint.getFieldName().equals(fieldName)){
                 			result.add(constraint);
                 		}

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/WorkingSetConfigData.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/WorkingSetConfigData.java	2010-03-30 19:14:06 UTC (rev 32310)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/WorkingSetConfigData.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -1,20 +1,21 @@
 package org.drools.guvnor.client.rpc;
 
+import java.io.Serializable;
 import java.util.List;
 
-import org.drools.factconstraints.client.Constraint;
+import org.drools.factconstraints.client.ConstraintConfiguration;
 import org.drools.guvnor.client.modeldriven.brl.PortableObject;
 
-import com.google.gwt.user.client.rpc.IsSerializable;
-
 /**
  * 
  * @author bauna
  */
-public class WorkingSetConfigData implements PortableObject, IsSerializable {
+public class WorkingSetConfigData implements PortableObject, Serializable {
+	private static final long serialVersionUID = 501L;
+
 	public String name;
 	public String description;
-	public List<Constraint> constraints;
+	public List<ConstraintConfiguration> constraints;
 	
 	public String[] validFacts;
 	public WorkingSetConfigData[] workingSets;	

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/ConstraintEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/ConstraintEditor.java	2010-03-30 19:14:06 UTC (rev 32310)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/ConstraintEditor.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -6,7 +6,7 @@
 import java.util.Map;
 import java.util.MissingResourceException;
 
-import org.drools.factconstraints.client.Constraint;
+import org.drools.factconstraints.client.ConstraintConfiguration;
 import org.drools.guvnor.client.messages.Constants;
 
 import com.google.gwt.core.client.GWT;
@@ -19,16 +19,16 @@
 
 public class ConstraintEditor extends Composite {
 	private Constants constants =  GWT.create(Constants.class);
-	private Constraint constraint;
+	private ConstraintConfiguration config;
 
-	public ConstraintEditor(Constraint constraint) {
-		this.constraint = constraint;
+	public ConstraintEditor(ConstraintConfiguration config) {
+		this.config = config;
 		
-		Grid confGrid = new Grid(constraint.getArgumentKeys().size(), 2);
+		Grid confGrid = new Grid(config.getArgumentKeys().size(), 2);
 		
 		ArrayList<String> list = new ArrayList<String>();
 		Map<String, String> argI18N = new HashMap<String, String>();
-		for (String arg : constraint.getArgumentKeys()) {
+		for (String arg : config.getArgumentKeys()) {
 			String i18n = getI18NText(arg);
 			list.add(i18n);
 			argI18N.put(i18n, arg);
@@ -38,13 +38,13 @@
 		int row = 0;
 		for (String arg : list) {
 			TextBox argTB = new TextBox();
-			argTB.setText(getConstraint().getArgumentValue(arg).toString());
+			argTB.setText(getConstraintConfiguration().getArgumentValue(arg).toString());
 			argTB.setName(argI18N.get(arg));
 			argTB.setTitle(arg);
 			argTB.addChangeListener(new ChangeListener() {
 				public void onChange(Widget sender) {
 					TextBox argTB = (TextBox) sender;
-					getConstraint().setArgumentValue(argTB.getName(), argTB.getText());
+					getConstraintConfiguration().setArgumentValue(argTB.getName(), argTB.getText());
 				}
 			});
 			
@@ -64,15 +64,15 @@
 		}
 	}
 
-	public Constraint getConstraint() {
-		return constraint;
+	public ConstraintConfiguration getConstraintConfiguration() {
+		return config;
 	}
 
-	public void setConstraint(Constraint constraint) {
-		this.constraint = constraint;
+	public void setConstraintConfiguration(ConstraintConfiguration config) {
+		this.config = config;
 	}
 	
 	public String getConstraintName() {
-		return getConstraint().getConstraintName();
+		return getConstraintConfiguration().getConstraintName();
 	}
  }

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/WorkingSetEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/WorkingSetEditor.java	2010-03-30 19:14:06 UTC (rev 32310)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/WorkingSetEditor.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -2,17 +2,15 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import org.drools.factconstraints.client.Constraint;
+import org.drools.factconstraints.client.ConstraintConfiguration;
 import org.drools.factconstraints.client.helper.ConstraintsContainer;
-import org.drools.factconstraints.client.predefined.IntegerConstraint;
-import org.drools.factconstraints.client.predefined.NotNullConstraint;
-import org.drools.factconstraints.client.predefined.RangeConstraint;
 import org.drools.guvnor.client.common.AssetFormats;
 import org.drools.guvnor.client.common.FormStylePopup;
 import org.drools.guvnor.client.common.ImageButton;
@@ -54,7 +52,7 @@
 	private ListBox fieldsCombo = new ListBox(false);
 	private ListBox constraintsCombo = new ListBox(false);
 	private VerticalPanel vpConstraintConf = new VerticalPanel();
-	private Map<String, Constraint> contraintsMap = new HashMap<String, Constraint>();
+	private Map<String, ConstraintConfiguration> contraintsMap = new HashMap<String, ConstraintConfiguration>();
 	
 	public WorkingSetEditor(RuleAsset asset) {
 		if (!AssetFormats.WORKING_SET.equals(asset.metaData.format)) {
@@ -92,9 +90,6 @@
 		initWidget(tPanel);
 	}
 
-//	private int lastSelectedFact = -1;
-//	private int lastSelectedField = -1;
-//	private int lastSelectedConstraint = -1;
 	private Widget buildFactsConstraintsEditor(TabPanel tPanel) {
 		factsCombo.setVisibleItemCount(1);
 		fieldsCombo.setVisibleItemCount(1);
@@ -183,7 +178,7 @@
 
 	protected void removeConstraint() {
 		if (constraintsCombo.getSelectedIndex() != -1) {
-			Constraint c = contraintsMap.get(constraintsCombo.getValue(constraintsCombo.getSelectedIndex()));
+			ConstraintConfiguration c = contraintsMap.get(constraintsCombo.getValue(constraintsCombo.getSelectedIndex()));
 			getConstraintsConstrainer().removeConstraint(c);
 		}
 		fillFieldConstrains();
@@ -196,7 +191,7 @@
 			return;
 		}
 		if (constraintsCombo.getSelectedIndex() != -1) {
-			Constraint c = contraintsMap.get(constraintsCombo.getValue(constraintsCombo.getSelectedIndex()));
+			ConstraintConfiguration c = contraintsMap.get(constraintsCombo.getValue(constraintsCombo.getSelectedIndex()));
 			ConstraintEditor editor = new ConstraintEditor(c);
 			vpConstraintConf.remove(vpConstraintConf.getWidgetCount() - 1);
 			vpConstraintConf.add(editor);
@@ -212,33 +207,28 @@
 
         addbutton.setTitle(constants.AddNewConstraint());
         
-        consDefsCombo.addItem("NotNull");
-        consDefsCombo.addItem("Range");
-        consDefsCombo.addItem("Integer");
+        List<String> names = new ArrayList<String>(ConstraintsContainer.getAllConfigurations().keySet());
+        Collections.sort(names);
+        for (String name : names) {
+        	consDefsCombo.addItem(name);	
+		}
         
         addbutton.addClickListener( new ClickListener() {
             public void onClick(Widget w) {
-            	String consDef = consDefsCombo.getItemText(consDefsCombo.getSelectedIndex());
-            	Constraint cons = null;
-            	if ("NotNull".equals(consDef)) {
-            		cons = new NotNullConstraint();
-            	} else if ("Range".equals(consDef)) {
-            		cons = new RangeConstraint();
-            	} else if ("Integer".equals(consDef)) {
-            		cons = new IntegerConstraint();
-            	}
-            	if (cons != null) {
+            	String name = consDefsCombo.getItemText(consDefsCombo.getSelectedIndex());
+            	ConstraintConfiguration config = ConstraintsContainer.getEmptyConfiguration(name);
+            	if (config != null) {
             		
             		String factName = factsCombo.getItemText(factsCombo.getSelectedIndex());
             		String fieldName = fieldsCombo.getItemText(fieldsCombo.getSelectedIndex());
-            		cons.setFactType(factName);
-            		cons.setFieldName(fieldName);
+            		config.setFactType(factName);
+            		config.setFieldName(fieldName);
             		if (((WorkingSetConfigData) workingSet.content).constraints == null) {
-            			((WorkingSetConfigData) workingSet.content).constraints = new ArrayList<Constraint>();
+            			((WorkingSetConfigData) workingSet.content).constraints = new ArrayList<ConstraintConfiguration>();
             		}
-            		((WorkingSetConfigData) workingSet.content).constraints.add(cons);
-            		constraintsCombo.addItem(cons.getConstraintName(), addContrainsMap(cons));
-            		getConstraintsConstrainer().addConstraint(cons);
+            		((WorkingSetConfigData) workingSet.content).constraints.add(config);
+            		constraintsCombo.addItem(config.getConstraintName(), addContrainsMap(config));
+            		getConstraintsConstrainer().addConstraint(config);
             		
             	}
             	pop.hide();
@@ -291,7 +281,7 @@
 			String factField = factsCombo.getItemText(factsCombo.getSelectedIndex());
 			constraintsCombo.clear();
 			contraintsMap.clear();
-			for (Constraint c : getConstraintsConstrainer().getConstraints(factField, fieldName)) {
+			for (ConstraintConfiguration c : getConstraintsConstrainer().getConstraints(factField, fieldName)) {
 				constraintsCombo.addItem(c.getConstraintName(), addContrainsMap(c));
 			}
 			vpConstraintConf.remove(vpConstraintConf.getWidgetCount() - 1);
@@ -300,7 +290,7 @@
 		showConstraintConfig();
 	}
 	
-	private String addContrainsMap(Constraint c) {
+	private String addContrainsMap(ConstraintConfiguration c) {
 		String id = "" + contraintsMap.size();
 		contraintsMap.put(id, c);
 		return id;

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java	2010-03-30 19:14:06 UTC (rev 32310)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java	2010-03-30 19:20:05 UTC (rev 32311)
@@ -59,7 +59,8 @@
 import org.drools.compiler.DrlParser;
 import org.drools.compiler.DroolsParserException;
 import org.drools.core.util.DroolsStreamUtils;
-import org.drools.factconstraints.client.Constraint;
+import org.drools.factconstraint.server.factory.ConstraintsFactory;
+import org.drools.factconstraints.client.ConstraintConfiguration;
 import org.drools.guvnor.client.common.AssetFormats;
 import org.drools.guvnor.client.common.Inbox;
 import org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine;
@@ -94,7 +95,6 @@
 import org.drools.guvnor.server.builder.ContentPackageAssembler;
 import org.drools.guvnor.server.contenthandler.ContentHandler;
 import org.drools.guvnor.server.contenthandler.ContentManager;
-import org.drools.guvnor.server.contenthandler.ICompilable;
 import org.drools.guvnor.server.contenthandler.IRuleAsset;
 import org.drools.guvnor.server.contenthandler.IValidating;
 import org.drools.guvnor.server.contenthandler.ModelContentHandler;
@@ -2847,8 +2847,8 @@
 			for (RuleAsset ws : workingSets) {
 				WorkingSetConfigData wsConfig = (WorkingSetConfigData) ws.content;
 				if (wsConfig.constraints != null) {
-					for (Constraint cons : wsConfig.constraints) {
-						constraintRules.add(cons.getVerifierRule());
+					for (ConstraintConfiguration config : wsConfig.constraints) {
+						constraintRules.add(ConstraintsFactory.getInstance().getVerifierRule(config));
 					}
 				}
 			}



More information about the jboss-svn-commits mailing list