package co.codewizards.cloudstore.local.persistence; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.UUID; import javax.jdo.Query; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import co.codewizards.cloudstore.core.repo.transport.TransferDoneMarkerType; import co.codewizards.cloudstore.core.util.AssertUtil; public class TransferDoneMarkerDao extends Dao<TransferDoneMarker, TransferDoneMarkerDao> { private static final Logger logger = LoggerFactory.getLogger(TransferDoneMarkerDao.class); public TransferDoneMarker getTransferDoneMarker(final UUID fromRepositoryId, final UUID toRepositoryId, final TransferDoneMarkerType transferDoneMarkerType, final long fromEntityId) { AssertUtil.assertNotNull(fromRepositoryId, "fromRepositoryId"); AssertUtil.assertNotNull(toRepositoryId, "toRepositoryId"); AssertUtil.assertNotNull(transferDoneMarkerType, "transferDoneMarkerType"); final Query query = pm().newNamedQuery(getEntityClass(), "getTransferDoneMarker_fromRepositoryId_toRepositoryId_transferDoneMarkerType_fromEntityId"); try { final Map<String, Object> m = new HashMap<String, Object>(4); m.put("fromRepositoryId", fromRepositoryId.toString()); m.put("toRepositoryId", toRepositoryId.toString()); m.put("transferDoneMarkerType", transferDoneMarkerType); m.put("fromEntityId", fromEntityId); final TransferDoneMarker result = (TransferDoneMarker) query.executeWithMap(m); return result; } finally { query.closeAll(); } } public Collection<TransferDoneMarker> getRepoFileTransferDones(final UUID fromRepositoryId, final UUID toRepositoryId) { AssertUtil.assertNotNull(fromRepositoryId, "fromRepositoryId"); AssertUtil.assertNotNull(toRepositoryId, "toRepositoryId"); final Query query = pm().newNamedQuery(getEntityClass(), "getTransferDoneMarkers_fromRepositoryId_toRepositoryId"); try { long startTimestamp = System.currentTimeMillis(); @SuppressWarnings("unchecked") Collection<TransferDoneMarker> result = (Collection<TransferDoneMarker>) query.execute( fromRepositoryId.toString(), toRepositoryId.toString()); logger.debug("getRepoFileTransferDones: query.execute(...) took {} ms.", System.currentTimeMillis() - startTimestamp); startTimestamp = System.currentTimeMillis(); result = load(result); logger.debug("getRepoFileTransferDones: Loading result-set with {} elements took {} ms.", result.size(), System.currentTimeMillis() - startTimestamp); return result; } finally { query.closeAll(); } } public void deleteRepoFileTransferDones(final UUID fromRepositoryId, final UUID toRepositoryId) { final Collection<TransferDoneMarker> transferDoneMarkers = getRepoFileTransferDones(fromRepositoryId, toRepositoryId); deletePersistentAll(transferDoneMarkers); } @Override protected Collection<TransferDoneMarker> load(final Collection<TransferDoneMarker> entities) { // no sub-classes => no need for real load method return new ArrayList<>(entities); } }