[jboss-svn-commits] JBL Code SVN: r32257 - 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
Sat Mar 27 12:05:53 EDT 2010


Author: ge0ffrey
Date: 2010-03-27 12:05:53 -0400 (Sat, 27 Mar 2010)
New Revision: 32257

Modified:
   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
   labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/persistence/NurseRosteringInputConverter.java
Log:
nurse rostering: day off and day on requests

Modified: 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-03-27 15:34:18 UTC (rev 32256)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/DayOffRequest.java	2010-03-27 16:05:53 UTC (rev 32257)
@@ -12,6 +12,7 @@
 
     private Employee employee;
     private ShiftDate shiftDate;
+    private int weight;
 
     public Employee getEmployee() {
         return employee;
@@ -29,6 +30,14 @@
         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)

Modified: 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-03-27 15:34:18 UTC (rev 32256)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/DayOnRequest.java	2010-03-27 16:05:53 UTC (rev 32257)
@@ -12,6 +12,7 @@
 
     private Employee employee;
     private ShiftDate shiftDate;
+    private int weight;
 
     public Employee getEmployee() {
         return employee;
@@ -29,6 +30,14 @@
         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)

Modified: 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-03-27 15:34:18 UTC (rev 32256)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/ShiftOffRequest.java	2010-03-27 16:05:53 UTC (rev 32257)
@@ -12,6 +12,7 @@
 
     private Employee employee;
     private Shift shift;
+    private int weight;
 
     public Employee getEmployee() {
         return employee;
@@ -29,6 +30,14 @@
         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)

Modified: 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-03-27 15:34:18 UTC (rev 32256)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/ShiftOnRequest.java	2010-03-27 16:05:53 UTC (rev 32257)
@@ -12,6 +12,7 @@
 
     private Employee employee;
     private Shift shift;
+    private int weight;
 
     public Employee getEmployee() {
         return employee;
@@ -29,6 +30,14 @@
         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)

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-27 15:34:18 UTC (rev 32256)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/persistence/NurseRosteringInputConverter.java	2010-03-27 16:05:53 UTC (rev 32257)
@@ -16,6 +16,8 @@
 import org.drools.planner.examples.common.persistence.AbstractXmlInputConverter;
 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.ShiftDate;
@@ -70,6 +72,11 @@
             readShiftPatternList(nurseRoster, schedulingPeriodElement.getChild("Patterns"));
             readContractList(nurseRoster, schedulingPeriodElement.getChild("Contracts"));
             readEmployeeList(nurseRoster, schedulingPeriodElement.getChild("Employees"));
+//            readTodoList(nurseRoster, schedulingPeriodElement.getChild("CoverRequirements"));
+            readDayOffRequestList(nurseRoster, schedulingPeriodElement.getChild("DayOffRequests"));
+            readDayOnRequestList(nurseRoster, schedulingPeriodElement.getChild("DayOnRequests"));
+//            readShiftOffRequestList(nurseRoster, schedulingPeriodElement.getChild("ShiftOffRequests"));
+//            readShiftOnRequestList(nurseRoster, schedulingPeriodElement.getChild("ShiftOnRequests"));
 
             logger.info("NurseRoster {} with TODO.",
                     new Object[]{nurseRoster.getCode()});
