/FileExtraction/Java_unseen/IMS-MAXIMS_openMAXIMS/Source Library/openmaxims_workspace/Nursing/src/ims/nursing/domain/impl/BradenScaleDialogImpl.java
//#############################################################################
//#                                                                           #
//#  Copyright (C) <2015>  <IMS MAXIMS>                                       #
//#                                                                           #
//#  This program is free software: you can redistribute it and/or modify     #
//#  it under the terms of the GNU Affero General Public License as           #
//#  published by the Free Software Foundation, either version 3 of the       #
//#  License, or (at your option) any later version.                          # 
//#                                                                           #
//#  This program is distributed in the hope that it will be useful,          #
//#  but WITHOUT ANY WARRANTY; without even the implied warranty of           #
//#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
//#  GNU Affero General Public License for more details.                      #
//#                                                                           #
//#  You should have received a copy of the GNU Affero General Public License #
//#  along with this program.  If not, see <http://www.gnu.org/licenses/>.    #
//#                                                                           #
//#  IMS MAXIMS provides absolutely NO GUARANTEE OF THE CLINICAL SAFTEY of    #
//#  this program.  Users of this software do so entirely at their own risk.  #
//#  IMS MAXIMS only ensures the Clinical Safety of unaltered run-time        #
//#  software that it builds, deploys and maintains.                          #
//#                                                                           #
//#############################################################################
//#EOH
// This code was generated by Vasile Purdila using IMS Development Environment (version 1.20 build 40820.730)
// Copyright (C) 1995-2004 IMS MAXIMS plc. All rights reserved.

package ims.nursing.domain.impl;

import ims.coe.vo.AssessmentSkin;
import ims.domain.DomainFactory;
import ims.domain.exceptions.DomainInterfaceException;
import ims.domain.exceptions.DomainRuntimeException;
import ims.domain.exceptions.StaleObjectException;
import ims.domain.impl.DomainImpl;
import ims.nursing.assessmenttools.domain.objects.BradenScale;
import ims.nursing.vo.AssessmentComponent;
import ims.nursing.vo.AssessmentHeaderInfo;
import ims.nursing.vo.domain.BradenScaleAssembler;
import ims.spinalinjuries.vo.NurAssessmentSkinVo;

public class BradenScaleDialogImpl extends DomainImpl implements ims.nursing.domain.BradenScaleDialog, ims.domain.impl.Transactional
{
	/**
	* Retrieves header record
	*/
	public ims.nursing.vo.BradenScale getRecord(Integer recordID) 
	{
		DomainFactory factory = getDomainFactory();
		
		BradenScale domAssess = (BradenScale)factory.getDomainObject(BradenScale.class, recordID);
		return(BradenScaleAssembler.create(domAssess));
	}
	
	public Boolean isPartOfSkinAssessment(
			ims.nursing.vo.BradenScale bradenRecord)
			throws DomainInterfaceException
	{
		DomainFactory factory = getDomainFactory();
		
		BradenScale domBraden = BradenScaleAssembler.extractBradenScale(factory, bradenRecord);
		java.util.List braden = factory.find("from SkinComponent S where S.bradenScale = :braden", "braden", domBraden);
		
		if(braden == null || braden.size() == 0)
			return Boolean.FALSE;
		
		return Boolean.TRUE;
	}

	/**
	* Save the record
	*/
	public AssessmentHeaderInfo saveRecord(ims.nursing.vo.BradenScale bradenScale, AssessmentHeaderInfo assessment, AssessmentComponent component) throws StaleObjectException 
	{
		// Ensure the Value Object was validated
		if (!bradenScale.isValidated())
			throw new DomainRuntimeException("This Braden Assessment has not been validated");
			
		DomainFactory factory = getDomainFactory();			
		
		
		BradenScale domAssessment = BradenScaleAssembler.extractBradenScale(factory, bradenScale);

		factory.save(domAssessment);
					
		if (assessment != null)
		{
			ims.nursing.vo.BradenScale braden = BradenScaleAssembler.create(domAssessment);
			braden.validate();
			
			if(component != null && component instanceof AssessmentSkin)
				((AssessmentSkin)component).setBradenScale(braden);

			if(component != null && component instanceof NurAssessmentSkinVo)
				((NurAssessmentSkinVo)component).setBradenScale(braden);

			component.validate();
			assessment.validate();

			assessment.setCurrentComponent(component);
			
			return saveAssessmentComponent(assessment, component);
		}

		return null;  // It otherwise expects assessment header
	}

	// Needed for the BradenScaleDialogSpinalImpl.java
	protected AssessmentHeaderInfo saveAssessmentComponent(AssessmentHeaderInfo assessment, AssessmentComponent component)  throws StaleObjectException
	{
		return assessment;
	}
}
