Package ar.com.AmberSoft.iEvenTask.backend.entities

Source Code of ar.com.AmberSoft.iEvenTask.backend.entities.Tarea

package ar.com.AmberSoft.iEvenTask.backend.entities;

import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;

import ar.com.AmberSoft.util.PKGenerator;

@Entity
@Table (name="iet_tarea")
public class Tarea extends ar.com.AmberSoft.iEvenTask.backend.entities.Entity implements Serializable{

  private static final long serialVersionUID = 1L;
  private Integer id;
  private String nombreTarea;
  private Date fechaComienzo;
  private Date fechaFin;
  //private String duracion;
  private String descripcion;

  private String estado; //estado de la tarea "pendiente", "en curso", "suspendida"
  private Integer cumplimiento = 0; //porcentaje de completitud de la tarea
  /**
   * Usuario creador de la tarea
   */
  private String creator;
  /**
   * Usuario que tiene asignada la tarea actualmente
   */
  private String id_usuario;
  private String asignado;
 
  private int horasAsignadas;
  private Date fechaCreacion;
  private Date fechaModificacion;
  private int tipo_tarea;
  private Set<Comentario> comentarios;
  private Set<Visible> visibles;
 
  private Objetivo objetivo;
  private Integer peso;
 
  private Set<Tarea> subtareas;
  private Tarea tareaPadre;
 
  @Transient
  public Boolean getTieneSubtareas() {
    return ((this.getSubtareasActivas()!=null) && (this.getSubtareasActivas().size()>0));
  }

  public void setTieneSubtareas(Boolean tieneSubtareas) {
  }

 
  @Transient
  public Set<Tarea> getSubtareasActivas() {
    Set<Tarea> activas = new HashSet<Tarea>();
    if (subtareas!=null){
      Iterator itSubtareas = subtareas.iterator();
      while (itSubtareas.hasNext()) {
        Tarea tarea = (Tarea) itSubtareas.next();
        if (tarea.getDelete()==null){
          activas.add(tarea);
        }
      }
    }
    return activas;
  }

  public void setSubtareasActivas(Set<Tarea> subtareas) {
  }
 
  @OneToMany (mappedBy="tareaPadre", fetch=FetchType.LAZY, cascade=CascadeType.ALL )
  public Set<Tarea> getSubtareas() {
    return subtareas;
  }

  public void setSubtareas(Set<Tarea> subtareas) {
    this.subtareas = subtareas;
  }

  @ManyToOne (fetch=FetchType.LAZY)
  @JoinColumn (name="id_tarea_padre")
  public Tarea getTareaPadre() {
    return tareaPadre;
  }

  public void setTareaPadre(Tarea tareaPadre) {
    this.tareaPadre = tareaPadre;
  }

  public Tarea() {
    super();
  }

  @Id @Column (name="id_tarea")
  public Integer getId() {
    if (id==null){
      PKGenerator pkGenerator = new PKGenerator();
      id = new Integer(pkGenerator.getIntLastTime());
    }
    return id;
  }
 
  public void setId(Integer id) {
    this.id = id;
    if (visibles!=null){
      Iterator<Visible> it = visibles.iterator();
      while (it.hasNext()) {
        Visible visible = (Visible) it.next();
        visible.changeTask(this);
      }
    }
  }
  @Basic @Column (name="nombre_tarea")
  public String getNombreTarea() {
    return nombreTarea;
  }
  public void setNombreTarea(String nombreTarea) {
    this.nombreTarea = nombreTarea;
  }
  @Basic @Column (name="fecha_comienzo")
  public Date getFechaComienzo() {
    return fechaComienzo;
  }
  public void setFechaComienzo(Date fechaComienzo) {
    this.fechaComienzo = fechaComienzo;
  }

