示例#1
0
  /**
   * Actualiza los estados de las incidencias que NO se encuentren en el array y cuyo estado no es
   * ya el pasado como parámetro.
   *
   * @param idsIncidencias Array de ids de incidencias
   * @param estado Estado a establecer
   */
  @Transactional(
      propagation = Propagation.REQUIRES_NEW,
      readOnly = false,
      rollbackFor = Throwable.class)
  public void updateEstadosIncidencias(Long[] idsIncidencias, String estado) {

    if (idsIncidencias != null && idsIncidencias.length > 0) {
      EstadoIncidencia estadoObj = getEstadoIncidenciaByIdentificador(estado);
      if (estado != null) {
        Criteria crit =
            getSession()
                .createCriteria(Incidencia.class)
                .add(Restrictions.not(Restrictions.in("id", idsIncidencias)))
                .add(Restrictions.ne("estado", estadoObj));

        List<Incidencia> resultado = crit.list();
        for (Incidencia inc : resultado) {
          if (log.isTraceEnabled()) {
            log.trace("Actualizamos el estado de la incidencia " + inc.getId() + " a " + estado);
          }
          inc.setEstado(estadoObj);
          getSession().update(inc);
        }
      } else {
        log.error("El estado " + estado + " no se encuentra en la base de datos");
      }
    }
  }
示例#2
0
 @Transactional(
     propagation = Propagation.REQUIRES_NEW,
     readOnly = false,
     rollbackFor = Throwable.class)
 public boolean delete(Incidencia r) {
   if (r == null || r.getId() == null) return false;
   try {
     this.remove(r.getId());
   } catch (Throwable t) {
     log.error(t, t);
     return false;
   }
   return true;
 }
示例#3
0
  private void updateIncidences(final LatLon topleft, final LatLon bottomright) {
    MarkerLayer layer = null;
    // tomar las capas vehiculo y persona
    for (Layer l : getAllLayers()) {
      if (l.name.equals(Internacionalization.getString("Incidences.incidences"))) {
        layer = (MarkerLayer) l;
        break;
      }
    }
    if (layer == null) return;

    List<Incidencia> allres = IncidenciaConsultas.getOpened();
    Collection<Marker> nuevoData = new LinkedList<Marker>();

    for (Incidencia i : allres) {
      try {
        if (i.getGeometria() != null) {
          final com.vividsolutions.jts.geom.Point centroid = i.getGeometria().getCentroid();
          if (centroid != null) {
            LatLon latlon = new LatLon(centroid.getCoordinate().y, centroid.getCoordinate().x);
            WayPoint w = new WayPoint(latlon);
            w.attr.put("name", i.getTitulo() + " (" + i.getPrioridad() + ")");
            w.attr.put(
                "symbol",
                LogicConstants.get("DIRECTORIO_ICONOS_INCIDENCIAS", "incidencia/")
                    + "incidencia_"
                    + i.getEstado().toString()
                    + "_"
                    + i.getCategoria().toString()
                    + "_"
                    + i.getPrioridad().toString());
            w.attr.put(
                "color",
                LogicConstants.get("COLOR_ESTADO_INC_" + i.getEstado().getId(), "#000000"));

            CustomMarker<Long, Incidencia> marker =
                new CustomMarker<Long, Incidencia>(w, layer, i.getId(), Type.INCIDENCE);
            marker.setObject(i);
            nuevoData.add(marker);
          }
        }
      } catch (Throwable t) {
        log.error("Error al intentar pintar una incidencia", t);
      }
    }

    layer.data = nuevoData;
  }
示例#4
0
  @SuppressWarnings("unchecked")
  @Transactional(
      propagation = Propagation.REQUIRES_NEW,
      readOnly = true,
      rollbackFor = Throwable.class)
  public List<Incidencia> getOpened() {
    List<Incidencia> res = new LinkedList<Incidencia>();
    try {
      Session currentSession = getSession();
      currentSession.clear();
      Criteria criteria =
          currentSession
              .createCriteria(Incidencia.class)
              .createCriteria("estado")
              .add(Restrictions.ne("id", 3l))
              .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
      res = (List<Incidencia>) criteria.list();

      for (Incidencia i : res)
        if (i != null) {
          if (i.getCreador() != null) i.getCreador().getId();
          if (i.getEstado() != null) i.getEstado().getId();
          if (i.getCategoria() != null) i.getCategoria().getId();
        }
    } catch (Throwable t) {
      log.error(t, t);
    }
    return res;
  }
