[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