  @Basic @Column (name="descripcion")
  public String getDescripcion() {
    return descripcion;
  }
  public void setDescripcion(String descripcion) {
    this.descripcion = descripcion;
  }
  @Basic @Column (name="fecha_fin")
  public Date getFechaFin() {
    return fechaFin;
  }
  public void setFechaFin(Date fechaFin) {
    this.fechaFin = fechaFin;
  }
  @Basic @Column (name="horas_asignadas")
  public int getHorasAsignadas() {
    return horasAsignadas;
  }
  public void setHorasAsignadas(int horasAsignadas) {
    this.horasAsignadas = horasAsignadas;
  }
  @Basic @Column (name="id_usuario")
  public String getId_usuario() {
    return id_usuario;
  }
  public void setId_usuario(String id_usuario) {
    this.id_usuario = id_usuario;
  }
  @Basic @Column (name="fecha_creacion")
  public Date getFechaCreacion() {
    return fechaCreacion;
  }
  public void setFechaCreacion(Date fechaCreacion) {
    this.fechaCreacion = fechaCreacion;
  }
  @Basic @Column (name="fecha_modificacion")
  public Date getFechaModificacion() {
    return fechaModificacion;
  }
  public void setFechaModificacion(Date fechaModificacion) {
    this.fechaModificacion = fechaModificacion;
  }
  @Basic @Column (name="estado")
  public String getEstado() {
    return estado;
  }
  public void setEstado(String estado) {
    this.estado = estado;
    if ((estado!=null)&&("Finalizada".equalsIgnoreCase(estado))){
      cumplimiento=100;
    }
  }
  @Basic @Column (name="cumplimiento")
  public Integer getCumplimiento() {
    if (getTieneSubtareas()){
      if (cumplimiento!=null){
        System.err.println(this.getNombreTarea() + ":" + cumplimiento);
      }
     
      Set<Tarea> tareas = this.getSubtareasActivas();
      if (tareas!=null){
        Integer calculado = 0;
        Iterator<Tarea> itTareas = tareas.iterator();
        while (itTareas.hasNext()) {
          Tarea tarea = (Tarea) itTareas.next();
          if (tarea.getPeso()!=null){
            if (!((tarea.getCumplimiento()==null)||(tarea.getCumplimiento()==0))){
              calculado += tarea.getPeso() * tarea.getCumplimiento() / 100
            }
          }
        }
        if(calculado!=0){
          cumplimiento=calculado;
        }
      }
      return cumplimiento;
    } else {
      return cumplimiento;
    }
  }
  public void setCumplimiento(Integer cumplimiento) {
    this.cumplimiento = cumplimiento;
    if ((cumplimiento!=null)&&(cumplimiento>=100)){
      cumplimiento=100;
      if (!"Finalizada".equalsIgnoreCase(estado)){
        estado = "Finalizada";
      }
    }
  }
 
  @Basic @Column (name="tipo_tarea")
  public int getTipo_tarea() {
    return tipo_tarea;
  }
  public void setTipo_tarea(int tipo_tarea) {
    this.tipo_tarea = tipo_tarea;
  }
 
  @OneToMany (mappedBy="tarea", fetch=FetchType.LAZY)
  public Set<Comentario> getComentarios() {
    return comentarios;
  }

  public void setComentarios(Set<Comentario> comentarios) {
    this.comentarios = comentarios;
  }

  @Transient
  public String getAsignado() {
    return asignado;
  }
  public void setAsignado(String asignado) {
    this.asignado = asignado;
  }

  @Transient
  public String getCreator() {
    return creator;
  }
  public void setCreator(String creator) {
    this.creator = creator;
  }
 
  @OneToMany (mappedBy="tarea", fetch=FetchType.LAZY, cascade=CascadeType.ALL )
  public Set<Visible> getVisibles() {
    return visibles;
  }
  public void setVisibles(Set<Visible> visibles) {
    this.visibles = visibles;
  }
 
  @Transient
  public void defaultVisibles() {
    visibles = new HashSet<Visible>();
    obligatoryVisibles();
  }
 
  @Transient
  public void addVisible(String usuario){
    if (visibles==null){
      visibles = new HashSet<Visible>();
    }
    Visible visible = new Visible(this, usuario);
    visibles.add(visible);
  }
 
  private void obligatoryVisibles(){
    if (this.creator!=null){
      visibles.add(new Visible(this, this.creator));
    }
    if (this.id_usuario!=null){
      visibles.add(new Visible(this, this.id_usuario));
    }
  }
 
  @ManyToOne (fetch=FetchType.LAZY)
  @JoinColumn (name="id_objetivo"
  public Objetivo getObjetivo() {
    return objetivo;
  }

  public void setObjetivo(Objetivo objetivo) {
    this.objetivo = objetivo;
 

  @Basic @Column (name="peso")
  public Integer getPeso() {
    return peso;
  }

  public void setPeso(Integer peso) {
    this.peso = peso;
  }
}
TOP

Related Classes of ar.com.AmberSoft.iEvenTask.backend.entities.Tarea

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.