All pastes #2112489 Raw Edit

Miscellany

public text v1 · immutable
#2112489 ·published 2012-02-08 16:07 UTC
rendered paste body
package ar.com.fiat.kpi.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.zkoss.web.servlet.xel.PageContext;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zkplus.databind.AnnotateDataBinder;
import org.zkoss.zul.Constraint;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.SimpleConstraint;
import org.zkoss.zul.impl.InputElement;

import ar.com.fiat.kpi.domain.KpiIndicadorPerCtlValor;
import ar.com.fiat.kpi.domain.KpiIndicadorPeriodo;
import ar.com.fiat.kpi.domain.KpiSemaforo;
import ar.com.fiat.kpi.service.KpiAdjuntoIndicadorPeriodoDefinition;
import ar.com.fiat.kpi.service.KpiAreaDefinition;
import ar.com.fiat.kpi.service.KpiGraficoDefAtributoDefinition;
import ar.com.fiat.kpi.service.KpiGraficoDefDefinition;
import ar.com.fiat.kpi.service.KpiGraficoDefElementDefinition;
import ar.com.fiat.kpi.service.KpiGrupoAreaDefinition;
import ar.com.fiat.kpi.service.KpiGrupoDefinition;
import ar.com.fiat.kpi.service.KpiIndGraficoAtributoValorDefinition;
import ar.com.fiat.kpi.service.KpiIndGraficoCategoriaDefinition;
import ar.com.fiat.kpi.service.KpiIndGraficoSerieDefinition;
import ar.com.fiat.kpi.service.KpiIndicadorDefinition;
import ar.com.fiat.kpi.service.KpiIndicadorGraficoDefinition;
import ar.com.fiat.kpi.service.KpiIndicadorPerCtlValorDefinition;
import ar.com.fiat.kpi.service.KpiIndicadorPeriodoControlDefinition;
import ar.com.fiat.kpi.service.KpiIndicadorPeriodoDefinition;
import ar.com.fiat.kpi.service.KpiIndicadorUsuarioDefinition;

import ar.com.fiat.kpi.service.KpiPeriodoDefinition;
import ar.com.fiat.kpi.service.KpiSemaforoDefinition;
import ar.com.fiat.kpi.service.KpiTipoSerieDefinition;
import ar.com.fiat.portal.domain.PorDominio;
import ar.com.fiat.portal.domain.PorItemMenu;
import ar.com.fiat.portal.domain.PorUsuario;
import ar.com.fiat.portal.service.PorDominioDefinition;
import ar.com.fiat.portal.service.PorGrupoDefinition;
import ar.com.fiat.portal.service.PorGrupoUsuarioDefinition;
import ar.com.fiat.portal.service.PorItemMenuDefinition;
import ar.com.fiat.portal.service.PorPermisoDefinition;
import ar.com.fiat.portal.service.PorUsuarioDefinition;
import ar.com.fiat.portal.service.SteMailDefinition;
import ar.com.trimix.common.business.ContextManager;
import ar.com.trimix.core.domain.Auditable;
import ar.com.trimix.core.persistence.Auditor;


@SuppressWarnings("serial")
public class KpiViewCtrl extends GenericForwardComposer implements Auditor  
{

	protected AnnotateDataBinder binder;
	
	protected boolean perIns;
	protected boolean perUpd;
	protected boolean perDel;
	protected boolean perAssign;
	
	protected KpiAdjuntoIndicadorPeriodoDefinition kpiAdjuntoIndicadorPeriodoService = (KpiAdjuntoIndicadorPeriodoDefinition) ContextManager.getBizObject("kpiAdjuntoIndicadorPeriodoService");
	protected KpiPeriodoDefinition kpiPeriodoService = (KpiPeriodoDefinition) ContextManager.getBizObject("kpiPeriodoService");
	//protected KpiIndicadorUsuarioDefinition kpiIndicadorUsuarioService = (KpiIndicadorUsuarioDefinition) ContextManager.getBizObject("kpiIndicadorUsuarioService");
	
