package it.csi.demo.democomp.business;

import java.util.*;

import it.csi.demo.democomp.dto.*;

import org.apache.log4j.*;
import it.csi.demo.democomp.util.*;

/*PROTECTED REGION ID(R-1534196706) ENABLED START*/

/*PROTECTED REGION END*/

public class BackEndFacade {

	/**  */
	protected static final Logger log = Logger
			.getLogger(Constants.APPLICATION_CODE + ".business");

	//////////////////////////////////////////////////////////////////////////////
	/// Costanti identificative degli Application Data
	//////////////////////////////////////////////////////////////////////////////

	public final static String APPDATA_CURRENTUSER_CODE = "appDatacurrentUser";

	public final static String APPDATA_PERSONE_CODE = "appDatapersone";

	public final static String APPDATA_REGIONI_CODE = "appDataregioni";

	public final static String APPDATA_PROVINCE_CODE = "appDataprovince";

	public final static String APPDATA_FILTROPERSONA_CODE = "appDatafiltroPersona";

	public final static String APPDATA_CITTADINO_CODE = "appDatacittadino";

	public final static String APPDATA_COMUNI_CODE = "appDatacomuni";

	public final static String APPDATA_COMUNI2_CODE = "appDatacomuni2";

	public final static String APPDATA_PROVINCE2_CODE = "appDataprovince2";

	public final static String APPDATA_SELTABELLAIDPERSONA_CODE = "appDataselTabellaIdPersona";

	public final static String APPDATA_SELETTOREOPERAZIONE_CODE = "appDataselettoreOperazione";

	//////////////////////////////////////////////////////////////////////////////
	/// Metodi associati alla U.I.
	/// - i metodi relativi a menu e azioni di inizializzazione sono direttamente 
	///   implementati in questa classe
	/// - i metodi relativi ai singoli content panel sono delegati nei rispettivi
	///   bean
	//////////////////////////////////////////////////////////////////////////////

	////////////////////////////////////////////////////////////////////////////////////

	public ExecResults eseguiRicerca(

	it.csi.demo.democomp.dto.miaapp.CpHomeModel theModel

	) throws BEException {
		return getCPBECpHome().eseguiRicerca(theModel);
	}

	////////////////////////////////////////////////////////////////////////////////////

	public ExecResults azzeraCampiRicerca(

	it.csi.demo.democomp.dto.miaapp.CpHomeModel theModel

	) throws BEException {
		return getCPBECpHome().azzeraCampiRicerca(theModel);
	}

	////////////////////////////////////////////////////////////////////////////////////

	public ExecResults cancellaRecordSelezionati(

	it.csi.demo.democomp.dto.miaapp.CpHomeModel theModel

	) throws BEException {
		return getCPBECpHome().cancellaRecordSelezionati(theModel);
	}

	////////////////////////////////////////////////////////////////////////////////////

	public ExecResults visualizzaRecordVuoto(

	it.csi.demo.democomp.dto.miaapp.CpHomeModel theModel

	) throws BEException {
		return getCPBECpHome().visualizzaRecordVuoto(theModel);
	}

	////////////////////////////////////////////////////////////////////////////////////

	public ExecResults modificaRecordSelezionato(

	it.csi.demo.democomp.dto.miaapp.CpHomeModel theModel

	) throws BEException {
		return getCPBECpHome().modificaRecordSelezionato(theModel);
	}

	////////////////////////////////////////////////////////////////////////////////////

	public ExecResults gestisciCombo(

	it.csi.demo.democomp.dto.miaapp.CpHomeModel theModel

	) throws BEException {
		return getCPBECpHome().gestisciCombo(theModel);
	}

	////////////////////////////////////////////////////////////////////////////////////

	public ExecResults salvaDatiCittadino(

	it.csi.demo.democomp.dto.miaapp.CpDettaglioCittadinoModel theModel

	) throws BEException {
		return getCPBECpDettaglioCittadino().salvaDatiCittadino(theModel);
	}

	////////////////////////////////////////////////////////////////////////////////////

