[jboss-svn-commits] JBL Code SVN: r27206 - in labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule: persistence and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Jun 27 14:16:23 EDT 2009


Author: ge0ffrey
Date: 2009-06-27 14:16:22 -0400 (Sat, 27 Jun 2009)
New Revision: 27206

Modified:
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/Bed.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/Department.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/Patient.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/Room.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/persistence/PatientAdmissionScheduleInputConvertor.java
Log:
allowAdmission

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/Bed.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/Bed.java	2009-06-27 18:08:38 UTC (rev 27205)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/Bed.java	2009-06-27 18:16:22 UTC (rev 27206)
@@ -40,4 +40,8 @@
         return room + "_" + indexInRoom;
     }
 
+    public boolean allowsAdmission(Admission admission) {
+        return room.allowsAdmission(admission);
+    }
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/Department.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/Department.java	2009-06-27 18:08:38 UTC (rev 27205)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/Department.java	2009-06-27 18:16:22 UTC (rev 27206)
@@ -47,4 +47,18 @@
         return name;
     }
 
+    public boolean allowsAdmission(Admission admission) {
+        return allowsPatientAge(admission.getPatient());
+    }
+
+    public boolean allowsPatientAge(Patient patient) {
+        if (minimumAge != null && patient.getAge() < minimumAge) {
+            return false;
+        }
+        if (maximumAge != null && patient.getAge() > maximumAge) {
+            return false;
+        }
+        return true;
+    }
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/Patient.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/Patient.java	2009-06-27 18:08:38 UTC (rev 27205)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/Patient.java	2009-06-27 18:16:22 UTC (rev 27206)
@@ -1,5 +1,7 @@
 package org.drools.solver.examples.patientadmissionschedule.domain;
 
+import java.util.List;
+
 import org.apache.commons.lang.builder.CompareToBuilder;
 import org.drools.solver.examples.common.domain.AbstractPersistable;
 
@@ -13,6 +15,8 @@
     private int age;
     private int preferredMaximumRoomCapacity;
 
+    private List<RequiredPatientEquipment> requiredPatientEquipmentList;
+
     public String getName() {
         return name;
     }
@@ -45,6 +49,14 @@
         this.preferredMaximumRoomCapacity = preferredMaximumRoomCapacity;
     }
 
+    public List<RequiredPatientEquipment> getRequiredPatientEquipmentList() {
+        return requiredPatientEquipmentList;
+    }
+
+    public void setRequiredPatientEquipmentList(List<RequiredPatientEquipment> requiredPatientEquipmentList) {
+        this.requiredPatientEquipmentList = requiredPatientEquipmentList;
+    }
+
     public int compareTo(Patient other) {
         return new CompareToBuilder()
                 .append(id, other.id)

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/Room.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/Room.java	2009-06-27 18:08:38 UTC (rev 27205)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/Room.java	2009-06-27 18:16:22 UTC (rev 27206)
@@ -1,5 +1,7 @@
 package org.drools.solver.examples.patientadmissionschedule.domain;
 
+import java.util.List;
+
 import org.apache.commons.lang.builder.CompareToBuilder;
 import org.drools.solver.examples.common.domain.AbstractPersistable;
 
@@ -14,6 +16,8 @@
     private int capacity;
     private GenderLimitation genderLimitation;
 
+    private List<RoomEquipment> roomEquipmentList;
+
     public String getName() {
         return name;
     }
@@ -46,6 +50,14 @@
         this.genderLimitation = genderLimitation;
     }
 
+    public List<RoomEquipment> getRoomEquipmentList() {
+        return roomEquipmentList;
+    }
+
+    public void setRoomEquipmentList(List<RoomEquipment> roomEquipmentList) {
+        this.roomEquipmentList = roomEquipmentList;
+    }
+
     public int compareTo(Room other) {
         return new CompareToBuilder()
                 .append(department, other.department)
@@ -58,4 +70,42 @@
         return department + "_" + name;
     }
 
