cl.usach.managedbeans.EscritorioManagedBean.java Source code

Java tutorial

Introduction

Here is the source code for cl.usach.managedbeans.EscritorioManagedBean.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package cl.usach.managedbeans;

import cl.usach.entities.DetalleUsuarioTarjeta;
import cl.usach.entities.Equipo;
import cl.usach.entities.Lista;
import cl.usach.entities.Miembro;
import cl.usach.entities.Tarjeta;
import cl.usach.entities.Usuario;
import cl.usach.kanbanizesessionbeans.ActividadKanbanizeLocal;
import cl.usach.kanbanizesessionbeans.ListaKanbanizeLocal;
import cl.usach.kanbanizesessionbeans.MiembroKanbanizeLocal;
import cl.usach.kanbanizesessionbeans.TarjetaKanbanizeLocal;
import cl.usach.sessionbeans.DetalleUsuarioTarjetaFacadeLocal;
import cl.usach.sessionbeans.EquipoFacadeLocal;
import cl.usach.sessionbeans.ListaFacadeLocal;
import cl.usach.sessionbeans.MiembroFacadeLocal;
import cl.usach.sessionbeans.UsuarioFacadeLocal;
import cl.usach.trellosessionbeans.ActividadTrelloLocal;
import cl.usach.trellosessionbeans.ListaTrelloLocal;
import cl.usach.trellosessionbeans.MiembroTrelloLocal;
import cl.usach.trellosessionbeans.TarjetaTrelloLocal;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
import org.joda.time.DateTime;
import org.joda.time.Days;
import org.joda.time.Hours;
import org.joda.time.Minutes;
import org.joda.time.Period;
import org.joda.time.Seconds;
import org.joda.time.format.PeriodFormatter;
import org.joda.time.format.PeriodFormatterBuilder;
import org.primefaces.model.DashboardColumn;
import org.primefaces.model.DashboardModel;
import org.primefaces.model.DefaultDashboardColumn;
import org.primefaces.model.DefaultDashboardModel;
import org.primefaces.model.chart.PieChartModel;
import java.io.Serializable;

/**
 *
 * @author FGT
 */
@Named(value = "escritorioManagedBean")
@ViewScoped
public class EscritorioManagedBean implements Serializable {
    @EJB
    private MiembroFacadeLocal miembroFacade;
    @EJB
    private ActividadKanbanizeLocal actividadKanbanize;
    @EJB
    private TarjetaKanbanizeLocal tarjetaKanbanize;
    @EJB
    private ListaKanbanizeLocal listaKanbanize;
    @EJB
    private MiembroKanbanizeLocal miembroKanbanize;
    @EJB
    private ListaFacadeLocal listaFacade;
    @EJB
    private DetalleUsuarioTarjetaFacadeLocal detalleUsuarioTarjetaFacade;
    @EJB
    private ActividadTrelloLocal actividadTrello;
    @EJB
    private MiembroTrelloLocal miembroTrello;
    @EJB
    private TarjetaTrelloLocal tarjetaTrello;
    @EJB
    private ListaTrelloLocal listaTrello;
    @EJB
    private EquipoFacadeLocal equipoFacade;
    @EJB
    private UsuarioFacadeLocal usuarioFacade;

    private final String loginUsuario = FacesContext.getCurrentInstance().getExternalContext().getRemoteUser();
    private DashboardModel model;
    private PieChartModel pieResumenTareas;
    private PieChartModel pieResumenHorasTareas;

    private List<Equipo> equipos;
    private List<Tarjeta> tarjetas;
    private Map<String, Number> grafResumenTarea;
    private Map<String, Number> grafResumenHorasTarea;

    public EscritorioManagedBean() {
    }

    public List<Equipo> getEquipos() {
        return equipos;
    }

    public void setEquipos(List<Equipo> equipos) {
        this.equipos = equipos;
    }

    public List<Tarjeta> getTarjetas() {
        return tarjetas;
    }

    public void setTarjetas(List<Tarjeta> tarjetas) {
        this.tarjetas = tarjetas;
    }

    public DashboardModel getModel() {
        return model;
    }

    public Map<String, Number> getGrafResumenTarea() {
        return grafResumenTarea;
    }

    public void setGrafResumenTarea(Map<String, Number> grafResumenTarea) {
        this.grafResumenTarea = grafResumenTarea;
    }

    public PieChartModel getPieResumenTareas() {
        return pieResumenTareas;
    }

