package com.fp.armas.portal.controller.base;

import javax.annotation.PostConstruct;
import javax.faces.component.html.HtmlForm;

import com.fp.armas.portal.datamanager.base.BaseDataManager;
import com.fp.armas.portal.faces.FacesUtil;

/**
 * Clase padre que implementan todos los controladores
 * @author dcruz
 *
 */
public abstract class BaseController {

	private HtmlForm form;
	
	@PostConstruct
	public void init(){
		try{
			if(!this.getDataManager().isInicializado()){
				inicializar();
				this.getDataManager().setInicializado(true);
			}
		}catch (Throwable e){
			FacesUtil.getInstancia().messageError(e.getMessage());
		}
	}
	
	/**
	 * M&eacute;todo en el cual se debe retornar el DataManager gestionado
	 * @return
	 */
	public abstract BaseDataManager getDataManager() ;
	
	/**
	 * M&eacute;todo que se ejecuta al inicializar el controlador una sola vez por DataManager
	 */
	public abstract void inicializar();
	
	public HtmlForm getForm() {
		return form;
	}

	public void setForm(HtmlForm form) {
		this.form = form;
	}
}
