public static ims.nursing.assessment.domain.objects.EatingComponent extractEatingComponent( ims.domain.ILightweightDomainFactory domainFactory, ims.coe.vo.AssessmentEatingAndDrinking valueObject, HashMap domMap) { if (null == valueObject) { return null; } Integer id = valueObject.getID_AssessmentComponent(); ims.nursing.assessment.domain.objects.EatingComponent domainObject = null; if (null == id) { if (domMap.get(valueObject) != null) { return (ims.nursing.assessment.domain.objects.EatingComponent) domMap.get(valueObject); } // ims.coe.vo.AssessmentEatingAndDrinking ID_EatingComponent field is unknown domainObject = new ims.nursing.assessment.domain.objects.EatingComponent(); domMap.put(valueObject, domainObject); } else { String key = (valueObject.getClass().getName() + "__" + valueObject.getID_AssessmentComponent()); if (domMap.get(key) != null) { return (ims.nursing.assessment.domain.objects.EatingComponent) domMap.get(key); } domainObject = (ims.nursing.assessment.domain.objects.EatingComponent) domainFactory.getDomainObject( ims.nursing.assessment.domain.objects.EatingComponent.class, id); // TODO: Not sure how this should be handled. Effectively it must be a staleobject exception, // but maybe should be handled as that further up. if (domainObject == null) return null; domMap.put(key, domainObject); } domainObject.setVersion(valueObject.getVersion_AssessmentComponent()); ims.nursing.vo.lookups.NutritionalMethodCollection collection1 = valueObject.getNutritionalMethod(); java.util.List domainNutritionalMethod = domainObject.getNutritionalMethod(); ; int collection1Size = 0; if (collection1 == null) { domainNutritionalMethod = new java.util.ArrayList(0); } else { collection1Size = collection1.size(); } for (int i = 0; i < collection1Size; i++) { int instanceId = collection1.get(i).getID(); ims.domain.lookups.LookupInstanceRef dom = new ims.domain.lookups.LookupInstanceRef(domainFactory.getLookupInstance(instanceId)); int domIdx = domainNutritionalMethod.indexOf(dom); if (domIdx == -1) { domainNutritionalMethod.add(i, dom); } else if (i != domIdx && i < domainNutritionalMethod.size()) { Object tmp = domainNutritionalMethod.get(i); domainNutritionalMethod.set(i, domainNutritionalMethod.get(domIdx)); domainNutritionalMethod.set(domIdx, tmp); } } // Remove all ones in domList where index > voCollection.size() as these should // now represent the ones removed from the VO collection. No longer referenced. int j1 = domainNutritionalMethod.size(); while (j1 > collection1Size) { domainNutritionalMethod.remove(j1 - 1); j1 = domainNutritionalMethod.size(); } domainObject.setNutritionalMethod(domainNutritionalMethod); domainObject.setOralAssessment( ims.nursing.vo.domain.OralAssessmentAssembler.extractEatingOralAssessmentSet( domainFactory, valueObject.getOralAssessment(), domainObject.getOralAssessment(), domMap)); // create LookupInstance from vo LookupType ims.domain.lookups.LookupInstance value3 = null; if (null != valueObject.getDifficultiesWithSwallowing()) { value3 = domainFactory.getLookupInstance(valueObject.getDifficultiesWithSwallowing().getID()); } domainObject.setDifficultiesWithSwallowing(value3); domainObject.setSwallowing( ims.coe.vo.domain.SwallowingAssessmentAssembler.extractEatingSwallowingDetailsSet( domainFactory, valueObject.getSwallowing(), domainObject.getSwallowing(), domMap)); domainObject.setManualDexterity( ims.coe.vo.domain.ManualDexterityAssembler.extractEatingManualDexteritySet( domainFactory, valueObject.getManualDexterity(), domainObject.getManualDexterity(), domMap)); // create LookupInstance from vo LookupType ims.domain.lookups.LookupInstance value6 = null; if (null != valueObject.getDescribeAppetite()) { value6 = domainFactory.getLookupInstance(valueObject.getDescribeAppetite().getID()); } domainObject.setDescribeAppetite(value6); // create LookupInstance from vo LookupType ims.domain.lookups.LookupInstance value7 = null; if (null != valueObject.getAnySpecialDiet()) { value7 = domainFactory.getLookupInstance(valueObject.getAnySpecialDiet().getID()); } domainObject.setAnySpecialDiet(value7); // create LookupInstance from vo LookupType ims.domain.lookups.LookupInstance value8 = null; if (null != valueObject.getSpecialDiet()) { value8 = domainFactory.getLookupInstance(valueObject.getSpecialDiet().getID()); } domainObject.setSpecialDiet(value8); // This is to overcome a bug in both Sybase and Oracle which prevents them from storing an empty // string correctly // Sybase stores it as a single space, Oracle stores it as NULL. This fix will make them // consistent at least. if (valueObject.getFoodPatientLikes() != null && valueObject.getFoodPatientLikes().equals("")) { valueObject.setFoodPatientLikes(null); } domainObject.setFoodPatientLikes(valueObject.getFoodPatientLikes()); // This is to overcome a bug in both Sybase and Oracle which prevents them from storing an empty // string correctly // Sybase stores it as a single space, Oracle stores it as NULL. This fix will make them // consistent at least. if (valueObject.getFoodPatientDislikes() != null && valueObject.getFoodPatientDislikes().equals("")) { valueObject.setFoodPatientDislikes(null); } domainObject.setFoodPatientDislikes(valueObject.getFoodPatientDislikes()); // This is to overcome a bug in both Sybase and Oracle which prevents them from storing an empty // string correctly // Sybase stores it as a single space, Oracle stores it as NULL. This fix will make them // consistent at least. if (valueObject.getFoodPatientFavourite() != null && valueObject.getFoodPatientFavourite().equals("")) { valueObject.setFoodPatientFavourite(null); } domainObject.setFoodPatientFavourite(valueObject.getFoodPatientFavourite()); // create LookupInstance from vo LookupType ims.domain.lookups.LookupInstance value12 = null; if (null != valueObject.getRequireAssistance()) { value12 = domainFactory.getLookupInstance(valueObject.getRequireAssistance().getID()); } domainObject.setRequireAssistance(value12); domainObject.setMiniNutritionalAssessment( ims.nursing.vo.domain.MiniNutritionalAssessmentAssembler.extractMiniNutritionalAssessment( domainFactory, valueObject.getMiniNutritionalAssessment(), domMap)); domainObject.setMNAScore(valueObject.getMNAScore()); domainObject.setIsComplete(valueObject.getIsComplete()); domainObject.setAssessmentInfo( ims.nursing.vo.domain.AssessmentInfoAssembler.extractAssessmentInfoList( domainFactory, valueObject.getAssessmentInfo(), domainObject.getAssessmentInfo(), domMap)); domainObject.setCopy(valueObject.getCopy()); // create LookupInstance from vo LookupType ims.domain.lookups.LookupInstance value18 = null; if (null != valueObject.getComponentType()) { value18 = domainFactory.getLookupInstance(valueObject.getComponentType().getID()); } domainObject.setComponentType(value18); domainObject.setCarePlanTemplate( ims.nursing.vo.domain.CarePlanTemplateAssembler.extractCarePlanTemplateSet( domainFactory, valueObject.getCarePlanTemplate(), domainObject.getCarePlanTemplate(), domMap)); domainObject.setCarePlans( ims.nursing.vo.domain.CarePlanAssembler.extractCarePlanSet( domainFactory, valueObject.getCarePlans(), domainObject.getCarePlans(), domMap)); return domainObject; }