+    public boolean allowsAdmission(Admission admission) {
+        return department.allowsAdmission(admission)
+            && allowsPatientGender(admission.getPatient())
+            && hasRequiredRoomProperties(admission.getPatient());
+    }
+
+    public boolean allowsPatientGender(Patient patient) {
+        switch (genderLimitation) {
+            case ANY_GENDER:
+                return true;
+            case MALE_ONLY:
+                return patient.getGender() == Gender.MALE;
+            case FEMALE_ONLY:
+                return patient.getGender() == Gender.FEMALE;
+            case SAME_GENDER:
+                // scoreRules check this
+                return true;
+            default:
+                throw new IllegalStateException("genderLimitation (" + genderLimitation + ") not implemented");
+        }
+    }
+
+    public boolean hasRequiredRoomProperties(Patient patient) {
+        for (RequiredPatientEquipment requiredPatientEquipment : patient.getRequiredPatientEquipmentList()) {
+            Equipment requiredEquipment = requiredPatientEquipment.getEquipment();
+            boolean hasRequiredEquipment = false;
+            for (RoomEquipment roomEquipment : roomEquipmentList) {
+                if (roomEquipment.getEquipment().equals(requiredEquipment)) {
+                    hasRequiredEquipment = true;
+                }
+            }
+            if (!hasRequiredEquipment) {
+                return false;
+            }
+        }
+        return true;
+    }
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/persistence/PatientAdmissionScheduleInputConvertor.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/persistence/PatientAdmissionScheduleInputConvertor.java	2009-06-27 18:08:38 UTC (rev 27205)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/persistence/PatientAdmissionScheduleInputConvertor.java	2009-06-27 18:16:22 UTC (rev 27206)
@@ -225,6 +225,7 @@
                     roomSpecialismId++;
                 }
 
+                List<RoomEquipment> roomEquipmentOfRoomList = new ArrayList<RoomEquipment>(equipmentListSize);
                 String[] roomEquipmentTokens = splitBySpace(lineTokens[5]);
                 if (roomEquipmentTokens.length != equipmentListSize) {
                     throw new IllegalArgumentException("Read line (" + line
@@ -238,6 +239,7 @@
                         roomEquipment.setId(roomEquipmentId);
                         roomEquipment.setRoom(room);
                         roomEquipment.setEquipment(indexToEquipmentMap.get(j));
+                        roomEquipmentOfRoomList.add(roomEquipment);
                         roomEquipmentList.add(roomEquipment);
                         roomEquipmentId++;
                     } else if (hasEquipment != 0) {
@@ -245,6 +247,7 @@
                             + ") is expected to have 0 or 1 hasEquipment (" + hasEquipment + ").");
                     }
                 }
+                room.setRoomEquipmentList(roomEquipmentOfRoomList);
             }
             patientAdmissionSchedule.setRoomList(roomList);
             patientAdmissionSchedule.setRoomSpecialismList(roomSpecialismList);
@@ -348,6 +351,7 @@
                             + ") different from the sum of admissionNightListSize (" + nextFirstNightIndex + ")");
                 }
 
+                List<RequiredPatientEquipment> requiredPatientEquipmentOfPatientList = new ArrayList<RequiredPatientEquipment>(equipmentListSize);
                 String[] requiredPatientEquipmentTokens = splitBySpace(lineTokens[4]);
                 if (requiredPatientEquipmentTokens.length != equipmentListSize) {
                     throw new IllegalArgumentException("Read line (" + line
@@ -362,6 +366,7 @@
                         requiredPatientEquipment.setId(requiredPatientEquipmentId);
                         requiredPatientEquipment.setPatient(patient);
                         requiredPatientEquipment.setEquipment(indexToEquipmentMap.get(j));
+                        requiredPatientEquipmentOfPatientList.add(requiredPatientEquipment);
                         requiredPatientEquipmentList.add(requiredPatientEquipment);
                         requiredPatientEquipmentId++;
                     } else if (hasEquipment != 0) {
@@ -369,6 +374,7 @@
                             + ") is expected to have 0 or 1 hasEquipment (" + hasEquipment + ").");
                     }
                 }
+                patient.setRequiredPatientEquipmentList(requiredPatientEquipmentOfPatientList);
 
                 String[] preferredPatientEquipmentTokens = splitBySpace(lineTokens[5]);
                 if (preferredPatientEquipmentTokens.length != equipmentListSize) {




More information about the jboss-svn-commits mailing list