@@ -141,6 +148,9 @@
         }
 
         private void readSkillList(NurseRoster nurseRoster, Element skillsElement) throws JDOMException {
+            if (skillsElement == null) {
+                return;
+            }
             List<Element> skillElementList = (List<Element>) skillsElement.getChildren();
             List<Skill> skillList = new ArrayList<Skill>(skillElementList.size());
             skillMap = new HashMap<String, Skill>(skillElementList.size());
@@ -174,20 +184,23 @@
                 shiftType.setEndTimeString(element.getChild("EndTime").getText());
                 shiftType.setDescription(element.getChild("Description").getText());
 
-                List<Element> skillElementList = (List<Element>) element.getChild("Skills").getChildren();
-                for (Element skillElement : skillElementList) {
-                    assertElementName(skillElement, "Skill");
-                    ShiftTypeSkillRequirement shiftTypeSkillRequirement = new ShiftTypeSkillRequirement();
-                    shiftTypeSkillRequirement.setId(shiftTypeSkillRequirementId);
-                    shiftTypeSkillRequirement.setShiftType(shiftType);
-                    Skill skill = skillMap.get(skillElement.getText());
-                    if (skill == null) {
-                        throw new IllegalArgumentException("The skill (" + skillElement.getText()
-                                + ") of shiftType (" + shiftType.getCode() + ") does not exist.");
+                Element skillsElement = element.getChild("Skills");
+                if (skillsElement != null) {
+                    List<Element> skillElementList = (List<Element>) skillsElement.getChildren();
+                    for (Element skillElement : skillElementList) {
+                        assertElementName(skillElement, "Skill");
+                        ShiftTypeSkillRequirement shiftTypeSkillRequirement = new ShiftTypeSkillRequirement();
+                        shiftTypeSkillRequirement.setId(shiftTypeSkillRequirementId);
+                        shiftTypeSkillRequirement.setShiftType(shiftType);
+                        Skill skill = skillMap.get(skillElement.getText());
+                        if (skill == null) {
+                            throw new IllegalArgumentException("The skill (" + skillElement.getText()
+                                    + ") of shiftType (" + shiftType.getCode() + ") does not exist.");
+                        }
+                        shiftTypeSkillRequirement.setSkill(skill);
+                        shiftTypeSkillRequirementList.add(shiftTypeSkillRequirement);
+                        shiftTypeSkillRequirementId++;
                     }
-                    shiftTypeSkillRequirement.setSkill(skill);
-                    shiftTypeSkillRequirementList.add(shiftTypeSkillRequirement);
-                    shiftTypeSkillRequirementId++;
                 }
 
                 shiftTypeList.add(shiftType);
@@ -199,6 +212,9 @@
         }
 
         private void readShiftPatternList(NurseRoster nurseRoster, Element patternsElement) throws JDOMException {
+            if (patternsElement == null) {
+                return;
+            }
             List<Element> patternElementList = (List<Element>) patternsElement.getChildren();
             List<ShiftPattern> shiftPatternList = new ArrayList<ShiftPattern>(patternElementList.size());
             shiftPatternMap = new HashMap<String, ShiftPattern>(patternElementList.size());
@@ -331,21 +347,23 @@
                 }
                 employee.setContract(contract);
 
-                List<Element> skillElementList = (List<Element>) element.getChild("Skills")
-                        .getChildren();
-                for (Element skillElement : skillElementList) {
-                    assertElementName(skillElement, "Skill");
-                    Skill skill = skillMap.get(skillElement.getText());
-                    if (skill == null) {
-                        throw new IllegalArgumentException("The skill (" + skillElement.getText()
-                                + ") of employee (" + employee.getCode() + ") does not exist.");
+                Element skillsElement = element.getChild("Skills");
+                if (skillsElement != null) {
+                    List<Element> skillElementList = (List<Element>) skillsElement.getChildren();
+                    for (Element skillElement : skillElementList) {
+                        assertElementName(skillElement, "Skill");
+                        Skill skill = skillMap.get(skillElement.getText());
+                        if (skill == null) {
+                            throw new IllegalArgumentException("The skill (" + skillElement.getText()
+                                    + ") of employee (" + employee.getCode() + ") does not exist.");
+                        }
+                        SkillProficiency skillProficiency = new SkillProficiency();
+                        skillProficiency.setId(skillProficiencyId);
+                        skillProficiency.setEmployee(employee);
+                        skillProficiency.setSkill(skill);
+                        skillProficiencyList.add(skillProficiency);
+                        skillProficiencyId++;
                     }
-                    SkillProficiency skillProficiency = new SkillProficiency();
-                    skillProficiency.setId(skillProficiencyId);
-                    skillProficiency.setEmployee(employee);
-                    skillProficiency.setSkill(skill);
-                    skillProficiencyList.add(skillProficiency);
-                    skillProficiencyId++;
                 }
 
                 employeeList.add(employee);
@@ -356,6 +374,78 @@
             nurseRoster.setSkillProficiencyList(skillProficiencyList);
         }
 
+        private void readDayOffRequestList(NurseRoster nurseRoster, Element dayOffRequestsElement) throws JDOMException {
+            if (dayOffRequestsElement == null) {
+                return;
+            }
+            List<Element> dayOffElementList = (List<Element>) dayOffRequestsElement.getChildren();
+            List<DayOffRequest> dayOffRequestList = new ArrayList<DayOffRequest>(dayOffElementList.size());
+            long id = 0L;
+            for (Element element : dayOffElementList) {
+                assertElementName(element, "DayOff");
+                DayOffRequest dayOffRequest = new DayOffRequest();
+                dayOffRequest.setId(id);
+                
+                Element employeeElement = element.getChild("EmployeeID");
+                Employee employee = employeeMap.get(employeeElement.getText());
+                if (employee == null) {
+                    throw new IllegalArgumentException("The shiftDate (" + employeeElement.getText()
+                            + ") of dayOffRequest (" + dayOffRequest + ") does not exist.");
+                }
+                dayOffRequest.setEmployee(employee);
+
+                Element dateElement = element.getChild("Date");
+                ShiftDate shiftDate = shiftDateMap.get(dateElement.getText());
+                if (shiftDate == null) {
+                    throw new IllegalArgumentException("The date (" + dateElement.getText()
+                            + ") of dayOffRequest (" + dayOffRequest + ") does not exist.");
+                }
+                dayOffRequest.setShiftDate(shiftDate);
+
+                dayOffRequest.setWeight(element.getAttribute("weight").getIntValue());
+
+                dayOffRequestList.add(dayOffRequest);
+                id++;
+            }
+            nurseRoster.setDayOffRequestList(dayOffRequestList);
+        }
+
+        private void readDayOnRequestList(NurseRoster nurseRoster, Element dayOnRequestsElement) throws JDOMException {
+            if (dayOnRequestsElement == null) {
+                return;
+            }
+            List<Element> dayOnElementList = (List<Element>) dayOnRequestsElement.getChildren();
+            List<DayOnRequest> dayOnRequestList = new ArrayList<DayOnRequest>(dayOnElementList.size());
+            long id = 0L;
+            for (Element element : dayOnElementList) {
+                assertElementName(element, "DayOn");
+                DayOnRequest dayOnRequest = new DayOnRequest();
+                dayOnRequest.setId(id);
+
+                Element employeeElement = element.getChild("EmployeeID");
+                Employee employee = employeeMap.get(employeeElement.getText());
+                if (employee == null) {
+                    throw new IllegalArgumentException("The shiftDate (" + employeeElement.getText()
+                            + ") of dayOnRequest (" + dayOnRequest + ") does not exist.");
+                }
+                dayOnRequest.setEmployee(employee);
+
+                Element dateElement = element.getChild("Date");
+                ShiftDate shiftDate = shiftDateMap.get(dateElement.getText());
+                if (shiftDate == null) {
+                    throw new IllegalArgumentException("The date (" + dateElement.getText()
+                            + ") of dayOnRequest (" + dayOnRequest + ") does not exist.");
+                }
+                dayOnRequest.setShiftDate(shiftDate);
+
+                dayOnRequest.setWeight(element.getAttribute("weight").getIntValue());
+
+                dayOnRequestList.add(dayOnRequest);
+                id++;
+            }
+            nurseRoster.setDayOnRequestList(dayOnRequestList);
+        }
+
     }
 
 }



More information about the jboss-svn-commits mailing list