package co.codewizards.cloudstore.local.persistence; import static co.codewizards.cloudstore.core.util.AssertUtil.*; import static co.codewizards.cloudstore.core.util.HashUtil.*; 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; /** * * @author Sebastian Schefczyk */ public class FileInProgressMarkerDao extends Dao<FileInProgressMarker, FileInProgressMarkerDao> { private static final Logger logger = LoggerFactory.getLogger(FileInProgressMarkerDao.class); public Collection<FileInProgressMarker> getFileInProgressMarkers(final UUID fromRepository, final UUID toRepository) { final Query query = pm().newNamedQuery(getEntityClass(), "getFileInProgressMarkers_fromRepositoryId_toRepositoryId"); try { @SuppressWarnings("unchecked") final Collection<FileInProgressMarker> fileInProgressMarkers = (Collection<FileInProgressMarker>) query.execute(convertToString(fromRepository), convertToString(toRepository)); return load(fileInProgressMarkers); } finally { query.closeAll(); } } /** * @return <code>null</code> if none was found. */ public FileInProgressMarker getFileInProgressMarker(final UUID fromRepositoryId, final UUID toRepositoryId, final String path) { assertNotNull(fromRepositoryId, "fromRepositoryId"); assertNotNull(toRepositoryId, "toRepositoryId"); assertNotNull(path, "path"); final String pathSha1 = sha1(path); final Query query = pm().newNamedQuery(getEntityClass(), "getFileInProgressMarker_fromRepositoryId_toRepositoryId_pathSha1"); try { final Map<String, Object> m = new HashMap<String, Object>(3); m.put("fromRepositoryId", fromRepositoryId.toString()); m.put("toRepositoryId", toRepositoryId.toString()); m.put("pathSha1", pathSha1); final FileInProgressMarker result = (FileInProgressMarker) query.executeWithMap(m); return result; } finally { query.closeAll(); } } public void deleteFileInProgressMarkers(final UUID fromRepositoryId, final UUID toRepositoryId) { final Collection<FileInProgressMarker> fileInProgressMarkers = getFileInProgressMarkers(fromRepositoryId, toRepositoryId); if (fileInProgressMarkers.size() > 0) { logger.info("deleteFileInProgressMarkers: deleting {} FileInProgressMarker(s) from={}, to={}", fileInProgressMarkers.size(), fromRepositoryId, toRepositoryId); deletePersistentAll(fileInProgressMarkers); } } static UUID convertToUuid(final String repositoryId) { return repositoryId == null ? null : UUID.fromString(repositoryId); } static String convertToString(final UUID repositoryId) { return repositoryId == null ? null : repositoryId.toString(); } }