001package co.codewizards.cloudstore.local.persistence; 002 003import java.util.ArrayList; 004import java.util.Collection; 005import java.util.HashMap; 006import java.util.Map; 007import java.util.UUID; 008 009import javax.jdo.Query; 010 011import org.slf4j.Logger; 012import org.slf4j.LoggerFactory; 013 014import co.codewizards.cloudstore.core.repo.transport.TransferDoneMarkerType; 015import co.codewizards.cloudstore.core.util.AssertUtil; 016 017public class TransferDoneMarkerDao extends Dao<TransferDoneMarker, TransferDoneMarkerDao> { 018 private static final Logger logger = LoggerFactory.getLogger(TransferDoneMarkerDao.class); 019 020 public TransferDoneMarker getTransferDoneMarker(final UUID fromRepositoryId, final UUID toRepositoryId, final TransferDoneMarkerType transferDoneMarkerType, final long fromEntityId) { 021 AssertUtil.assertNotNull(fromRepositoryId, "fromRepositoryId"); 022 AssertUtil.assertNotNull(toRepositoryId, "toRepositoryId"); 023 AssertUtil.assertNotNull(transferDoneMarkerType, "transferDoneMarkerType"); 024 final Query query = pm().newNamedQuery(getEntityClass(), "getTransferDoneMarker_fromRepositoryId_toRepositoryId_transferDoneMarkerType_fromEntityId"); 025 try { 026 final Map<String, Object> m = new HashMap<String, Object>(4); 027 m.put("fromRepositoryId", fromRepositoryId.toString()); 028 m.put("toRepositoryId", toRepositoryId.toString()); 029 m.put("transferDoneMarkerType", transferDoneMarkerType); 030 m.put("fromEntityId", fromEntityId); 031 final TransferDoneMarker result = (TransferDoneMarker) query.executeWithMap(m); 032 return result; 033 } finally { 034 query.closeAll(); 035 } 036 } 037 038 public Collection<TransferDoneMarker> getRepoFileTransferDones(final UUID fromRepositoryId, final UUID toRepositoryId) { 039 AssertUtil.assertNotNull(fromRepositoryId, "fromRepositoryId"); 040 AssertUtil.assertNotNull(toRepositoryId, "toRepositoryId"); 041 final Query query = pm().newNamedQuery(getEntityClass(), "getTransferDoneMarkers_fromRepositoryId_toRepositoryId"); 042 try { 043 long startTimestamp = System.currentTimeMillis(); 044 @SuppressWarnings("unchecked") 045 Collection<TransferDoneMarker> result = (Collection<TransferDoneMarker>) query.execute( 046 fromRepositoryId.toString(), toRepositoryId.toString()); 047 logger.debug("getRepoFileTransferDones: query.execute(...) took {} ms.", System.currentTimeMillis() - startTimestamp); 048 049 startTimestamp = System.currentTimeMillis(); 050 result = load(result); 051 logger.debug("getRepoFileTransferDones: Loading result-set with {} elements took {} ms.", result.size(), System.currentTimeMillis() - startTimestamp); 052 053 return result; 054 } finally { 055 query.closeAll(); 056 } 057 } 058 059 public void deleteRepoFileTransferDones(final UUID fromRepositoryId, final UUID toRepositoryId) { 060 final Collection<TransferDoneMarker> transferDoneMarkers = getRepoFileTransferDones(fromRepositoryId, toRepositoryId); 061 deletePersistentAll(transferDoneMarkers); 062 } 063 064 @Override 065 protected Collection<TransferDoneMarker> load(final Collection<TransferDoneMarker> entities) { 066 // no sub-classes => no need for real load method 067 return new ArrayList<>(entities); 068 } 069}