WJGenSequence.java
package sk.iway.iwcm.system.jpa;
import java.util.Vector;
import org.eclipse.persistence.internal.databaseaccess.Accessor;
import org.eclipse.persistence.internal.sessions.AbstractSession;
import sk.iway.iwcm.PkeyGenerator;
/**
* <p>
* <b>Purpose</b>: Defines sequencing through using a SEQUENCE table.
* <p>
* <b>Description</b>
* This is the default sequencing mechanism.
*
* JRASKA: WebJET override povodnej TableSequence. Namiesto defaultnej JPA
* <code>TableSequence</code>, ktora pouziva tabulku SEQUENCE (pripadne nazov zadany v anotaciach)
* sa na generovanie primarnych klucov pouzije <code>PkeyGenerator</code> z WJ.
*
* Tato funkcionalita je dosiahnuta odstranenim overridovanych protected metod <code>buildSelectQuery()</code> a
* <code>buildUpdateQuery()</code> a overridom metod <code>getGeneratedValue()</code> (vracia PkeyGenerator hodnotu) a
* <code>getGeneratedVector</code> (vracia <code>null</code>). Nakolko sa prepopulaciu stara <code>PkeyGenerator</code>, JPA nesmie
* pri volani sekvencie pouzit <code>getGeneratedVector()</code>, toto dosiahneme overridom boolean metod
* <code>shouldAcquireValueAfterInsert()</code> a <code>shouldUsePreallocation</code>, obidve vracaju <code>false</code>.
*/
@SuppressWarnings("rawtypes")
public class WJGenSequence extends org.eclipse.persistence.sequencing.TableSequence {
public WJGenSequence() {
super();
}
public WJGenSequence(String name) {
super(name);
}
/**
* Override metody, namiesto vratenia hodnot za pouzitia SEQUENCE tabulky sa vrati hodnota z
* <code>PkeyGenerator.getNextValue(seqName)</code>
*
* Vo faze persistovania JPA entity, kde sa zo sekvencie generuje hodnota PK, sa do parametra
* <b>seqName</b> ulozi hodnota z anotacneho parametra <code>pkColumnValue</code>
*/
@Override
public Object getGeneratedValue(Accessor accessor, AbstractSession writeSession, String seqName)
{
return PkeyGenerator.getNextValue(seqName);
}
/**
* Override metody, vracia null, nakolko o prepopulaciu PK hodnot sa stara <code>PkeyGenerator</code>
*/
@Override
public Vector getGeneratedVector(Accessor accessor, AbstractSession writeSession, String seqName, int size)
{
return null;
}
@Override
public boolean shouldAcquireValueAfterInsert()
{
return false;
}
@Override
public boolean shouldUseTransaction()
{
return false;
}
@Override
public boolean shouldUsePreallocation()
{
return false;
}
}