[jboss-svn-commits] JBL Code SVN: r33019 - in labs/jbossrules/trunk/drools-planner/drools-planner-examples/src: main/java/org/drools/planner/examples/nurserostering/persistence and 7 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun May 23 11:13:06 EDT 2010
Author: ge0ffrey
Date: 2010-05-23 11:13:05 -0400 (Sun, 23 May 2010)
New Revision: 33019
Added:
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Assignment.java
Removed:
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/EmployeeAssignment.java
Modified:
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/NurseRoster.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/persistence/NurseRosteringSolutionExporter.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/EmployeeAssignmentSwitchMove.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/EmployeeChangeMove.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/NurseRosterMoveHelper.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/factory/EmployeeAssignmentSwitchMoveFactory.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/factory/EmployeeChangeMoveFactory.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/solution/initializer/NurseRosteringStartingSolutionInitializer.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/swingui/NurseRosteringPanel.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/java/org/drools/planner/examples/nurserostering/solver/NurseRosteringScoreRulesTest.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/resources/org/drools/planner/examples/nurserostering/data/testNurseRosteringScoreRules.xml
Log:
rename EmployeeAssignment to Assignment
Copied: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Assignment.java (from rev 32994, labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/EmployeeAssignment.java)
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Assignment.java (rev 0)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Assignment.java 2010-05-23 15:13:05 UTC (rev 33019)
@@ -0,0 +1,110 @@
+package org.drools.planner.examples.nurserostering.domain;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import org.apache.commons.lang.builder.CompareToBuilder;
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.drools.planner.examples.common.domain.AbstractPersistable;
+import org.drools.planner.examples.nurserostering.domain.contract.Contract;
+
+/**
+ * @author Geoffrey De Smet
+ */
+ at XStreamAlias("Assignment")
+public class Assignment extends AbstractPersistable implements Comparable<Assignment> {
+
+ private Shift shift;
+
+ // Changed by moves, between score calculations.
+ private Employee employee;
+
+ public Shift getShift() {
+ return shift;
+ }
+
+ public void setShift(Shift shift) {
+ this.shift = shift;
+ }
+
+ public Employee getEmployee() {
+ return employee;
+ }
+
+ public void setEmployee(Employee employee) {
+ this.employee = employee;
+ }
+
+ public String getLabel() {
+ return shift.getShiftType().getCode();
+ }
+
+ public int compareTo(Assignment other) {
+ return new CompareToBuilder()
+ .append(shift, other.shift)
+ .append(employee, other.employee)
+ .toComparison();
+ }
+
+ public Assignment clone() {
+ Assignment clone = new Assignment();
+ clone.id = id;
+ clone.shift = shift;
+ clone.employee = employee;
+ return clone;
+ }
+
+ /**
+ * The normal methods {@link #equals(Object)} and {@link #hashCode()} cannot be used because the rule engine already
+ * requires them (for performance in their original state).
+ * @see #solutionHashCode()
+ */
+ public boolean solutionEquals(Object o) {
+ if (this == o) {
+ return true;
+ } else if (o instanceof Assignment) {
+ Assignment other = (Assignment) o;
+ return new EqualsBuilder()
+ .append(id, other.id)
+ .append(shift, other.shift)
+ .append(employee, other.employee)
+ .isEquals();
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * The normal methods {@link #equals(Object)} and {@link #hashCode()} cannot be used because the rule engine already
+ * requires them (for performance in their original state).
+ * @see #solutionEquals(Object)
+ */
+ public int solutionHashCode() {
+ return new HashCodeBuilder()
+ .append(id)
+ .append(shift)
+ .append(shift)
+ .toHashCode();
+ }
+
+ @Override
+ public String toString() {
+ return shift + "->" + employee;
+ }
+
+ public ShiftDate getShiftDate() {
+ return shift.getShiftDate();
+ }
+
+ public ShiftType getShiftType() {
+ return shift.getShiftType();
+ }
+
+ public int getShiftDateDayIndex() {
+ return shift.getShiftDate().getDayIndex();
+ }
+
+ public Contract getContract() {
+ return employee.getContract();
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/EmployeeAssignment.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/EmployeeAssignment.java 2010-05-23 14:31:38 UTC (rev 33018)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/EmployeeAssignment.java 2010-05-23 15:13:05 UTC (rev 33019)
@@ -1,110 +0,0 @@
-package org.drools.planner.examples.nurserostering.domain;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import org.apache.commons.lang.builder.CompareToBuilder;
-import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.commons.lang.builder.HashCodeBuilder;
-import org.drools.planner.examples.common.domain.AbstractPersistable;
-import org.drools.planner.examples.nurserostering.domain.contract.Contract;
-
-/**
- * @author Geoffrey De Smet
- */
- at XStreamAlias("EmployeeAssignment")
-public class EmployeeAssignment extends AbstractPersistable implements Comparable<EmployeeAssignment> {
-
- private Shift shift;
-
- // Changed by moves, between score calculations.
- private Employee employee;
-
- public Shift getShift() {
- return shift;
- }
-
- public void setShift(Shift shift) {
- this.shift = shift;
- }
-
- public Employee getEmployee() {
- return employee;
- }
-
- public void setEmployee(Employee employee) {
- this.employee = employee;
- }
-
- public String getLabel() {
- return shift.getShiftType().getCode();
- }
-
- public int compareTo(EmployeeAssignment other) {
- return new CompareToBuilder()
- .append(shift, other.shift)
- .append(employee, other.employee)
- .toComparison();
- }
-
- public EmployeeAssignment clone() {
- EmployeeAssignment clone = new EmployeeAssignment();
- clone.id = id;
- clone.shift = shift;
- clone.employee = employee;
- return clone;
- }
-
- /**
- * The normal methods {@link #equals(Object)} and {@link #hashCode()} cannot be used because the rule engine already
- * requires them (for performance in their original state).
- * @see #solutionHashCode()
- */
- public boolean solutionEquals(Object o) {
- if (this == o) {
- return true;
- } else if (o instanceof EmployeeAssignment) {
- EmployeeAssignment other = (EmployeeAssignment) o;
- return new EqualsBuilder()
- .append(id, other.id)
- .append(shift, other.shift)
- .append(employee, other.employee)
- .isEquals();
- } else {
- return false;
- }
- }
-
- /**
- * The normal methods {@link #equals(Object)} and {@link #hashCode()} cannot be used because the rule engine already
- * requires them (for performance in their original state).
- * @see #solutionEquals(Object)
- */
- public int solutionHashCode() {
- return new HashCodeBuilder()
- .append(id)
- .append(shift)
- .append(shift)
- .toHashCode();
- }
-
- @Override
- public String toString() {
- return shift + "->" + employee;
- }
-
- public ShiftDate getShiftDate() {
- return shift.getShiftDate();
- }
-
- public ShiftType getShiftType() {
- return shift.getShiftType();
- }
-
- public int getShiftDateDayIndex() {
- return shift.getShiftDate().getDayIndex();
- }
-
- public Contract getContract() {
- return employee.getContract();
- }
-
-}
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/NurseRoster.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/NurseRoster.java 2010-05-23 14:31:38 UTC (rev 33018)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/NurseRoster.java 2010-05-23 15:13:05 UTC (rev 33019)
@@ -41,7 +41,7 @@
private List<ShiftOffRequest> shiftOffRequestList;
private List<ShiftOnRequest> shiftOnRequestList;
- private List<EmployeeAssignment> employeeAssignmentList;
+ private List<Assignment> assignmentList;
private HardAndSoftScore score;
@@ -165,12 +165,12 @@
this.shiftOnRequestList = shiftOnRequestList;
}
- public List<EmployeeAssignment> getEmployeeAssignmentList() {
- return employeeAssignmentList;
+ public List<Assignment> getEmployeeAssignmentList() {
+ return assignmentList;
}
- public void setEmployeeAssignmentList(List<EmployeeAssignment> employeeAssignmentList) {
- this.employeeAssignmentList = employeeAssignmentList;
+ public void setEmployeeAssignmentList(List<Assignment> assignmentList) {
+ this.assignmentList = assignmentList;
}
public HardAndSoftScore getScore() {
@@ -183,7 +183,7 @@
public boolean isInitialized() {
- return (employeeAssignmentList != null);
+ return (assignmentList != null);
}
public Collection<? extends Object> getFacts() {
@@ -206,13 +206,13 @@
if (isInitialized()) {
- facts.addAll(employeeAssignmentList);
+ facts.addAll(assignmentList);
}
return facts;
}
/**
- * Clone will only deep copy the {@link #employeeAssignmentList}.
+ * Clone will only deep copy the {@link #assignmentList}.
*/
public NurseRoster cloneSolution() {
NurseRoster clone = new NurseRoster();
@@ -232,13 +232,13 @@
clone.dayOnRequestList = dayOnRequestList;
clone.shiftOffRequestList = shiftOffRequestList;
clone.shiftOnRequestList = shiftOnRequestList;
- List<EmployeeAssignment> clonedEmployeeAssignmentList = new ArrayList<EmployeeAssignment>(
- employeeAssignmentList.size());
- for (EmployeeAssignment employeeAssignment : employeeAssignmentList) {
- EmployeeAssignment clonedEmployeeAssignment = employeeAssignment.clone();
- clonedEmployeeAssignmentList.add(clonedEmployeeAssignment);
+ List<Assignment> clonedAssignmentList = new ArrayList<Assignment>(
+ assignmentList.size());
+ for (Assignment assignment : assignmentList) {
+ Assignment clonedAssignment = assignment.clone();
+ clonedAssignmentList.add(clonedAssignment);
}
- clone.employeeAssignmentList = clonedEmployeeAssignmentList;
+ clone.assignmentList = clonedAssignmentList;
clone.score = score;
return clone;
}
@@ -251,14 +251,14 @@
return false;
} else {
NurseRoster other = (NurseRoster) o;
- if (employeeAssignmentList.size() != other.employeeAssignmentList.size()) {
+ if (assignmentList.size() != other.assignmentList.size()) {
return false;
}
- for (Iterator<EmployeeAssignment> it = employeeAssignmentList.iterator(), otherIt = other.employeeAssignmentList.iterator(); it.hasNext();) {
- EmployeeAssignment employeeAssignment = it.next();
- EmployeeAssignment otherEmployeeAssignment = otherIt.next();
+ for (Iterator<Assignment> it = assignmentList.iterator(), otherIt = other.assignmentList.iterator(); it.hasNext();) {
+ Assignment assignment = it.next();
+ Assignment otherAssignment = otherIt.next();
// Notice: we don't use equals()
- if (!employeeAssignment.solutionEquals(otherEmployeeAssignment)) {
+ if (!assignment.solutionEquals(otherAssignment)) {
return false;
}
}
@@ -268,9 +268,9 @@
public int hashCode() {
HashCodeBuilder hashCodeBuilder = new HashCodeBuilder();
- for (EmployeeAssignment employeeAssignment : employeeAssignmentList) {
+ for (Assignment assignment : assignmentList) {
// Notice: we don't use hashCode()
- hashCodeBuilder.append(employeeAssignment.solutionHashCode());
+ hashCodeBuilder.append(assignment.solutionHashCode());
}
return hashCodeBuilder.toHashCode();
}
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/persistence/NurseRosteringSolutionExporter.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/persistence/NurseRosteringSolutionExporter.java 2010-05-23 14:31:38 UTC (rev 33018)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/persistence/NurseRosteringSolutionExporter.java 2010-05-23 15:13:05 UTC (rev 33019)
@@ -4,7 +4,7 @@
import org.drools.planner.core.solution.Solution;
import org.drools.planner.examples.common.persistence.AbstractXmlSolutionExporter;
-import org.drools.planner.examples.nurserostering.domain.EmployeeAssignment;
+import org.drools.planner.examples.nurserostering.domain.Assignment;
import org.drools.planner.examples.nurserostering.domain.NurseRoster;
import org.drools.planner.examples.nurserostering.domain.Shift;
import org.jdom.Element;
@@ -50,8 +50,8 @@
softConstraintsPenaltyElement.setText(Integer.toString(nurseRoster.getScore().getSoftScore()));
solutionElement.addContent(softConstraintsPenaltyElement);
- for (EmployeeAssignment employeeAssignment : nurseRoster.getEmployeeAssignmentList()) {
- Shift shift = employeeAssignment.getShift();
+ for (Assignment assignment : nurseRoster.getEmployeeAssignmentList()) {
+ Shift shift = assignment.getShift();
if (shift != null) {
Element assignmentElement = new Element("Assignment");
solutionElement.addContent(assignmentElement);
@@ -61,7 +61,7 @@
assignmentElement.addContent(dateElement);
Element employeeElement = new Element("Employee");
- employeeElement.setText(employeeAssignment.getEmployee().getCode());
+ employeeElement.setText(assignment.getEmployee().getCode());
assignmentElement.addContent(employeeElement);
Element shiftTypeElement = new Element("ShiftType");
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/EmployeeAssignmentSwitchMove.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/EmployeeAssignmentSwitchMove.java 2010-05-23 14:31:38 UTC (rev 33018)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/EmployeeAssignmentSwitchMove.java 2010-05-23 15:13:05 UTC (rev 33019)
@@ -9,40 +9,39 @@
import org.drools.WorkingMemory;
import org.drools.planner.core.localsearch.decider.acceptor.tabu.TabuPropertyEnabled;
import org.drools.planner.core.move.Move;
+import org.drools.planner.examples.nurserostering.domain.Assignment;
import org.drools.planner.examples.nurserostering.domain.Employee;
-import org.drools.planner.examples.nurserostering.domain.EmployeeAssignment;
-import org.drools.planner.examples.nurserostering.domain.Shift;
/**
* @author Geoffrey De Smet
*/
public class EmployeeAssignmentSwitchMove implements Move, TabuPropertyEnabled {
- private EmployeeAssignment leftEmployeeAssignment;
- private EmployeeAssignment rightEmployeeAssignment;
+ private Assignment leftAssignment;
+ private Assignment rightAssignment;
- public EmployeeAssignmentSwitchMove(EmployeeAssignment leftEmployeeAssignment, EmployeeAssignment rightEmployeeAssignment) {
- this.leftEmployeeAssignment = leftEmployeeAssignment;
- this.rightEmployeeAssignment = rightEmployeeAssignment;
+ public EmployeeAssignmentSwitchMove(Assignment leftAssignment, Assignment rightAssignment) {
+ this.leftAssignment = leftAssignment;
+ this.rightAssignment = rightAssignment;
}
public boolean isMoveDoable(WorkingMemory workingMemory) {
- return !ObjectUtils.equals(leftEmployeeAssignment.getEmployee(), rightEmployeeAssignment.getEmployee());
+ return !ObjectUtils.equals(leftAssignment.getEmployee(), rightAssignment.getEmployee());
}
public Move createUndoMove(WorkingMemory workingMemory) {
- return new EmployeeAssignmentSwitchMove(rightEmployeeAssignment, leftEmployeeAssignment);
+ return new EmployeeAssignmentSwitchMove(rightAssignment, leftAssignment);
}
public void doMove(WorkingMemory workingMemory) {
- Employee oldLeftEmployee = leftEmployeeAssignment.getEmployee();
- Employee oldRightEmployee = rightEmployeeAssignment.getEmployee();
- NurseRosterMoveHelper.moveEmployee(workingMemory, leftEmployeeAssignment, oldRightEmployee);
- NurseRosterMoveHelper.moveEmployee(workingMemory, rightEmployeeAssignment, oldLeftEmployee);
+ Employee oldLeftEmployee = leftAssignment.getEmployee();
+ Employee oldRightEmployee = rightAssignment.getEmployee();
+ NurseRosterMoveHelper.moveEmployee(workingMemory, leftAssignment, oldRightEmployee);
+ NurseRosterMoveHelper.moveEmployee(workingMemory, rightAssignment, oldLeftEmployee);
}
public Collection<? extends Object> getTabuProperties() {
- return Arrays.<EmployeeAssignment>asList(leftEmployeeAssignment, rightEmployeeAssignment);
+ return Arrays.<Assignment>asList(leftAssignment, rightAssignment);
}
public boolean equals(Object o) {
@@ -51,8 +50,8 @@
} else if (o instanceof EmployeeAssignmentSwitchMove) {
EmployeeAssignmentSwitchMove other = (EmployeeAssignmentSwitchMove) o;
return new EqualsBuilder()
- .append(leftEmployeeAssignment, other.leftEmployeeAssignment)
- .append(rightEmployeeAssignment, other.rightEmployeeAssignment)
+ .append(leftAssignment, other.leftAssignment)
+ .append(rightAssignment, other.rightAssignment)
.isEquals();
} else {
return false;
@@ -61,13 +60,13 @@
public int hashCode() {
return new HashCodeBuilder()
- .append(leftEmployeeAssignment)
- .append(rightEmployeeAssignment)
+ .append(leftAssignment)
+ .append(rightAssignment)
.toHashCode();
}
public String toString() {
- return leftEmployeeAssignment + " <=> " + rightEmployeeAssignment;
+ return leftAssignment + " <=> " + rightAssignment;
}
}
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/EmployeeChangeMove.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/EmployeeChangeMove.java 2010-05-23 14:31:38 UTC (rev 33018)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/EmployeeChangeMove.java 2010-05-23 15:13:05 UTC (rev 33019)
@@ -10,36 +10,35 @@
import org.drools.planner.core.localsearch.decider.acceptor.tabu.TabuPropertyEnabled;
import org.drools.planner.core.move.Move;
import org.drools.planner.examples.nurserostering.domain.Employee;
-import org.drools.planner.examples.nurserostering.domain.EmployeeAssignment;
-import org.drools.planner.examples.nurserostering.domain.Shift;
+import org.drools.planner.examples.nurserostering.domain.Assignment;
/**
* @author Geoffrey De Smet
*/
public class EmployeeChangeMove implements Move, TabuPropertyEnabled {
- private EmployeeAssignment employeeAssignment;
+ private Assignment assignment;
private Employee toEmployee;
- public EmployeeChangeMove(EmployeeAssignment employeeAssignment, Employee toEmployee) {
- this.employeeAssignment = employeeAssignment;
+ public EmployeeChangeMove(Assignment assignment, Employee toEmployee) {
+ this.assignment = assignment;
this.toEmployee = toEmployee;
}
public boolean isMoveDoable(WorkingMemory workingMemory) {
- return !ObjectUtils.equals(employeeAssignment.getEmployee(), toEmployee);
+ return !ObjectUtils.equals(assignment.getEmployee(), toEmployee);
}
public Move createUndoMove(WorkingMemory workingMemory) {
- return new EmployeeChangeMove(employeeAssignment, employeeAssignment.getEmployee());
+ return new EmployeeChangeMove(assignment, assignment.getEmployee());
}
public void doMove(WorkingMemory workingMemory) {
- NurseRosterMoveHelper.moveEmployee(workingMemory, employeeAssignment, toEmployee);
+ NurseRosterMoveHelper.moveEmployee(workingMemory, assignment, toEmployee);
}
public Collection<? extends Object> getTabuProperties() {
- return Collections.singletonList(employeeAssignment);
+ return Collections.singletonList(assignment);
}
public boolean equals(Object o) {
@@ -48,7 +47,7 @@
} else if (o instanceof EmployeeChangeMove) {
EmployeeChangeMove other = (EmployeeChangeMove) o;
return new EqualsBuilder()
- .append(employeeAssignment, other.employeeAssignment)
+ .append(assignment, other.assignment)
.append(toEmployee, other.toEmployee)
.isEquals();
} else {
@@ -58,13 +57,13 @@
public int hashCode() {
return new HashCodeBuilder()
- .append(employeeAssignment)
+ .append(assignment)
.append(toEmployee)
.toHashCode();
}
public String toString() {
- return employeeAssignment + " => " + toEmployee;
+ return assignment + " => " + toEmployee;
}
}
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/NurseRosterMoveHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/NurseRosterMoveHelper.java 2010-05-23 14:31:38 UTC (rev 33018)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/NurseRosterMoveHelper.java 2010-05-23 15:13:05 UTC (rev 33019)
@@ -2,9 +2,8 @@
import org.drools.WorkingMemory;
+import org.drools.planner.examples.nurserostering.domain.Assignment;
import org.drools.planner.examples.nurserostering.domain.Employee;
-import org.drools.planner.examples.nurserostering.domain.EmployeeAssignment;
-import org.drools.planner.examples.nurserostering.domain.Shift;
import org.drools.runtime.rule.FactHandle;
/**
@@ -12,10 +11,10 @@
*/
public class NurseRosterMoveHelper {
- public static void moveEmployee(WorkingMemory workingMemory, EmployeeAssignment employeeAssignment, Employee toEmployee) {
- FactHandle factHandle = workingMemory.getFactHandle(employeeAssignment);
- employeeAssignment.setEmployee(toEmployee);
- workingMemory.update(factHandle, employeeAssignment);
+ public static void moveEmployee(WorkingMemory workingMemory, Assignment assignment, Employee toEmployee) {
+ FactHandle factHandle = workingMemory.getFactHandle(assignment);
+ assignment.setEmployee(toEmployee);
+ workingMemory.update(factHandle, assignment);
}
private NurseRosterMoveHelper() {
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/factory/EmployeeAssignmentSwitchMoveFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/factory/EmployeeAssignmentSwitchMoveFactory.java 2010-05-23 14:31:38 UTC (rev 33018)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/factory/EmployeeAssignmentSwitchMoveFactory.java 2010-05-23 15:13:05 UTC (rev 33019)
@@ -7,7 +7,7 @@
import org.drools.planner.core.move.Move;
import org.drools.planner.core.move.factory.CachedMoveFactory;
import org.drools.planner.core.solution.Solution;
-import org.drools.planner.examples.nurserostering.domain.EmployeeAssignment;
+import org.drools.planner.examples.nurserostering.domain.Assignment;
import org.drools.planner.examples.nurserostering.domain.NurseRoster;
import org.drools.planner.examples.nurserostering.solver.move.EmployeeAssignmentSwitchMove;
@@ -18,13 +18,13 @@
public List<Move> createCachedMoveList(Solution solution) {
NurseRoster nurseRoster = (NurseRoster) solution;
- List<EmployeeAssignment> employeeAssignmentList = nurseRoster.getEmployeeAssignmentList();
+ List<Assignment> assignmentList = nurseRoster.getEmployeeAssignmentList();
List<Move> moveList = new ArrayList<Move>();
- for (ListIterator<EmployeeAssignment> leftIt = employeeAssignmentList.listIterator(); leftIt.hasNext();) {
- EmployeeAssignment leftEmployeeAssignment = leftIt.next();
- for (ListIterator<EmployeeAssignment> rightIt = employeeAssignmentList.listIterator(leftIt.nextIndex()); rightIt.hasNext();) {
- EmployeeAssignment rightEmployeeAssignment = rightIt.next();
- moveList.add(new EmployeeAssignmentSwitchMove(leftEmployeeAssignment, rightEmployeeAssignment));
+ for (ListIterator<Assignment> leftIt = assignmentList.listIterator(); leftIt.hasNext();) {
+ Assignment leftAssignment = leftIt.next();
+ for (ListIterator<Assignment> rightIt = assignmentList.listIterator(leftIt.nextIndex()); rightIt.hasNext();) {
+ Assignment rightAssignment = rightIt.next();
+ moveList.add(new EmployeeAssignmentSwitchMove(leftAssignment, rightAssignment));
}
}
return moveList;
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/factory/EmployeeChangeMoveFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/factory/EmployeeChangeMoveFactory.java 2010-05-23 14:31:38 UTC (rev 33018)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/factory/EmployeeChangeMoveFactory.java 2010-05-23 15:13:05 UTC (rev 33019)
@@ -6,11 +6,9 @@
import org.drools.planner.core.move.Move;
import org.drools.planner.core.move.factory.CachedMoveFactory;
import org.drools.planner.core.solution.Solution;
+import org.drools.planner.examples.nurserostering.domain.Assignment;
import org.drools.planner.examples.nurserostering.domain.Employee;
-import org.drools.planner.examples.nurserostering.domain.EmployeeAssignment;
import org.drools.planner.examples.nurserostering.domain.NurseRoster;
-import org.drools.planner.examples.nurserostering.domain.Shift;
-import org.drools.planner.examples.nurserostering.domain.ShiftDate;
import org.drools.planner.examples.nurserostering.solver.move.EmployeeChangeMove;
/**
@@ -22,9 +20,9 @@
NurseRoster nurseRoster = (NurseRoster) solution;
List<Move> moveList = new ArrayList<Move>();
List<Employee> employeeList = nurseRoster.getEmployeeList();
- for (EmployeeAssignment employeeAssignment : nurseRoster.getEmployeeAssignmentList()) {
+ for (Assignment assignment : nurseRoster.getEmployeeAssignmentList()) {
for (Employee employee : employeeList) {
- moveList.add(new EmployeeChangeMove(employeeAssignment, employee));
+ moveList.add(new EmployeeChangeMove(assignment, employee));
}
}
return moveList;
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/solution/initializer/NurseRosteringStartingSolutionInitializer.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/solution/initializer/NurseRosteringStartingSolutionInitializer.java 2010-05-23 14:31:38 UTC (rev 33018)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/solution/initializer/NurseRosteringStartingSolutionInitializer.java 2010-05-23 15:13:05 UTC (rev 33019)
@@ -5,19 +5,14 @@
import java.util.List;
import java.util.Random;
-import org.apache.commons.lang.builder.CompareToBuilder;
import org.drools.WorkingMemory;
import org.drools.planner.core.localsearch.LocalSearchSolverScope;
-import org.drools.planner.core.score.DefaultHardAndSoftScore;
-import org.drools.planner.core.score.Score;
import org.drools.planner.core.solution.initializer.AbstractStartingSolutionInitializer;
import org.drools.planner.examples.common.domain.PersistableIdComparator;
+import org.drools.planner.examples.nurserostering.domain.Assignment;
import org.drools.planner.examples.nurserostering.domain.Employee;
-import org.drools.planner.examples.nurserostering.domain.EmployeeAssignment;
import org.drools.planner.examples.nurserostering.domain.NurseRoster;
import org.drools.planner.examples.nurserostering.domain.Shift;
-import org.drools.planner.examples.nurserostering.domain.ShiftDate;
-import org.drools.runtime.rule.FactHandle;
/**
* @author Geoffrey De Smet
@@ -40,9 +35,9 @@
List<Shift> shiftList = nurseRoster.getShiftList();
WorkingMemory workingMemory = localSearchSolverScope.getWorkingMemory();
- List<EmployeeAssignment> employeeAssignmentList = createEmployeeAssignmentList(nurseRoster);
+ List<Assignment> assignmentList = createEmployeeAssignmentList(nurseRoster);
// TODO implement this class
-// for (EmployeeAssignment employeeAssignment : employeeAssignmentList) {
+// for (Assignment employeeAssignment : assignmentList) {
// Score unnurseRosterdScore = localSearchSolverScope.calculateScoreFromWorkingMemory();
// FactHandle employeeAssignmentHandle = null;
//
@@ -102,20 +97,20 @@
// employeeAssignment.setRoom(bestRoom);
// workingMemory.update(employeeAssignmentHandle, employeeAssignment);
// }
-// logger.debug(" EmployeeAssignment ({}) initialized for starting solution.", employeeAssignment);
+// logger.debug(" Assignment ({}) initialized for starting solution.", employeeAssignment);
// }
// TODO tmp begin
- for (EmployeeAssignment employeeAssignment : employeeAssignmentList) {
- workingMemory.insert(employeeAssignment);
+ for (Assignment assignment : assignmentList) {
+ workingMemory.insert(assignment);
}
// TODO tmp end
- Collections.sort(employeeAssignmentList, new PersistableIdComparator());
- nurseRoster.setEmployeeAssignmentList(employeeAssignmentList);
+ Collections.sort(assignmentList, new PersistableIdComparator());
+ nurseRoster.setEmployeeAssignmentList(assignmentList);
}
- public List<EmployeeAssignment> createEmployeeAssignmentList(NurseRoster nurseRoster) {
+ public List<Assignment> createEmployeeAssignmentList(NurseRoster nurseRoster) {
List<Employee> employeeList = nurseRoster.getEmployeeList();
// List<EmployeeInitializationWeight> employeeInitializationWeightList
@@ -125,17 +120,17 @@
// }
// Collections.sort(employeeInitializationWeightList);
//
- List<EmployeeAssignment> employeeAssignmentList = new ArrayList<EmployeeAssignment>(employeeList.size() * 5);
+ List<Assignment> assignmentList = new ArrayList<Assignment>(employeeList.size() * 5);
// int employeeAssignmentId = 0;
// for (EmployeeInitializationWeight employeeInitializationWeight : employeeInitializationWeightList) {
// Employee employee = employeeInitializationWeight.getEmployee();
// for (int i = 0; i < employee.getEmployeeAssignmentSize(); i++) {
-// EmployeeAssignment employeeAssignment = new EmployeeAssignment();
+// Assignment employeeAssignment = new Assignment();
// employeeAssignment.setId((long) employeeAssignmentId);
// employeeAssignmentId++;
// employeeAssignment.setEmployee(employee);
// employeeAssignment.setEmployeeAssignmentIndexInEmployee(i);
-// employeeAssignmentList.add(employeeAssignment);
+// assignmentList.add(employeeAssignment);
// }
// }
@@ -145,18 +140,18 @@
Random random = new Random(); // not seeded, tmp!
for (Shift shift : shiftList) {
for (int i = 0; i < shift.getRequiredEmployeeSize(); i++) {
- EmployeeAssignment employeeAssignment = new EmployeeAssignment();
- employeeAssignment.setId((long) employeeAssignmentId);
+ Assignment assignment = new Assignment();
+ assignment.setId((long) employeeAssignmentId);
employeeAssignmentId++;
- employeeAssignment.setShift(shift);
+ assignment.setShift(shift);
int randomInt = random.nextInt(employeeList.size());
- employeeAssignment.setEmployee(employeeList.get(randomInt));
- employeeAssignmentList.add(employeeAssignment);
+ assignment.setEmployee(employeeList.get(randomInt));
+ assignmentList.add(assignment);
}
}
// TODO tmp end
- return employeeAssignmentList;
+ return assignmentList;
}
// private class EmployeeInitializationWeight implements Comparable<EmployeeInitializationWeight> {
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/swingui/NurseRosteringPanel.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/swingui/NurseRosteringPanel.java 2010-05-23 14:31:38 UTC (rev 33018)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/swingui/NurseRosteringPanel.java 2010-05-23 15:13:05 UTC (rev 33019)
@@ -16,9 +16,9 @@
import javax.swing.JPanel;
import org.drools.planner.examples.common.swingui.SolutionPanel;
+import org.drools.planner.examples.nurserostering.domain.Assignment;
import org.drools.planner.examples.nurserostering.domain.DayOfWeek;
import org.drools.planner.examples.nurserostering.domain.ShiftDate;
-import org.drools.planner.examples.nurserostering.domain.EmployeeAssignment;
import org.drools.planner.examples.nurserostering.domain.NurseRoster;
import org.drools.planner.examples.nurserostering.domain.Employee;
import org.drools.planner.examples.nurserostering.solver.move.EmployeeChangeMove;
@@ -83,10 +83,10 @@
}
}
if (schedule.isInitialized()) {
- for (EmployeeAssignment employeeAssignment : schedule.getEmployeeAssignmentList()) {
- Employee employee = employeeAssignment.getEmployee();
- EmployeeShiftDatePanel employeeShiftDatePanel = employeeShiftDatePanelMap.get(employee).get(employeeAssignment.getShiftDate());
- employeeShiftDatePanel.addEmployeeAssignment(employeeAssignment);
+ for (Assignment assignment : schedule.getEmployeeAssignmentList()) {
+ Employee employee = assignment.getEmployee();
+ EmployeeShiftDatePanel employeeShiftDatePanel = employeeShiftDatePanelMap.get(employee).get(assignment.getShiftDate());
+ employeeShiftDatePanel.addEmployeeAssignment(assignment);
}
}
}
@@ -100,8 +100,8 @@
BorderFactory.createEmptyBorder(2, 2, 2, 2)));
}
- public void addEmployeeAssignment(EmployeeAssignment employeeAssignment) {
- JButton button = new JButton(new EmployeeAssignmentAction(employeeAssignment));
+ public void addEmployeeAssignment(Assignment assignment) {
+ JButton button = new JButton(new EmployeeAssignmentAction(assignment));
add(button);
}
@@ -109,22 +109,22 @@
private class EmployeeAssignmentAction extends AbstractAction {
- private EmployeeAssignment employeeAssignment;
+ private Assignment assignment;
- public EmployeeAssignmentAction(EmployeeAssignment employeeAssignment) {
- super(employeeAssignment.getLabel());
- this.employeeAssignment = employeeAssignment;
+ public EmployeeAssignmentAction(Assignment assignment) {
+ super(assignment.getLabel());
+ this.assignment = assignment;
}
public void actionPerformed(ActionEvent e) {
List<Employee> employeeList = getNurseRoster().getEmployeeList();
JComboBox employeeListField = new JComboBox(employeeList.toArray());
- employeeListField.setSelectedItem(employeeAssignment.getEmployee());
+ employeeListField.setSelectedItem(assignment.getEmployee());
int result = JOptionPane.showConfirmDialog(NurseRosteringPanel.this.getRootPane(), employeeListField,
"Select employee", JOptionPane.OK_CANCEL_OPTION);
if (result == JOptionPane.OK_OPTION) {
Employee toEmployee = (Employee) employeeListField.getSelectedItem();
- solutionBusiness.doMove(new EmployeeChangeMove(employeeAssignment, toEmployee));
+ solutionBusiness.doMove(new EmployeeChangeMove(assignment, toEmployee));
workflowFrame.updateScreen();
}
}
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl 2010-05-23 14:31:38 UTC (rev 33018)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl 2010-05-23 15:13:05 UTC (rev 33019)
@@ -7,7 +7,7 @@
import org.drools.planner.examples.nurserostering.domain.DayOfWeek;
import org.drools.planner.examples.nurserostering.domain.Employee;
-import org.drools.planner.examples.nurserostering.domain.EmployeeAssignment;
+import org.drools.planner.examples.nurserostering.domain.Assignment;
import org.drools.planner.examples.nurserostering.domain.NurseRoster;
import org.drools.planner.examples.nurserostering.domain.Pattern;
import org.drools.planner.examples.nurserostering.domain.Shift;
@@ -43,7 +43,7 @@
$shift : Shift(requiredEmployeeSize > 0, $requiredEmployeeSize : requiredEmployeeSize)
$totalEmployeeSize : Number(intValue != $requiredEmployeeSize) from accumulate(
- $assignment : EmployeeAssignment(shift == $shift),
+ $assignment : Assignment(shift == $shift),
count($assignment)
)
then
@@ -55,12 +55,12 @@
// a nurse can only work one shift per day, i.e. no two shift can be assigned to the same nurse on a day.
rule "oneShiftPerDay"
when
- $leftEmployeeAssignment : EmployeeAssignment($leftId : id, $employee : employee, $shiftDate : shiftDate)
- $rightEmployeeAssignment : EmployeeAssignment(employee == $employee, shiftDate == $shiftDate, id > $leftId)
+ $leftAssignment : Assignment($leftId : id, $employee : employee, $shiftDate : shiftDate)
+ $rightAssignment : Assignment(employee == $employee, shiftDate == $shiftDate, id > $leftId)
then
insertLogical(new IntConstraintOccurrence("oneShiftPerDay", ConstraintType.NEGATIVE_HARD,
1,
- $leftEmployeeAssignment, $rightEmployeeAssignment));
+ $leftAssignment, $rightAssignment));
end
// ############################################################################
@@ -76,7 +76,7 @@
)
$employee : Employee(contract == $contract)
$totalAssignmentSize : Number(intValue < $minimumValue) from accumulate(
- $assignment : EmployeeAssignment(employee == $employee),
+ $assignment : Assignment(employee == $employee),
count($assignment)
)
then
@@ -94,7 +94,7 @@
)
$employee : Employee(contract == $contract)
$totalAssignmentSize : Number(intValue > $maximumValue) from accumulate(
- $assignment : EmployeeAssignment(employee == $employee),
+ $assignment : Assignment(employee == $employee),
count($assignment)
)
then
@@ -106,26 +106,26 @@
rule "insertEmployeeConsecutiveAssignmentStart"
salience 2 // Do these rules first (optional, for performance)
when
- EmployeeAssignment(
+ Assignment(
$employee : employee,
$dayIndex : shiftDateDayIndex,
$shiftDate : shiftDate
)
// The first day has no working day before it
- not EmployeeAssignment(employee == $employee, shiftDateDayIndex == ($dayIndex - 1))
+ not Assignment(employee == $employee, shiftDateDayIndex == ($dayIndex - 1))
then
insertLogical(new EmployeeConsecutiveAssignmentStart($employee, $shiftDate));
end
rule "insertEmployeeConsecutiveAssignmentEnd"
salience 2 // Do these rules first (optional, for performance)
when
- EmployeeAssignment(
+ Assignment(
$employee : employee,
$dayIndex : shiftDateDayIndex,
$shiftDate : shiftDate
)
// The last day has no working day after it
- not EmployeeAssignment(employee == $employee, shiftDateDayIndex == ($dayIndex + 1))
+ not Assignment(employee == $employee, shiftDateDayIndex == ($dayIndex + 1))
then
insertLogical(new EmployeeConsecutiveAssignmentEnd($employee, $shiftDate));
end
@@ -205,10 +205,10 @@
//
// // The first day ...
// $firstShiftDate : ShiftDate($firstDayIndex : dayIndex)
-// not EmployeeAssignment(employee == $employee, shiftDate == $firstShiftDate)
+// not Assignment(employee == $employee, shiftDate == $firstShiftDate)
// // ... has no free day before it
// (
-// exists EmployeeAssignment(employee == $employee, shiftDateDayIndex == ($firstDayIndex - 1))
+// exists Assignment(employee == $employee, shiftDateDayIndex == ($firstDayIndex - 1))
// or not ShiftDate(dayIndex == ($firstDayIndex - 1))
// )
//
@@ -217,15 +217,15 @@
// dayIndex > $firstDayIndex,
// dayIndex < ($firstDayIndex + $minimumIndexDiff), // Too few days
// $lastDayIndex : dayIndex)
-// not EmployeeAssignment(employee == $employee, shiftDate == $lastShiftDate)
+// not Assignment(employee == $employee, shiftDate == $lastShiftDate)
// // ... has no free day after it
// (
-// exists EmployeeAssignment(employee == $employee, shiftDateDayIndex == ($lastDayIndex + 1))
+// exists Assignment(employee == $employee, shiftDateDayIndex == ($lastDayIndex + 1))
// or not ShiftDate(dayIndex == ($lastDayIndex + 1))
// )
//
// // There are no working days between the first and last day
-// not EmployeeAssignment(employee == $employee, shiftDateDayIndex > $firstDayIndex && < $lastDayIndex)
+// not Assignment(employee == $employee, shiftDateDayIndex > $firstDayIndex && < $lastDayIndex)
// then
// insertLogical(new IntConstraintOccurrence("minimumConsecutiveFreeDays", ConstraintType.NEGATIVE_SOFT,
// ($firstDayIndex + $minimumIndexDiff - $lastDayIndex) * $contractLine.getMinimumWeight(),
@@ -251,7 +251,7 @@
rule "dayOffRequest"
when
$dayOffRequest : DayOffRequest($employee : employee, $shiftDate : shiftDate, $weight : weight)
- $employeeAssignment : EmployeeAssignment(employee == $employee, shiftDate == $shiftDate)
+ $employeeAssignment : Assignment(employee == $employee, shiftDate == $shiftDate)
then
insertLogical(new IntConstraintOccurrence("dayOffRequest", ConstraintType.NEGATIVE_SOFT,
$weight,
@@ -260,7 +260,7 @@
rule "dayOnRequest"
when
$dayOnRequest : DayOnRequest($employee : employee, $shiftDate : shiftDate, $weight : weight)
- not EmployeeAssignment(employee == $employee, shiftDate == $shiftDate)
+ not Assignment(employee == $employee, shiftDate == $shiftDate)
then
insertLogical(new IntConstraintOccurrence("dayOnRequest", ConstraintType.NEGATIVE_SOFT,
$weight,
@@ -271,7 +271,7 @@
rule "shiftOffRequest"
when
$shiftOffRequest : ShiftOffRequest($employee : employee, $shift : shift, $weight : weight)
- $employeeAssignment : EmployeeAssignment(employee == $employee, shift == $shift)
+ $employeeAssignment : Assignment(employee == $employee, shift == $shift)
then
insertLogical(new IntConstraintOccurrence("shiftOffRequest", ConstraintType.NEGATIVE_SOFT,
$weight,
@@ -280,7 +280,7 @@
rule "shiftOnRequest"
when
$shiftOnRequest : ShiftOnRequest($employee : employee, $shift : shift, $weight : weight)
- not EmployeeAssignment(employee == $employee, shift == $shift)
+ not Assignment(employee == $employee, shift == $shift)
then
insertLogical(new IntConstraintOccurrence("shiftOnRequest", ConstraintType.NEGATIVE_SOFT,
$weight,
@@ -291,7 +291,7 @@
rule "alternativeSkill"
when
BooleanContractLine(contractLineType == ContractLineType.ALTERNATIVE_SKILL_CATEGORY, $contract : contract)
- $employeeAssignment : EmployeeAssignment(contract == $contract, $employee : employee, $shiftType : shiftType)
+ $employeeAssignment : Assignment(contract == $contract, $employee : employee, $shiftType : shiftType)
ShiftTypeSkillRequirement(shiftType == $shiftType, $skill : skill)
not SkillProficiency(employee == $employee, skill == $skill)
then
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/java/org/drools/planner/examples/nurserostering/solver/NurseRosteringScoreRulesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/java/org/drools/planner/examples/nurserostering/solver/NurseRosteringScoreRulesTest.java 2010-05-23 14:31:38 UTC (rev 33018)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/java/org/drools/planner/examples/nurserostering/solver/NurseRosteringScoreRulesTest.java 2010-05-23 15:13:05 UTC (rev 33019)
@@ -12,17 +12,11 @@
import org.drools.WorkingMemory;
import org.drools.compiler.DroolsParserException;
import org.drools.compiler.PackageBuilder;
-import org.drools.planner.config.XmlSolverConfigurer;
-import org.drools.planner.core.Solver;
import org.drools.planner.core.localsearch.LocalSearchSolverScope;
-import org.drools.planner.core.score.DefaultSimpleScore;
import org.drools.planner.core.score.Score;
import org.drools.planner.core.score.calculator.DefaultHardAndSoftConstraintScoreCalculator;
-import org.drools.planner.core.solution.Solution;
-import org.drools.planner.examples.common.persistence.SolutionDao;
-import org.drools.planner.examples.nqueens.persistence.NQueensDaoImpl;
+import org.drools.planner.examples.nurserostering.domain.Assignment;
import org.drools.planner.examples.nurserostering.domain.Employee;
-import org.drools.planner.examples.nurserostering.domain.EmployeeAssignment;
import org.drools.planner.examples.nurserostering.domain.NurseRoster;
import org.drools.planner.examples.nurserostering.persistence.NurseRosteringDaoImpl;
import org.drools.planner.examples.nurserostering.solver.move.NurseRosterMoveHelper;
@@ -45,17 +39,17 @@
Score firstScore = localSearchSolverScope.calculateScoreFromWorkingMemory();
// do EmployeeAssignmentSwitchMove
Employee leftEmployee = findEmployeeById(nurseRoster, 0L);
- EmployeeAssignment leftEmployeeAssignment = findEmployeeAssignmentById(nurseRoster, 200204001L);
- assertEquals(leftEmployee, leftEmployeeAssignment.getEmployee());
+ Assignment leftAssignment = findEmployeeAssignmentById(nurseRoster, 200204001L);
+ assertEquals(leftEmployee, leftAssignment.getEmployee());
Employee rightEmployee = findEmployeeById(nurseRoster, 12L);
- EmployeeAssignment rightEmployeeAssignment = findEmployeeAssignmentById(nurseRoster, 200204002L);
- assertEquals(rightEmployee, rightEmployeeAssignment.getEmployee());
- NurseRosterMoveHelper.moveEmployee(workingMemory, leftEmployeeAssignment, rightEmployee);
- NurseRosterMoveHelper.moveEmployee(workingMemory, rightEmployeeAssignment, leftEmployee);
+ Assignment rightAssignment = findEmployeeAssignmentById(nurseRoster, 200204002L);
+ assertEquals(rightEmployee, rightAssignment.getEmployee());
+ NurseRosterMoveHelper.moveEmployee(workingMemory, leftAssignment, rightEmployee);
+ NurseRosterMoveHelper.moveEmployee(workingMemory, rightAssignment, leftEmployee);
localSearchSolverScope.calculateScoreFromWorkingMemory();
// undo EmployeeAssignmentSwitchMove;
- NurseRosterMoveHelper.moveEmployee(workingMemory, rightEmployeeAssignment, rightEmployee);
- NurseRosterMoveHelper.moveEmployee(workingMemory, leftEmployeeAssignment, leftEmployee);
+ NurseRosterMoveHelper.moveEmployee(workingMemory, rightAssignment, rightEmployee);
+ NurseRosterMoveHelper.moveEmployee(workingMemory, leftAssignment, leftEmployee);
Score secondScore = localSearchSolverScope.calculateScoreFromWorkingMemory();
assertEquals(firstScore, secondScore);
}
@@ -91,10 +85,10 @@
throw new IllegalArgumentException("Invalid id (" + id + ")");
}
- private EmployeeAssignment findEmployeeAssignmentById(NurseRoster nurseRoster, long id) {
- for (EmployeeAssignment employeeAssignment : nurseRoster.getEmployeeAssignmentList()) {
- if (employeeAssignment.getId() == id) {
- return employeeAssignment;
+ private Assignment findEmployeeAssignmentById(NurseRoster nurseRoster, long id) {
+ for (Assignment assignment : nurseRoster.getEmployeeAssignmentList()) {
+ if (assignment.getId() == id) {
+ return assignment;
}
}
throw new IllegalArgumentException("Invalid id (" + id + ")");
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/resources/org/drools/planner/examples/nurserostering/data/testNurseRosteringScoreRules.xml
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/resources/org/drools/planner/examples/nurserostering/data/testNurseRosteringScoreRules.xml 2010-05-23 14:31:38 UTC (rev 33018)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/test/resources/org/drools/planner/examples/nurserostering/data/testNurseRosteringScoreRules.xml 2010-05-23 15:13:05 UTC (rev 33019)
@@ -787,103 +787,103 @@
<dayOnRequestList class="java.util.Collections$EmptyList" id="125"/>
<shiftOffRequestList id="126"/>
<shiftOnRequestList class="java.util.Collections$EmptyList" reference="125"/>
- <employeeAssignmentList id="127">
- <EmployeeAssignment id="128">
+ <assignmentList id="127">
+ <Assignment id="128">
<id>0</id>
<shift reference="55"/>
<employee reference="1010"/>
- </EmployeeAssignment>
- <EmployeeAssignment id="129">
+ </Assignment>
+ <Assignment id="129">
<id>1</id>
<shift reference="58"/>
<employee reference="1011"/>
- </EmployeeAssignment>
- <EmployeeAssignment id="200201001">
+ </Assignment>
+ <Assignment id="200201001">
<id>200201001</id>
<shift reference="200201"/>
<employee reference="1020"/>
- </EmployeeAssignment>
- <EmployeeAssignment id="200204001">
+ </Assignment>
+ <Assignment id="200204001">
<id>200204001</id>
<shift reference="200204"/>
<employee reference="1000"/>
- </EmployeeAssignment>
- <EmployeeAssignment id="200204002">
+ </Assignment>
+ <Assignment id="200204002">
<id>200204002</id>
<shift reference="200204"/>
<employee reference="1012"/>
- </EmployeeAssignment>
- <EmployeeAssignment id="133">
+ </Assignment>
+ <Assignment id="133">
<id>5</id>
<shift reference="69"/>
<employee reference="1000"/>
- </EmployeeAssignment>
- <EmployeeAssignment id="134">
+ </Assignment>
+ <Assignment id="134">
<id>6</id>
<shift reference="76"/>
<employee reference="1000"/>
- </EmployeeAssignment>
- <EmployeeAssignment id="135">
+ </Assignment>
+ <Assignment id="135">
<id>7</id>
<shift reference="83"/>
<employee reference="1011"/>
- </EmployeeAssignment>
- <EmployeeAssignment id="136">
+ </Assignment>
+ <Assignment id="136">
<id>8</id>
<shift reference="83"/>
<employee reference="1020"/>
- </EmployeeAssignment>
- <EmployeeAssignment id="137">
+ </Assignment>
+ <Assignment id="137">
<id>9</id>
<shift reference="83"/>
<employee reference="1000"/>
- </EmployeeAssignment>
- <EmployeeAssignment id="138">
+ </Assignment>
+ <Assignment id="138">
<id>10</id>
<shift reference="90"/>
<employee reference="1012"/>
- </EmployeeAssignment>
- <EmployeeAssignment id="139">
+ </Assignment>
+ <Assignment id="139">
<id>11</id>
<shift reference="97"/>
<employee reference="1010"/>
- </EmployeeAssignment>
- <EmployeeAssignment id="140">
+ </Assignment>
+ <Assignment id="140">
<id>12</id>
<shift reference="101"/>
<employee reference="1012"/>
- </EmployeeAssignment>
- <EmployeeAssignment id="141">
+ </Assignment>
+ <Assignment id="141">
<id>13</id>
<shift reference="104"/>
<employee reference="1010"/>
- </EmployeeAssignment>
- <EmployeeAssignment id="142">
+ </Assignment>
+ <Assignment id="142">
<id>14</id>
<shift reference="107"/>
<employee reference="1012"/>
- </EmployeeAssignment>
- <EmployeeAssignment id="143">
+ </Assignment>
+ <Assignment id="143">
<id>15</id>
<shift reference="111"/>
<employee reference="1010"/>
- </EmployeeAssignment>
- <EmployeeAssignment id="144">
+ </Assignment>
+ <Assignment id="144">
<id>16</id>
<shift reference="114"/>
<employee reference="1000"/>
- </EmployeeAssignment>
- <EmployeeAssignment id="145">
+ </Assignment>
+ <Assignment id="145">
<id>17</id>
<shift reference="114"/>
<employee reference="1020"/>
- </EmployeeAssignment>
- <EmployeeAssignment id="146">
+ </Assignment>
+ <Assignment id="146">
<id>18</id>
<shift reference="118"/>
<employee reference="1011"/>
- </EmployeeAssignment>
- </employeeAssignmentList>
+ </Assignment>
+ </assignmentList>
<score class="org.drools.planner.core.score.DefaultHardAndSoftScore" id="147">
<hardScore>0</hardScore>
<softScore>0</softScore>
More information about the jboss-svn-commits
mailing list