cl.usach.managedbeans.CreditosManagedBean.java Source code

Java tutorial

Introduction

Here is the source code for cl.usach.managedbeans.CreditosManagedBean.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.Asignatura;
import cl.usach.entities.DetalleUsuarioTarjeta;
import cl.usach.entities.Equipo;
import cl.usach.entities.Miembro;
import cl.usach.entities.SprintAsignatura;
import cl.usach.entities.SprintGrupos;
import cl.usach.entities.Usuario;
import cl.usach.sessionbeans.AsignaturaFacadeLocal;
import cl.usach.sessionbeans.DetalleUsuarioTarjetaFacadeLocal;
import cl.usach.sessionbeans.EquipoFacadeLocal;
import cl.usach.sessionbeans.MiembroFacadeLocal;
import cl.usach.sessionbeans.SprintAsignaturaFacadeLocal;
import cl.usach.sessionbeans.SprintGruposFacadeLocal;
import cl.usach.sessionbeans.TableroFacadeLocal;
import cl.usach.sessionbeans.UsuarioFacadeLocal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.context.FacesContext;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
import org.apache.commons.math3.stat.descriptive.SummaryStatistics;
import org.joda.time.DateTime;
import org.joda.time.Hours;
import java.io.Serializable;

/**
 *
 * @author FGT
 */
@Named(value = "creditosManagedBean")
@ViewScoped
public class CreditosManagedBean implements Serializable {
    @EJB
    private DetalleUsuarioTarjetaFacadeLocal detalleUsuarioTarjetaFacade;
    @EJB
    private MiembroFacadeLocal miembroFacade;
    @EJB
    private TableroFacadeLocal tableroFacade;
    @EJB
    private EquipoFacadeLocal equipoFacade;
    @EJB
    private SprintGruposFacadeLocal sprintGruposFacade;
    @EJB
    private SprintAsignaturaFacadeLocal sprintAsignaturaFacade;
    @EJB
    private AsignaturaFacadeLocal asignaturaFacade;
    @EJB
    private UsuarioFacadeLocal usuarioFacade;

    private List<Asignatura> asignaturas;

    private final String loginUsuario = FacesContext.getCurrentInstance().getExternalContext().getRemoteUser();

    public CreditosManagedBean() {
    }

    @PostConstruct
    public void init() {
        Usuario usuario = usuarioFacade.buscarPorLogin(loginUsuario);
        asignaturas = asignaturaFacade.buscarPorIdUsuario(usuario);
    }

    public List<Asignatura> getAsignaturas() {
        return asignaturas;
    }

    public List<SprintAsignatura> buscarSprintAsignaturas(Asignatura asignatura) {
        return sprintAsignaturaFacade.buscarPorAsignatura(asignatura);
    }

    public List<SprintGrupos> buscarSprintGrupos(SprintAsignatura sprintA) {
        return sprintGruposFacade.buscarPorSprintAsignatura(sprintA);
    }

    public List<Equipo> buscarEquipos(SprintGrupos sprintG) {
        return equipoFacade.buscarPorIdSprintGrupo(sprintG);
    }

    public int buscarCantidadTareas(Equipo equipo) {
        List<Miembro> miembros = miembroFacade.buscarPoIdTableroYIdCuenta(equipo.getIdTablero(),
                equipo.getIdCuenta());
        if (!miembros.isEmpty() && miembros.size() == 1) {
            return detalleUsuarioTarjetaFacade.buscarPorIdMiembroYIdTablero(miembros.get(0), equipo.getIdTablero())
                    .size();
        }
        return 0;
    }

    public int buscarTiempoTareas(Equipo equipo) {
        int segundos = 0;
        List<Miembro> miembros = miembroFacade.buscarPoIdTableroYIdCuenta(equipo.getIdTablero(),
                equipo.getIdCuenta());
        if (!miembros.isEmpty() && miembros.size() == 1) {
            List<DetalleUsuarioTarjeta> detallesT = detalleUsuarioTarjetaFacade
                    .buscarPorIdMiembroYIdTablero(miembros.get(0), equipo.getIdTablero());
            for (DetalleUsuarioTarjeta detalleT : detallesT) {
                switch (detalleT.getIdTarjeta().getIdEstadoTarjeta().getNombreEstadoTarjeta()) {
                case "En proceso":
                    segundos += obtenerHorasDiff(detalleT.getIdTarjeta().getFechaInicioTarjeta(), new Date());
                    break;
                case "Terminada":
                    segundos += obtenerHorasDiff(detalleT.getIdTarjeta().getFechaInicioTarjeta(),
                            detalleT.getIdTarjeta().getFechaFinalTarjeta());
                    break;
                }
            }
        }
        return segundos;
    }

    public String buscarTiempoTareasFormato(Equipo equipo) {
        int segundos = buscarTiempoTareas(equipo);
        return obtenerTiempoProyecto(segundos);
    }

