From: <jbo...@li...> - 2006-01-11 00:33:49
|
Author: mar...@jb... Date: 2006-01-10 19:33:23 -0500 (Tue, 10 Jan 2006) New Revision: 2060 Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/conflict/ComplexityConflictResolver.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/conflict/SimplicityConflictResolver.java trunk/labs/jbossrules/drools-core/src/main/java/org/drools/rule/Rule.java Log: -Make Rule return its specifity - the number of constraints. Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/conflict/ComplexityConflictResolver.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/conflict/ComplexityConflictResolver.java 2006-01-10 23:22:44 UTC (rev 2059) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/conflict/ComplexityConflictResolver.java 2006-01-11 00:33:23 UTC (rev 2060) @@ -96,6 +96,6 @@ */ public int compare(Activation lhs, Activation rhs) { - return rhs.getRule().getPatternSize() - lhs.getRule().getPatternSize(); + return rhs.getRule().getSpecifity() - lhs.getRule().getSpecifity(); } } Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/conflict/SimplicityConflictResolver.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/conflict/SimplicityConflictResolver.java 2006-01-10 23:22:44 UTC (rev 2059) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/conflict/SimplicityConflictResolver.java 2006-01-11 00:33:23 UTC (rev 2060) @@ -96,6 +96,6 @@ */ public int compare(Activation lhs, Activation rhs) { - return lhs.getRule().getPatternSize() - rhs.getRule().getPatternSize(); + return lhs.getRule().getSpecifity() - rhs.getRule().getSpecifity(); } } Modified: trunk/labs/jbossrules/drools-core/src/main/java/org/drools/rule/Rule.java =================================================================== --- trunk/labs/jbossrules/drools-core/src/main/java/org/drools/rule/Rule.java 2006-01-10 23:22:44 UTC (rev 2059) +++ trunk/labs/jbossrules/drools-core/src/main/java/org/drools/rule/Rule.java 2006-01-11 00:33:23 UTC (rev 2060) @@ -451,24 +451,33 @@ return LogicTransformer.getInstance().transform( this.headPattern ); } - public int getPatternSize() { - // return this.conditions.size(); - return determinePatternSize( this.headPattern ); + public int getSpecifity() { + return getSpecifity( this.headPattern ); } - private int determinePatternSize(ConditionalElement ce) { - Object object = null; - Iterator it = ce.getChildren().iterator(); - int size = 0; - while ( it.hasNext() ) { - object = it.next(); - if ( object instanceof ConditionalElement ) { - size++; - size += determinePatternSize( (ConditionalElement) object ); - } + private int getSpecifity(ConditionalElement ce) { + int specificity = 0; + for ( Iterator it = ce.getChildren().iterator(); it.hasNext(); ) { + Object object = it.next(); + if ( object instanceof Column ) { + specificity += getSpecifity((Column) object); + } else if ( object instanceof ConditionalElement ) { + specificity += getSpecifity((ConditionalElement) object); + } } - return size; + return specificity; } + + private int getSpecifity(Column column) { + int specificity = 0; + for (Iterator it = column.getConstraints().iterator(); it.hasNext(); ) { + if (!(it.next() instanceof Binding)) { + specificity++; + } + } + + return specificity; + } /** * Set the <code>Consequence</code> that is associated with the successful |