/** * 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"); } } }
@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; }
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; }
@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; }
@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; } }
@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; }
@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>(); }