	protected static SteMailDefinition steMailService = (SteMailDefinition)ContextManager.getBizObject("steMailService");
	protected KpiSemaforoDefinition kpiSemaforoService = (KpiSemaforoDefinition) ContextManager.getBizObject("kpiSemaforoService");
	protected PorGrupoUsuarioDefinition porGrupoUsuarioService = (PorGrupoUsuarioDefinition) ContextManager.getBizObject("porGrupoUsuarioService");
	protected KpiGrupoAreaDefinition kpiGrupoAreaService = (KpiGrupoAreaDefinition) ContextManager.getBizObject("kpiGrupoAreaService");
	protected PorGrupoDefinition porGrupoService = (PorGrupoDefinition) ContextManager.getBizObject("porGrupoService");
	protected PorDominioDefinition porDominioService = (PorDominioDefinition) ContextManager.getBizObject("porDominioService");
	protected static PorUsuarioDefinition porUsuarioService = (PorUsuarioDefinition) ContextManager.getBizObject("porUsuarioService");
	protected static PorItemMenuDefinition porItemMenuService = (PorItemMenuDefinition) ContextManager.getBizObject("porItemMenuService");
	protected static PorPermisoDefinition porPermisoService = (PorPermisoDefinition) ContextManager.getBizObject("porPermisoService");
	protected KpiGrupoDefinition kpiGrupoService;
	protected KpiAreaDefinition kpiAreaService;
	//protected KpiPeriodoDefinition kpiPeriodoService  = (KpiPeriodoDefinition) ContextManager.getBizObject("kpiPeriodoService");
	protected KpiIndicadorUsuarioDefinition kpiIndicadorUsuarioService  = (KpiIndicadorUsuarioDefinition) ContextManager.getBizObject("kpiIndicadorUsuarioService");
	protected KpiGraficoDefDefinition kpiGraficoDefService;
	protected KpiIndicadorGraficoDefinition kpiIndicadorGraficoService;
	protected KpiIndicadorDefinition kpiIndicadorService;
	protected KpiIndGraficoCategoriaDefinition kpiIndGraficoCategoriaService;
	protected KpiGraficoDefAtributoDefinition kpiGraficoDefAtributoService;
	protected KpiGraficoDefElementDefinition kpiGraficoDefElementService;
	protected KpiIndGraficoAtributoValorDefinition kpiIndGraficoAtributoValorService;	
	protected KpiIndGraficoSerieDefinition kpiIndGraficoSerieService;
	protected KpiTipoSerieDefinition kpiTipoSerieService;
	protected KpiIndicadorPeriodoDefinition kpiIndicadorPeriodoService;
	protected KpiIndicadorPeriodoControlDefinition kpiIndicadorPeriodoControlService;
	protected KpiIndicadorPerCtlValorDefinition kpiIndicadorPerCtlValorService;
	
	protected String msgActSel = "Antes de presionar el boton, debe seleccionar el registro que desea actualizar";
	protected String msgDelSel = "Antes de presionar el boton, debe seleccionar el registro que desea eliminar";
	protected String msjQuest = "Existen cambios en la informacion, ¿Desea grabarlos?" ;
	protected String titAct = "Actualizar Informacion" ;
	protected String titUpd = "Modificar Informacion" ;
	protected String titDel = "Eliminar Informacion";
	protected String msgDelQuest = "'¿Esta seguro que desea eliminar la fila seleccionada?";
	protected String err_eliminar_rel = "No es posible eliminar esta fila, ya que posee información relacionada";

	protected PorUsuario porUsuario;
	protected ContextManager ctx = new ContextManager();

	public KpiViewCtrl() {
		
	} 
	
	public void doAfterCompose(Component comp) throws Exception {
		super.doAfterCompose(comp);
		comp.setAttribute("controller", this, false);
	}
	
	public void usePermisos() throws Exception {
		if(porUsuario==null)
		{
			init();
		}
		
		String path = self.getDesktop().getRequestPath();
		String[] array = path.toString().split("/");
		String pagina = array[array.length - 1];

		PorItemMenu itmMenu = new PorItemMenu();
		itmMenu.setItmPagina(pagina);
		itmMenu = porItemMenuService.getItemMenuByPagina(itmMenu);
		
		if(itmMenu!=null)
		{
			perIns = porPermisoService.hasPermissionFor(porUsuario, itmMenu,
					ar.com.fiat.portal.service.PorPermisoDefinition.INSERT);
			perUpd = porPermisoService.hasPermissionFor(porUsuario, itmMenu,
					ar.com.fiat.portal.service.PorPermisoDefinition.UPDATE);
			perDel = porPermisoService.hasPermissionFor(porUsuario, itmMenu,
					ar.com.fiat.portal.service.PorPermisoDefinition.DELETE);
			perAssign = porPermisoService.hasPermissionFor(porUsuario, itmMenu,
					ar.com.fiat.portal.service.PorPermisoDefinition.ASSIGN);
		}

	}
	
	public void init() throws Exception {
		
		ctx = new ContextManager();
		
		javax.servlet.http.HttpServletRequest req = (HttpServletRequest) ((PageContext) Executions
				.getCurrent().getVariableResolver()
				.resolveVariable("pageContext")).getRequest();
		
		java.security.Principal principal = req.getUserPrincipal();
		String usrNombre = principal.toString();

		porUsuario = new PorUsuario();
		porUsuario.setUsrUsuario(usrNombre);
		java.util.List<PorUsuario> lstUsuarios = porUsuarioService.getAll(porUsuario);
		
		if (lstUsuarios.size() == 0)
			throw new RuntimeException("El usuario indicado no existe");
		else if (lstUsuarios.size() > 1)
			throw new RuntimeException(
					"Existe más de un usuario con el nombre de usuario indicado");

		porUsuario = (PorUsuario) lstUsuarios.get(0);
		ctx.setUsuario(porUsuario);
		session.setAttribute("ctx", ctx);
		
		setImagenToCamposObligatorios(self);
	
	}
	
