@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) @WebMethod public Long[] getProximoRangoOrden(@WebParam Long idRecaudador) throws Exception { try { synchronized (RedFacadeImpl.bloqueo) { Recaudador rec = this.recaudadorFacade.getLocked(idRecaudador); Red red = this.getLocked(rec.getRed().getIdRed()); Long rangoValores[] = new Long[2]; rangoValores[0] = red.getNumeroOrdenProximo(); // incluye el extremo rangoValores[1] = rangoValores[0] + (rec.getNumeroOrdenTamRango() - 1); red.setNumeroOrdenProximo(rangoValores[1] + 1); this.merge(red); RedRecaudadorNumeroOrden rrno = new RedRecaudadorNumeroOrden(); rrno.setFechaHora(new Date()); rrno.setNumeroInicial(rangoValores[0]); rrno.setNumeroFinal(rangoValores[1]); rrno.setRecaudador(rec); rrno.setRed(rec.getRed()); this.redRecNumeroOrdenFacade.merge(rrno); return rangoValores; } } catch (Exception e) { context.setRollbackOnly(); e.printStackTrace(); return new Long[0]; } }
/* * public List<HabilitacionRecaudadorRed> * obtenerHabilitacionesRecaudadorRed(Integer idRed) { * HabilitacionRecaudadorRed ejemplo=new HabilitacionRecaudadorRed(); * ejemplo.setRed(new Red(idRed)); return * this.habilitacionRecaudadorRedFacade.list(ejemplo); } */ public boolean comprobarHabilitacionRecaudador(Long idRed, Long idRecaudador) { Recaudador rec = new Recaudador(); rec.setIdRecaudador(idRecaudador); rec.setRed(new Red(idRed)); return this.recaudadorFacade.total(rec) == 1; }