예제 #1
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;
  }
예제 #2
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");
      }
    }
  }