	public void setImagenToCamposObligatorios(Component component)
	{
		List<Component> componentes=component.getChildren();
		for(Component componente:componentes)
		{
			if(componente instanceof org.zkoss.zul.impl.InputElement)
			{
				InputElement imputElement=(InputElement)componente;
				//imputElement.getConstraint()
				Constraint contraint=imputElement.getConstraint();
				if(contraint instanceof org.zkoss.zul.SimpleConstraint)
				{
					SimpleConstraint simpleContraint=(SimpleConstraint)contraint;
					if(simpleContraint.getClientConstraint().contains("no empty"))
					{
						imputElement.setSclass("requerido");
					}
					
				}				
			}
			
			setImagenToCamposObligatorios(componente);
			
		}
	}
	
	
	
	public PorUsuario getPorUsuario() throws Exception {
		if(porUsuario==null)
		{		
			javax.servlet.http.HttpServletRequest req = (HttpServletRequest) ((PageContext) Executions
					.getCurrent().getVariableResolver()
					.resolveVariable("pageContext")).getRequest();
			
			java.security.Principal principal = req.getUserPrincipal();
			String usrNombre = principal.toString();
	
			porUsuario = new PorUsuario();
			porUsuario.setUsrUsuario(usrNombre);
			java.util.List<PorUsuario> lstUsuarios = porUsuarioService.getAll(porUsuario);
			
			if (lstUsuarios.size() == 0)
				throw new RuntimeException("El usuario indicado no existe");
			else if (lstUsuarios.size() > 1)
				throw new RuntimeException(
						"Existe más de un usuario con el nombre de usuario indicado");
	
			porUsuario = (PorUsuario) lstUsuarios.get(0);
		}
		
		return porUsuario;
	}
	
	public void cargarListboxDomain(Listbox listbox,String dominio,boolean nulls) throws Exception
	{
		listbox.getItems().clear();
		porDominioService = (PorDominioDefinition) ContextManager.getBizObject("porDominioService");
		
		PorDominio porDominio=new PorDominio();
		porDominio.setDomDominio(dominio);
		porDominio.setDomEstado(new Long(1));
		porDominio.setDomId(porUsuario.getPorIdiomaInstalado().getIdiId());
		
		List<PorDominio> list=porDominioService.getAll(porDominio,(String[])null);
			
		
		if (nulls){
			Listitem itemEmpty=new Listitem();
			itemEmpty.setLabel("");
			itemEmpty.setParent(listbox);
			itemEmpty.setValue(null);
		}
		
		for(PorDominio dom: list)
		{
			Listitem item=new Listitem();
			item.setLabel(dom.getDomTexto());
			item.setParent(listbox);
			item.setValue(dom.getDomClave());
		}
					
	}

	public void saveAuditoria(Auditable itemAuditable) throws Exception {
		PorUsuario porUsuario = getPorUsuario();
		if (itemAuditable.getAudFechaIns() == null) {
			itemAuditable.setAudFechaIns(new java.util.Date());
			itemAuditable.setAudUsrIns(porUsuario.getUsrUsuario());
		}
		itemAuditable.setAudFechaUpd(new java.util.Date());
		itemAuditable.setAudUsrUpd(porUsuario.getUsrUsuario());
	}
	
	public String obtenerLuzSemaforo (KpiIndicadorPeriodo p_indicadorPeriodo) throws Exception{
		
		String  lazy [] = { "kpiSemaforo" };
		
		KpiIndicadorPeriodo indicadorPeriodo = kpiIndicadorPeriodoService.get(p_indicadorPeriodo.getInpId(), lazy);
		
		if (indicadorPeriodo.getKpiSemaforo() == null){
			System.out.println("no existe semaforo.");
			return null;
		}
		
		KpiSemaforo semaforo = indicadorPeriodo.getKpiSemaforo();
		
		List <KpiIndicadorPerCtlValor> valoresReferencia = kpiIndicadorPerCtlValorService.getValoresSemaforo(indicadorPeriodo.getInpId(), semaforo.getKpiIndGraficoSerieReferencia().getGseId());
		List <KpiIndicadorPerCtlValor> valoresObjetivo = kpiIndicadorPerCtlValorService.getValoresSemaforo(indicadorPeriodo.getInpId(), semaforo.getKpiIndGraficoSerieObjetivo().getGseId());
		
		boolean goBreak = false;
		for (KpiIndicadorPerCtlValor valorRef:valoresReferencia){
			for (KpiIndicadorPerCtlValor valorObj:valoresObjetivo){
				if (valorRef.getKpiIndGraficoCategoria().getGcaId().equals(valorObj.getKpiIndGraficoCategoria().getGcaId())){
					double diff = ((valorRef.getPcvNroValue() - valorObj.getPcvNroValue())/valorObj.getPcvNroValue());
					
					showLight(diff, semaforo.getSemSignoRojo(), semaforo.getSemPorcentajeRojo());
					
					
					
					goBreak = true;
					break;
				}
				if (goBreak){
					break;
				}
			}
		}
		return null;
	}

	private void showLight(double diff, String signo, String porcentaje) {
		
		
	}
}