[jboss-svn-commits] JBL Code SVN: r31939 - labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/main/java/org/drools/factconstraint.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Mar 4 10:23:13 EST 2010
Author: eaa
Date: 2010-03-04 10:23:13 -0500 (Thu, 04 Mar 2010)
New Revision: 31939
Modified:
labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/main/java/org/drools/factconstraint/DefaultConstraintImpl.java
Log:
Added project dependency to drools-verifier
Added test cases that use verifier.
Fixed available constraints to generate well-formed verifier's rules
Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/main/java/org/drools/factconstraint/DefaultConstraintImpl.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/main/java/org/drools/factconstraint/DefaultConstraintImpl.java 2010-03-04 14:15:56 UTC (rev 31938)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-factconstraint/src/main/java/org/drools/factconstraint/DefaultConstraintImpl.java 2010-03-04 15:23:13 UTC (rev 31939)
@@ -13,68 +13,121 @@
private String factType;
private String fieldName;
- private Map<String,Object> arguments = new HashMap<String, Object>();
+ private Map<String, Object> arguments = new HashMap<String, Object>();
+ protected String verifierPackageTemplate = "";
+ protected String verifierImportsTemplate = "";
+ protected String verifierGlobalsTemplate = "";
+ protected String verifierRuleNameTemplate = "";
+ protected String verifierRuleWhenTemplate = "";
+ protected String verifierFieldPatternTemplate = "";
+ protected String verifierRestrictiondPatternTemplate = "";
+ protected String verifierRuleThenTemplate = "";
+ protected String verifierActionTemplate = "";
+ protected String verifierRuleEndTemplate = "";
- private String verifierRuleTemplate;
+ /**
+ * Fills the rule's template sections. Subclasses of DefaultConstraintImpl
+ * can modify these templates, use the ${} or both.
+ */
+ public DefaultConstraintImpl() {
- public DefaultConstraintImpl(){
- this.verifierRuleTemplate = "";
- this.verifierRuleTemplate += "rule \"${ruleName}\"\n";
- this.verifierRuleTemplate += " when\n";
- this.verifierRuleTemplate += " $restriction :Restriction(\n";
- this.verifierRuleTemplate += " objectTypeName == \"${factType}\",\n";
- this.verifierRuleTemplate += " name == \"${fieldName}\",\n";
- this.verifierRuleTemplate += " ${constraints}\n";
- this.verifierRuleTemplate += " )\n";
- this.verifierRuleTemplate += " then\n";
- this.verifierRuleTemplate += " Map<String,String> impactedRules = new HashMap<String,String>();\n";
- this.verifierRuleTemplate += " impactedRules.put( $restriction.getRuleGuid(), $restriction.getRuleName());\n";
- this.verifierRuleTemplate += " result.add(new VerifierMessage(\n";
- this.verifierRuleTemplate += " impactedRules,\n";
- this.verifierRuleTemplate += " Severity.WARNING,\n";
- this.verifierRuleTemplate += " $restriction,\n";
- this.verifierRuleTemplate += " \"${message}\" ) );\n";
- this.verifierRuleTemplate += "end\n";
+ this.verifierPackageTemplate += "package org.drools.verifier.consequence\n";
+
+ this.verifierImportsTemplate += "import org.drools.verifier.components.*;\n";
+ this.verifierImportsTemplate += "import java.util.Map;\n";
+ this.verifierImportsTemplate += "import java.util.HashMap;\n";
+ this.verifierImportsTemplate += "import org.drools.verifier.report.components.VerifierMessage;\n";
+ this.verifierImportsTemplate += "import org.drools.verifier.data.VerifierReport;\n";
+ this.verifierImportsTemplate += "import org.drools.verifier.report.components.Severity;\n";
+ this.verifierImportsTemplate += "import org.drools.verifier.report.components.MessageType;\n";
+
+
+ this.verifierGlobalsTemplate += "global VerifierReport result;\n";
+
+
+ this.verifierRuleNameTemplate += "rule \"${ruleName}\"\n";
+
+ this.verifierRuleWhenTemplate += " when\n";
+
+ this.verifierFieldPatternTemplate += " $field :Field(\n";
+ this.verifierFieldPatternTemplate += " objectTypeName == \"${factType}\",\n";
+ this.verifierFieldPatternTemplate += " name == \"${fieldName}\"\n";
+ this.verifierFieldPatternTemplate += " )\n";
+
+ this.verifierRestrictiondPatternTemplate += " $restriction :LiteralRestriction(\n";
+ this.verifierRestrictiondPatternTemplate += " fieldGuid == $field.guid,\n";
+ this.verifierRestrictiondPatternTemplate += " ${constraints}\n";
+ this.verifierRestrictiondPatternTemplate += " )\n";
+
+ this.verifierRuleThenTemplate += " then\n";
+
+ this.verifierActionTemplate += " Map<String,String> impactedRules = new HashMap<String,String>();\n";
+ this.verifierActionTemplate += " impactedRules.put( $restriction.getRuleGuid(), $restriction.getRuleName());\n";
+ this.verifierActionTemplate += " result.add(new VerifierMessage(\n";
+ //this.verifierActionTemplate += " impactedRules,\n";
+ this.verifierActionTemplate += " Severity.ERROR,\n";
+ this.verifierActionTemplate += " MessageType.NOT_SPECIFIED,\n";
+ this.verifierActionTemplate += " $restriction,\n";
+ this.verifierActionTemplate += " \"${message}\" ) );\n";
+
+ //this.verifierActionTemplate += " System.out.println(\"doubleValue= \"+$restriction.getDoubleValue());\n";
+ //this.verifierActionTemplate += " System.out.println(\"intValue= \"+$restriction.getIntValue());\n";
+
+ this.verifierRuleEndTemplate += "end\n";
}
- protected String createVerifierRuleTemplate(String ruleName, List<String> constraints, String message){
- if (ruleName == null){
- ruleName = "Constraint_rule_";
- }
- ruleName+=UUID.randomUUID().toString();
+ private String concatRule() {
+ StringBuilder rule = new StringBuilder();
- if (constraints == null || constraints.isEmpty()){
- //if there are no constraints, no rule should be generated.
- return null;
- }
+ rule.append(verifierPackageTemplate);
+ rule.append(verifierImportsTemplate);
+ rule.append(verifierGlobalsTemplate);
+ rule.append(verifierRuleNameTemplate);
+ rule.append(verifierRuleWhenTemplate);
+ rule.append(verifierFieldPatternTemplate);
+ rule.append(verifierRestrictiondPatternTemplate);
+ rule.append(verifierRuleThenTemplate);
+ rule.append(verifierActionTemplate);
+ rule.append(verifierRuleEndTemplate);
- String constraintsTxt = "";
- String delimiter = "";
- for (String c : constraints) {
- constraintsTxt+=delimiter+c+"\n";
- if (delimiter.equals("")){
- delimiter = ",";
- }
+ return rule.toString();
+
+ }
+
+ protected String createVerifierRuleTemplate(String ruleName, List<String> constraints, String message) {
+ if (ruleName == null) {
+ ruleName = "Constraint_rule_";
}
+ ruleName += UUID.randomUUID().toString();
- String rule = this.verifierRuleTemplate.replace("${ruleName}", ruleName);
+ String rule = this.concatRule().replace("${ruleName}", ruleName);
rule = rule.replace("${factType}", this.getFactType());
rule = rule.replace("${fieldName}", this.getFieldName());
- rule = rule.replace("${constraints}", constraintsTxt);
- rule = rule.replace("${message}", (message == null || message.equals(""))?"Invalid Value":message);
+ 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.");
+ 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.");
+ if (value == null) {
+ throw new ArgumentNotSetException("The argument " + key + " is null.");
}
return value;
@@ -118,6 +171,4 @@
public String getVerifierRule() {
return null;
}
-
-
}
More information about the jboss-svn-commits
mailing list