@Transactional(propagation = Propagation.REQUIRED, readOnly = true, rollbackFor = Throwable.class) public Flota find(Long id) { Session currentSession = getSession(); currentSession.clear(); final Flota uniqueResult = (Flota) currentSession .createCriteria(Flota.class) .add(Restrictions.eq("id", id)) .uniqueResult(); if (uniqueResult != null) { uniqueResult.getJuegoIconos(); } return uniqueResult; }
@Transactional( propagation = Propagation.REQUIRES_NEW, readOnly = false, rollbackFor = Throwable.class) public boolean saveOrUpdate(Flota f) { boolean res = false; if (f == null) return res; try { log.debug("Saving " + f); final Set<Rol> roles = f.getRoles(); final Set<Recurso> recurso = f.getRecurso(); removeRecursos(f); removeRoles(f); Session currentSession = getSession(); currentSession.clear(); Flota entity = null; if (f.getId() != null && this.get(f.getId()) != null) entity = (Flota) currentSession.merge(f); else entity = f; if (recurso != null) for (Recurso r : recurso) { r = (Recurso) currentSession.get(Recurso.class, r.getId()); if (r != null) { r.setFlotas(entity); currentSession.saveOrUpdate(r); } } if (roles != null) for (Rol r : roles) { Rol rentity = (Rol) currentSession.get(Rol.class, r.getId()); if (rentity != null) { rentity.getFlotas().add(entity); currentSession.saveOrUpdate(rentity); } } currentSession.saveOrUpdate(entity); } catch (Throwable t) { log.error(t, t); return false; } return true; }
@Transactional( propagation = Propagation.REQUIRES_NEW, readOnly = false, rollbackFor = Throwable.class) public boolean delete(Flota p) { try { if (p.getId() == null || (p = this.get(p.getId())) == null) return true; if (!p.getRecurso().isEmpty()) return false; removeRoles(p); this.remove(p.getId()); return true; } catch (Throwable t) { log.error(t, t); return false; } }
@SuppressWarnings("unchecked") @Transactional( propagation = Propagation.REQUIRES_NEW, readOnly = false, rollbackFor = Throwable.class) private void removeRoles(Flota f) { try { if (f != null && f.getId() != null) { Session currentSession = getSession(); currentSession.clear(); f = this.get(f.getId()); final Set<Rol> roles = Collections.unmodifiableSet(f.getRoles()); if (f != null && roles != null) for (Rol r : roles) { r = (Rol) currentSession.get(Rol.class, r.getId()); if (r != null && r.getFlotas() != null) { final Set<Flota> flotas = Collections.unmodifiableSet(r.getFlotas()); List<Flota> aBorrar = new LinkedList<Flota>(); for (Flota fl : flotas) if (fl.getId().equals(f.getId())) aBorrar.add(fl); for (Flota fl : aBorrar) r.getFlotas().remove(fl); currentSession.saveOrUpdate(r); } } } } catch (Throwable t) { log.error(t, t); } }
@Transactional( propagation = Propagation.REQUIRES_NEW, readOnly = false, rollbackFor = Throwable.class) private void removeRecursos(Flota p) { try { if (p != null && p.getId() != null) { Session currentSession = getSession(); currentSession.clear(); p = this.get(p.getId()); if (p != null && p.getRecurso() != null) { for (Recurso r : p.getRecurso()) { r = (Recurso) currentSession.get(Recurso.class, r.getId()); if (r != null) { r.setFlotas(null); currentSession.saveOrUpdate(r); } } } } } catch (Throwable t) { log.error(t, t); } }
@SuppressWarnings("unchecked") @Transactional( propagation = Propagation.REQUIRES_NEW, readOnly = true, rollbackFor = Throwable.class) public List<Flota> getByFilter(Flota f) { List<Flota> res = new ArrayList<Flota>(0); try { Session currentSession = getSession(); currentSession.clear(); Criteria criteria = currentSession.createCriteria(Flota.class).add(Restrictions.eq("habilitada", true)); if (f.getInfoAdicional() != null) criteria = criteria.add( Restrictions.ilike( "infoAdicional", LogicConstants.getGenericString(f.getInfoAdicional()))); if (f.getNombre() != null) criteria = criteria.add( Restrictions.ilike("nombre", LogicConstants.getGenericString(f.getNombre()))); if (f.getHabilitada() != null) criteria = criteria.add(Restrictions.eq("habilitada", f.getHabilitada())); if (f.getJuegoIconos() != null) criteria = criteria.add( Restrictions.ilike( "juegoIconos", LogicConstants.getGenericString(f.getJuegoIconos()))); res = criteria .addOrder(Order.asc("nombre")) .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY) .list(); for (Flota fl : res) if (fl != null) { if (fl.getRoles() != null) for (Rol r : fl.getRoles()) r.getId(); } } catch (Throwable t) { log.error(t, t); } return res; }