diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/OpenAireRecord.java b/oaipmh-core/src/main/java/info/textgrid/middleware/OpenAireRecord.java index b9c81c0b894efca7cdcd2eea0bf15469b7f3bb76..ff5a34733a5da1079f45e9ef8ed9a3c3b494e500 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/OpenAireRecord.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OpenAireRecord.java @@ -49,8 +49,12 @@ import info.textgrid.middleware.oaipmh.Resource.ResourceType; import info.textgrid.middleware.oaipmh.Resource.RightsList; import info.textgrid.middleware.oaipmh.Resource.RightsList.Rights; +import info.textgrid.middleware.oaipmh.Resource.Sizes; +import info.textgrid.middleware.oaipmh.Resource.Subjects; +import info.textgrid.middleware.oaipmh.Resource.Subjects.Subject; import info.textgrid.middleware.oaipmh.Resource.Titles; import info.textgrid.middleware.oaipmh.Resource.Titles.Title; +import info.textgrid.middleware.oaipmh.TitleType; import info.textgrid.namespaces.middleware.tgcrud.common.TextGridMimetypes; //import info.textgrid.middleware.oaipmh.ResourceType; @@ -89,10 +93,13 @@ public class OpenAireRecord extends RecordDelivererAbstract { private String[] relatedIdentifierFields; private String[] workFields; private String[] geoLocationFields; + private String[] versionFields; + private String[] subjectFields; private String relationToWorkObject; private String identifierField; private String formatField; private String handle; + private String sizeField; //Contains the setting to get connection to the ElasticSearch index. The content will be given by a configuration file private OAI_ESClient oaiEsClient; @@ -132,8 +139,10 @@ public class OpenAireRecord extends RecordDelivererAbstract { this.setDescriptionFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.descriptionFields", prop)[0]); this.setRelationToWorkObject(prop.getProperty("oar.relationToWorkObject")); this.setRelatedIdentifierFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.relatedIdentifierFields", prop)[0]); - this.setGeoLocationFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.geoLocationFields", prop)[0]); - + this.setGeoLocationFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.geoLocationFields", prop)[0]); + this.setVersionFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.versionFields", prop)[0]); + this.setSubjectFields(OAIPMHUtilities.fetchArrayFromPropFile("oar.subjectFields", prop)[0]); + this.setSizeField(prop.getProperty("oar.sizeField")); } /** @@ -215,11 +224,48 @@ public class OpenAireRecord extends RecordDelivererAbstract { resource.setCreators(this.addCreators()); resource.setGeoLocations(this.addGeoLocation()); resource.setResourceType(this.addResourceType()); + resource.setVersion(this.addVersion()); + //resource.setSubjects(this.addSubjects()); //TODO what if subjects == null? + resource.setSizes(this.addSize()); return resource; } + private Sizes addSize() { + Sizes sizes = new Sizes(); + + sizes.getSize().add(OAIPMHUtilities.fieldLoader(jsonObj, sizeField) + " Bytes"); + return sizes; + } + + + private Subjects addSubjects() { + + Subjects subjects = new Subjects(); + + for(String subjectField : subjectFields) { + Subject subject = new Subject(); + subject.setValue(OAIPMHUtilities.fieldLoader(jsonObj, subjectField + ".value")); + subject.setSchemeURI(OAIPMHUtilities.fieldLoader(jsonObj, subjectField + ".id.type")); + subject.setSubjectScheme(OAIPMHUtilities.fieldLoader(jsonObj, subjectField + ".id.value")); + subjects.getSubject().add(subject); + } + if(subjects.getSubject().get(0)!=null) { + return subjects; + }else { + return null; + } + + } + private String addVersion() { + String version = ""; + for(String versionField : versionFields) { + version = OAIPMHUtilities.fieldLoader(jsonObj, versionField); + } + + return version; + } private ResourceType addResourceType() { ResourceType resourceType = new ResourceType(); @@ -428,6 +474,7 @@ public class OpenAireRecord extends RecordDelivererAbstract { Title tileInOpenAireRecord = new Title(); tileInOpenAireRecord.setValue(OAIPMHUtilities.fieldLoader(jsonObj, titleField)); + tileInOpenAireRecord.setTitleType(TitleType.OTHER); titles.getTitle().add(tileInOpenAireRecord); } @@ -614,6 +661,30 @@ public class OpenAireRecord extends RecordDelivererAbstract { this.handle = handle; } + public String[] getVersionFields() { + return versionFields; + } + + public void setVersionFields(String[] versionFields) { + this.versionFields = versionFields; + } + + public String[] getSubjectFields() { + return subjectFields; + } + + public void setSubjectFields(String[] subjectFields) { + this.subjectFields = subjectFields; + } + + public String getSizeField() { + return sizeField; + } + + public void setSizeField(String size) { + this.sizeField = size; + } + } \ No newline at end of file diff --git a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml index 30c70af26679137c3a829c00f7812af0d8f81f01..1147de30742b2a6c99b40ebb922d88762640d838 100644 --- a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml +++ b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml @@ -120,6 +120,9 @@ <property name="identifierField" value="${identifierField}" /> <property name="geoLocationFields" value="${oar.geoLocationFields}"/> <property name="handle" value="${oar.handle}"/> + <property name="versionFields" value="${oar.versionFields}"/> + <property name="subjectFields" value="${oar.subjectFields}"/> + <property name="sizeField" value="${oar.sizeField}"/> </bean> <bean id="AbstractRecordList" abstract="true" diff --git a/oaipmh-webapp/src/main/webapp/WEB-INF/oaipmh.textgrid.properties b/oaipmh-webapp/src/main/webapp/WEB-INF/oaipmh.textgrid.properties index 10e303d42bd0a7c52c8b702589d48cab082bfd30..3df7e16a4c0c79d72b19d28b61ed3decfda153d0 100644 --- a/oaipmh-webapp/src/main/webapp/WEB-INF/oaipmh.textgrid.properties +++ b/oaipmh-webapp/src/main/webapp/WEB-INF/oaipmh.textgrid.properties @@ -37,7 +37,7 @@ AdminMail = support@de.dariah.eu ## Field Settings ## ###################### -fields = edition.source.bibliographicCitation,edition.license,created,issued,format,identifier,dataContributor,textgridUri,project,project.id,relations.isDerivedFrom,title,pid.value,edition.isEditionOf,edition.agent.value,edition.license.licenseUri,edition.language,edition.source.bibliographicCitation.author.value,edition.source.bibliographicCitation.editor.value,edition.source.bibliographicCitation.editionTitle,edition.source.bibliographicCitation.placeOfPublication.value,edition.source.bibliographicCitation.publisher.value,edition.source.bibliographicCitation.editionNo,edition.source.bibliographicCitation.series,edition.source.bibliographicCitation.volume,edition.source.bibliographicCitation.issue,edition.source.bibliographicCitation.epage,edition.source.bibliographicCitation.spage,edition.source.bibliographicCitation.bibidentifier,work.abstract,work.genre,work.type,work.spatial.value,work.temporal.value,work.agent.value,work.subject.id.value,lastModified +fields = revision,edition.source.bibliographicCitation,edition.license,created,issued,format,identifier,dataContributor,textgridUri,project,project.id,relations.isDerivedFrom,title,pid.value,edition.isEditionOf,edition.agent.value,edition.license.licenseUri,edition.language,edition.source.bibliographicCitation.author.value,edition.source.bibliographicCitation.editor.value,edition.source.bibliographicCitation.editionTitle,edition.source.bibliographicCitation.placeOfPublication.value,edition.source.bibliographicCitation.publisher.value,edition.source.bibliographicCitation.editionNo,edition.source.bibliographicCitation.series,edition.source.bibliographicCitation.volume,edition.source.bibliographicCitation.issue,edition.source.bibliographicCitation.epage,edition.source.bibliographicCitation.spage,edition.source.bibliographicCitation.bibidentifier,work.abstract,work.genre,work.type,work.spatial.value,work.temporal.value,work.agent.value,work.subject.id.value,lastModified workFields = created,work.abstract,relations.isDerivedFrom,textgridUri,work.genre,title,work.type,work.spatial.value,work.temporal.spatial,work.agent.value,work.subject.id.value