	public ExecResults tornaIndietro(

	it.csi.demo.democomp.dto.miaapp.CpDettaglioCittadinoModel theModel

	) throws BEException {
		return getCPBECpDettaglioCittadino().tornaIndietro(theModel);
	}

	////////////////////////////////////////////////////////////////////////////////////

	public ExecResults gestisciComboDettaglio(

	it.csi.demo.democomp.dto.miaapp.CpDettaglioCittadinoModel theModel

	) throws BEException {
		return getCPBECpDettaglioCittadino().gestisciComboDettaglio(theModel);
	}

	////////////////////////////////////////////////////////////////////////////////////

	public ExecResults goToHome(

	it.csi.demo.democomp.dto.GlobalMenuModel theModel

	) throws BEException {
		/// definizione costanti di outcome
		final String GOTOHOME_OUTCOME_CODE__OK = "ok";
		///
		try {
			ExecResults result = new ExecResults();
			/*PROTECTED REGION ID(R2115341402) ENABLED START*/
			// inserire qui la logica applicativa da eseguire:

			// impostazione del result code
			result.setResultCode("ok");
			// modifica degli attributi del model (che verranno propagati allo strato
			// di presentation). si puo' agire anche direttamente sull'attributo "session".

			result.setModel(theModel);
			return result;
			/*PROTECTED REGION END*/
		} catch (Exception e) {
			log.error(
					"[BackEndFacade::goToHome] Errore occorso nell'esecuzione del metodo:"
							+ e, e);
			throw new BEException("Errore occorso nell'esecuzione del metodo:"
					+ e, e);
		}
	}

	////////////////////////////////////////////////////////////////////////////////////

	public ExecResults initApp(

	it.csi.demo.democomp.dto.GlobalHomeModel theModel

	) throws BEException {
		/// definizione costanti di outcome
		final String INITAPP_OUTCOME_CODE__OK = "ok";
		///
		try {
			ExecResults result = new ExecResults();
			/*PROTECTED REGION ID(R380925867) ENABLED START*/
			// inserire qui la logica applicativa da eseguire:

			// impostazione del result code
			result.setResultCode("ok");
			// modifica degli attributi del model (che verranno propagati allo strato
			// di presentation). si puo' agire anche direttamente sull'attributo "session".

			result.setModel(theModel);
			return result;
			/*PROTECTED REGION END*/
		} catch (Exception e) {
			log.error(
					"[BackEndFacade::initApp] Errore occorso nell'esecuzione del metodo:"
							+ e, e);
			throw new BEException("Errore occorso nell'esecuzione del metodo:"
					+ e, e);
		}
	}

	//////////////////////////////////////////////////////////////////////////////
	/// Property relative ai bean spring associati agli specifici content panel
	//////////////////////////////////////////////////////////////////////////////

	private it.csi.demo.democomp.business.miaapp.CPBECpHome _CPBECpHome = null;

	public void setCPBECpHome(
			it.csi.demo.democomp.business.miaapp.CPBECpHome bean) {
		_CPBECpHome = bean;
	}

	public it.csi.demo.democomp.business.miaapp.CPBECpHome getCPBECpHome() {
		return _CPBECpHome;
	}

	private it.csi.demo.democomp.business.miaapp.CPBECpDettaglioCittadino _CPBECpDettaglioCittadino = null;

	public void setCPBECpDettaglioCittadino(
			it.csi.demo.democomp.business.miaapp.CPBECpDettaglioCittadino bean) {
		_CPBECpDettaglioCittadino = bean;
	}

	public it.csi.demo.democomp.business.miaapp.CPBECpDettaglioCittadino getCPBECpDettaglioCittadino() {
		return _CPBECpDettaglioCittadino;
	}

	//////////////////////////////////////////////////////////////////////////////
	/// Property aggiuntive del bean
	//////////////////////////////////////////////////////////////////////////////
	/*PROTECTED REGION ID(R-1264235389) ENABLED START*/
	//// inserire qui le property che si vogliono iniettare in questo bean (es. dao, proxy di pd, ...) 
	/*PROTECTED REGION END*/
}
