[jboss-svn-commits] JBL Code SVN: r32153 - 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 14:02:33 EDT 2010


Author: ge0ffrey
Date: 2010-03-19 14:02:33 -0400 (Fri, 19 Mar 2010)
New Revision: 32153

Added:
   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/SkillProficiency.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: employees

Copied: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Employee.java (from rev 32152, 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/Employee.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/Employee.java	2010-03-19 18:02:33 UTC (rev 32153)
@@ -0,0 +1,52 @@
+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("Employee")
+public class Employee extends AbstractPersistable implements Comparable<Employee> {
+
+    private String code;
+    private String name;
+    private Contract contract;
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Contract getContract() {
+        return contract;
+    }
+
+    public void setContract(Contract contract) {
+        this.contract = contract;
+    }
+
+    public int compareTo(Employee other) {
+        return new CompareToBuilder()
+                .append(name, other.name)
+                .toComparison();
+    }
+
+    @Override
+    public String toString() {
+        return code + ": " + name;
+    }
+
+}

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:50:57 UTC (rev 32152)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/NurseRoster.java	2010-03-19 18:02:33 UTC (rev 32153)
@@ -25,6 +25,8 @@
     private List<ShiftTypeSkillRequirement> shiftTypeSkillRequirementList;
     private List<ShiftPattern> shiftPatternList;
     private List<Contract> contractList;
+    private List<Employee> employeeList;
+    private List<SkillProficiency> skillProficiencyList;
 
     private List<NurseAssignment> nurseAssignmentList;
 
@@ -78,6 +80,22 @@
         this.contractList = contractList;
     }
 
+    public List<Employee> getEmployeeList() {
+        return employeeList;
+    }
+
+    public void setEmployeeList(List<Employee> employeeList) {
+        this.employeeList = employeeList;
+    }
+
+    public List<SkillProficiency> getSkillProficiencyList() {
+        return skillProficiencyList;
+    }
+
+    public void setSkillProficiencyList(List<SkillProficiency> skillProficiencyList) {
+        this.skillProficiencyList = skillProficiencyList;
+    }
+
     public List<NurseAssignment> getNurseAssignmentList() {
         return nurseAssignmentList;
     }
@@ -106,6 +124,8 @@
         facts.addAll(shiftTypeSkillRequirementList);
         facts.addAll(shiftPatternList);
         facts.addAll(contractList);
+        facts.addAll(employeeList);
+        facts.addAll(skillProficiencyList);
         // TODO add more properties
 
 
@@ -127,6 +147,8 @@
         clone.shiftTypeSkillRequirementList = shiftTypeSkillRequirementList;
         clone.shiftPatternList = shiftPatternList;
         clone.contractList = contractList;
+        clone.employeeList = employeeList;
+        clone.skillProficiencyList = skillProficiencyList;
         // TODO add more properties
 
 

Copied: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/SkillProficiency.java (from rev 32149, labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/ShiftTypeSkillRequirement.java)
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/SkillProficiency.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/SkillProficiency.java	2010-03-19 18:02:33 UTC (rev 32153)
@@ -0,0 +1,44 @@
+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("SkillProficiency")
+public class SkillProficiency extends AbstractPersistable implements Comparable<SkillProficiency> {
+
+    private Employee employee;
+    private Skill skill;
+
+    public Employee getEmployee() {
+        return employee;
+    }
+
+    public void setEmployee(Employee employee) {
+        this.employee = employee;
+    }
+
+    public Skill getSkill() {
+        return skill;
+    }
+
+    public void setSkill(Skill skill) {
+        this.skill = skill;
+    }
+
+    public int compareTo(SkillProficiency other) {
+        return new CompareToBuilder()
+                .append(employee, other.employee)
+                .append(skill, other.skill)
+                .toComparison();
+    }
+
+    @Override
+    public String toString() {
+        return employee + "-" + skill;
+    }
+
+}

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:50:57 UTC (rev 32152)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/persistence/NurseRosteringInputConverter.java	2010-03-19 18:02:33 UTC (rev 32153)
@@ -9,11 +9,13 @@
 import org.drools.planner.core.solution.Solution;
 import org.drools.planner.examples.common.persistence.AbstractXmlInputConverter;
 import org.drools.planner.examples.nurserostering.domain.Contract;
+import org.drools.planner.examples.nurserostering.domain.Employee;
 import org.drools.planner.examples.nurserostering.domain.NurseRoster;
 import org.drools.planner.examples.nurserostering.domain.ShiftPattern;
 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.jdom.Element;
 import org.jdom.JDOMException;
 
@@ -55,6 +57,8 @@
                     schedulingPeriodElement.getChild("Patterns"));
             Map<String, Contract> contractMap = readContractList(nurseRoster, shiftPatternMap,
                     schedulingPeriodElement.getChild("Contracts"));
+            Map<String, Employee> employeeMap = readEmployeeList(nurseRoster, skillMap, contractMap,
+                    schedulingPeriodElement.getChild("Employees"));
 
             logger.info("NurseRoster {} with TODO.",
                     new Object[]{nurseRoster.getCode()});
@@ -182,7 +186,6 @@
             return shiftPatternMap;
         }
 
-
         private Map<String, Contract> readContractList(NurseRoster nurseRoster,
                 Map<String, ShiftPattern> shiftPatternMap, Element contractsElement) throws JDOMException {
             List<Element> contractElementList = (List<Element>) contractsElement.getChildren();
@@ -240,6 +243,55 @@
             return contractMap;
         }
 
+        private Map<String, Employee> readEmployeeList(NurseRoster nurseRoster, Map<String, Skill> skillMap,
+                Map<String, Contract> contractMap, Element employeesElement) throws JDOMException {
+            List<Element> employeeElementList = (List<Element>) employeesElement.getChildren();
+            List<Employee> employeeList = new ArrayList<Employee>(employeeElementList.size());
+            Map<String, Employee> employeeMap = new HashMap<String, Employee>(employeeElementList.size());
+            long id = 0L;
+            List<SkillProficiency> skillProficiencyList
+                    = new ArrayList<SkillProficiency>(employeeElementList.size() * 2);
+            long skillProficiencyId = 0L;
+            for (Element element : employeeElementList) {
+                assertElementName(element, "Employee");
+                Employee employee = new Employee();
+                employee.setId(id);
+                employee.setCode(element.getAttribute("ID").getValue());
+                employee.setName(element.getChild("Name").getText());
+                Element contractElement = element.getChild("ContractID");
+                Contract contract = contractMap.get(contractElement.getText());
+                if (contract == null) {
+                    throw new IllegalArgumentException("The contract (" + contractElement.getText()
+                            + ") of employee (" + employee.getCode() + ") does not exist.");
+                }
+                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.");
+                    }
+                    SkillProficiency skillProficiency = new SkillProficiency();
+                    skillProficiency.setId(skillProficiencyId);
+                    skillProficiency.setEmployee(employee);
+                    skillProficiency.setSkill(skill);
+                    skillProficiencyList.add(skillProficiency);
+                    skillProficiencyId++;
+                }
+
+                employeeList.add(employee);
+                employeeMap.put(employee.getCode(), employee);
+                id++;
+            }
+            nurseRoster.setEmployeeList(employeeList);
+            nurseRoster.setSkillProficiencyList(skillProficiencyList);
+            return employeeMap;
+        }
+
     }
 
 }



More information about the jboss-svn-commits mailing list