maia/.svn/pristine/43/43363f5eb1ae5cddb1b17ac85ad...

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;
}
}
}
}