rendered paste bodypackage 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) {
}
}