mirror of
https://github.com/sismics/docs.git
synced 2024-11-22 14:07:55 +01:00
#65: Publisher, format, source metadata
This commit is contained in:
parent
ed51b77b0e
commit
359f5b5f49
@ -89,7 +89,7 @@ public class DocumentDao {
|
||||
*/
|
||||
public DocumentDto getDocument(String id) {
|
||||
EntityManager em = ThreadLocalContext.get().getEntityManager();
|
||||
StringBuilder sb = new StringBuilder("select d.DOC_ID_C, d.DOC_TITLE_C, d.DOC_DESCRIPTION_C, d.DOC_SUBJECT_C, d.DOC_IDENTIFIER_C, d.DOC_CREATEDATE_D, d.DOC_LANGUAGE_C, ");
|
||||
StringBuilder sb = new StringBuilder("select d.DOC_ID_C, d.DOC_TITLE_C, d.DOC_DESCRIPTION_C, d.DOC_SUBJECT_C, d.DOC_IDENTIFIER_C, d.DOC_PUBLISHER_C, d.DOC_FORMAT_C, d.DOC_SOURCE_C, d.DOC_TYPE_C, d.DOC_COVERAGE_C, d.DOC_RIGHTS_C, d.DOC_CREATEDATE_D, d.DOC_LANGUAGE_C, ");
|
||||
sb.append(" (select count(s.SHA_ID_C) from T_SHARE s, T_ACL ac where ac.ACL_SOURCEID_C = d.DOC_ID_C and ac.ACL_TARGETID_C = s.SHA_ID_C and ac.ACL_DELETEDATE_D is null and s.SHA_DELETEDATE_D is null), ");
|
||||
sb.append(" (select count(f.FIL_ID_C) from T_FILE f where f.FIL_DELETEDATE_D is null and f.FIL_IDDOC_C = d.DOC_ID_C), ");
|
||||
sb.append(" u.USE_USERNAME_C ");
|
||||
@ -111,6 +111,12 @@ public class DocumentDao {
|
||||
documentDto.setDescription((String) o[i++]);
|
||||
documentDto.setSubject((String) o[i++]);
|
||||
documentDto.setIdentifier((String) o[i++]);
|
||||
documentDto.setPublisher((String) o[i++]);
|
||||
documentDto.setFormat((String) o[i++]);
|
||||
documentDto.setSource((String) o[i++]);
|
||||
documentDto.setType((String) o[i++]);
|
||||
documentDto.setCoverage((String) o[i++]);
|
||||
documentDto.setRights((String) o[i++]);
|
||||
documentDto.setCreateTimestamp(((Timestamp) o[i++]).getTime());
|
||||
documentDto.setLanguage((String) o[i++]);
|
||||
documentDto.setShared(((Number) o[i++]).intValue() > 0);
|
||||
@ -300,6 +306,12 @@ public class DocumentDao {
|
||||
documentFromDb.setDescription(document.getDescription());
|
||||
documentFromDb.setSubject(document.getSubject());
|
||||
documentFromDb.setIdentifier(document.getIdentifier());
|
||||
documentFromDb.setPublisher(document.getPublisher());
|
||||
documentFromDb.setFormat(document.getFormat());
|
||||
documentFromDb.setSource(document.getSource());
|
||||
documentFromDb.setType(document.getType());
|
||||
documentFromDb.setCoverage(document.getCoverage());
|
||||
documentFromDb.setRights(document.getRights());
|
||||
documentFromDb.setCreateDate(document.getCreateDate());
|
||||
documentFromDb.setLanguage(document.getLanguage());
|
||||
|
||||
|
@ -34,6 +34,36 @@ public class DocumentDto {
|
||||
*/
|
||||
private String identifier;
|
||||
|
||||
/**
|
||||
* Publisher.
|
||||
*/
|
||||
private String publisher;
|
||||
|
||||
/**
|
||||
* Format.
|
||||
*/
|
||||
private String format;
|
||||
|
||||
/**
|
||||
* Source.
|
||||
*/
|
||||
private String source;
|
||||
|
||||
/**
|
||||
* Type.
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* Coverage.
|
||||
*/
|
||||
private String coverage;
|
||||
|
||||
/**
|
||||
* Rights.
|
||||
*/
|
||||
private String rights;
|
||||
|
||||
/**
|
||||
* Language.
|
||||
*/
|
||||
@ -99,6 +129,54 @@ public class DocumentDto {
|
||||
this.identifier = identifier;
|
||||
}
|
||||
|
||||
public String getPublisher() {
|
||||
return publisher;
|
||||
}
|
||||
|
||||
public void setPublisher(String publisher) {
|
||||
this.publisher = publisher;
|
||||
}
|
||||
|
||||
public String getFormat() {
|
||||
return format;
|
||||
}
|
||||
|
||||
public void setFormat(String format) {
|
||||
this.format = format;
|
||||
}
|
||||
|
||||
public String getSource() {
|
||||
return source;
|
||||
}
|
||||
|
||||
public void setSource(String source) {
|
||||
this.source = source;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getCoverage() {
|
||||
return coverage;
|
||||
}
|
||||
|
||||
public void setCoverage(String coverage) {
|
||||
this.coverage = coverage;
|
||||
}
|
||||
|
||||
public String getRights() {
|
||||
return rights;
|
||||
}
|
||||
|
||||
public void setRights(String rights) {
|
||||
this.rights = rights;
|
||||
}
|
||||
|
||||
public Long getCreateTimestamp() {
|
||||
return createTimestamp;
|
||||
}
|
||||
|
@ -161,6 +161,12 @@ public class LuceneDao {
|
||||
query.add(qpHelper.parse(searchQuery, "description"), Occur.SHOULD);
|
||||
query.add(qpHelper.parse(searchQuery, "subject"), Occur.SHOULD);
|
||||
query.add(qpHelper.parse(searchQuery, "identifier"), Occur.SHOULD);
|
||||
query.add(qpHelper.parse(searchQuery, "publisher"), Occur.SHOULD);
|
||||
query.add(qpHelper.parse(searchQuery, "format"), Occur.SHOULD);
|
||||
query.add(qpHelper.parse(searchQuery, "source"), Occur.SHOULD);
|
||||
query.add(qpHelper.parse(searchQuery, "type"), Occur.SHOULD);
|
||||
query.add(qpHelper.parse(searchQuery, "coverage"), Occur.SHOULD);
|
||||
query.add(qpHelper.parse(searchQuery, "rights"), Occur.SHOULD);
|
||||
query.add(qpHelper.parse(fullSearchQuery, "content"), Occur.SHOULD);
|
||||
|
||||
// Search
|
||||
@ -210,6 +216,24 @@ public class LuceneDao {
|
||||
if (document.getIdentifier() != null) {
|
||||
luceneDocument.add(new TextField("identifier", document.getIdentifier(), Field.Store.NO));
|
||||
}
|
||||
if (document.getPublisher() != null) {
|
||||
luceneDocument.add(new TextField("publisher", document.getPublisher(), Field.Store.NO));
|
||||
}
|
||||
if (document.getFormat() != null) {
|
||||
luceneDocument.add(new TextField("format", document.getFormat(), Field.Store.NO));
|
||||
}
|
||||
if (document.getSource() != null) {
|
||||
luceneDocument.add(new TextField("source", document.getSource(), Field.Store.NO));
|
||||
}
|
||||
if (document.getType() != null) {
|
||||
luceneDocument.add(new TextField("type", document.getType(), Field.Store.NO));
|
||||
}
|
||||
if (document.getCoverage() != null) {
|
||||
luceneDocument.add(new TextField("coverage", document.getCoverage(), Field.Store.NO));
|
||||
}
|
||||
if (document.getRights() != null) {
|
||||
luceneDocument.add(new TextField("rights", document.getRights(), Field.Store.NO));
|
||||
}
|
||||
|
||||
return luceneDocument;
|
||||
}
|
||||
|
@ -60,6 +60,42 @@ public class Document implements Loggable {
|
||||
@Column(name = "DOC_IDENTIFIER_C", length = 500)
|
||||
private String identifier;
|
||||
|
||||
/**
|
||||
* Publisher.
|
||||
*/
|
||||
@Column(name = "DOC_PUBLISHER_C", length = 500)
|
||||
private String publisher;
|
||||
|
||||
/**
|
||||
* Format.
|
||||
*/
|
||||
@Column(name = "DOC_FORMAT_C", length = 500)
|
||||
private String format;
|
||||
|
||||
/**
|
||||
* Source.
|
||||
*/
|
||||
@Column(name = "DOC_SOURCE_C", length = 500)
|
||||
private String source;
|
||||
|
||||
/**
|
||||
* Type.
|
||||
*/
|
||||
@Column(name = "DOC_TYPE_C", length = 100)
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* Coverage.
|
||||
*/
|
||||
@Column(name = "DOC_COVERAGE_C", length = 100)
|
||||
private String coverage;
|
||||
|
||||
/**
|
||||
* Rights.
|
||||
*/
|
||||
@Column(name = "DOC_RIGHTS_C", length = 100)
|
||||
private String rights;
|
||||
|
||||
/**
|
||||
* Creation date.
|
||||
*/
|
||||
@ -128,6 +164,54 @@ public class Document implements Loggable {
|
||||
this.identifier = identifier;
|
||||
}
|
||||
|
||||
public String getPublisher() {
|
||||
return publisher;
|
||||
}
|
||||
|
||||
public void setPublisher(String publisher) {
|
||||
this.publisher = publisher;
|
||||
}
|
||||
|
||||
public String getFormat() {
|
||||
return format;
|
||||
}
|
||||
|
||||
public void setFormat(String format) {
|
||||
this.format = format;
|
||||
}
|
||||
|
||||
public String getSource() {
|
||||
return source;
|
||||
}
|
||||
|
||||
public void setSource(String source) {
|
||||
this.source = source;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getCoverage() {
|
||||
return coverage;
|
||||
}
|
||||
|
||||
public void setCoverage(String coverage) {
|
||||
this.coverage = coverage;
|
||||
}
|
||||
|
||||
public String getRights() {
|
||||
return rights;
|
||||
}
|
||||
|
||||
public void setRights(String rights) {
|
||||
this.rights = rights;
|
||||
}
|
||||
|
||||
public Date getCreateDate() {
|
||||
return createDate;
|
||||
}
|
||||
|
@ -1,18 +1,24 @@
|
||||
alter table T_DOCUMENT add column DOC_SUBJECT_C varchar(500);
|
||||
alter table T_DOCUMENT add column DOC_IDENTIFIER_C varchar(500);
|
||||
alter table T_DOCUMENT add column DOC_PUBLISHER_C varchar(500);
|
||||
alter table T_DOCUMENT add column DOC_FORMAT_C varchar(500);
|
||||
alter table T_DOCUMENT add column DOC_SOURCE_C varchar(500);
|
||||
alter table T_DOCUMENT add column DOC_TYPE_C varchar(100);
|
||||
alter table T_DOCUMENT add column DOC_COVERAGE_C varchar(100);
|
||||
alter table T_DOCUMENT add column DOC_RIGHTS_C varchar(100);
|
||||
create memory table T_VOCABULARY ( VOC_ID_C varchar(36) not null, VOC_NAME_C varchar(50) not null, VOC_VALUE_C varchar(100) not null, VOC_ORDER_N int not null, primary key (VOC_ID_C) );
|
||||
|
||||
insert into T_VOCABULARY(VOC_ID_C, VOC_NAME_C, VOC_VALUE_C, VOC_ORDER_N) values('type-collection', 'type', 'Collection', 0);
|
||||
insert into T_VOCABULARY(VOC_ID_C, VOC_NAME_C, VOC_VALUE_C, VOC_ORDER_N) values('type-dataset', 'type', 'Dataset', 1);
|
||||
insert into T_VOCABULARY(VOC_ID_C, VOC_NAME_C, VOC_VALUE_C, VOC_ORDER_N) values('type-event', 'type', 'Event', 2);
|
||||
insert into T_VOCABULARY(VOC_ID_C, VOC_NAME_C, VOC_VALUE_C, VOC_ORDER_N) values('type-image', 'type', 'Image', 3);
|
||||
insert into T_VOCABULARY(VOC_ID_C, VOC_NAME_C, VOC_VALUE_C, VOC_ORDER_N) values('type-interactive_resource', 'type', 'Interactive Resource', 4);
|
||||
insert into T_VOCABULARY(VOC_ID_C, VOC_NAME_C, VOC_VALUE_C, VOC_ORDER_N) values('type-moving_image', 'type', 'Moving Image', 5);
|
||||
insert into T_VOCABULARY(VOC_ID_C, VOC_NAME_C, VOC_VALUE_C, VOC_ORDER_N) values('type-physical_object', 'type', 'Physical Object', 6);
|
||||
insert into T_VOCABULARY(VOC_ID_C, VOC_NAME_C, VOC_VALUE_C, VOC_ORDER_N) values('type-interactive-resource', 'type', 'Interactive Resource', 4);
|
||||
insert into T_VOCABULARY(VOC_ID_C, VOC_NAME_C, VOC_VALUE_C, VOC_ORDER_N) values('type-moving-image', 'type', 'Moving Image', 5);
|
||||
insert into T_VOCABULARY(VOC_ID_C, VOC_NAME_C, VOC_VALUE_C, VOC_ORDER_N) values('type-physical-object', 'type', 'Physical Object', 6);
|
||||
insert into T_VOCABULARY(VOC_ID_C, VOC_NAME_C, VOC_VALUE_C, VOC_ORDER_N) values('type-service', 'type', 'Service', 7);
|
||||
insert into T_VOCABULARY(VOC_ID_C, VOC_NAME_C, VOC_VALUE_C, VOC_ORDER_N) values('type-software', 'type', 'Software', 8);
|
||||
insert into T_VOCABULARY(VOC_ID_C, VOC_NAME_C, VOC_VALUE_C, VOC_ORDER_N) values('type-sound', 'type', 'Sound', 9);
|
||||
insert into T_VOCABULARY(VOC_ID_C, VOC_NAME_C, VOC_VALUE_C, VOC_ORDER_N) values('type-still_image', 'type', 'Still Image', 10);
|
||||
insert into T_VOCABULARY(VOC_ID_C, VOC_NAME_C, VOC_VALUE_C, VOC_ORDER_N) values('type-still-image', 'type', 'Still Image', 10);
|
||||
insert into T_VOCABULARY(VOC_ID_C, VOC_NAME_C, VOC_VALUE_C, VOC_ORDER_N) values('type-text', 'type', 'Text', 11);
|
||||
|
||||
insert into T_VOCABULARY(VOC_ID_C, VOC_NAME_C, VOC_VALUE_C, VOC_ORDER_N) values('coverage-afg', 'coverage', 'Afghanistan', 0);
|
||||
|
@ -130,6 +130,12 @@ public class DocumentResource extends BaseResource {
|
||||
// Below is specific to GET /document/id
|
||||
document.add("subject", JsonUtil.nullable(documentDto.getSubject()));
|
||||
document.add("identifier", JsonUtil.nullable(documentDto.getIdentifier()));
|
||||
document.add("publisher", JsonUtil.nullable(documentDto.getPublisher()));
|
||||
document.add("format", JsonUtil.nullable(documentDto.getFormat()));
|
||||
document.add("source", JsonUtil.nullable(documentDto.getSource()));
|
||||
document.add("type", JsonUtil.nullable(documentDto.getType()));
|
||||
document.add("coverage", JsonUtil.nullable(documentDto.getCoverage()));
|
||||
document.add("rights", JsonUtil.nullable(documentDto.getRights()));
|
||||
document.add("creator", documentDto.getCreator());
|
||||
|
||||
// Add ACL
|
||||
@ -393,6 +399,12 @@ public class DocumentResource extends BaseResource {
|
||||
@FormParam("description") String description,
|
||||
@FormParam("subject") String subject,
|
||||
@FormParam("identifier") String identifier,
|
||||
@FormParam("publisher") String publisher,
|
||||
@FormParam("format") String format,
|
||||
@FormParam("source") String source,
|
||||
@FormParam("type") String type,
|
||||
@FormParam("coverage") String coverage,
|
||||
@FormParam("rights") String rights,
|
||||
@FormParam("tags") List<String> tagList,
|
||||
@FormParam("language") String language,
|
||||
@FormParam("create_date") String createDateStr) {
|
||||
@ -405,7 +417,13 @@ public class DocumentResource extends BaseResource {
|
||||
language = ValidationUtil.validateLength(language, "language", 3, 3, false);
|
||||
description = ValidationUtil.validateLength(description, "description", 0, 4000, true);
|
||||
subject = ValidationUtil.validateLength(subject, "subject", 0, 500, true);
|
||||
identifier = ValidationUtil.validateLength(identifier, "description", 0, 500, true);
|
||||
identifier = ValidationUtil.validateLength(identifier, "identifier", 0, 500, true);
|
||||
publisher = ValidationUtil.validateLength(publisher, "publisher", 0, 500, true);
|
||||
format = ValidationUtil.validateLength(format, "format", 0, 500, true);
|
||||
source = ValidationUtil.validateLength(source, "source", 0, 500, true);
|
||||
type = ValidationUtil.validateLength(type, "type", 0, 100, true);
|
||||
coverage = ValidationUtil.validateLength(coverage, "coverage", 0, 100, true);
|
||||
rights = ValidationUtil.validateLength(rights, "rights", 0, 100, true);
|
||||
Date createDate = ValidationUtil.validateDate(createDateStr, "create_date", true);
|
||||
if (!Constants.SUPPORTED_LANGUAGES.contains(language)) {
|
||||
throw new ClientException("ValidationError", MessageFormat.format("{0} is not a supported language", language));
|
||||
@ -419,6 +437,12 @@ public class DocumentResource extends BaseResource {
|
||||
document.setDescription(description);
|
||||
document.setSubject(subject);
|
||||
document.setIdentifier(identifier);
|
||||
document.setPublisher(publisher);
|
||||
document.setFormat(format);
|
||||
document.setSource(source);
|
||||
document.setType(type);
|
||||
document.setCoverage(coverage);
|
||||
document.setRights(rights);
|
||||
document.setLanguage(language);
|
||||
if (createDate == null) {
|
||||
document.setCreateDate(new Date());
|
||||
@ -470,6 +494,12 @@ public class DocumentResource extends BaseResource {
|
||||
@FormParam("description") String description,
|
||||
@FormParam("subject") String subject,
|
||||
@FormParam("identifier") String identifier,
|
||||
@FormParam("publisher") String publisher,
|
||||
@FormParam("format") String format,
|
||||
@FormParam("source") String source,
|
||||
@FormParam("type") String type,
|
||||
@FormParam("coverage") String coverage,
|
||||
@FormParam("rights") String rights,
|
||||
@FormParam("tags") List<String> tagList,
|
||||
@FormParam("language") String language,
|
||||
@FormParam("create_date") String createDateStr) {
|
||||
@ -483,6 +513,12 @@ public class DocumentResource extends BaseResource {
|
||||
description = ValidationUtil.validateLength(description, "description", 0, 4000, true);
|
||||
subject = ValidationUtil.validateLength(subject, "subject", 0, 500, true);
|
||||
identifier = ValidationUtil.validateLength(identifier, "identifier", 0, 500, true);
|
||||
publisher = ValidationUtil.validateLength(publisher, "publisher", 0, 500, true);
|
||||
format = ValidationUtil.validateLength(format, "format", 0, 500, true);
|
||||
source = ValidationUtil.validateLength(source, "source", 0, 500, true);
|
||||
type = ValidationUtil.validateLength(type, "type", 0, 100, true);
|
||||
coverage = ValidationUtil.validateLength(coverage, "coverage", 0, 100, true);
|
||||
rights = ValidationUtil.validateLength(rights, "rights", 0, 100, true);
|
||||
Date createDate = ValidationUtil.validateDate(createDateStr, "create_date", true);
|
||||
if (language != null && !Constants.SUPPORTED_LANGUAGES.contains(language)) {
|
||||
throw new ClientException("ValidationError", MessageFormat.format("{0} is not a supported language", language));
|
||||
@ -509,6 +545,24 @@ public class DocumentResource extends BaseResource {
|
||||
if (!StringUtils.isEmpty(identifier)) {
|
||||
document.setIdentifier(identifier);
|
||||
}
|
||||
if (!StringUtils.isEmpty(publisher)) {
|
||||
document.setPublisher(publisher);
|
||||
}
|
||||
if (!StringUtils.isEmpty(format)) {
|
||||
document.setFormat(format);
|
||||
}
|
||||
if (!StringUtils.isEmpty(source)) {
|
||||
document.setSource(source);
|
||||
}
|
||||
if (!StringUtils.isEmpty(type)) {
|
||||
document.setType(type);
|
||||
}
|
||||
if (!StringUtils.isEmpty(coverage)) {
|
||||
document.setCoverage(coverage);
|
||||
}
|
||||
if (!StringUtils.isEmpty(rights)) {
|
||||
document.setRights(rights);
|
||||
}
|
||||
if (createDate != null) {
|
||||
document.setCreateDate(createDate);
|
||||
}
|
||||
|
@ -42,6 +42,7 @@ public class VocabularyResource extends BaseResource {
|
||||
for (Vocabulary vocabulary : vocabularyList) {
|
||||
entries.add(Json.createObjectBuilder()
|
||||
.add("id", vocabulary.getId())
|
||||
.add("name", vocabulary.getName())
|
||||
.add("value", vocabulary.getValue())
|
||||
.add("order", vocabulary.getOrder()));
|
||||
}
|
||||
@ -113,7 +114,9 @@ public class VocabularyResource extends BaseResource {
|
||||
|
||||
// Validate input data
|
||||
name = ValidationUtil.validateLength(name, "name", 1, 50, true);
|
||||
if (name != null) {
|
||||
ValidationUtil.validateRegex(name, "name", "[a-z0-9\\-]+");
|
||||
}
|
||||
value = ValidationUtil.validateLength(value, "value", 1, 100, true);
|
||||
Integer order = null;
|
||||
if (orderStr != null) {
|
||||
|
@ -2,11 +2,13 @@
|
||||
|
||||
<div ng-show="document || !isEdit()">
|
||||
<form name="documentForm" class="form-horizontal">
|
||||
<fieldset>
|
||||
<legend>Primary metadata</legend>
|
||||
<div class="form-group" ng-class="{ 'has-error': !documentForm.title.$valid }">
|
||||
<label class="col-sm-2 control-label" for="inputTitle">Title</label>
|
||||
<div class="col-sm-10">
|
||||
<input required ng-maxlength="100" class="form-control" type="text" id="inputTitle"
|
||||
placeholder="Title" name="title" ng-model="document.title" autocomplete="off"
|
||||
placeholder="The nature or genre of the resource" name="title" ng-model="document.title" autocomplete="off"
|
||||
typeahead="document for document in getTitleTypeahead($viewValue) | filter: $viewValue"
|
||||
typeahead-wait-ms="200" ng-disabled="fileIsUploading" />
|
||||
</div>
|
||||
@ -14,24 +16,10 @@
|
||||
<div class="form-group" ng-class="{ 'has-error': !documentForm.description.$valid }">
|
||||
<label class="col-sm-2 control-label" for="inputDescription">Description</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea ng-maxlength="4000" class="form-control" rows="5" id="inputDescription"
|
||||
<textarea ng-maxlength="4000" class="form-control" rows="5" id="inputDescription" placeholder="An account of the resource"
|
||||
name="description" ng-model="document.description" ng-disabled="fileIsUploading"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" ng-class="{ 'has-error': !documentForm.subject.$valid }">
|
||||
<label class="col-sm-2 control-label" for="inputSubject">Subject</label>
|
||||
<div class="col-sm-10">
|
||||
<input ng-maxlength="500" class="form-control" type="text" id="inputSubject"
|
||||
placeholder="Subject" name="subject" ng-model="document.subject" ng-disabled="fileIsUploading" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" ng-class="{ 'has-error': !documentForm.identifier.$valid }">
|
||||
<label class="col-sm-2 control-label" for="inputIdentifier">Identifier</label>
|
||||
<div class="col-sm-10">
|
||||
<input ng-maxlength="500" class="form-control" type="text" id="inputIdentifier"
|
||||
placeholder="Identifier" name="identifier" ng-model="document.identifier" ng-disabled="fileIsUploading" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="inputCreateDate">Creation date</label>
|
||||
<div class="col-sm-10">
|
||||
@ -66,6 +54,47 @@
|
||||
<select-tag tags="document.tags" ref="inputTags" ng-disabled="fileIsUploading"></select-tag>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>Additional metadata</legend>
|
||||
<div class="form-group" ng-class="{ 'has-error': !documentForm.subject.$valid }">
|
||||
<label class="col-sm-2 control-label" for="inputSubject">Subject</label>
|
||||
<div class="col-sm-10">
|
||||
<input ng-maxlength="500" class="form-control" type="text" id="inputSubject"
|
||||
placeholder="The topic of the resource" name="subject" ng-model="document.subject" ng-disabled="fileIsUploading" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" ng-class="{ 'has-error': !documentForm.identifier.$valid }">
|
||||
<label class="col-sm-2 control-label" for="inputIdentifier">Identifier</label>
|
||||
<div class="col-sm-10">
|
||||
<input ng-maxlength="500" class="form-control" type="text" id="inputIdentifier"
|
||||
placeholder="An unambiguous reference to the resource within a given context" name="identifier" ng-model="document.identifier" ng-disabled="fileIsUploading" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" ng-class="{ 'has-error': !documentForm.publisher.$valid }">
|
||||
<label class="col-sm-2 control-label" for="inputPublisher">Publisher</label>
|
||||
<div class="col-sm-10">
|
||||
<input ng-maxlength="500" class="form-control" type="text" id="inputPublisher"
|
||||
placeholder="An entity responsible for making the resource available" name="publisher" ng-model="document.publisher" ng-disabled="fileIsUploading" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" ng-class="{ 'has-error': !documentForm.format.$valid }">
|
||||
<label class="col-sm-2 control-label" for="inputFormat">Format</label>
|
||||
<div class="col-sm-10">
|
||||
<input ng-maxlength="500" class="form-control" type="text" id="inputFormat"
|
||||
placeholder="The file format, physical medium, or dimensions of the resource" name="format" ng-model="document.format" ng-disabled="fileIsUploading" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" ng-class="{ 'has-error': !documentForm.source.$valid }">
|
||||
<label class="col-sm-2 control-label" for="inputSource">Source</label>
|
||||
<div class="col-sm-10">
|
||||
<input ng-maxlength="500" class="form-control" type="text" id="inputSource"
|
||||
placeholder="A related resource from which the described resource is derived" name="source" ng-model="document.source" ng-disabled="fileIsUploading" />
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<button type="submit" class="btn btn-primary" ng-disabled="!documentForm.$valid || fileIsUploading" ng-click="edit()">{{ isEdit() ? 'Edit' : 'Add' }}</button>
|
||||
|
@ -4,6 +4,12 @@
|
||||
<dd ng-if="document.subject">{{ document.subject }}</dd>
|
||||
<dt ng-if="document.identifier">Identifier</dt>
|
||||
<dd ng-if="document.identifier">{{ document.identifier }}</dd>
|
||||
<dt ng-if="document.publisher">Publisher</dt>
|
||||
<dd ng-if="document.publisher">{{ document.publisher }}</dd>
|
||||
<dt ng-if="document.format">Format</dt>
|
||||
<dd ng-if="document.format">{{ document.format }}</dd>
|
||||
<dt ng-if="document.source">Source</dt>
|
||||
<dd ng-if="document.source">{{ document.source }}</dd>
|
||||
</dl>
|
||||
|
||||
<div ng-file-drop drag-over-class="bg-success" ng-multiple="true" allow-dir="false" ng-model="dropFiles"
|
||||
|
@ -64,6 +64,12 @@ public class TestDocumentResource extends BaseJerseyTest {
|
||||
.param("description", "My super description for document 1")
|
||||
.param("subject", "Subject document 1")
|
||||
.param("identifier", "Identifier document 1")
|
||||
.param("publisher", "Publisher document 1")
|
||||
.param("format", "Format document 1")
|
||||
.param("source", "Source document 1")
|
||||
.param("type", "Software")
|
||||
.param("coverage", "Greenland")
|
||||
.param("rights", "Public Domain")
|
||||
.param("tags", tag1Id)
|
||||
.param("language", "eng")
|
||||
.param("create_date", Long.toString(create1Date))), JsonObject.class);
|
||||
@ -164,6 +170,12 @@ public class TestDocumentResource extends BaseJerseyTest {
|
||||
Assert.assertEquals(1, searchDocuments("super description", document1Token));
|
||||
Assert.assertEquals(1, searchDocuments("subject", document1Token));
|
||||
Assert.assertEquals(1, searchDocuments("identifier", document1Token));
|
||||
Assert.assertEquals(1, searchDocuments("publisher", document1Token));
|
||||
Assert.assertEquals(1, searchDocuments("format", document1Token));
|
||||
Assert.assertEquals(1, searchDocuments("source", document1Token));
|
||||
Assert.assertEquals(1, searchDocuments("software", document1Token));
|
||||
Assert.assertEquals(1, searchDocuments("greenland", document1Token));
|
||||
Assert.assertEquals(1, searchDocuments("public domain", document1Token));
|
||||
Assert.assertEquals(1, searchDocuments("at:" + DateTimeFormat.forPattern("yyyy").print(new Date().getTime()), document1Token));
|
||||
Assert.assertEquals(1, searchDocuments("at:" + DateTimeFormat.forPattern("yyyy-MM").print(new Date().getTime()), document1Token));
|
||||
Assert.assertEquals(1, searchDocuments("at:" + DateTimeFormat.forPattern("yyyy-MM-dd").print(new Date().getTime()), document1Token));
|
||||
@ -196,6 +208,12 @@ public class TestDocumentResource extends BaseJerseyTest {
|
||||
Assert.assertEquals("My super description for document 1", json.getString("description"));
|
||||
Assert.assertEquals("Subject document 1", json.getString("subject"));
|
||||
Assert.assertEquals("Identifier document 1", json.getString("identifier"));
|
||||
Assert.assertEquals("Publisher document 1", json.getString("publisher"));
|
||||
Assert.assertEquals("Format document 1", json.getString("format"));
|
||||
Assert.assertEquals("Source document 1", json.getString("source"));
|
||||
Assert.assertEquals("Software", json.getString("type"));
|
||||
Assert.assertEquals("Greenland", json.getString("coverage"));
|
||||
Assert.assertEquals("Public Domain", json.getString("rights"));
|
||||
Assert.assertEquals("eng", json.getString("language"));
|
||||
Assert.assertEquals(create1Date, json.getJsonNumber("create_date").longValue());
|
||||
tags = json.getJsonArray("tags");
|
||||
@ -223,6 +241,14 @@ public class TestDocumentResource extends BaseJerseyTest {
|
||||
.post(Entity.form(new Form()
|
||||
.param("title", "My new super document 1")
|
||||
.param("description", "My new super description for document 1")
|
||||
.param("subject", "My new subject for document 1")
|
||||
.param("identifier", "My new identifier for document 1")
|
||||
.param("publisher", "My new publisher for document 1")
|
||||
.param("format", "My new format for document 1")
|
||||
.param("source", "My new source for document 1")
|
||||
.param("type", "Image")
|
||||
.param("coverage", "France")
|
||||
.param("rights", "All Rights Reserved")
|
||||
.param("tags", tag2Id)), JsonObject.class);
|
||||
Assert.assertEquals(document1Id, json.getString("id"));
|
||||
|
||||
@ -239,6 +265,14 @@ public class TestDocumentResource extends BaseJerseyTest {
|
||||
.get(JsonObject.class);
|
||||
Assert.assertTrue(json.getString("title").contains("new"));
|
||||
Assert.assertTrue(json.getString("description").contains("new"));
|
||||
Assert.assertTrue(json.getString("subject").contains("new"));
|
||||
Assert.assertTrue(json.getString("identifier").contains("new"));
|
||||
Assert.assertTrue(json.getString("publisher").contains("new"));
|
||||
Assert.assertTrue(json.getString("format").contains("new"));
|
||||
Assert.assertTrue(json.getString("source").contains("new"));
|
||||
Assert.assertEquals("Image", json.getString("type"));
|
||||
Assert.assertEquals("France", json.getString("coverage"));
|
||||
Assert.assertEquals("All Rights Reserved", json.getString("rights"));
|
||||
tags = json.getJsonArray("tags");
|
||||
Assert.assertEquals(1, tags.size());
|
||||
Assert.assertEquals(tag2Id, tags.getJsonObject(0).getString("id"));
|
||||
|
@ -38,10 +38,12 @@ public class TestVocabularyResource extends BaseJerseyTest {
|
||||
Assert.assertEquals(249, json.getJsonArray("entries").size());
|
||||
JsonObject entry = json.getJsonArray("entries").getJsonObject(0);
|
||||
Assert.assertEquals("coverage-afg", entry.getString("id"));
|
||||
Assert.assertEquals("coverage", entry.getString("name"));
|
||||
Assert.assertEquals("Afghanistan", entry.getString("value"));
|
||||
Assert.assertEquals(0, entry.getJsonNumber("order").intValue());
|
||||
entry = json.getJsonArray("entries").getJsonObject(248);
|
||||
Assert.assertEquals("coverage-zwe", entry.getString("id"));
|
||||
Assert.assertEquals("coverage", entry.getString("name"));
|
||||
Assert.assertEquals("Zimbabwe", entry.getString("value"));
|
||||
Assert.assertEquals(248, entry.getJsonNumber("order").intValue());
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user