    public Map<String, Number> getGrafResumenHorasTarea() {
        return grafResumenHorasTarea;
    }

    public PieChartModel getPieResumenHorasTareas() {
        return pieResumenHorasTareas;
    }

    @PostConstruct
    public void init() {
        actualizarEscritorio();
        crearEscritorio();
    }

    public void crearEscritorio() {
        model = new DefaultDashboardModel();
        DashboardColumn column1 = new DefaultDashboardColumn();
        DashboardColumn column2 = new DefaultDashboardColumn();

        column1.addWidget("proyectos");
        column1.addWidget("tareas");
        column2.addWidget("grafTareas");
        column2.addWidget("grafHorasTareas");

        model.addColumn(column1);
        model.addColumn(column2);
    }

    public void buscarDatos() throws IOException {
        Usuario usuario = usuarioFacade.buscarPorLogin(loginUsuario);
        List<Equipo> equiposBuscar = equipoFacade.buscarPorUsuario(usuario);

        for (Equipo equipo : equiposBuscar) {
            if ("Trello".equals(equipo.getIdCuenta().getIdTipoCuenta().getNombreTipoCuenta())) {
                //Obtener o Actualizar Miembros
                miembroTrello.buscarMiembros(equipo);
                //Obtener o Actualizar Listas
                listaTrello.buscarListaPorTablero(equipo);
                //Obtener o Actualizar Tarjetas
                tarjetaTrello.buscarTarjetasPorLista(equipo);
                //Obtener Actividades
                actividadTrello.buscarActividades(equipo);
            }
            if ("Kanbanize".equals(equipo.getIdCuenta().getIdTipoCuenta().getNombreTipoCuenta())) {
                //Obtener o actualizar Miembros
                miembroKanbanize.buscarMiembos(equipo);
                //Obtener o Actualizar Listas
                listaKanbanize.buscarListas(equipo);
                //Obtener o Actualizar Tarjetas
                tarjetaKanbanize.buscarTarjetas(equipo);
                //Obtener Actividades
                actividadKanbanize.buscarActividades(equipo);
            }
        }
        actualizarEscritorio();
        FacesMessage msg = new FacesMessage("Datos Actualizados", "");
        FacesContext.getCurrentInstance().addMessage(null, msg);
    }

    public void buscarProjectos() {
        Usuario usuario = usuarioFacade.buscarPorLogin(loginUsuario);
        equipos = equipoFacade.buscarPorUsuario(usuario);
    }

    public void buscarTareas() {
        List<Tarjeta> tar = new ArrayList<>();
        Map<String, Number> mapProy = new HashMap<>();
        Map<String, Number> mapHoras = new HashMap<>();
        for (Equipo equipo : equipos) {
            Lista ultimaLista = listaFacade.buscarUltimaPorTablero(equipo.getIdTablero());
            List<Miembro> miembros = miembroFacade.buscarPoIdTableroYIdCuenta(equipo.getIdTablero(),
                    equipo.getIdCuenta());
            for (Miembro miembro : miembros) {
                List<DetalleUsuarioTarjeta> detalles = detalleUsuarioTarjetaFacade
                        .buscarPorIdMiembroYIdTableroYNoLista(miembro, equipo.getIdTablero(), ultimaLista);
                for (DetalleUsuarioTarjeta detalle : detalles) {
                    tar.add(detalle.getIdTarjeta());

                    if (mapProy.containsKey(detalle.getIdTarjeta().getIdTablero().getNombreTablero())) {
                        Number sum = mapProy.get(detalle.getIdTarjeta().getIdTablero().getNombreTablero())
                                .intValue() + 1;
                        mapProy.put(detalle.getIdTarjeta().getIdTablero().getNombreTablero(), sum);
                    } else {
                        mapProy.put(detalle.getIdTarjeta().getIdTablero().getNombreTablero(), 1);
                    }

                    if (detalle.getIdTarjeta().getIdEstadoTarjeta().getNombreEstadoTarjeta().equals("En proceso")) {
                        if (mapHoras.containsKey(detalle.getIdTarjeta().getIdTablero().getNombreTablero())) {
                            if (detalle.getIdTarjeta().getIdEstadoTarjeta().getNombreEstadoTarjeta()
                                    .equals("Terminado")) {
                                int tiempo = obtenerSegundosDiff(detalle.getIdTarjeta().getFechaInicioTarjeta(),
                                        detalle.getIdTarjeta().getFechaFinalTarjeta());
                                Number sum = mapHoras.get(detalle.getIdTarjeta().getIdTablero().getNombreTablero())
                                        .intValue() + tiempo;
                                mapHoras.put(detalle.getIdTarjeta().getIdTablero().getNombreTablero(), sum);
                            } else {
                                int tiempo = obtenerSegundosDiff(detalle.getIdTarjeta().getFechaInicioTarjeta(),
                                        new Date());
                                Number sum = mapHoras.get(detalle.getIdTarjeta().getIdTablero().getNombreTablero())
                                        .intValue() + tiempo;
                                mapHoras.put(detalle.getIdTarjeta().getIdTablero().getNombreTablero(), sum);
                            }
                        } else {
                            if (detalle.getIdTarjeta().getIdEstadoTarjeta().getNombreEstadoTarjeta()
                                    .equals("Terminado")) {
                                int tiempo = obtenerSegundosDiff(detalle.getIdTarjeta().getFechaInicioTarjeta(),
                                        detalle.getIdTarjeta().getFechaFinalTarjeta());
                                mapHoras.put(detalle.getIdTarjeta().getIdTablero().getNombreTablero(), tiempo);
                            } else {
                                int tiempo = obtenerSegundosDiff(detalle.getIdTarjeta().getFechaInicioTarjeta(),
                                        new Date());
                                mapHoras.put(detalle.getIdTarjeta().getIdTablero().getNombreTablero(), tiempo);
                            }
                        }
                    }
                }
            }
        }

        tarjetas = tar;
        grafResumenTarea = mapProy;
        grafResumenHorasTarea = mapHoras;
    }