    public double buscarPromedioSrpintGrupo(SprintGrupos springG) {
        List<Equipo> eqs = buscarEquipos(springG);
        SummaryStatistics stats = new SummaryStatistics();
        int s;
        for (Equipo equipo : eqs) {
            s = buscarTiempoTareas(equipo);
            stats.addValue(s);
        }
        double mean = stats.getMean();
        mean = (double) Math.round(mean * 10) / 10;
        return mean;
    }

    public double buscarDesviacionStandarSrpintGrupo(SprintGrupos sprintG) {
        List<Equipo> eqs = buscarEquipos(sprintG);
        SummaryStatistics stats = new SummaryStatistics();
        int s;
        for (Equipo equipo : eqs) {
            s = buscarTiempoTareas(equipo);
            stats.addValue(s);
        }
        double dv = stats.getStandardDeviation();
        dv = (double) Math.round(dv * 10) / 10;
        return dv;
    }

    public double buscarPromedioSprintAsignatura(SprintAsignatura sprintA) {
        List<SprintGrupos> spgs = buscarSprintGrupos(sprintA);
        SummaryStatistics stats = new SummaryStatistics();
        int a;
        for (SprintGrupos sprintGrupos : spgs) {
            List<Equipo> eqs = buscarEquipos(sprintGrupos);
            for (Equipo equipo : eqs) {
                a = buscarTiempoTareas(equipo);
                stats.addValue(a);
            }
        }
        double mean = stats.getMean();
        mean = (double) Math.round(mean * 10) / 10;
        return mean;
    }

    public double buscarDesviacionEstandarSprintAsignatura(SprintAsignatura sprintA) {
        List<SprintGrupos> spgs = buscarSprintGrupos(sprintA);
        SummaryStatistics stats = new SummaryStatistics();
        int a;
        for (SprintGrupos sprintGrupos : spgs) {
            List<Equipo> eqs = buscarEquipos(sprintGrupos);
            for (Equipo equipo : eqs) {
                a = buscarTiempoTareas(equipo);
                stats.addValue(a);
            }
        }

        double dv = stats.getStandardDeviation();
        dv = (double) Math.round(dv * 10) / 10;
        return dv;
    }

    public double buscarPromedioAsignatura(Asignatura asignatura) {
        SummaryStatistics stats = new SummaryStatistics();
        List<SprintAsignatura> spasig = buscarSprintAsignaturas(asignatura);
        int a;
        for (SprintAsignatura sprintAsig : spasig) {
            List<SprintGrupos> spgs = buscarSprintGrupos(sprintAsig);
            for (SprintGrupos sprintGrupos : spgs) {
                List<Equipo> eqs = buscarEquipos(sprintGrupos);
                for (Equipo equipo : eqs) {
                    a = buscarTiempoTareas(equipo);
                    stats.addValue(a);
                }
            }
        }

        double mean = stats.getMean();
        mean = (double) Math.round(mean * 10) / 10;
        return mean;
    }

    public double buscarDesviacionEstandarAsignatura(Asignatura asignatura) {
        SummaryStatistics stats = new SummaryStatistics();
        List<SprintAsignatura> spasig = buscarSprintAsignaturas(asignatura);
        int a;
        for (SprintAsignatura sprintAsig : spasig) {
            List<SprintGrupos> spgs = buscarSprintGrupos(sprintAsig);
            for (SprintGrupos sprintGrupos : spgs) {
                List<Equipo> eqs = buscarEquipos(sprintGrupos);
                for (Equipo equipo : eqs) {
                    a = buscarTiempoTareas(equipo);
                    stats.addValue(a);
                }
            }
        }
        double dv = stats.getStandardDeviation();
        dv = (double) Math.round(dv * 10) / 10;
        return dv;
    }

    public int obtenerHorasDiff(Date inicio, Date fin) {
        DateTime dtI = new DateTime(inicio);
        DateTime dtF = new DateTime(fin);
        int tiempo = Hours.hoursBetween(dtI, dtF).getHours();
        return tiempo;
    }

    public String obtenerTiempoProyecto(int seg) {
        long secondsTime = seg;
        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;
        String 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;
    }

    /*public int obtenerCantidadSemanas(Date dateI, Date dateF){
    DateTime dateTime1 = new DateTime(dateI);
    DateTime dateTime2 = new DateTime(dateF);
    return Weeks.weeksBetween(dateTime1, dateTime2).getWeeks();
    }
        
    public List<String> obtenerSemanasSprint(SprintAsignatura sprintA){
    List<String> aux = new ArrayList<>();
    System.out.println(sprintA.getFechaInicioSprintAsignatura()+ " -- "+sprintA.getFechaTerminoSprintAsignatura());
    System.out.println(obtenerCantidadSemanas(sprintA.getFechaInicioSprintAsignatura(),sprintA.getFechaTerminoSprintAsignatura()));
        
    return aux;
    }*/

}