示例#5
0
 @Transactional(propagation = Propagation.REQUIRED, readOnly = true, rollbackFor = Throwable.class)
 @Override
 public Incidencia get(Long id) {
   try {
     final Incidencia i = super.get(id);
     if (i != null) {
       if (i.getCreador() != null) i.getCreador().getId();
       if (i.getEstado() != null) i.getEstado().getId();
       if (i.getCategoria() != null) i.getCategoria().getId();
       if (i.getRecursos() != null) for (Recurso r : i.getRecursos()) if (r != null) r.getId();
     }
     return i;
   } catch (Throwable t) {
     log.error("Estamos buscando un objeto que no existe", t);
     return null;
   }
 }
示例#6
0
  @Transactional(
      propagation = Propagation.REQUIRES_NEW,
      readOnly = false,
      rollbackFor = Throwable.class)
  public boolean saveOrUpdate(Incidencia p) {
    if (p == null) return false;

    Incidencia entity = null;
    try {
      Session currentSession = getSession();
      if (p.getId() != null && this.get(p.getId()) != null) entity = get(p.getId());

      if (entity == null) entity = p;
      else {
        if (p.getCategoria() != null)
          try {
            entity.setCategoria(
                (CategoriaIncidencia)
                    super.getSession().get(CategoriaIncidencia.class, p.getCategoria().getId()));
          } catch (Throwable t) {
            log.error("Categoria desconocida", t);
          }
        else entity.setCategoria(null);
        if (p.getCreador() != null)
          entity.setCreador(UsuarioConsultas.find(p.getCreador().getNombreUsuario()));
        else entity.setCreador(null);
        entity.setDescripcion(p.getDescripcion());
        if (p.getEstado() != null)
          try {
            entity.setEstado(
                (EstadoIncidencia)
                    super.getSession().get(EstadoIncidencia.class, p.getEstado().getId()));
          } catch (Throwable t) {
            log.error("Estado desconocido", t);
          }
        else entity.setEstado(null);
        entity.setFechaCierre(p.getFechaCierre());
        entity.setFechaCreacion(p.getFechaCreacion());
        entity.setGeometria(p.getGeometria());
        entity.setPrioridad(p.getPrioridad());
        entity.setTitulo(p.getTitulo());
      }
      currentSession.saveOrUpdate(entity);
    } catch (Throwable t) {
      log.error("Error al guardar una incidencia: " + p, t);
      return false;
    }
    return true;
  }
示例#7
0
  @SuppressWarnings("unchecked")
  @Transactional(
      propagation = Propagation.REQUIRES_NEW,
      readOnly = true,
      rollbackFor = Throwable.class)
  public List<Incidencia> getByExample(Incidencia f) {
    try {
      Session currentSession = getSession();
      currentSession.clear();
      Criteria criteria =
          currentSession.createCriteria(Incidencia.class).addOrder(Order.asc("titulo"));

      // titulo
      if (f.getTitulo() != null && f.getTitulo().trim().length() > 0) {
        criteria.add(Restrictions.ilike("titulo", LogicConstants.getGenericString(f.getTitulo())));
      }

      // prioridad
      if (f.getPrioridad() != null) {
        criteria.add(Restrictions.eq("prioridad", f.getPrioridad()));
      }

      // categoria
      if (f.getCategoria() != null) {
        criteria
            .createAlias("categoria", "cat")
            .add(Restrictions.eq("cat.identificador", f.getCategoria().getIdentificador()));
      }

      // estado
      if (f.getEstado() != null) {
        criteria
            .createAlias("estado", "est")
            .add(Restrictions.eq("est.identificador", f.getEstado().getIdentificador()));
      } else {
        criteria.createAlias("estado", "est").add(Restrictions.ne("est.id", 3l));
      }

      List<Incidencia> res = new LinkedList<Incidencia>();
      res = criteria.list();
      for (Incidencia i : res)
        if (i != null) {
          if (i.getCreador() != null) i.getCreador().getId();
          if (i.getEstado() != null) i.getEstado().getId();
          if (i.getCategoria() != null) i.getCategoria().getId();
        }
      return res;
    } catch (Throwable t) {
      log.error("Error extrayendo las categorias de las incidencias", t);
    }
    return new LinkedList<Incidencia>();
  }