mirror of
https://github.com/sismics/docs.git
synced 2025-12-13 01:36:18 +00:00
#300: custom metadata fields: API write
This commit is contained in:
@@ -614,6 +614,8 @@ public class DocumentResource extends BaseResource {
|
||||
* @apiParam {String} [rights] Rights
|
||||
* @apiParam {String[]} [tags] List of tags ID
|
||||
* @apiParam {String[]} [relations] List of related documents ID
|
||||
* @apiParam {String[]} [metadata_id] List of metadata ID
|
||||
* @apiParam {String[]} [metadata_value] List of metadata values
|
||||
* @apiParam {String} language Language
|
||||
* @apiParam {Number} [create_date] Create date (timestamp)
|
||||
* @apiSuccess {String} id Document ID
|
||||
@@ -634,6 +636,8 @@ public class DocumentResource extends BaseResource {
|
||||
* @param rights Rights
|
||||
* @param tagList Tags
|
||||
* @param relationList Relations
|
||||
* @param metadataIdList Metadata ID list
|
||||
* @param metadataValueList Metadata value list
|
||||
* @param language Language
|
||||
* @param createDateStr Creation date
|
||||
* @return Response
|
||||
@@ -652,6 +656,8 @@ public class DocumentResource extends BaseResource {
|
||||
@FormParam("rights") String rights,
|
||||
@FormParam("tags") List<String> tagList,
|
||||
@FormParam("relations") List<String> relationList,
|
||||
@FormParam("metadata_id") List<String> metadataIdList,
|
||||
@FormParam("metadata_value") List<String> metadataValueList,
|
||||
@FormParam("language") String language,
|
||||
@FormParam("create_date") String createDateStr) {
|
||||
if (!authenticate()) {
|
||||
@@ -674,7 +680,7 @@ public class DocumentResource extends BaseResource {
|
||||
if (!Constants.SUPPORTED_LANGUAGES.contains(language)) {
|
||||
throw new ClientException("ValidationError", MessageFormat.format("{0} is not a supported language", language));
|
||||
}
|
||||
|
||||
|
||||
// Create the document
|
||||
Document document = new Document();
|
||||
document.setUserId(principal.getId());
|
||||
@@ -704,6 +710,13 @@ public class DocumentResource extends BaseResource {
|
||||
// Update relations
|
||||
updateRelationList(document.getId(), relationList);
|
||||
|
||||
// Update custom metadata
|
||||
try {
|
||||
MetadataUtil.updateMetadata(document.getId(), metadataIdList, metadataValueList);
|
||||
} catch (Exception e) {
|
||||
throw new ClientException("ValidationError", e.getMessage());
|
||||
}
|
||||
|
||||
// Raise a document created event
|
||||
DocumentCreatedAsyncEvent documentCreatedAsyncEvent = new DocumentCreatedAsyncEvent();
|
||||
documentCreatedAsyncEvent.setUserId(principal.getId());
|
||||
@@ -734,6 +747,8 @@ public class DocumentResource extends BaseResource {
|
||||
* @apiParam {String} [rights] Rights
|
||||
* @apiParam {String[]} [tags] List of tags ID
|
||||
* @apiParam {String[]} [relations] List of related documents ID
|
||||
* @apiParam {String[]} [metadata_id] List of metadata ID
|
||||
* @apiParam {String[]} [metadata_value] List of metadata values
|
||||
* @apiParam {String} language Language
|
||||
* @apiParam {Number} [create_date] Create date (timestamp)
|
||||
* @apiSuccess {String} id Document ID
|
||||
@@ -763,6 +778,8 @@ public class DocumentResource extends BaseResource {
|
||||
@FormParam("rights") String rights,
|
||||
@FormParam("tags") List<String> tagList,
|
||||
@FormParam("relations") List<String> relationList,
|
||||
@FormParam("metadata_id") List<String> metadataIdList,
|
||||
@FormParam("metadata_value") List<String> metadataValueList,
|
||||
@FormParam("language") String language,
|
||||
@FormParam("create_date") String createDateStr) {
|
||||
if (!authenticate()) {
|
||||
@@ -824,7 +841,14 @@ public class DocumentResource extends BaseResource {
|
||||
|
||||
// Update relations
|
||||
updateRelationList(id, relationList);
|
||||
|
||||
|
||||
// Update custom metadata
|
||||
try {
|
||||
MetadataUtil.updateMetadata(document.getId(), metadataIdList, metadataValueList);
|
||||
} catch (Exception e) {
|
||||
throw new ClientException("ValidationError", e.getMessage());
|
||||
}
|
||||
|
||||
// Raise a document updated event
|
||||
DocumentUpdatedAsyncEvent documentUpdatedAsyncEvent = new DocumentUpdatedAsyncEvent();
|
||||
documentUpdatedAsyncEvent.setUserId(principal.getId());
|
||||
|
||||
@@ -819,4 +819,82 @@ public class TestDocumentResource extends BaseJerseyTest {
|
||||
Assert.assertEquals(279276L, files.getJsonObject(1).getJsonNumber("size").longValue());
|
||||
Assert.assertEquals("application/pdf", files.getJsonObject(1).getString("mimetype"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test custom metadata.
|
||||
*
|
||||
* @throws Exception e
|
||||
*/
|
||||
@Test
|
||||
public void testCustomMetadata() throws Exception {
|
||||
// Login admin
|
||||
String adminToken = clientUtil.login("admin", "admin", false);
|
||||
|
||||
// Login metadata1
|
||||
clientUtil.createUser("metadata1");
|
||||
String metadata1Token = clientUtil.login("metadata1");
|
||||
|
||||
// Create some metadata with admin
|
||||
JsonObject json = target().path("/metadata").request()
|
||||
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, adminToken)
|
||||
.put(Entity.form(new Form()
|
||||
.param("name", "str")
|
||||
.param("type", "STRING")), JsonObject.class);
|
||||
String metadataStrId = json.getString("id");
|
||||
json = target().path("/metadata").request()
|
||||
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, adminToken)
|
||||
.put(Entity.form(new Form()
|
||||
.param("name", "int")
|
||||
.param("type", "INTEGER")), JsonObject.class);
|
||||
String metadataIntId = json.getString("id");
|
||||
json = target().path("/metadata").request()
|
||||
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, adminToken)
|
||||
.put(Entity.form(new Form()
|
||||
.param("name", "float")
|
||||
.param("type", "FLOAT")), JsonObject.class);
|
||||
String metadataFloatId = json.getString("id");
|
||||
json = target().path("/metadata").request()
|
||||
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, adminToken)
|
||||
.put(Entity.form(new Form()
|
||||
.param("name", "date")
|
||||
.param("type", "DATE")), JsonObject.class);
|
||||
String metadataDateId = json.getString("id");
|
||||
json = target().path("/metadata").request()
|
||||
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, adminToken)
|
||||
.put(Entity.form(new Form()
|
||||
.param("name", "bool")
|
||||
.param("type", "BOOLEAN")), JsonObject.class);
|
||||
String metadataBoolId = json.getString("id");
|
||||
|
||||
// Create a document with metadata1
|
||||
json = target().path("/document").request()
|
||||
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, metadata1Token)
|
||||
.put(Entity.form(new Form()
|
||||
.param("title", "Metadata 1")
|
||||
.param("language", "eng")
|
||||
.param("metadata_id", metadataStrId)
|
||||
.param("metadata_id", metadataIntId)
|
||||
.param("metadata_id", metadataFloatId)
|
||||
.param("metadata_value", "my string")
|
||||
.param("metadata_value", "50")
|
||||
.param("metadata_value", "12.4")), JsonObject.class);
|
||||
String document1Id = json.getString("id");
|
||||
|
||||
// Update the document with metadata1
|
||||
target().path("/document/" + document1Id).request()
|
||||
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, metadata1Token)
|
||||
.post(Entity.form(new Form()
|
||||
.param("title", "Metadata 1")
|
||||
.param("language", "eng")
|
||||
.param("metadata_id", metadataStrId)
|
||||
.param("metadata_id", metadataIntId)
|
||||
.param("metadata_id", metadataFloatId)
|
||||
.param("metadata_id", metadataDateId)
|
||||
.param("metadata_id", metadataBoolId)
|
||||
.param("metadata_value", "my string 2")
|
||||
.param("metadata_value", "52")
|
||||
.param("metadata_value", "14.4")
|
||||
.param("metadata_value", Long.toString(new Date().getTime()))
|
||||
.param("metadata_value", "true")), JsonObject.class);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user