[jboss-svn-commits] JBL Code SVN: r18282 - in labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common: swingui and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Feb 3 09:40:54 EST 2008
Author: ge0ffrey
Date: 2008-02-03 09:40:52 -0500 (Sun, 03 Feb 2008)
New Revision: 18282
Added:
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/business/ScoreDetail.java
Modified:
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/business/SolutionBusiness.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/swingui/ConstraintScoreMapDialog.java
Log:
scoreDetail now shows numer of occurences too
Added: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/business/ScoreDetail.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/business/ScoreDetail.java (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/business/ScoreDetail.java 2008-02-03 14:40:52 UTC (rev 18282)
@@ -0,0 +1,93 @@
+package org.drools.solver.examples.common.business;
+
+import org.apache.commons.lang.builder.CompareToBuilder;
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.drools.solver.core.score.constraint.ConstraintType;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class ScoreDetail implements Comparable<ScoreDetail> {
+
+ private String ruleId;
+ private ConstraintType constraintType;
+ private double scoreTotal = 0.0;
+ private int occurenceSize = 0;
+
+ public ScoreDetail(String ruleId, ConstraintType constraintType) {
+ this.ruleId = ruleId;
+ this.constraintType = constraintType;
+ }
+
+ public String getRuleId() {
+ return ruleId;
+ }
+
+ public void setRuleId(String ruleId) {
+ this.ruleId = ruleId;
+ }
+
+ public ConstraintType getConstraintType() {
+ return constraintType;
+ }
+
+ public void setConstraintType(ConstraintType constraintType) {
+ this.constraintType = constraintType;
+ }
+
+ public double getScoreTotal() {
+ return scoreTotal;
+ }
+
+ public void setScoreTotal(double scoreTotal) {
+ this.scoreTotal = scoreTotal;
+ }
+
+ public int getOccurenceSize() {
+ return occurenceSize;
+ }
+
+ public void setOccurenceSize(int occurenceSize) {
+ this.occurenceSize = occurenceSize;
+ }
+
+
+ public void addOccurenceScore(double occurenceScore) {
+ scoreTotal += occurenceScore;
+ occurenceSize++;
+ }
+
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ } else if (o instanceof ScoreDetail) {
+ ScoreDetail other = (ScoreDetail) o;
+ return new EqualsBuilder()
+ .append(ruleId, other.ruleId)
+ .append(constraintType, other.constraintType)
+ .isEquals();
+ } else {
+ return false;
+ }
+ }
+
+ public int hashCode() {
+ return new HashCodeBuilder()
+ .append(ruleId)
+ .append(constraintType)
+ .toHashCode();
+ }
+
+ public int compareTo(ScoreDetail other) {
+ return new CompareToBuilder()
+ .append(constraintType, other.constraintType)
+ .append(ruleId, other.ruleId)
+ .toComparison();
+ }
+
+ public String toString() {
+ return ruleId + "/" + constraintType + "=" + scoreTotal + "(" + occurenceSize + ")";
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/business/SolutionBusiness.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/business/SolutionBusiness.java 2008-02-03 11:49:57 UTC (rev 18281)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/business/SolutionBusiness.java 2008-02-03 14:40:52 UTC (rev 18282)
@@ -2,12 +2,13 @@
import java.io.File;
import java.io.FileFilter;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.TreeMap;
import org.drools.StatefulSession;
import org.drools.base.ClassObjectFilter;
@@ -89,32 +90,21 @@
return evaluationHandler.fireAllRulesAndCalculateStepScore();
}
- public Map<String, Double> getConstraintScoreMap() {
- Map<String, Double> constraintScoreMap = new TreeMap<String, Double>();
+ public List<ScoreDetail> getConstraintScoreMap() {
+ Map<String, ScoreDetail> scoreDetailMap = new HashMap<String, ScoreDetail>();
StatefulSession statefulSession = evaluationHandler.getStatefulSession();
if (statefulSession == null) {
- return Collections.emptyMap();
+ return Collections.emptyList();
}
Iterator<ConstraintOccurrence> it = statefulSession.iterateObjects(
new ClassObjectFilter(ConstraintOccurrence.class));
- for (; it.hasNext();) {
+ while (it.hasNext()) {
ConstraintOccurrence occurrence = it.next();
- String extendedConstraintId;
- switch (occurrence.getConstraintType()) {
- case NEGATIVE_HARD:
- extendedConstraintId = "HARD";
- break;
- case NEGATIVE_SOFT:
- extendedConstraintId = "SOFT";
- break;
- case POSITIVE:
- extendedConstraintId = "POSITIVE";
- break;
- default:
- throw new IllegalStateException("Unknown ConstraintType: " + occurrence.getConstraintType());
+ ScoreDetail scoreDetail = scoreDetailMap.get(occurrence.getRuleId());
+ if (scoreDetail == null) {
+ scoreDetail = new ScoreDetail(occurrence.getRuleId(), occurrence.getConstraintType());
+ scoreDetailMap.put(occurrence.getRuleId(), scoreDetail);
}
- extendedConstraintId += " " + occurrence.getRuleId();
- Double constraintScore = constraintScoreMap.get(extendedConstraintId);
double occurenceScore;
if (occurrence instanceof IntConstraintOccurrence) {
occurenceScore = ((IntConstraintOccurrence) occurrence).getWeight();
@@ -123,17 +113,14 @@
} else if (occurrence instanceof UnweightedConstraintOccurrence) {
occurenceScore = 1.0;
} else {
- throw new IllegalStateException("Cannot determine constraintScore of ConstraintOccurence class: "
+ throw new IllegalStateException("Cannot determine occurenceScore of ConstraintOccurence class: "
+ occurrence.getClass());
}
- if (constraintScore == null) {
- constraintScore = occurenceScore;
- } else {
- constraintScore += occurenceScore;
- }
- constraintScoreMap.put(extendedConstraintId, constraintScore);
+ scoreDetail.addOccurenceScore(occurenceScore);
}
- return constraintScoreMap;
+ List<ScoreDetail> scoreDetailList = new ArrayList<ScoreDetail>(scoreDetailMap.values());
+ Collections.sort(scoreDetailList);
+ return scoreDetailList;
}
public void load(File file) {
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/swingui/ConstraintScoreMapDialog.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/swingui/ConstraintScoreMapDialog.java 2008-02-03 11:49:57 UTC (rev 18281)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/swingui/ConstraintScoreMapDialog.java 2008-02-03 14:40:52 UTC (rev 18282)
@@ -1,13 +1,14 @@
package org.drools.solver.examples.common.swingui;
import java.awt.GridLayout;
-import java.util.Map;
+import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
+import org.drools.solver.examples.common.business.ScoreDetail;
import org.drools.solver.examples.common.business.SolutionBusiness;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -33,12 +34,15 @@
public void resetContentPanel() {
JPanel panel = new JPanel(new GridLayout(0, 2));
- Map<String, Double> scoreDetails = solutionBusiness.getConstraintScoreMap();
- for (Map.Entry<String, Double> scoreDetail : scoreDetails.entrySet()) {
- JLabel constraintIdLabel = new JLabel(scoreDetail.getKey());
+ List<ScoreDetail> scoreDetailList = solutionBusiness.getConstraintScoreMap();
+ for (ScoreDetail scoreDetail : scoreDetailList) {
+ JLabel constraintIdLabel = new JLabel(
+ scoreDetail.getRuleId() + " (" + scoreDetail.getConstraintType() + ")");
constraintIdLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5));
panel.add(constraintIdLabel);
- JLabel constraintScoreLabel = new JLabel(WorkflowFrame.NUMBER_FORMAT.format(scoreDetail.getValue()));
+ JLabel constraintScoreLabel = new JLabel(
+ WorkflowFrame.NUMBER_FORMAT.format(scoreDetail.getScoreTotal())
+ + " (" + WorkflowFrame.NUMBER_FORMAT.format(scoreDetail.getOccurenceSize()) + ")");
panel.add(constraintScoreLabel);
}
panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
More information about the jboss-svn-commits
mailing list