    public void crearResumenTareaGraf() {
        pieResumenTareas = new PieChartModel();
        pieResumenTareas.setData(grafResumenTarea);
        pieResumenTareas.setLegendPosition("e");
        pieResumenTareas.setShowDataLabels(true);
    }

    public void crearResumenHorasTareaGraf() {
        pieResumenHorasTareas = new PieChartModel(grafResumenHorasTarea);
        pieResumenHorasTareas.setLegendPosition("e");
        pieResumenHorasTareas.setShowDataLabels(true);
    }

    public void actualizarEscritorio() {
        buscarProjectos();
        buscarTareas();
        crearResumenTareaGraf();
        crearResumenHorasTareaGraf();
    }

    public int obtenerSegundosDiff(Date inicio, Date fin) {
        DateTime dtI = new DateTime(inicio);
        DateTime dtF = new DateTime(fin);
        int tiempo = Seconds.secondsBetween(dtI, dtF).getSeconds();
        return tiempo;
    }

    public String obtenerTiempo(Date inicio) {
        if (inicio == null)
            return "-";
        DateTime dtI = new DateTime(inicio);
        DateTime dtF = new DateTime(new Date());
        String tiempo = "";
        String aux;
        if (Days.daysBetween(dtI, dtF).getDays() > 0)
            tiempo += Days.daysBetween(dtI, dtF).getDays() + " d, ";
        aux = Hours.hoursBetween(dtI, dtF).getHours() % 24 + ":";
        if (aux.length() == 2)
            aux = "0" + aux;
        tiempo += aux;
        aux = Minutes.minutesBetween(dtI, dtF).getMinutes() % 60 + "";
        if (aux.length() == 1)
            aux = "0" + aux;
        tiempo += aux + " hrs";
        return tiempo;
    }

    public String obtenerTiempoProyecto(String nombre) {
        String tiempo = "-";
        if (grafResumenHorasTarea.containsKey(nombre)) {
            Number numero = grafResumenHorasTarea.get(nombre);
            long secondsTime = numero.longValue();
            int segundos = (int) secondsTime % 60;
            secondsTime -= segundos;
            long minutesTime = secondsTime / 60;
            long minutos = minutesTime % 60;
            minutesTime -= minutos;
            long hoursTime = minutesTime / 60;
            long horas = hoursTime % 24;
            hoursTime -= horas;
            long dias = hoursTime / 24;
            tiempo = "" + dias + " dia(s), " + horas + " hora(s), " + minutos + " minuto(s), " + segundos
                    + " segundo(s)";
        }
        return tiempo;
    }

    public String formatFecha(Date fecha) {
        if (fecha == null)
            return "-";
        DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
        String datef = df.format(fecha);
        return datef;
    }
}