001 package org.cumulus4j.store.model;
002
003 import javax.jdo.JDOObjectNotFoundException;
004 import javax.jdo.PersistenceManager;
005 import javax.jdo.identity.StringIdentity;
006
007 import org.cumulus4j.store.crypto.CryptoContext;
008
009 public class Sequence2DAO extends AbstractDAO {
010
011 private int keyStoreRefID;
012
013 public Sequence2DAO() { }
014
015 /**
016 * @param pmData the backend-<code>PersistenceManager</code> used to access the underlying datastore; must not be <code>null</code>.
017 * If there are multiple datastores (data + index), then this is the one used for data.
018 * @param keyStoreRefID the key-store-reference-ID obtained usually from {@link CryptoContext#getKeyStoreRefID()}.
019 */
020 public Sequence2DAO(PersistenceManager pmData, int keyStoreRefID) {
021 super(pmData);
022 this.keyStoreRefID = keyStoreRefID;
023 }
024
025 /**
026 * Get the <code>Sequence</code> identified by the given <code>sequenceName</code>.
027 * If no such <code>Sequence</code> exists, this method returns <code>null</code>.
028 * @param sequenceName the name of the sequence; must not be <code>null</code>.
029 * @return the <code>Sequence</code> identified by the given <code>sequenceName</code> or <code>null</code>, if no such
030 * <code>Sequence</code> exists.
031 */
032 public Sequence2 getSequence2(String sequenceName)
033 {
034 StringIdentity id = new StringIdentity(Sequence2.class, Sequence2.createSequenceID(keyStoreRefID, sequenceName));
035 Sequence2 sequence;
036 try {
037 sequence = (Sequence2) pm.getObjectById(id);
038 } catch (JDOObjectNotFoundException x) {
039 sequence = null;
040 }
041 return sequence;
042 }
043
044 /**
045 * Get the <code>Sequence</code> identified by the given <code>sequenceName</code>.
046 * If no such <code>Sequence</code> exists, this method creates & persists one.
047 * @param sequenceName the name of the sequence; must not be <code>null</code>.
048 * @return the <code>Sequence</code> identified by the given <code>sequenceName</code>; never <code>null</code>.
049 */
050 public Sequence2 createSequence2(String sequenceName)
051 {
052 Sequence2 sequence = getSequence2(sequenceName);
053 if (sequence == null)
054 sequence = pm.makePersistent(new Sequence2(keyStoreRefID, sequenceName));
055
056 return sequence;
057 }
058
059 }