[jboss-svn-commits] JBL Code SVN: r32152 - in labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering: persistence and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Mar 19 12:50:58 EDT 2010
Author: ge0ffrey
Date: 2010-03-19 12:50:57 -0400 (Fri, 19 Mar 2010)
New Revision: 32152
Added:
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Contract.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/NurseRosteringInputConverter.java
Log:
nurse rostering: contracts (unfinished)
Copied: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Contract.java (from rev 32149, labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/ShiftType.java)
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Contract.java (rev 0)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Contract.java 2010-03-19 16:50:57 UTC (rev 32152)
@@ -0,0 +1,43 @@
+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;
+ }
+
+}
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-03-19 16:33:09 UTC (rev 32151)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/NurseRoster.java 2010-03-19 16:50:57 UTC (rev 32152)
@@ -24,6 +24,7 @@
private List<ShiftType> shiftTypeList;
private List<ShiftTypeSkillRequirement> shiftTypeSkillRequirementList;
private List<ShiftPattern> shiftPatternList;
+ private List<Contract> contractList;
private List<NurseAssignment> nurseAssignmentList;
@@ -69,6 +70,14 @@
this.shiftPatternList = shiftPatternList;
}
+ public List<Contract> getContractList() {
+ return contractList;
+ }
+
+ public void setContractList(List<Contract> contractList) {
+ this.contractList = contractList;
+ }
+
public List<NurseAssignment> getNurseAssignmentList() {
return nurseAssignmentList;
}
@@ -96,6 +105,7 @@
facts.addAll(shiftTypeList);
facts.addAll(shiftTypeSkillRequirementList);
facts.addAll(shiftPatternList);
+ facts.addAll(contractList);
// TODO add more properties
@@ -116,6 +126,7 @@
clone.shiftTypeList = shiftTypeList;
clone.shiftTypeSkillRequirementList = shiftTypeSkillRequirementList;
clone.shiftPatternList = shiftPatternList;
+ clone.contractList = contractList;
// TODO add more properties
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/persistence/NurseRosteringInputConverter.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/persistence/NurseRosteringInputConverter.java 2010-03-19 16:33:09 UTC (rev 32151)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/persistence/NurseRosteringInputConverter.java 2010-03-19 16:50:57 UTC (rev 32152)
@@ -1,17 +1,14 @@
package org.drools.planner.examples.nurserostering.persistence;
-import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.drools.planner.core.solution.Solution;
-import org.drools.planner.examples.common.persistence.AbstractInputConverter;
-import org.drools.planner.examples.common.persistence.AbstractTxtInputConverter;
import org.drools.planner.examples.common.persistence.AbstractXmlInputConverter;
+import org.drools.planner.examples.nurserostering.domain.Contract;
import org.drools.planner.examples.nurserostering.domain.NurseRoster;
import org.drools.planner.examples.nurserostering.domain.ShiftPattern;
import org.drools.planner.examples.nurserostering.domain.ShiftType;
@@ -56,6 +53,8 @@
schedulingPeriodElement.getChild("ShiftTypes"));
Map<String, ShiftPattern> shiftPatternMap = readShiftPatternList(nurseRoster, shiftTypeMap,
schedulingPeriodElement.getChild("Patterns"));
+ Map<String, Contract> contractMap = readContractList(nurseRoster, shiftPatternMap,
+ schedulingPeriodElement.getChild("Contracts"));
logger.info("NurseRoster {} with TODO.",
new Object[]{nurseRoster.getCode()});
@@ -160,6 +159,18 @@
}
// TODO shiftType & day etc
+// <PatternEntry index="0">
+// <ShiftType>None</ShiftType>
+// <Day>Friday</Day>
+// </PatternEntry>
+// <PatternEntry index="1">
+// <ShiftType>Any</ShiftType>
+// <Day>Saturday</Day>
+// </PatternEntry>
+// <PatternEntry index="2">
+// <ShiftType>Any</ShiftType>
+// <Day>Sunday</Day>
+// </PatternEntry>
}
@@ -171,6 +182,64 @@
return shiftPatternMap;
}
+
+ private Map<String, Contract> readContractList(NurseRoster nurseRoster,
+ Map<String, ShiftPattern> shiftPatternMap, Element contractsElement) throws JDOMException {
+ List<Element> contractElementList = (List<Element>) contractsElement.getChildren();
+ List<Contract> contractList = new ArrayList<Contract>(contractElementList.size());
+ Map<String, Contract> contractMap = new HashMap<String, Contract>(contractElementList.size());
+ long id = 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
+// <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>
+// <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>
+
+
+ List<Element> unwantedPatternElementList = (List<Element>) element.getChild("UnwantedPatterns")
+ .getChildren();
+ for (Element patternElement : unwantedPatternElementList) {
+ assertElementName(patternElement, "Pattern");
+ ShiftPattern shiftPattern = shiftPatternMap.get(patternElement.getText());
+ if (shiftPattern == null) {
+ throw new IllegalArgumentException("The shiftPattern (" + patternElement.getText()
+ + ") of contract (" + contract.getCode() + ") does not exist.");
+ }
+ // TODO unwanted shiftPattern
+// <UnwantedPatterns>
+// <Pattern>0</Pattern>
+// <Pattern>1</Pattern>
+// <Pattern>2</Pattern>
+// </UnwantedPatterns>
+
+
+ }
+
+ contractList.add(contract);
+ contractMap.put(contract.getCode(), contract);
+ id++;
+ }
+ nurseRoster.setContractList(contractList);
+ return contractMap;
+ }
+
}
}
More information about the jboss-svn-commits
mailing list