List orphan files

This commit is contained in:
jendib 2015-03-06 21:23:50 +01:00
parent 2347483676
commit d0c259ead2
3 changed files with 29 additions and 11 deletions

View File

@ -125,6 +125,10 @@ public class FileDao {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public List<File> getByDocumentId(String documentId) { public List<File> getByDocumentId(String documentId) {
EntityManager em = ThreadLocalContext.get().getEntityManager(); EntityManager em = ThreadLocalContext.get().getEntityManager();
if (documentId == null) {
Query q = em.createQuery("select f from File f where f.documentId is null and f.deleteDate is null order by f.createDate asc");
return q.getResultList();
}
Query q = em.createQuery("select f from File f where f.documentId = :documentId and f.deleteDate is null order by f.order asc"); Query q = em.createQuery("select f from File f where f.documentId = :documentId and f.deleteDate is null order by f.order asc");
q.setParameter("documentId", documentId); q.setParameter("documentId", documentId);
return q.getResultList(); return q.getResultList();

View File

@ -286,9 +286,10 @@ public class FileResource extends BaseResource {
public Response list( public Response list(
@QueryParam("id") String documentId, @QueryParam("id") String documentId,
@QueryParam("share") String shareId) throws JSONException { @QueryParam("share") String shareId) throws JSONException {
authenticate(); boolean authenticated = authenticate();
// Check document visibility // Check document visibility
if (documentId != null) {
try { try {
DocumentDao documentDao = new DocumentDao(); DocumentDao documentDao = new DocumentDao();
Document document = documentDao.getDocument(documentId); Document document = documentDao.getDocument(documentId);
@ -299,6 +300,9 @@ public class FileResource extends BaseResource {
} catch (NoResultException e) { } catch (NoResultException e) {
throw new ClientException("DocumentNotFound", MessageFormat.format("Document not found: {0}", documentId)); throw new ClientException("DocumentNotFound", MessageFormat.format("Document not found: {0}", documentId));
} }
} else if (!authenticated) {
throw new ForbiddenClientException();
}
FileDao fileDao = new FileDao(); FileDao fileDao = new FileDao();
List<File> fileList = fileDao.getByDocumentId(documentId); List<File> fileList = fileDao.getByDocumentId(documentId);

View File

@ -218,6 +218,16 @@ public class TestFileResource extends BaseJerseyTest {
JSONObject json = response.getEntity(JSONObject.class); JSONObject json = response.getEntity(JSONObject.class);
String file1Id = json.getString("id"); String file1Id = json.getString("id");
// Get all orphan files
fileResource = resource().path("/file/list");
fileResource.addFilter(new CookieAuthenticationFilter(file2AuthenticationToken));
MultivaluedMapImpl getParams = new MultivaluedMapImpl();
response = fileResource.queryParams(getParams).get(ClientResponse.class);
json = response.getEntity(JSONObject.class);
Assert.assertEquals(Status.OK, Status.fromStatusCode(response.getStatus()));
JSONArray files = json.getJSONArray("files");
Assert.assertEquals(1, files.length());
// Create a document // Create a document
WebResource documentResource = resource().path("/document"); WebResource documentResource = resource().path("/document");
documentResource.addFilter(new CookieAuthenticationFilter(file2AuthenticationToken)); documentResource.addFilter(new CookieAuthenticationFilter(file2AuthenticationToken));
@ -242,12 +252,12 @@ public class TestFileResource extends BaseJerseyTest {
// Get all files from a document // Get all files from a document
fileResource = resource().path("/file/list"); fileResource = resource().path("/file/list");
fileResource.addFilter(new CookieAuthenticationFilter(file2AuthenticationToken)); fileResource.addFilter(new CookieAuthenticationFilter(file2AuthenticationToken));
MultivaluedMapImpl getParams = new MultivaluedMapImpl(); getParams = new MultivaluedMapImpl();
getParams.putSingle("id", document1Id); getParams.putSingle("id", document1Id);
response = fileResource.queryParams(getParams).get(ClientResponse.class); response = fileResource.queryParams(getParams).get(ClientResponse.class);
json = response.getEntity(JSONObject.class); json = response.getEntity(JSONObject.class);
Assert.assertEquals(Status.OK, Status.fromStatusCode(response.getStatus())); Assert.assertEquals(Status.OK, Status.fromStatusCode(response.getStatus()));
JSONArray files = json.getJSONArray("files"); files = json.getJSONArray("files");
Assert.assertEquals(1, files.length()); Assert.assertEquals(1, files.length());
} }
} }