[jboss-svn-commits] JBL Code SVN: r27189 - in labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling: persistence and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Jun 27 10:51:30 EDT 2009
Author: ge0ffrey
Date: 2009-06-27 10:51:30 -0400 (Sat, 27 Jun 2009)
New Revision: 27189
Added:
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Admission.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Night.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Patient.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/PreferredPatientEquipment.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/RequiredPatientEquipment.java
Modified:
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Bed.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/PatientAdmissionSchedule.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Room.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/persistence/PatientAdmissionSchedulingInputConvertor.java
Log:
pas domain: patient, admission etc
Added: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Admission.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Admission.java (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Admission.java 2009-06-27 14:51:30 UTC (rev 27189)
@@ -0,0 +1,61 @@
+package org.drools.solver.examples.patientadmissionscheduling.domain;
+
+import org.apache.commons.lang.builder.CompareToBuilder;
+import org.drools.solver.examples.common.domain.AbstractPersistable;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class Admission extends AbstractPersistable implements Comparable<Admission> {
+
+ private Patient patient;
+ private Night firstNight;
+ private Night lastNight;
+ private Specialism specialism;
+
+ public Patient getPatient() {
+ return patient;
+ }
+
+ public void setPatient(Patient patient) {
+ this.patient = patient;
+ }
+
+ public Night getFirstNight() {
+ return firstNight;
+ }
+
+ public void setFirstNight(Night firstNight) {
+ this.firstNight = firstNight;
+ }
+
+ public Night getLastNight() {
+ return lastNight;
+ }
+
+ public void setLastNight(Night lastNight) {
+ this.lastNight = lastNight;
+ }
+
+ public Specialism getSpecialism() {
+ return specialism;
+ }
+
+ public void setSpecialism(Specialism specialism) {
+ this.specialism = specialism;
+ }
+
+ public int compareTo(Admission other) {
+ return new CompareToBuilder()
+ .append(patient, other.patient)
+ .append(firstNight, other.firstNight)
+ .append(id, other.id)
+ .toComparison();
+ }
+
+ @Override
+ public String toString() {
+ return patient + "(" + firstNight + "-" + lastNight + ")";
+ }
+
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Bed.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Bed.java 2009-06-27 14:08:50 UTC (rev 27188)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Bed.java 2009-06-27 14:51:30 UTC (rev 27189)
@@ -29,6 +29,8 @@
public int compareTo(Bed other) {
return new CompareToBuilder()
+ .append(room, other.room)
+ .append(indexInRoom, other.indexInRoom)
.append(id, other.id)
.toComparison();
}
Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Night.java (from rev 27186, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Bed.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Night.java (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Night.java 2009-06-27 14:51:30 UTC (rev 27189)
@@ -0,0 +1,33 @@
+package org.drools.solver.examples.patientadmissionscheduling.domain;
+
+import org.apache.commons.lang.builder.CompareToBuilder;
+import org.drools.solver.examples.common.domain.AbstractPersistable;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class Night extends AbstractPersistable implements Comparable<Night> {
+
+ private int index;
+
+ public int getIndex() {
+ return index;
+ }
+
+ public void setIndex(int index) {
+ this.index = index;
+ }
+
+ public int compareTo(Night other) {
+ return new CompareToBuilder()
+ .append(index, other.index)
+ .append(id, other.id)
+ .toComparison();
+ }
+
+ @Override
+ public String toString() {
+ return Integer.toString(index);
+ }
+
+}
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Patient.java (from rev 27186, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Bed.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Patient.java (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Patient.java 2009-06-27 14:51:30 UTC (rev 27189)
@@ -0,0 +1,59 @@
+package org.drools.solver.examples.patientadmissionscheduling.domain;
+
+import org.apache.commons.lang.builder.CompareToBuilder;
+import org.drools.solver.examples.common.domain.AbstractPersistable;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class Patient extends AbstractPersistable implements Comparable<Patient> {
+
+ private String name;
+ private Gender gender;
+ private int age;
+ private int preferredMaximumRoomCapacity;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Gender getGender() {
+ return gender;
+ }
+
+ public void setGender(Gender gender) {
+ this.gender = gender;
+ }
+
+ public int getAge() {
+ return age;
+ }
+
+ public void setAge(int age) {
+ this.age = age;
+ }
+
+ public int getPreferredMaximumRoomCapacity() {
+ return preferredMaximumRoomCapacity;
+ }
+
+ public void setPreferredMaximumRoomCapacity(int preferredMaximumRoomCapacity) {
+ this.preferredMaximumRoomCapacity = preferredMaximumRoomCapacity;
+ }
+
+ public int compareTo(Patient other) {
+ return new CompareToBuilder()
+ .append(id, other.id)
+ .toComparison();
+ }
+
+ @Override
+ public String toString() {
+ return name;
+ }
+
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/PatientAdmissionSchedule.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/PatientAdmissionSchedule.java 2009-06-27 14:08:50 UTC (rev 27188)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/PatientAdmissionSchedule.java 2009-06-27 14:51:30 UTC (rev 27189)
@@ -23,6 +23,11 @@
private List<RoomSpecialism> roomSpecialismList;
private List<RoomEquipment> roomEquipmentList;
private List<Bed> bedList;
+ private List<Night> nightList;
+ private List<Patient> patientList;
+ private List<Admission> admissionList;
+ private List<RequiredPatientEquipment> requiredPatientEquipmentList;
+ private List<PreferredPatientEquipment> preferredPatientEquipmentList;
private List<Exam> examList;
@@ -94,6 +99,46 @@
this.bedList = bedList;
}
+ public List<Night> getNightList() {
+ return nightList;
+ }
+
+ public void setNightList(List<Night> nightList) {
+ this.nightList = nightList;
+ }
+
+ public List<Patient> getPatientList() {
+ return patientList;
+ }
+
+ public void setPatientList(List<Patient> patientList) {
+ this.patientList = patientList;
+ }
+
+ public List<Admission> getAdmissionList() {
+ return admissionList;
+ }
+
+ public void setAdmissionList(List<Admission> admissionList) {
+ this.admissionList = admissionList;
+ }
+
+ public List<RequiredPatientEquipment> getRequiredPatientEquipmentList() {
+ return requiredPatientEquipmentList;
+ }
+
+ public void setRequiredPatientEquipmentList(List<RequiredPatientEquipment> requiredPatientEquipmentList) {
+ this.requiredPatientEquipmentList = requiredPatientEquipmentList;
+ }
+
+ public List<PreferredPatientEquipment> getPreferredPatientEquipmentList() {
+ return preferredPatientEquipmentList;
+ }
+
+ public void setPreferredPatientEquipmentList(List<PreferredPatientEquipment> preferredPatientEquipmentList) {
+ this.preferredPatientEquipmentList = preferredPatientEquipmentList;
+ }
+
public Collection<? extends Object> getFacts() {
List<Object> facts = new ArrayList<Object>();
facts.addAll(specialismList);
@@ -104,6 +149,11 @@
facts.addAll(roomSpecialismList);
facts.addAll(roomEquipmentList);
facts.addAll(bedList);
+ facts.addAll(nightList);
+ facts.addAll(patientList);
+ facts.addAll(admissionList);
+ facts.addAll(requiredPatientEquipmentList);
+ facts.addAll(preferredPatientEquipmentList);
// facts.addAll(roomList);
@@ -129,6 +179,11 @@
clone.roomSpecialismList = roomSpecialismList;
clone.roomEquipmentList = roomEquipmentList;
clone.bedList = bedList;
+ clone.nightList = nightList;
+ clone.patientList = patientList;
+ clone.admissionList = admissionList;
+ clone.requiredPatientEquipmentList = requiredPatientEquipmentList;
+ clone.preferredPatientEquipmentList = preferredPatientEquipmentList;
// clone.roomList = roomList;
Added: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/PreferredPatientEquipment.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/PreferredPatientEquipment.java (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/PreferredPatientEquipment.java 2009-06-27 14:51:30 UTC (rev 27189)
@@ -0,0 +1,43 @@
+package org.drools.solver.examples.patientadmissionscheduling.domain;
+
+import org.apache.commons.lang.builder.CompareToBuilder;
+import org.drools.solver.examples.common.domain.AbstractPersistable;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class PreferredPatientEquipment extends AbstractPersistable implements Comparable<PreferredPatientEquipment> {
+
+ private Patient patient;
+ private Equipment equipment;
+
+ public Patient getPatient() {
+ return patient;
+ }
+
+ public void setPatient(Patient patient) {
+ this.patient = patient;
+ }
+
+ public Equipment getEquipment() {
+ return equipment;
+ }
+
+ public void setEquipment(Equipment equipment) {
+ this.equipment = equipment;
+ }
+
+ public int compareTo(PreferredPatientEquipment other) {
+ return new CompareToBuilder()
+ .append(patient, other.patient)
+ .append(equipment, other.equipment)
+ .append(id, other.id)
+ .toComparison();
+ }
+
+ @Override
+ public String toString() {
+ return patient + "-" + equipment;
+ }
+
+}
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/RequiredPatientEquipment.java (from rev 27185, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/RoomEquipment.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/RequiredPatientEquipment.java (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/RequiredPatientEquipment.java 2009-06-27 14:51:30 UTC (rev 27189)
@@ -0,0 +1,43 @@
+package org.drools.solver.examples.patientadmissionscheduling.domain;
+
+import org.apache.commons.lang.builder.CompareToBuilder;
+import org.drools.solver.examples.common.domain.AbstractPersistable;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class RequiredPatientEquipment extends AbstractPersistable implements Comparable<RequiredPatientEquipment> {
+
+ private Patient patient;
+ private Equipment equipment;
+
+ public Patient getPatient() {
+ return patient;
+ }
+
+ public void setPatient(Patient patient) {
+ this.patient = patient;
+ }
+
+ public Equipment getEquipment() {
+ return equipment;
+ }
+
+ public void setEquipment(Equipment equipment) {
+ this.equipment = equipment;
+ }
+
+ public int compareTo(RequiredPatientEquipment other) {
+ return new CompareToBuilder()
+ .append(patient, other.patient)
+ .append(equipment, other.equipment)
+ .append(id, other.id)
+ .toComparison();
+ }
+
+ @Override
+ public String toString() {
+ return patient + "-" + equipment;
+ }
+
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Room.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Room.java 2009-06-27 14:08:50 UTC (rev 27188)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/domain/Room.java 2009-06-27 14:51:30 UTC (rev 27189)
@@ -48,6 +48,7 @@
public int compareTo(Room other) {
return new CompareToBuilder()
+ .append(department, other.department)
.append(id, other.id)
.toComparison();
}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/persistence/PatientAdmissionSchedulingInputConvertor.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/persistence/PatientAdmissionSchedulingInputConvertor.java 2009-06-27 14:08:50 UTC (rev 27188)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionscheduling/persistence/PatientAdmissionSchedulingInputConvertor.java 2009-06-27 14:51:30 UTC (rev 27189)
@@ -17,6 +17,12 @@
import org.drools.solver.examples.patientadmissionscheduling.domain.GenderLimitation;
import org.drools.solver.examples.patientadmissionscheduling.domain.RoomEquipment;
import org.drools.solver.examples.patientadmissionscheduling.domain.Bed;
+import org.drools.solver.examples.patientadmissionscheduling.domain.Night;
+import org.drools.solver.examples.patientadmissionscheduling.domain.Patient;
+import org.drools.solver.examples.patientadmissionscheduling.domain.Admission;
+import org.drools.solver.examples.patientadmissionscheduling.domain.RequiredPatientEquipment;
+import org.drools.solver.examples.patientadmissionscheduling.domain.PreferredPatientEquipment;
+import org.drools.solver.examples.patientadmissionscheduling.domain.Gender;
import org.drools.solver.core.solution.Solution;
/**
@@ -45,13 +51,14 @@
private int equipmentListSize;
private int roomListSize;
private int bedListSize;
+ private int nightListSize;
private int patientListSize;
- private int nightListSize;
private Map<Long, Specialism> idToSpecialismMap = null;
private Map<Long, Department> idToDepartmentMap = null;
private Map<Integer, Equipment> indexToEquipmentMap = null;
private Map<Long, Room> idToRoomMap = null;
+ private Map<Integer, Night> indexToNightMap = null;
public Solution readSolution() throws IOException {
patientAdmissionSchedule = new PatientAdmissionSchedule();
@@ -69,8 +76,10 @@
readEmptyLine();
readBedList();
readEmptyLine();
-
-
+ generateNightList();
+ readPatientListAndAdmissionListAndRequiredPatientEquipmentListAndPreferredPatientEquipmentList();
+ readEmptyLine();
+ readConstantLine("END.");
return patientAdmissionSchedule;
}
@@ -130,7 +139,7 @@
if (departmentSpecialismTokens.length % 2 != 0) {
throw new IllegalArgumentException("Read line (" + line
+ ") is expected to contain even number of tokens (" + departmentSpecialismTokens.length
- + ") after pipeline (|) seperated by a space ( ).");
+ + ") after 1st pipeline (|) seperated by a space ( ).");
}
for (int j = 0; j < departmentSpecialismTokens.length; j += 2) {
DepartmentSpecialism departmentSpecialism = new DepartmentSpecialism();
@@ -187,7 +196,7 @@
if (roomSpecialismTokens.length % 2 != 0) {
throw new IllegalArgumentException("Read line (" + line
+ ") is expected to contain even number of tokens (" + roomSpecialismTokens.length
- + ") after pipeline (|) seperated by a space ( ).");
+ + ") after 4th pipeline (|) seperated by a space ( ).");
}
for (int j = 0; j < roomSpecialismTokens.length; j += 2) {
int priority = Integer.parseInt(roomSpecialismTokens[j]);
@@ -201,10 +210,10 @@
}
String[] roomEquipmentTokens = splitBySpace(lineTokens[5]);
- if (roomEquipmentTokens.length % 2 != 0) {
+ if (roomEquipmentTokens.length != equipmentListSize) {
throw new IllegalArgumentException("Read line (" + line
- + ") is expected to contain even number of tokens (" + roomEquipmentTokens.length
- + ") after pipeline (|) seperated by a space ( ).");
+ + ") is expected to contain equal number of tokens (" + roomEquipmentTokens.length
+ + ") as equipmentListSize (" + equipmentListSize + ") after 5th pipeline (|).");
}
for (int j = 0; j < roomEquipmentTokens.length; j++) {
int hasEquipment = Integer.parseInt(roomEquipmentTokens[j]);
@@ -249,7 +258,141 @@
patientAdmissionSchedule.setBedList(bedList);
}
+ private void generateNightList() {
+ List<Night> nightList = new ArrayList<Night>(nightListSize);
+ indexToNightMap = new HashMap<Integer, Night>(nightListSize);
+ for (int i = 0; i < nightListSize; i++) {
+ Night night = new Night();
+ night.setId((long) i);
+ night.setIndex(i);
+ nightList.add(night);
+ indexToNightMap.put(i, night);
+ }
+ patientAdmissionSchedule.setNightList(nightList);
+ }
+ private void readPatientListAndAdmissionListAndRequiredPatientEquipmentListAndPreferredPatientEquipmentList() throws IOException {
+ readConstantLine("PATIENTS:");
+ List<Patient> patientList = new ArrayList<Patient>(patientListSize);
+ List<Admission> admissionList = new ArrayList<Admission>(patientListSize);
+ List<RequiredPatientEquipment> requiredPatientEquipmentList = new ArrayList<RequiredPatientEquipment>(patientListSize * equipmentListSize);
+ List<PreferredPatientEquipment> preferredPatientEquipmentList = new ArrayList<PreferredPatientEquipment>(patientListSize * equipmentListSize);
+ for (int i = 0; i < patientListSize; i++) {
+ String line = bufferedReader.readLine();
+ String[] lineTokens = splitByPipeline(line, 6);
+
+ String[] patientTokens = splitBySpace(lineTokens[0], 4);
+ Patient patient = new Patient();
+ patient.setId(Long.parseLong(patientTokens[0]));
+ patient.setName(patientTokens[1]);
+ patient.setAge(Integer.parseInt(patientTokens[2]));
+ patient.setGender(Gender.valueOfCode(patientTokens[3]));
+ patient.setPreferredMaximumRoomCapacity(Integer.parseInt(lineTokens[3]));
+ patientList.add(patient);
+
+ String[] nightTokens = splitBySpace(lineTokens[1], 2);
+ Night firstNight = indexToNightMap.get(Integer.parseInt(nightTokens[0]));
+ int lastNightIndex = Integer.parseInt(nightTokens[1]);
+ ensureEnoughNights(lastNightIndex);
+ Night endNight = indexToNightMap.get(lastNightIndex);
+ int patientNightListSize = endNight.getIndex() - firstNight.getIndex();
+
+ String[] admissionTokens = splitBySpace(lineTokens[2]);
+ if (admissionTokens.length % 2 != 1) {
+ }
+ int patientAdmissionListSize = Integer.parseInt(admissionTokens[0]);
+ if (admissionTokens.length != ((patientAdmissionListSize * 2) + 1)) {
+ throw new IllegalArgumentException("Read line (" + line
+ + ") is expected to contain " + ((patientAdmissionListSize * 2) + 1)
+ + " number of tokens after 2th pipeline (|).");
+ }
+ long admissionId = 0;
+ int nextFirstNightIndex = firstNight.getIndex();
+ for (int j = 1; j < admissionTokens.length; j += 2) {
+ long specialismId = Long.parseLong(admissionTokens[j]);
+ int admissionNightListSize = Integer.parseInt(admissionTokens[j + 1]);
+ Admission admission = new Admission();
+ admission.setId(admissionId);
+ admission.setPatient(patient);
+ admission.setSpecialism(idToSpecialismMap.get(specialismId));
+ admission.setFirstNight(indexToNightMap.get(nextFirstNightIndex));
+ admission.setLastNight(indexToNightMap.get(nextFirstNightIndex + admissionNightListSize - 1));
+ admissionList.add(admission);
+ admissionId++;
+ nextFirstNightIndex += admissionNightListSize;
+ }
+ if (nextFirstNightIndex != nextFirstNightIndex) {
+ throw new IllegalArgumentException("Read line (" + line
+ + ") has patientNightListSize (" + patientNightListSize
+ + ") different from the sum of admissionNightListSize (" + nextFirstNightIndex + ")");
+ }
+
+ String[] requiredPatientEquipmentTokens = splitBySpace(lineTokens[4]);
+ if (requiredPatientEquipmentTokens.length != equipmentListSize) {
+ throw new IllegalArgumentException("Read line (" + line
+ + ") is expected to contain equal number of tokens ("
+ + requiredPatientEquipmentTokens.length
+ + ") as equipmentListSize (" + equipmentListSize + ") after 4th pipeline (|).");
+ }
+ for (int j = 0; j < requiredPatientEquipmentTokens.length; j++) {
+ int hasEquipment = Integer.parseInt(requiredPatientEquipmentTokens[j]);
+ if (hasEquipment == 1) {
+ RequiredPatientEquipment patientEquipment = new RequiredPatientEquipment();
+ patientEquipment.setId((long) j);
+ patientEquipment.setPatient(patient);
+ patientEquipment.setEquipment(indexToEquipmentMap.get(j));
+ requiredPatientEquipmentList.add(patientEquipment);
+ } else if (hasEquipment != 0) {
+ throw new IllegalArgumentException("Read line (" + line
+ + ") is expected to have 0 or 1 hasEquipment (" + hasEquipment + ").");
+ }
+ }
+
+ String[] preferredPatientEquipmentTokens = splitBySpace(lineTokens[5]);
+ if (preferredPatientEquipmentTokens.length != equipmentListSize) {
+ throw new IllegalArgumentException("Read line (" + line
+ + ") is expected to contain equal number of tokens ("
+ + preferredPatientEquipmentTokens.length
+ + ") as equipmentListSize (" + equipmentListSize + ") after 5th pipeline (|).");
+ }
+ for (int j = 0; j < preferredPatientEquipmentTokens.length; j++) {
+ int hasEquipment = Integer.parseInt(preferredPatientEquipmentTokens[j]);
+ if (hasEquipment == 1) {
+ PreferredPatientEquipment patientEquipment = new PreferredPatientEquipment();
+ patientEquipment.setId((long) j);
+ patientEquipment.setPatient(patient);
+ patientEquipment.setEquipment(indexToEquipmentMap.get(j));
+ preferredPatientEquipmentList.add(patientEquipment);
+ } else if (hasEquipment != 0) {
+ throw new IllegalArgumentException("Read line (" + line
+ + ") is expected to have 0 or 1 hasEquipment (" + hasEquipment + ").");
+ }
+ }
+ }
+ patientAdmissionSchedule.setPatientList(patientList);
+ patientAdmissionSchedule.setAdmissionList(admissionList);
+ patientAdmissionSchedule.setRequiredPatientEquipmentList(requiredPatientEquipmentList);
+ patientAdmissionSchedule.setPreferredPatientEquipmentList(preferredPatientEquipmentList);
+ }
+
+ /**
+ * hack to make sure there are enough nights
+ * @param lastNightIndex >= 0
+ */
+ private void ensureEnoughNights(int lastNightIndex) {
+ List<Night> nightList = patientAdmissionSchedule.getNightList();
+ if (lastNightIndex >= nightList.size()) {
+ for (int j = nightList.size(); j <= lastNightIndex; j++) {
+ Night night = new Night();
+ night.setId((long) j);
+ night.setIndex(j);
+ nightList.add(night);
+ indexToNightMap.put(j, night);
+ }
+ }
+ }
+
+
// ************************************************************************
// Helper methods
// ************************************************************************
More information about the jboss-svn-commits
mailing list