mirror of
https://github.com/sismics/docs.git
synced 2025-12-16 11:15:07 +00:00
#176: search by tags and all associated children
This commit is contained in:
@@ -17,10 +17,7 @@ import com.sismics.docs.core.event.FileDeletedAsyncEvent;
|
||||
import com.sismics.docs.core.model.jpa.Document;
|
||||
import com.sismics.docs.core.model.jpa.File;
|
||||
import com.sismics.docs.core.model.jpa.User;
|
||||
import com.sismics.docs.core.util.ConfigUtil;
|
||||
import com.sismics.docs.core.util.DocumentUtil;
|
||||
import com.sismics.docs.core.util.FileUtil;
|
||||
import com.sismics.docs.core.util.PdfUtil;
|
||||
import com.sismics.docs.core.util.*;
|
||||
import com.sismics.docs.core.util.jpa.PaginatedList;
|
||||
import com.sismics.docs.core.util.jpa.PaginatedLists;
|
||||
import com.sismics.docs.core.util.jpa.SortCriteria;
|
||||
@@ -424,6 +421,7 @@ public class DocumentResource extends BaseResource {
|
||||
}
|
||||
|
||||
TagDao tagDao = new TagDao();
|
||||
List<TagDto> allTagDtoList = tagDao.findByCriteria(new TagCriteria().setTargetIdList(getTargetIdList(null)), null);
|
||||
UserDao userDao = new UserDao();
|
||||
DateTimeParser[] parsers = {
|
||||
DateTimeFormat.forPattern("yyyy").getParser(),
|
||||
@@ -448,7 +446,7 @@ public class DocumentResource extends BaseResource {
|
||||
switch (params[0]) {
|
||||
case "tag":
|
||||
// New tag criteria
|
||||
List<TagDto> tagDtoList = tagDao.findByCriteria(new TagCriteria().setTargetIdList(getTargetIdList(null)).setNameLike(params[1]), null);
|
||||
List<TagDto> tagDtoList = TagUtil.findByName(params[1], allTagDtoList);
|
||||
if (documentCriteria.getTagIdList() == null) {
|
||||
documentCriteria.setTagIdList(new ArrayList<String>());
|
||||
}
|
||||
@@ -458,6 +456,10 @@ public class DocumentResource extends BaseResource {
|
||||
}
|
||||
for (TagDto tagDto : tagDtoList) {
|
||||
documentCriteria.getTagIdList().add(tagDto.getId());
|
||||
List<TagDto> childrenTagDtoList = TagUtil.findChildren(tagDto, allTagDtoList);
|
||||
for (TagDto childrenTagDto : childrenTagDtoList) {
|
||||
documentCriteria.getTagIdList().add(childrenTagDto.getId());
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "after":
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
package com.sismics.docs.rest;
|
||||
|
||||
import com.sismics.util.filter.TokenBasedSecurityFilter;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import javax.json.JsonArray;
|
||||
import javax.json.JsonObject;
|
||||
import javax.ws.rs.client.Entity;
|
||||
@@ -7,11 +11,6 @@ import javax.ws.rs.core.Form;
|
||||
import javax.ws.rs.core.Response;
|
||||
import javax.ws.rs.core.Response.Status;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sismics.util.filter.TokenBasedSecurityFilter;
|
||||
|
||||
/**
|
||||
* Test the tag resource.
|
||||
*
|
||||
@@ -66,12 +65,13 @@ public class TestTagResource extends BaseJerseyTest {
|
||||
Assert.assertEquals(Status.BAD_REQUEST, Status.fromStatusCode(response.getStatus()));
|
||||
|
||||
// Create a document
|
||||
target().path("/document").request()
|
||||
json = target().path("/document").request()
|
||||
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, tag1Token)
|
||||
.put(Entity.form(new Form()
|
||||
.param("title", "My super document 1")
|
||||
.param("tags", tag3Id)
|
||||
.param("language", "eng")), JsonObject.class);
|
||||
String document1Id = json.getString("id");
|
||||
|
||||
// Create a document
|
||||
json = target().path("/document").request()
|
||||
@@ -81,7 +81,28 @@ public class TestTagResource extends BaseJerseyTest {
|
||||
.param("tags", tag4Id)
|
||||
.param("language", "eng")), JsonObject.class);
|
||||
String document2Id = json.getString("id");
|
||||
|
||||
|
||||
// Search document by parent tag
|
||||
json = target().path("/document/list")
|
||||
.queryParam("search", "tag:Tag3")
|
||||
.queryParam("asc", "true")
|
||||
.queryParam("sort_column", "1")
|
||||
.request()
|
||||
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, tag1Token)
|
||||
.get(JsonObject.class);
|
||||
Assert.assertEquals(2, json.getJsonArray("documents").size());
|
||||
Assert.assertEquals(document1Id, json.getJsonArray("documents").getJsonObject(0).getString("id"));
|
||||
Assert.assertEquals(document2Id, json.getJsonArray("documents").getJsonObject(1).getString("id"));
|
||||
|
||||
// Search document by children tag
|
||||
json = target().path("/document/list")
|
||||
.queryParam("search", "tag:Tag4")
|
||||
.request()
|
||||
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, tag1Token)
|
||||
.get(JsonObject.class);
|
||||
Assert.assertEquals(1, json.getJsonArray("documents").size());
|
||||
Assert.assertEquals(document2Id, json.getJsonArray("documents").getJsonObject(0).getString("id"));
|
||||
|
||||
// Check tags on a document
|
||||
json = target().path("/document/" + document2Id).request()
|
||||
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, tag1Token)
|
||||
|
||||
Reference in New Issue
Block a user