[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