66 lines
2.2 KiB
Plaintext
Executable File
66 lines
2.2 KiB
Plaintext
Executable File
package com.fp.sessionbeans.ejb;
|
|
|
|
import javax.ejb.Stateless;
|
|
import javax.ejb.TransactionManagement;
|
|
import javax.ejb.TransactionManagementType;
|
|
import javax.persistence.EntityManager;
|
|
import javax.persistence.EntityTransaction;
|
|
|
|
import com.fp.common.helper.Constant;
|
|
import com.fp.persistence.pgeneral.seq.TgeneSequences;
|
|
import com.fp.sessionbeans.ejb.interfaces.SequenceBeanLocal;
|
|
|
|
/**
|
|
* Session Bean que entrega el nuemero de secuenia, dado un codigo de secuencia.
|
|
*
|
|
* @author Jorge Vaca.
|
|
* @version 2.1
|
|
*/
|
|
@Stateless
|
|
@TransactionManagement(value = TransactionManagementType.BEAN)
|
|
public class SequenceBean implements SequenceBeanLocal {
|
|
/**
|
|
* Metodo que entrega el valor de uan secuencia, dado el codigo de sequencia.
|
|
*
|
|
* @param pSequenceCode Codigo de secuencia a obtener el numero de secuenia.
|
|
* @return Integer
|
|
* @throws Exception
|
|
*/
|
|
@Override
|
|
public Long getNextValueJta(EntityManager em, String pSequenceCode) throws Exception {
|
|
EntityTransaction tx = em.getTransaction();
|
|
tx.begin();
|
|
try {
|
|
Long sec = null;
|
|
TgeneSequences tgeneSequences = TgeneSequences.findWithLock(em, pSequenceCode);
|
|
tgeneSequences.setCurrentvalue(tgeneSequences.getCurrentvalue() + tgeneSequences.getIncrease());
|
|
if (Constant.ifYes(tgeneSequences.getCyclic())) {
|
|
if (tgeneSequences.getCurrentvalue().compareTo(tgeneSequences.getLastvalue()) >= 0) {
|
|
tgeneSequences.setCurrentvalue(tgeneSequences.getInitialvalue());
|
|
}
|
|
}
|
|
// update del registro
|
|
em.merge(tgeneSequences);
|
|
sec = Long.valueOf(tgeneSequences.getCurrentvalue().toString());
|
|
tx.commit();
|
|
return sec;
|
|
} catch (Exception e) {
|
|
if (tx.isActive()) {
|
|
tx.rollback();
|
|
}
|
|
throw e;
|
|
} finally {
|
|
try {
|
|
if (em.isOpen()) {
|
|
em.clear();
|
|
em.close();
|
|
}
|
|
} catch (Exception e) {
|
|
throw e;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|