public void completeComponent(ims.nursing.vo.AssessmentComponent component, AssessmentHeaderInfo assessment) throws StaleObjectException { DomainFactory factory = getDomainFactory(); // Update the VO with the completed information AssessmentComponent comp = (AssessmentComponent) factory.getDomainObject(AssessmentComponent.class, component.getID_AssessmentComponent()); comp.setIsComplete(new Boolean(true)); try { factory.save(comp); // We need to know whether to complete the actual assessment itself // too at this stage, call the // method in AssessmentComponentImpl to check whether it is required // We need to specify one component explicitly as // AssessmentComponent is not a class in it's own right AdmissionAssessment assmnt = AssessmentHeaderInfoAssembler.extractAdmissionAssessment(factory, assessment); if (assmnt.isAssessmentCompleted()) { assmnt.setDateTimeComplete(new java.util.Date()); assmnt.setHCPComplete(HcpAssembler.extractHcp(factory, (ims.core.vo.Hcp) getHcpUser())); assmnt.setAssessmentStatus(factory.getLookupInstance(AssessmentStatus.TYPE_ID, AssessmentStatus.COMPLETE.getID())); factory.save(assmnt); } } catch (DomainException e) { throw new DomainRuntimeException("DomainException occurred completing assessment component.\r\n" + e.getMessage(), e); } }