001 package org.cumulus4j.store.datastoreversion.command; 002 003 import java.util.ArrayList; 004 import java.util.Collection; 005 006 import javax.jdo.PersistenceManager; 007 import javax.jdo.Query; 008 009 import org.cumulus4j.store.crypto.CryptoContext; 010 import org.cumulus4j.store.datastoreversion.AbstractDatastoreVersionCommand; 011 import org.cumulus4j.store.datastoreversion.CommandApplyParam; 012 import org.cumulus4j.store.model.Sequence; 013 import org.cumulus4j.store.model.Sequence2; 014 import org.cumulus4j.store.model.Sequence2DAO; 015 016 @SuppressWarnings("deprecation") 017 public class MigrateToSequence2 extends AbstractDatastoreVersionCommand 018 { 019 @Override 020 public int getCommandVersion() { 021 return 0; 022 } 023 024 @Override 025 public void apply(CommandApplyParam commandApplyParam) { 026 // The Sequence[2] only exists in the data-datastore (not in the index-datastore), hence we return immediately, if the 027 // current datastore is not the data-datastore. 028 PersistenceManager pm = commandApplyParam.getPersistenceManager(); 029 CryptoContext cryptoContext = commandApplyParam.getCryptoContext(); 030 if (pm != cryptoContext.getPersistenceManagerForData()) 031 return; 032 033 Sequence2DAO sequence2DAO = new Sequence2DAO(pm, cryptoContext.getKeyStoreRefID()); 034 035 Query q = pm.newQuery(Sequence.class); 036 @SuppressWarnings("unchecked") 037 Collection<Sequence> c = (Collection<Sequence>) q.execute(); 038 for (Sequence sequence : new ArrayList<Sequence>(c)) { // should work without the 'new ArrayList...', but I can't test and it doesn't harm 039 Sequence2 sequence2 = sequence2DAO.createSequence2(sequence.getSequenceName()); 040 sequence2.setNextValue(sequence.getNextValue()); 041 pm.deletePersistent(sequence); 042 } 043 } 044 }