[jboss-svn-commits] JBL Code SVN: r32375 - in labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main: java/org/drools/planner/examples/nurserostering/domain/contract and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Apr 3 10:30:32 EDT 2010
Author: ge0ffrey
Date: 2010-04-03 10:30:32 -0400 (Sat, 03 Apr 2010)
New Revision: 32375
Added:
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/contract/
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/contract/Contract.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/contract/ContractLine.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/contract/ContractLineType.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/request/
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/request/DayOffRequest.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/request/DayOnRequest.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/request/ShiftOffRequest.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/request/ShiftOnRequest.java
Removed:
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Contract.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/DayOffRequest.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/DayOnRequest.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/ShiftOffRequest.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/ShiftOnRequest.java
Modified:
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Employee.java
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/NurseRosteringSolutionImporter.java
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl
Log:
nurse rostering: ContractLine
Deleted: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Contract.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Contract.java 2010-04-03 08:57:01 UTC (rev 32374)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Contract.java 2010-04-03 14:30:32 UTC (rev 32375)
@@ -1,43 +0,0 @@
-package org.drools.planner.examples.nurserostering.domain;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import org.apache.commons.lang.builder.CompareToBuilder;
-import org.drools.planner.examples.common.domain.AbstractPersistable;
-
-/**
- * @author Geoffrey De Smet
- */
- at XStreamAlias("Contract")
-public class Contract extends AbstractPersistable implements Comparable<Contract> {
-
- private String code;
- private String description;
-
- public String getCode() {
- return code;
- }
-
- public void setCode(String code) {
- this.code = code;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public int compareTo(Contract other) {
- return new CompareToBuilder()
- .append(id, other.id)
- .toComparison();
- }
-
- @Override
- public String toString() {
- return code;
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/DayOffRequest.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/DayOffRequest.java 2010-04-03 08:57:01 UTC (rev 32374)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/DayOffRequest.java 2010-04-03 14:30:32 UTC (rev 32375)
@@ -1,53 +0,0 @@
-package org.drools.planner.examples.nurserostering.domain;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import org.apache.commons.lang.builder.CompareToBuilder;
-import org.drools.planner.examples.common.domain.AbstractPersistable;
-
-/**
- * @author Geoffrey De Smet
- */
- at XStreamAlias("DayOffRequest")
-public class DayOffRequest extends AbstractPersistable implements Comparable<DayOffRequest> {
-
- private Employee employee;
- private ShiftDate shiftDate;
- private int weight;
-
- public Employee getEmployee() {
- return employee;
- }
-
- public void setEmployee(Employee employee) {
- this.employee = employee;
- }
-
- public ShiftDate getShiftDate() {
- return shiftDate;
- }
-
- public void setShiftDate(ShiftDate shiftDate) {
- this.shiftDate = shiftDate;
- }
-
- public int getWeight() {
- return weight;
- }
-
- public void setWeight(int weight) {
- this.weight = weight;
- }
-
- public int compareTo(DayOffRequest other) {
- return new CompareToBuilder()
- .append(employee, other.employee)
- .append(shiftDate, other.shiftDate)
- .toComparison();
- }
-
- @Override
- public String toString() {
- return shiftDate + "_OFF_" + employee;
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/DayOnRequest.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/DayOnRequest.java 2010-04-03 08:57:01 UTC (rev 32374)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/DayOnRequest.java 2010-04-03 14:30:32 UTC (rev 32375)
@@ -1,53 +0,0 @@
-package org.drools.planner.examples.nurserostering.domain;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import org.apache.commons.lang.builder.CompareToBuilder;
-import org.drools.planner.examples.common.domain.AbstractPersistable;
-
-/**
- * @author Geoffrey De Smet
- */
- at XStreamAlias("DayOnRequest")
-public class DayOnRequest extends AbstractPersistable implements Comparable<DayOnRequest> {
-
- private Employee employee;
- private ShiftDate shiftDate;
- private int weight;
-
- public Employee getEmployee() {
- return employee;
- }
-
- public void setEmployee(Employee employee) {
- this.employee = employee;
- }
-
- public ShiftDate getShiftDate() {
- return shiftDate;
- }
-
- public void setShiftDate(ShiftDate shiftDate) {
- this.shiftDate = shiftDate;
- }
-
- public int getWeight() {
- return weight;
- }
-
- public void setWeight(int weight) {
- this.weight = weight;
- }
-
- public int compareTo(DayOnRequest other) {
- return new CompareToBuilder()
- .append(employee, other.employee)
- .append(shiftDate, other.shiftDate)
- .toComparison();
- }
-
- @Override
- public String toString() {
- return shiftDate + "_ON_" + employee;
- }
-
-}
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Employee.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Employee.java 2010-04-03 08:57:01 UTC (rev 32374)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Employee.java 2010-04-03 14:30:32 UTC (rev 32375)
@@ -3,6 +3,7 @@
import com.thoughtworks.xstream.annotations.XStreamAlias;
import org.apache.commons.lang.builder.CompareToBuilder;
import org.drools.planner.examples.common.domain.AbstractPersistable;
+import org.drools.planner.examples.nurserostering.domain.contract.Contract;
/**
* @author Geoffrey De Smet
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-04-03 08:57:01 UTC (rev 32374)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/NurseRoster.java 2010-04-03 14:30:32 UTC (rev 32375)
@@ -11,6 +11,12 @@
import org.drools.planner.core.score.Score;
import org.drools.planner.core.solution.Solution;
import org.drools.planner.examples.common.domain.AbstractPersistable;
+import org.drools.planner.examples.nurserostering.domain.contract.Contract;
+import org.drools.planner.examples.nurserostering.domain.contract.ContractLine;
+import org.drools.planner.examples.nurserostering.domain.request.DayOffRequest;
+import org.drools.planner.examples.nurserostering.domain.request.DayOnRequest;
+import org.drools.planner.examples.nurserostering.domain.request.ShiftOffRequest;
+import org.drools.planner.examples.nurserostering.domain.request.ShiftOnRequest;
/**
* @author Geoffrey De Smet
@@ -25,6 +31,7 @@
private List<ShiftTypeSkillRequirement> shiftTypeSkillRequirementList;
private List<Pattern> patternList;
private List<Contract> contractList;
+ private List<ContractLine> contractLineList;
private List<Employee> employeeList;
private List<SkillProficiency> skillProficiencyList;
private List<ShiftDate> shiftDateList;
@@ -86,6 +93,14 @@
this.contractList = contractList;
}
+ public List<ContractLine> getContractLineList() {
+ return contractLineList;
+ }
+
+ public void setContractLineList(List<ContractLine> contractLineList) {
+ this.contractLineList = contractLineList;
+ }
+
public List<Employee> getEmployeeList() {
return employeeList;
}
@@ -178,6 +193,7 @@
facts.addAll(shiftTypeSkillRequirementList);
facts.addAll(patternList);
facts.addAll(contractList);
+ facts.addAll(contractLineList);
facts.addAll(employeeList);
facts.addAll(skillProficiencyList);
facts.addAll(shiftDateList);
@@ -207,6 +223,7 @@
clone.shiftTypeSkillRequirementList = shiftTypeSkillRequirementList;
clone.patternList = patternList;
clone.contractList = contractList;
+ clone.contractLineList = contractLineList;
clone.employeeList = employeeList;
clone.skillProficiencyList = skillProficiencyList;
clone.shiftDateList = shiftDateList;
Deleted: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/ShiftOffRequest.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/ShiftOffRequest.java 2010-04-03 08:57:01 UTC (rev 32374)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/ShiftOffRequest.java 2010-04-03 14:30:32 UTC (rev 32375)
@@ -1,53 +0,0 @@
-package org.drools.planner.examples.nurserostering.domain;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import org.apache.commons.lang.builder.CompareToBuilder;
-import org.drools.planner.examples.common.domain.AbstractPersistable;
-
-/**
- * @author Geoffrey De Smet
- */
- at XStreamAlias("ShiftOffRequest")
-public class ShiftOffRequest extends AbstractPersistable implements Comparable<ShiftOffRequest> {
-
- private Employee employee;
- private Shift shift;
- private int weight;
-
- public Employee getEmployee() {
- return employee;
- }
-
- public void setEmployee(Employee employee) {
- this.employee = employee;
- }
-
- public Shift getShift() {
- return shift;
- }
-
- public void setShift(Shift shift) {
- this.shift = shift;
- }
-
- public int getWeight() {
- return weight;
- }
-
- public void setWeight(int weight) {
- this.weight = weight;
- }
-
- public int compareTo(ShiftOffRequest other) {
- return new CompareToBuilder()
- .append(employee, other.employee)
- .append(shift, other.shift)
- .toComparison();
- }
-
- @Override
- public String toString() {
- return shift + "_OFF_" + employee;
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/ShiftOnRequest.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/ShiftOnRequest.java 2010-04-03 08:57:01 UTC (rev 32374)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/ShiftOnRequest.java 2010-04-03 14:30:32 UTC (rev 32375)
@@ -1,53 +0,0 @@
-package org.drools.planner.examples.nurserostering.domain;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import org.apache.commons.lang.builder.CompareToBuilder;
-import org.drools.planner.examples.common.domain.AbstractPersistable;
-
-/**
- * @author Geoffrey De Smet
- */
- at XStreamAlias("ShiftOnRequest")
-public class ShiftOnRequest extends AbstractPersistable implements Comparable<ShiftOnRequest> {
-
- private Employee employee;
- private Shift shift;
- private int weight;
-
- public Employee getEmployee() {
- return employee;
- }
-
- public void setEmployee(Employee employee) {
- this.employee = employee;
- }
-
- public Shift getShift() {
- return shift;
- }
-
- public void setShift(Shift shift) {
- this.shift = shift;
- }
-
- public int getWeight() {
- return weight;
- }
-
- public void setWeight(int weight) {
- this.weight = weight;
- }
-
- public int compareTo(ShiftOnRequest other) {
- return new CompareToBuilder()
- .append(employee, other.employee)
- .append(shift, other.shift)
- .toComparison();
- }
-
- @Override
- public String toString() {
- return shift + "_ON_" + employee;
- }
-
-}
Copied: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/contract/Contract.java (from rev 32374, labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Contract.java)
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/contract/Contract.java (rev 0)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/contract/Contract.java 2010-04-03 14:30:32 UTC (rev 32375)
@@ -0,0 +1,55 @@
+package org.drools.planner.examples.nurserostering.domain.contract;
+
+import java.util.List;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import org.apache.commons.lang.builder.CompareToBuilder;
+import org.drools.planner.examples.common.domain.AbstractPersistable;
+
+/**
+ * @author Geoffrey De Smet
+ */
+ at XStreamAlias("Contract")
+public class Contract extends AbstractPersistable implements Comparable<Contract> {
+
+ private String code;
+ private String description;
+
+ private List<ContractLine> contractLineList;
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public List<ContractLine> getContractLineList() {
+ return contractLineList;
+ }
+
+ public void setContractLineList(List<ContractLine> contractLineList) {
+ this.contractLineList = contractLineList;
+ }
+
+ public int compareTo(Contract other) {
+ return new CompareToBuilder()
+ .append(id, other.id)
+ .toComparison();
+ }
+
+ @Override
+ public String toString() {
+ return code;
+ }
+
+}
Copied: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/contract/ContractLine.java (from rev 32374, labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Contract.java)
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/contract/ContractLine.java (rev 0)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/contract/ContractLine.java 2010-04-03 14:30:32 UTC (rev 32375)
@@ -0,0 +1,99 @@
+package org.drools.planner.examples.nurserostering.domain.contract;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import org.apache.commons.lang.builder.CompareToBuilder;
+import org.drools.planner.examples.common.domain.AbstractPersistable;
+
+/**
+ * @author Geoffrey De Smet
+ */
+ at XStreamAlias("ContractLine")
+public class ContractLine extends AbstractPersistable implements Comparable<ContractLine> {
+
+ private Contract contract;
+ private ContractLineType contractLineType;
+
+ private boolean minimumEnabled;
+ private int minimumValue;
+ private int minimumWeight;
+
+ private boolean maximumEnabled;
+ private int maximumValue;
+ private int maximumWeight;
+
+ public Contract getContract() {
+ return contract;
+ }
+
+ public void setContract(Contract contract) {
+ this.contract = contract;
+ }
+
+ public ContractLineType getContractLineType() {
+ return contractLineType;
+ }
+
+ public void setContractLineType(ContractLineType contractLineType) {
+ this.contractLineType = contractLineType;
+ }
+
+ public boolean isMinimumEnabled() {
+ return minimumEnabled;
+ }
+
+ public void setMinimumEnabled(boolean minimumEnabled) {
+ this.minimumEnabled = minimumEnabled;
+ }
+
+ public int getMinimumValue() {
+ return minimumValue;
+ }
+
+ public void setMinimumValue(int minimumValue) {
+ this.minimumValue = minimumValue;
+ }
+
+ public int getMinimumWeight() {
+ return minimumWeight;
+ }
+
+ public void setMinimumWeight(int minimumWeight) {
+ this.minimumWeight = minimumWeight;
+ }
+
+ public boolean isMaximumEnabled() {
+ return maximumEnabled;
+ }
+
+ public void setMaximumEnabled(boolean maximumEnabled) {
+ this.maximumEnabled = maximumEnabled;
+ }
+
+ public int getMaximumValue() {
+ return maximumValue;
+ }
+
+ public void setMaximumValue(int maximumValue) {
+ this.maximumValue = maximumValue;
+ }
+
+ public int getMaximumWeight() {
+ return maximumWeight;
+ }
+
+ public void setMaximumWeight(int maximumWeight) {
+ this.maximumWeight = maximumWeight;
+ }
+
+ public int compareTo(ContractLine other) {
+ return new CompareToBuilder()
+ .append(id, other.id)
+ .toComparison();
+ }
+
+ @Override
+ public String toString() {
+ return contract + "-" + contractLineType;
+ }
+
+}
Copied: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/contract/ContractLineType.java (from rev 32374, labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/examination/domain/PeriodHardConstraintType.java)
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/contract/ContractLineType.java (rev 0)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/contract/ContractLineType.java 2010-04-03 14:30:32 UTC (rev 32375)
@@ -0,0 +1,12 @@
+package org.drools.planner.examples.nurserostering.domain.contract;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public enum ContractLineType {
+ TOTAL_ASSIGNMENTS,
+ CONSECUTIVE_WORKING_DAYS,
+ CONSECUTIVE_FREE_DAYS,
+ CONSECUTIVE_WORKING_WEEKENDS,
+ TOTAL_WORKING_WEEKENDS_IN_FOUR_WEEKS
+}
Copied: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/request/DayOffRequest.java (from rev 32374, labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/DayOffRequest.java)
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/request/DayOffRequest.java (rev 0)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/request/DayOffRequest.java 2010-04-03 14:30:32 UTC (rev 32375)
@@ -0,0 +1,55 @@
+package org.drools.planner.examples.nurserostering.domain.request;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import org.apache.commons.lang.builder.CompareToBuilder;
+import org.drools.planner.examples.common.domain.AbstractPersistable;
+import org.drools.planner.examples.nurserostering.domain.Employee;
+import org.drools.planner.examples.nurserostering.domain.ShiftDate;
+
+/**
+ * @author Geoffrey De Smet
+ */
+ at XStreamAlias("DayOffRequest")
+public class DayOffRequest extends AbstractPersistable implements Comparable<DayOffRequest> {
+
+ private Employee employee;
+ private ShiftDate shiftDate;
+ private int weight;
+
+ public Employee getEmployee() {
+ return employee;
+ }
+
+ public void setEmployee(Employee employee) {
+ this.employee = employee;
+ }
+
+ public ShiftDate getShiftDate() {
+ return shiftDate;
+ }
+
+ public void setShiftDate(ShiftDate shiftDate) {
+ this.shiftDate = shiftDate;
+ }
+
+ public int getWeight() {
+ return weight;
+ }
+
+ public void setWeight(int weight) {
+ this.weight = weight;
+ }
+
+ public int compareTo(DayOffRequest other) {
+ return new CompareToBuilder()
+ .append(employee, other.employee)
+ .append(shiftDate, other.shiftDate)
+ .toComparison();
+ }
+
+ @Override
+ public String toString() {
+ return shiftDate + "_OFF_" + employee;
+ }
+
+}
Copied: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/request/DayOnRequest.java (from rev 32374, labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/DayOnRequest.java)
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/request/DayOnRequest.java (rev 0)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/request/DayOnRequest.java 2010-04-03 14:30:32 UTC (rev 32375)
@@ -0,0 +1,55 @@
+package org.drools.planner.examples.nurserostering.domain.request;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import org.apache.commons.lang.builder.CompareToBuilder;
+import org.drools.planner.examples.common.domain.AbstractPersistable;
+import org.drools.planner.examples.nurserostering.domain.Employee;
+import org.drools.planner.examples.nurserostering.domain.ShiftDate;
+
+/**
+ * @author Geoffrey De Smet
+ */
+ at XStreamAlias("DayOnRequest")
+public class DayOnRequest extends AbstractPersistable implements Comparable<DayOnRequest> {
+
+ private Employee employee;
+ private ShiftDate shiftDate;
+ private int weight;
+
+ public Employee getEmployee() {
+ return employee;
+ }
+
+ public void setEmployee(Employee employee) {
+ this.employee = employee;
+ }
+
+ public ShiftDate getShiftDate() {
+ return shiftDate;
+ }
+
+ public void setShiftDate(ShiftDate shiftDate) {
+ this.shiftDate = shiftDate;
+ }
+
+ public int getWeight() {
+ return weight;
+ }
+
+ public void setWeight(int weight) {
+ this.weight = weight;
+ }
+
+ public int compareTo(DayOnRequest other) {
+ return new CompareToBuilder()
+ .append(employee, other.employee)
+ .append(shiftDate, other.shiftDate)
+ .toComparison();
+ }
+
+ @Override
+ public String toString() {
+ return shiftDate + "_ON_" + employee;
+ }
+
+}
Copied: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/request/ShiftOffRequest.java (from rev 32374, labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/ShiftOffRequest.java)
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/request/ShiftOffRequest.java (rev 0)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/request/ShiftOffRequest.java 2010-04-03 14:30:32 UTC (rev 32375)
@@ -0,0 +1,55 @@
+package org.drools.planner.examples.nurserostering.domain.request;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import org.apache.commons.lang.builder.CompareToBuilder;
+import org.drools.planner.examples.common.domain.AbstractPersistable;
+import org.drools.planner.examples.nurserostering.domain.Employee;
+import org.drools.planner.examples.nurserostering.domain.Shift;
+
+/**
+ * @author Geoffrey De Smet
+ */
+ at XStreamAlias("ShiftOffRequest")
+public class ShiftOffRequest extends AbstractPersistable implements Comparable<ShiftOffRequest> {
+
+ private Employee employee;
+ private Shift shift;
+ private int weight;
+
+ public Employee getEmployee() {
+ return employee;
+ }
+
+ public void setEmployee(Employee employee) {
+ this.employee = employee;
+ }
+
+ public Shift getShift() {
+ return shift;
+ }
+
+ public void setShift(Shift shift) {
+ this.shift = shift;
+ }
+
+ public int getWeight() {
+ return weight;
+ }
+
+ public void setWeight(int weight) {
+ this.weight = weight;
+ }
+
+ public int compareTo(ShiftOffRequest other) {
+ return new CompareToBuilder()
+ .append(employee, other.employee)
+ .append(shift, other.shift)
+ .toComparison();
+ }
+
+ @Override
+ public String toString() {
+ return shift + "_OFF_" + employee;
+ }
+
+}
Copied: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/request/ShiftOnRequest.java (from rev 32374, labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/ShiftOnRequest.java)
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/request/ShiftOnRequest.java (rev 0)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/request/ShiftOnRequest.java 2010-04-03 14:30:32 UTC (rev 32375)
@@ -0,0 +1,55 @@
+package org.drools.planner.examples.nurserostering.domain.request;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import org.apache.commons.lang.builder.CompareToBuilder;
+import org.drools.planner.examples.common.domain.AbstractPersistable;
+import org.drools.planner.examples.nurserostering.domain.Employee;
+import org.drools.planner.examples.nurserostering.domain.Shift;
+
+/**
+ * @author Geoffrey De Smet
+ */
+ at XStreamAlias("ShiftOnRequest")
+public class ShiftOnRequest extends AbstractPersistable implements Comparable<ShiftOnRequest> {
+
+ private Employee employee;
+ private Shift shift;
+ private int weight;
+
+ public Employee getEmployee() {
+ return employee;
+ }
+
+ public void setEmployee(Employee employee) {
+ this.employee = employee;
+ }
+
+ public Shift getShift() {
+ return shift;
+ }
+
+ public void setShift(Shift shift) {
+ this.shift = shift;
+ }
+
+ public int getWeight() {
+ return weight;
+ }
+
+ public void setWeight(int weight) {
+ this.weight = weight;
+ }
+
+ public int compareTo(ShiftOnRequest other) {
+ return new CompareToBuilder()
+ .append(employee, other.employee)
+ .append(shift, other.shift)
+ .toComparison();
+ }
+
+ @Override
+ public String toString() {
+ return shift + "_ON_" + employee;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/persistence/NurseRosteringSolutionImporter.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/persistence/NurseRosteringSolutionImporter.java 2010-04-03 08:57:01 UTC (rev 32374)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/persistence/NurseRosteringSolutionImporter.java 2010-04-03 14:30:32 UTC (rev 32375)
@@ -16,21 +16,23 @@
import org.drools.planner.core.solution.Solution;
import org.drools.planner.examples.common.persistence.AbstractXmlSolutionImporter;
-import org.drools.planner.examples.nurserostering.domain.Contract;
import org.drools.planner.examples.nurserostering.domain.DayOfWeek;
-import org.drools.planner.examples.nurserostering.domain.DayOffRequest;
-import org.drools.planner.examples.nurserostering.domain.DayOnRequest;
import org.drools.planner.examples.nurserostering.domain.Employee;
import org.drools.planner.examples.nurserostering.domain.NurseRoster;
import org.drools.planner.examples.nurserostering.domain.Pattern;
import org.drools.planner.examples.nurserostering.domain.Shift;
import org.drools.planner.examples.nurserostering.domain.ShiftDate;
-import org.drools.planner.examples.nurserostering.domain.ShiftOffRequest;
-import org.drools.planner.examples.nurserostering.domain.ShiftOnRequest;
import org.drools.planner.examples.nurserostering.domain.ShiftType;
import org.drools.planner.examples.nurserostering.domain.ShiftTypeSkillRequirement;
import org.drools.planner.examples.nurserostering.domain.Skill;
import org.drools.planner.examples.nurserostering.domain.SkillProficiency;
+import org.drools.planner.examples.nurserostering.domain.contract.Contract;
+import org.drools.planner.examples.nurserostering.domain.contract.ContractLine;
+import org.drools.planner.examples.nurserostering.domain.contract.ContractLineType;
+import org.drools.planner.examples.nurserostering.domain.request.DayOffRequest;
+import org.drools.planner.examples.nurserostering.domain.request.DayOnRequest;
+import org.drools.planner.examples.nurserostering.domain.request.ShiftOffRequest;
+import org.drools.planner.examples.nurserostering.domain.request.ShiftOnRequest;
import org.jdom.Element;
import org.jdom.JDOMException;
@@ -335,34 +337,85 @@
}
private void readContractList(NurseRoster nurseRoster, Element contractsElement) throws JDOMException {
+ int contractLineTypeListSize = ContractLineType.values().length;
List<Element> contractElementList = (List<Element>) contractsElement.getChildren();
List<Contract> contractList = new ArrayList<Contract>(contractElementList.size());
contractMap = new HashMap<String, Contract>(contractElementList.size());
long id = 0L;
+ List<ContractLine> contractLineList = new ArrayList<ContractLine>(
+ contractElementList.size() * contractLineTypeListSize);
+ long contractLineId = 0L;
for (Element element : contractElementList) {
assertElementName(element, "Contract");
Contract contract = new Contract();
contract.setId(id);
contract.setCode(element.getAttribute("ID").getValue());
contract.setDescription(element.getChild("Description").getText());
- // TODO the rest of the contract
+// TODO the rest of the contract
// <SingleAssignmentPerDay weight="1">true</SingleAssignmentPerDay>
// <MaxNumAssignments on="1" weight="1">16</MaxNumAssignments>
// <MinNumAssignments on="1" weight="1">6</MinNumAssignments>
-// <MaxConsecutiveWorkingDays on="1" weight="1">7</MaxConsecutiveWorkingDays>
-// <MinConsecutiveWorkingDays on="1" weight="1">1</MinConsecutiveWorkingDays>
+
+ List<ContractLine> contractLineListOfContract = new ArrayList<ContractLine>(contractLineTypeListSize);
+ Element maxElement = element.getChild("MaxConsecutiveWorkingDays");
+ Element minElement = element.getChild("MinConsecutiveWorkingDays");
+
+ boolean minimumEnabled = minElement.getAttribute("on").getBooleanValue();
+ boolean maximumEnabled = maxElement.getAttribute("on").getBooleanValue();
+ ContractLine contractLine = new ContractLine();
+ contractLine.setId(contractLineId);
+ contractLine.setContract(contract);
+ contractLine.setContractLineType(ContractLineType.CONSECUTIVE_WORKING_DAYS);
+ contractLine.setMinimumEnabled(minimumEnabled);
+ if (minimumEnabled) {
+ int minimumValue = Integer.parseInt(minElement.getText());
+ if (minimumValue < 1) {
+ throw new IllegalArgumentException("The minimumValue (" + minimumValue
+ + ") of contract (" + contract.getCode() + ") should be at least 1.");
+ }
+ contractLine.setMinimumValue(minimumValue);
+ int minimumWeight = minElement.getAttribute("weight").getIntValue();
+ if (minimumWeight < 1) {
+ throw new IllegalArgumentException("The minimumWeight (" + minimumWeight
+ + ") of contract (" + contract.getCode() + ") should be at least 1.");
+ }
+ contractLine.setMinimumWeight(minimumWeight);
+ }
+ contractLine.setMaximumEnabled(maximumEnabled);
+ if (maximumEnabled) {
+ int maximumValue = Integer.parseInt(maxElement.getText());
+ if (maximumValue < 1) {
+ throw new IllegalArgumentException("The maximumValue (" + maximumValue
+ + ") of contract (" + contract.getCode() + ") should be at least 1.");
+ }
+ contractLine.setMaximumValue(maximumValue);
+ int maximumWeight = maxElement.getAttribute("weight").getIntValue();
+ if (maximumWeight < 1) {
+ throw new IllegalArgumentException("The maximumWeight (" + maximumWeight
+ + ") of contract (" + contract.getCode() + ") should be at least 1.");
+ }
+ contractLine.setMaximumWeight(maximumWeight);
+ }
+ contractLineList.add(contractLine);
+ contractLineListOfContract.add(contractLine);
+ contractLineId++;
+
+// TODO the rest of the contract
// <MaxConsecutiveFreeDays on="1" weight="1">5</MaxConsecutiveFreeDays>
// <MinConsecutiveFreeDays on="1" weight="1">1</MinConsecutiveFreeDays>
// <MaxConsecutiveWorkingWeekends on="0" weight="0">7</MaxConsecutiveWorkingWeekends>
// <MinConsecutiveWorkingWeekends on="0" weight="0">1</MinConsecutiveWorkingWeekends>
// <MaxWorkingWeekendsInFourWeeks on="0" weight="0">0</MaxWorkingWeekendsInFourWeeks>
+
// <WeekendDefinition>SaturdaySunday</WeekendDefinition>
// <CompleteWeekends weight="1">true</CompleteWeekends>
// <IdenticalShiftTypesDuringWeekend weight="1">true</IdenticalShiftTypesDuringWeekend>
// <NoNightShiftBeforeFreeWeekend weight="0">false</NoNightShiftBeforeFreeWeekend>
// <AlternativeSkillCategory weight="0">false</AlternativeSkillCategory>
+ contract.setContractLineList(contractLineListOfContract);
+
List<Element> unwantedPatternElementList = (List<Element>) element.getChild("UnwantedPatterns")
.getChildren();
for (Element patternElement : unwantedPatternElementList) {
@@ -387,6 +440,7 @@
id++;
}
nurseRoster.setContractList(contractList);
+ nurseRoster.setContractLineList(contractLineList);
}
private void readEmployeeList(NurseRoster nurseRoster, Element employeesElement) throws JDOMException {
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-04-03 08:57:01 UTC (rev 32374)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl 2010-04-03 14:30:32 UTC (rev 32375)
@@ -5,22 +5,24 @@
import org.drools.planner.core.score.constraint.IntConstraintOccurrence;
import org.drools.planner.core.score.constraint.ConstraintType;
-import org.drools.planner.examples.nurserostering.domain.Contract;
import org.drools.planner.examples.nurserostering.domain.DayOfWeek;
-import org.drools.planner.examples.nurserostering.domain.DayOffRequest;
-import org.drools.planner.examples.nurserostering.domain.DayOnRequest;
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.Pattern;
import org.drools.planner.examples.nurserostering.domain.Shift;
import org.drools.planner.examples.nurserostering.domain.ShiftDate;
-import org.drools.planner.examples.nurserostering.domain.ShiftOffRequest;
-import org.drools.planner.examples.nurserostering.domain.ShiftOnRequest;
import org.drools.planner.examples.nurserostering.domain.ShiftType;
import org.drools.planner.examples.nurserostering.domain.ShiftTypeSkillRequirement;
import org.drools.planner.examples.nurserostering.domain.Skill;
import org.drools.planner.examples.nurserostering.domain.SkillProficiency;
+import org.drools.planner.examples.nurserostering.domain.contract.Contract;
+import org.drools.planner.examples.nurserostering.domain.contract.ContractLine;
+import org.drools.planner.examples.nurserostering.domain.contract.ContractLineType;
+import org.drools.planner.examples.nurserostering.domain.request.DayOffRequest;
+import org.drools.planner.examples.nurserostering.domain.request.DayOnRequest;
+import org.drools.planner.examples.nurserostering.domain.request.ShiftOffRequest;
+import org.drools.planner.examples.nurserostering.domain.request.ShiftOnRequest;
// @author Geoffrey De Smet
@@ -80,7 +82,9 @@
// Maximum number of consecutive working days
rule "maximumConsecutiveWorkingDays"
when
- $employee : Employee();
+ $contractLine : ContractLine(contractLineType == ContractLineType.CONSECUTIVE_WORKING_DAYS,
+ maximumEnabled == true, $contract : contract, $maximumValue : maximumValue);
+ $employee : Employee(contract == $contract);
// The first day has no working day before it
EmployeeAssignment(employee == $employee, $firstDayIndex : shiftDateDayIndex, shift != null);
@@ -97,11 +101,11 @@
);
// There are to many days
- eval(($lastDayIndex - $firstDayIndex) > 7);
+ eval(($lastDayIndex - $firstDayIndex) > $maximumValue);
then
insertLogical(new IntConstraintOccurrence("maximumConsecutiveWorkingDays", ConstraintType.NEGATIVE_SOFT,
- ($lastDayIndex - $firstDayIndex - 7),
- $employee, $firstDayIndex));
+ (($lastDayIndex - $firstDayIndex) - $maximumValue) * $contractLine.getMaximumWeight(),
+ $employee, $firstDayIndex, $lastDayIndex));
end
// Minimum number of consecutive working days
More information about the jboss-svn-commits
mailing list