diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDeliverer.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDeliverer.java deleted file mode 100644 index 5d934868e84a05b0b763fc2631dffce71bb81d5c..0000000000000000000000000000000000000000 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDeliverer.java +++ /dev/null @@ -1,498 +0,0 @@ -package info.textgrid.middleware; - -import java.text.ParseException; -import java.util.ArrayList; -import java.util.List; - -import javax.xml.datatype.DatatypeConfigurationException; - -import org.apache.commons.logging.LogFactory; -import org.elasticsearch.action.get.GetRequestBuilder; -import org.elasticsearch.action.get.GetResponse; - -import info.textgrid.middleware.oaipmh.GetRecordType; -import info.textgrid.middleware.oaipmh.HeaderType; -import info.textgrid.middleware.oaipmh.OaiDcType; -import info.textgrid.middleware.oaipmh.ObjectFactory; -import info.textgrid.middleware.oaipmh.RecordType; -import info.textgrid.middleware.oaipmh.RequestType; - -/** - * Query ElasticSearch index for the values mapped to dublinCore for a specific - * object and collect them into lists - * - * @author Maximilian Brodhun SUB - * @version 1.1 - * @since 17.02.2014 - * - */ - -public class RecordDeliverer { - - private String[] fields; - private String[] workFields; - private boolean textgrid; - private boolean dariah; - - private String formatField; - private String formatToFilter; - private String dateOfObjectCreation; - private String relationToFurtherMetadataObject; - private String repositoryObjectURIPrefix; - private String identifierField; - - /* - * Lists for the Dublin Core elements. Lists are needed since each DC fields - * is possible to occur several times - */ - - private List<String> contributors = new ArrayList<String>(); - private List<String> coverages = new ArrayList<String>(); - private List<String> creators = new ArrayList<String>(); - private List<String> dates = new ArrayList<String>(); - private List<String> descriptions = new ArrayList<String>(); - private List<String> formats = new ArrayList<String>(); - private List<String> identifiers = new ArrayList<String>(); - private List<String> languages = new ArrayList<String>(); - private List<String> publishers = new ArrayList<String>(); - private List<String> relations = new ArrayList<String>(); - private List<String> rights = new ArrayList<String>(); - private List<String> sources = new ArrayList<String>(); - private List<String> subjects = new ArrayList<String>(); - private List<String> titles = new ArrayList<String>(); - private List<String> types = new ArrayList<String>(); - - private String[] contributorList; - private String[] coverageList; - private String[] creatorList; - private String[] dateList; - private String[] descriptionList; - private String[] formatList; - private String[] identifierList; - private String[] languageList; - private String[] publisherList; - private String[] relationList; - private String[] relationForWorkList; - private String[] rightList; - private String[] sourceList; - private String[] subjectList; - private String[] titleList; - private String[] typeList; - - private static org.apache.commons.logging.Log log = LogFactory - .getLog(RecordDeliverer.class); - - private OAI_ESClient oaiEsClient; - - /** - * @param oaiEsClient - * @param workFields - * @param textgrid - * @param dariah - */ - public RecordDeliverer(OAI_ESClient oaiEsClient, String[] workFields, - boolean textgrid, boolean dariah) { - this.oaiEsClient = oaiEsClient; - this.workFields = workFields; - this.textgrid = textgrid; - this.dariah = dariah; - } - - /** - * Query ElasticSearch index for the values mapped to dublinCore for a - * specific object - * - * @param id - * identifier within the EalsticSearch index - * @return Get the GetRecord response for the request - */ - public GetRecordType getRecordById(String id) { - - ObjectFactory of = new ObjectFactory(); - OaiDcType odt = new OaiDcType(); - GetRecordType grt = new GetRecordType(); - RecordType record = new RecordType(); - String changedId = id; - DublinCoreBuilder dbc = new DublinCoreBuilder(odt, of); - - if (id.startsWith(this.repositoryObjectURIPrefix)) { - changedId = changedId.replace(this.repositoryObjectURIPrefix, ""); -// System.out.println("CHANGEDID: " + changedId); - } - - GetRequestBuilder recordById = OAI_ESClient.getOaiESClient() - .prepareGet().setIndex(OAI_ESClient.getEsIndex()) - .setType(OAI_ESClient.getEsType()).setFields(this.fields) - .setId(changedId); - - GetResponse tgObject = recordById.execute().actionGet(); - - if (tgObject.isExists()) { - - String identifier; - - if (this.dariah == true) { - - putContentIntoDCFieldLists(tgObject); - // FIXME MAX!!!! DO CONFIGURE!!!! - -// System.out.println(identifierField); - identifier = tgObject.getField(this.identifierField).getValue().toString(); -// System.out.println("IDENTIFIER: " + identifier); - String dateOfCreation = "NO_DATE_SET!"; - - if (tgObject.getField(this.dateOfObjectCreation) != null) { - try { - dateOfCreation = OAIPMHUtillities.convertDateFormat(tgObject.getField(this.dateOfObjectCreation).getValue().toString()).toXMLFormat(); - } catch (ParseException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (DatatypeConfigurationException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - setRecordHeader(dateOfCreation, identifier, record, dbc); - } - - if (this.textgrid == true && tgObject.getField(formatField).getValue().toString().equals(formatToFilter) ) { - - String workUri = tgObject.getField(this.relationToFurtherMetadataObject).getValue().toString(); - workUri = workUri.substring(this.repositoryObjectURIPrefix.length()); - putContentIntoDCFieldLists(tgObject, furtherDCElements(workUri)); - identifier = tgObject.getField(this.identifierField).getValue().toString(); - String dateOfCreation = tgObject.getField(this.dateOfObjectCreation).getValue().toString(); - setRecordHeader(dateOfCreation, identifier, record, dbc); - } - - setDCObject(odt, of, dbc); - record.setMetadata(dbc.getDC()); - grt.setRecord(record); - listClearer(); - - } else { - grt = null; - } - - return grt; - } - - /** - * @param dateOfCreation - * @param identifier - * @param record - * @param dbc - * @return - */ - public RecordType setRecordHeader(String dateOfCreation, String identifier, - RecordType record, DublinCoreBuilder dbc) { - - HeaderType recordHeader = new HeaderType(); -// System.out.println("IDENTIFIRE::: " + identifier); - recordHeader.setIdentifier(identifier); - recordHeader.setDatestamp(dateOfCreation); - record.setMetadata(dbc.getDC()); - record.setHeader(recordHeader); - - return record; - } - - /** - * @param id - * @return - */ - public GetResponse furtherDCElements(String id) { - - if (!id.endsWith(".0")) { - id = id.concat(".0"); - } - - GetRequestBuilder getWorkValues = OAI_ESClient.getOaiESClient() - .prepareGet().setIndex(OAI_ESClient.getEsIndex()) - .setType(OAI_ESClient.getEsType()).setId(id) - .setFields(this.workFields); - - GetResponse responseWorkValues = getWorkValues.execute().actionGet(); - - try { - if (responseWorkValues.getField(this.dateOfObjectCreation) != null) { - this.dates.add(OAIPMHUtillities.convertDateFormat(responseWorkValues.getField(this.dateOfObjectCreation).getValue().toString()).toXMLFormat()); - } - } catch (ParseException e) { - log.debug(e); - } catch (DatatypeConfigurationException e) { - log.debug(e); - } - - return responseWorkValues; - } - - /** - * @param responseWorkValues - * @param relatedWorkObject - */ - public void putContentIntoDCFieldLists(GetResponse responseWorkValues, GetResponse relatedWorkObject) { - this.contributors = DublinCoreFieldLoader.setContributor(responseWorkValues, this.contributorList); - this.formats = DublinCoreFieldLoader.setFormat(responseWorkValues,this.formatList); -// for(String bla : identifierList){ -// System.out.println("BLA: " + bla); -// } - this.identifiers = DublinCoreFieldLoader.setIdentifier(responseWorkValues, this.identifierList); - this.languages = DublinCoreFieldLoader.setLanguage(responseWorkValues,this.languageList); - this.publishers = DublinCoreFieldLoader.setPublisher(responseWorkValues, this.publisherList); - this.relations = DublinCoreFieldLoader.setRelationForWork(responseWorkValues, this.relationList); - this.rights = DublinCoreFieldLoader.setRights(responseWorkValues,this.rightList); - this.sources = DublinCoreFieldLoader.setSources(responseWorkValues,this.sourceList); - this.titles = DublinCoreFieldLoader.setTitle(responseWorkValues,this.titleList); - this.coverages = DublinCoreFieldLoader.setCoverage(responseWorkValues,this.coverageList); - this.creators = DublinCoreFieldLoader.setCreator(relatedWorkObject,this.creatorList); - this.dates = DublinCoreFieldLoader.setDate(relatedWorkObject,this.dateList); - this.descriptions = DublinCoreFieldLoader.setDescription(relatedWorkObject, this.descriptionList); - this.relations = DublinCoreFieldLoader.setRelationForWork(relatedWorkObject, this.relationForWorkList); - this.subjects = DublinCoreFieldLoader.setSubject(relatedWorkObject,this.subjectList); - this.types = DublinCoreFieldLoader.setType(relatedWorkObject,this.typeList); - - } - - /** - * @param responseWorkValues - */ - public void putContentIntoDCFieldLists(GetResponse responseWorkValues) { - this.contributors = DublinCoreFieldLoader.setContributor(responseWorkValues, this.contributorList); - this.coverages = DublinCoreFieldLoader.setCoverage(responseWorkValues,this.coverageList); - this.creators = DublinCoreFieldLoader.setCreator(responseWorkValues,this.creatorList); - this.dates = DublinCoreFieldLoader.setDate(responseWorkValues,this.dateList); - this.descriptions = DublinCoreFieldLoader.setDescription(responseWorkValues, this.descriptionList); - this.formats = DublinCoreFieldLoader.setFormat(responseWorkValues,this.formatList); - this.identifiers = DublinCoreFieldLoader.setIdentifier(responseWorkValues, this.identifierList); - this.languages = DublinCoreFieldLoader.setLanguage(responseWorkValues,this.languageList); - this.publishers = DublinCoreFieldLoader.setPublisher(responseWorkValues, this.publisherList); - this.relations = DublinCoreFieldLoader.setRelation(responseWorkValues,this.relationList); - this.rights = DublinCoreFieldLoader.setRights(responseWorkValues,this.rightList); - this.sources = DublinCoreFieldLoader.setSources(responseWorkValues,this.sourceList); - this.subjects = DublinCoreFieldLoader.setSubject(responseWorkValues,this.subjectList); - this.titles = DublinCoreFieldLoader.setTitle(responseWorkValues,this.titleList); - this.types = DublinCoreFieldLoader.setType(responseWorkValues,this.typeList); - } - - /** - * converting the textGrid elements into dublinCore elements - * - * @param odt - * container for the OAIPMH DublinCore element - * @param of - * jaxb object factory the DublinCore elements - */ - public void setDCObject(OaiDcType odt, ObjectFactory of, DublinCoreBuilder dbc) { - dbc.setContributor(this.contributors); - dbc.setCoverage(this.coverages); - dbc.setCreator(this.creators); - dbc.setDate(this.dates); - dbc.setDescription(this.descriptions); - dbc.setFormat(this.formats); - dbc.setIdentifier(this.identifiers); - for(String identifier : identifiers){ -// System.out.println("IDENTIFIEROPF: " + identifier); - } - dbc.setLanguage(this.languages); - dbc.setPublisher(this.publishers); - dbc.setRelation(this.relations); - dbc.setRights(this.rights); - dbc.setSource(this.sources); - dbc.setSubject(this.subjects); - for(String title : titles){ -// System.out.println("TITLEOPF: " + title); - } - dbc.setTitle(this.titles); - dbc.setType(this.types); - - } - - /** - * - */ - public void listClearer() { - this.contributors.clear(); - this.coverages.clear(); - this.creators.clear(); - this.dates.clear(); - this.descriptions.clear(); - this.formats.clear(); - this.identifiers.clear(); - this.languages.clear(); - this.publishers.clear(); - this.relations.clear(); - this.rights.clear(); - this.sources.clear(); - this.subjects.clear(); - this.titles.clear(); - this.types.clear(); - } - - public void setFormatToFilter(String formatToFilter) { - this.formatToFilter = formatToFilter; - } - - public void setFormatField(String formatField) { - this.formatField = formatField; - } - - public String getDateOfObjectCreation() { - return this.dateOfObjectCreation; - } - - public void setDateOfObjectCreation(String dateOfObjectCreation) { - this.dateOfObjectCreation = dateOfObjectCreation; - } - - public String getRelationToFurtherMetadataObject() { - return this.relationToFurtherMetadataObject; - } - - public void setRelationToFurtherMetadataObject( - String relationToFurtherMetadataObject) { - this.relationToFurtherMetadataObject = relationToFurtherMetadataObject; - } - - public String getRepositoryObjectURIPrefix() { - return this.repositoryObjectURIPrefix; - } - - public void setRepositoryObjectURIPrefix(String repositoryObjectURIPrefix) { - this.repositoryObjectURIPrefix = repositoryObjectURIPrefix; - } - - public String getIdentifierField() { - return this.identifierField; - } - - public void setIdentifierField(String identifierPrefix) { - this.identifierField = identifierPrefix; - } - - public void setFields(String[] fields) { - this.fields = fields; - } - - public String[] getFields() { - return this.fields; - - } - - public void setWorkFields(String[] workFields) { - this.workFields = workFields; - } - - public void setContributor(String[] contributorList) { - - this.contributorList = contributorList; - } - - public String[] getContributor() { - - return this.contributorList; - } - - public void setCoverage(String[] coveragesList) { - - this.coverageList = coveragesList; - } - - public void setCreator(String[] creatorsList) { - - this.creatorList = creatorsList; - } - - public void setDates(String[] datesList) { - - this.dateList = datesList; - } - - public void setDescriptions(String[] descriptionsList) { - - this.descriptionList = descriptionsList; - } - - public void setFormats(String[] formatsList) { - - this.formatList = formatsList; - } - - public void setIdentifiers(String[] identifiersList) { - - this.identifierList = identifiersList; - } - - public void setLanguages(String[] languagesList) { - - this.languageList = languagesList; - } - - public void setPublishers(String[] publishersList) { - - this.publisherList = publishersList; - } - - public void setRelations(String[] relationsList) { - - this.relationList = relationsList; - } - - public void setRelationsForWork(String[] relationsList) { - - this.relationForWorkList = relationsList; - } - - public void setRights(String[] rightsList) { - - this.rightList = rightsList; - } - - public void setSources(String[] sourcesList) { - - this.sourceList = sourcesList; - } - - public void setSubjects(String[] subjectsList) { - - this.subjectList = subjectsList; - } - - public void setTitles(String[] titlesList) { - - this.titleList = titlesList; - } - - public void setTypes(String[] typesList) { - - this.typeList = typesList; - } - - /** - * Checking if necessary values are set and not allowed values are not set - * - * @param request - * the request from the client - * @return requestCheck indicating if the request is correct or not - */ - public boolean requestChecker(RequestType request) { - - boolean requestCheck; - - if (request.getFrom() != null || request.getUntil() != null - || request.getResumptionToken() != null) { - - requestCheck = false; - } else if (request.getSet() != null || request.getIdentifier() == null - || request.getMetadataPrefix() == null) { - requestCheck = false; - } - - else { - requestCheck = true; - } - - return requestCheck; - } - -} diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererAbstract.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererAbstract.java new file mode 100644 index 0000000000000000000000000000000000000000..80c436fe223b7e0b8ce1375908e27a3672e3a735 --- /dev/null +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererAbstract.java @@ -0,0 +1,26 @@ +package info.textgrid.middleware; + +/** + * FIXME + * + * @author Maximilian Brodhun, SUB Göttingen + * @author Stefan E. Funk, SUB Göttingen + * @version 2019-03-07 + * @since 2019-03-07 + */ + +public abstract class RecordDelivererAbstract implements RecordDelivererInterface { + + protected boolean textgrid; + protected boolean dariah; + + /** + * @param textgrid + * @param dariah + */ + public RecordDelivererAbstract(boolean textgrid, boolean dariah) { + this.textgrid = textgrid; + this.dariah = dariah; + } + +} diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDC.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDC.java new file mode 100644 index 0000000000000000000000000000000000000000..a7921450953a7938f25a177f01b1a4627cf1016f --- /dev/null +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDC.java @@ -0,0 +1,502 @@ +package info.textgrid.middleware; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.List; +import javax.xml.datatype.DatatypeConfigurationException; +import org.apache.commons.logging.LogFactory; +import org.elasticsearch.action.get.GetRequestBuilder; +import org.elasticsearch.action.get.GetResponse; +import info.textgrid.middleware.oaipmh.GetRecordType; +import info.textgrid.middleware.oaipmh.HeaderType; +import info.textgrid.middleware.oaipmh.OaiDcType; +import info.textgrid.middleware.oaipmh.ObjectFactory; +import info.textgrid.middleware.oaipmh.RecordType; +import info.textgrid.middleware.oaipmh.RequestType; + +/** + * FIXME + * + * @author Maximilian Brodhun SUB + * @version 1.1 + * @since 17.02.2014 + */ + +public class RecordDelivererDC extends RecordDelivererAbstract { + + private String[] fields; + private String[] workFields; + + private String formatField; + private String formatToFilter; + private String dateOfObjectCreation; + private String relationToFurtherMetadataObject; + private String repositoryObjectURIPrefix; + private String identifierField; + + /* + * Lists for the Dublin Core elements. Lists are needed since each DC fields is possible to occur + * several times + */ + + private List<String> contributors = new ArrayList<String>(); + private List<String> coverages = new ArrayList<String>(); + private List<String> creators = new ArrayList<String>(); + private List<String> dates = new ArrayList<String>(); + private List<String> descriptions = new ArrayList<String>(); + private List<String> formats = new ArrayList<String>(); + private List<String> identifiers = new ArrayList<String>(); + private List<String> languages = new ArrayList<String>(); + private List<String> publishers = new ArrayList<String>(); + private List<String> relations = new ArrayList<String>(); + private List<String> rights = new ArrayList<String>(); + private List<String> sources = new ArrayList<String>(); + private List<String> subjects = new ArrayList<String>(); + private List<String> titles = new ArrayList<String>(); + private List<String> types = new ArrayList<String>(); + + private String[] contributorList; + private String[] coverageList; + private String[] creatorList; + private String[] dateList; + private String[] descriptionList; + private String[] formatList; + private String[] identifierList; + private String[] languageList; + private String[] publisherList; + private String[] relationList; + private String[] relationForWorkList; + private String[] rightList; + private String[] sourceList; + private String[] subjectList; + private String[] titleList; + private String[] typeList; + + private static org.apache.commons.logging.Log log = LogFactory.getLog(RecordDelivererDC.class); + + private OAI_ESClient oaiEsClient; + + /** + * @param oaiEsClient + * @param workFields + * @param textgrid + * @param dariah + */ + public RecordDelivererDC(OAI_ESClient oaiEsClient, String[] workFields, boolean textgrid, + boolean dariah) { + this.oaiEsClient = oaiEsClient; + this.workFields = workFields; + this.textgrid = textgrid; + this.dariah = dariah; + } + + /** + * Query ElasticSearch index for the values mapped to dublinCore for a specific object + * + * @param id identifier within the EalsticSearch index + * @return Get the GetRecord response for the request + */ + public GetRecordType getRecordById(String id) { + + // FIXME Interface! + + ObjectFactory of = new ObjectFactory(); + OaiDcType odt = new OaiDcType(); + GetRecordType grt = new GetRecordType(); + RecordType record = new RecordType(); + String changedId = id; + DublinCoreBuilder dbc = new DublinCoreBuilder(odt, of); + + if (id.startsWith(this.repositoryObjectURIPrefix)) { + changedId = changedId.replace(this.repositoryObjectURIPrefix, ""); + // System.out.println("CHANGEDID: " + changedId); + } + + GetRequestBuilder recordById = OAI_ESClient.getOaiESClient() + .prepareGet().setIndex(OAI_ESClient.getEsIndex()) + .setType(OAI_ESClient.getEsType()).setFields(this.fields) + .setId(changedId); + + GetResponse tgObject = recordById.execute().actionGet(); + + if (tgObject.isExists()) { + + String identifier; + + if (this.dariah == true) { + + putContentIntoDCFieldLists(tgObject); + // FIXME MAX!!!! DO CONFIGURE!!!! + + // System.out.println(identifierField); + identifier = tgObject.getField(this.identifierField).getValue().toString(); + // System.out.println("IDENTIFIER: " + identifier); + String dateOfCreation = "NO_DATE_SET!"; + + if (tgObject.getField(this.dateOfObjectCreation) != null) { + try { + dateOfCreation = OAIPMHUtillities + .convertDateFormat( + tgObject.getField(this.dateOfObjectCreation).getValue().toString()) + .toXMLFormat(); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (DatatypeConfigurationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + setRecordHeader(dateOfCreation, identifier, record, dbc); + } + + if (this.textgrid == true + && tgObject.getField(formatField).getValue().toString().equals(formatToFilter)) { + + String workUri = + tgObject.getField(this.relationToFurtherMetadataObject).getValue().toString(); + workUri = workUri.substring(this.repositoryObjectURIPrefix.length()); + putContentIntoDCFieldLists(tgObject, furtherDCElements(workUri)); + identifier = tgObject.getField(this.identifierField).getValue().toString(); + String dateOfCreation = tgObject.getField(this.dateOfObjectCreation).getValue().toString(); + setRecordHeader(dateOfCreation, identifier, record, dbc); + } + + setDCObject(odt, of, dbc); + record.setMetadata(dbc.getDC()); + grt.setRecord(record); + listClearer(); + + } else { + grt = null; + } + + return grt; + } + + /** + * Checking if necessary values are set and not allowed values are not set + * + * @param request the request from the client + * @return requestCheck indicating if the request is correct or not + */ + public boolean requestChecker(RequestType request) { + + boolean requestCheck; + + if (request.getFrom() != null || request.getUntil() != null + || request.getResumptionToken() != null) { + + requestCheck = false; + } else if (request.getSet() != null || request.getIdentifier() == null + || request.getMetadataPrefix() == null) { + requestCheck = false; + } + + else { + requestCheck = true; + } + + return requestCheck; + } + + // ** + // PRIVATE METHODS + // ** + + /** + * @param dateOfCreation + * @param identifier + * @param record + * @param dbc + * @return + */ + private static RecordType setRecordHeader(String dateOfCreation, String identifier, + RecordType record, DublinCoreBuilder dbc) { + + HeaderType recordHeader = new HeaderType(); + // System.out.println("IDENTIFIRE::: " + identifier); + recordHeader.setIdentifier(identifier); + recordHeader.setDatestamp(dateOfCreation); + record.setMetadata(dbc.getDC()); + record.setHeader(recordHeader); + + return record; + } + + /** + * @param id + * @return + */ + private GetResponse furtherDCElements(String id) { + + if (!id.endsWith(".0")) { + id = id.concat(".0"); + } + + GetRequestBuilder getWorkValues = OAI_ESClient.getOaiESClient() + .prepareGet().setIndex(OAI_ESClient.getEsIndex()) + .setType(OAI_ESClient.getEsType()).setId(id) + .setFields(this.workFields); + + GetResponse responseWorkValues = getWorkValues.execute().actionGet(); + + try { + if (responseWorkValues.getField(this.dateOfObjectCreation) != null) { + this.dates.add(OAIPMHUtillities + .convertDateFormat( + responseWorkValues.getField(this.dateOfObjectCreation).getValue().toString()) + .toXMLFormat()); + } + } catch (ParseException e) { + log.debug(e); + } catch (DatatypeConfigurationException e) { + log.debug(e); + } + + return responseWorkValues; + } + + /** + * @param responseWorkValues + * @param relatedWorkObject + */ + private void putContentIntoDCFieldLists(GetResponse responseWorkValues, + GetResponse relatedWorkObject) { + this.contributors = + DublinCoreFieldLoader.setContributor(responseWorkValues, this.contributorList); + this.formats = DublinCoreFieldLoader.setFormat(responseWorkValues, this.formatList); + this.identifiers = DublinCoreFieldLoader.setIdentifier(responseWorkValues, this.identifierList); + this.languages = DublinCoreFieldLoader.setLanguage(responseWorkValues, this.languageList); + this.publishers = DublinCoreFieldLoader.setPublisher(responseWorkValues, this.publisherList); + this.relations = + DublinCoreFieldLoader.setRelationForWork(responseWorkValues, this.relationList); + this.rights = DublinCoreFieldLoader.setRights(responseWorkValues, this.rightList); + this.sources = DublinCoreFieldLoader.setSources(responseWorkValues, this.sourceList); + this.titles = DublinCoreFieldLoader.setTitle(responseWorkValues, this.titleList); + this.coverages = DublinCoreFieldLoader.setCoverage(responseWorkValues, this.coverageList); + this.creators = DublinCoreFieldLoader.setCreator(relatedWorkObject, this.creatorList); + this.dates = DublinCoreFieldLoader.setDate(relatedWorkObject, this.dateList); + this.descriptions = + DublinCoreFieldLoader.setDescription(relatedWorkObject, this.descriptionList); + this.relations = + DublinCoreFieldLoader.setRelationForWork(relatedWorkObject, this.relationForWorkList); + this.subjects = DublinCoreFieldLoader.setSubject(relatedWorkObject, this.subjectList); + this.types = DublinCoreFieldLoader.setType(relatedWorkObject, this.typeList); + } + + /** + * @param responseWorkValues + */ + private void putContentIntoDCFieldLists(GetResponse responseWorkValues) { + this.contributors = + DublinCoreFieldLoader.setContributor(responseWorkValues, this.contributorList); + this.coverages = DublinCoreFieldLoader.setCoverage(responseWorkValues, this.coverageList); + this.creators = DublinCoreFieldLoader.setCreator(responseWorkValues, this.creatorList); + this.dates = DublinCoreFieldLoader.setDate(responseWorkValues, this.dateList); + this.descriptions = + DublinCoreFieldLoader.setDescription(responseWorkValues, this.descriptionList); + this.formats = DublinCoreFieldLoader.setFormat(responseWorkValues, this.formatList); + this.identifiers = DublinCoreFieldLoader.setIdentifier(responseWorkValues, this.identifierList); + this.languages = DublinCoreFieldLoader.setLanguage(responseWorkValues, this.languageList); + this.publishers = DublinCoreFieldLoader.setPublisher(responseWorkValues, this.publisherList); + this.relations = DublinCoreFieldLoader.setRelation(responseWorkValues, this.relationList); + this.rights = DublinCoreFieldLoader.setRights(responseWorkValues, this.rightList); + this.sources = DublinCoreFieldLoader.setSources(responseWorkValues, this.sourceList); + this.subjects = DublinCoreFieldLoader.setSubject(responseWorkValues, this.subjectList); + this.titles = DublinCoreFieldLoader.setTitle(responseWorkValues, this.titleList); + this.types = DublinCoreFieldLoader.setType(responseWorkValues, this.typeList); + } + + /** + * converting the textGrid elements into dublinCore elements + * + * @param odt container for the OAIPMH DublinCore element + * @param of jaxb object factory the DublinCore elements + */ + private void setDCObject(OaiDcType odt, ObjectFactory of, DublinCoreBuilder dbc) { + dbc.setContributor(this.contributors); + dbc.setCoverage(this.coverages); + dbc.setCreator(this.creators); + dbc.setDate(this.dates); + dbc.setDescription(this.descriptions); + dbc.setFormat(this.formats); + dbc.setIdentifier(this.identifiers); + dbc.setLanguage(this.languages); + dbc.setPublisher(this.publishers); + dbc.setRelation(this.relations); + dbc.setRights(this.rights); + dbc.setSource(this.sources); + dbc.setSubject(this.subjects); + dbc.setTitle(this.titles); + dbc.setType(this.types); + } + + /** + * + */ + private void listClearer() { + this.contributors.clear(); + this.coverages.clear(); + this.creators.clear(); + this.dates.clear(); + this.descriptions.clear(); + this.formats.clear(); + this.identifiers.clear(); + this.languages.clear(); + this.publishers.clear(); + this.relations.clear(); + this.rights.clear(); + this.sources.clear(); + this.subjects.clear(); + this.titles.clear(); + this.types.clear(); + } + + // ** + // GETTERS AND SETTERS + // ** + + /** + * @param formatToFilter + */ + public void setFormatToFilter(String formatToFilter) { + this.formatToFilter = formatToFilter; + } + + /** + * @param formatField + */ + public void setFormatField(String formatField) { + this.formatField = formatField; + } + + public String getDateOfObjectCreation() { + return this.dateOfObjectCreation; + } + + public void setDateOfObjectCreation(String dateOfObjectCreation) { + this.dateOfObjectCreation = dateOfObjectCreation; + } + + public String getRelationToFurtherMetadataObject() { + return this.relationToFurtherMetadataObject; + } + + public void setRelationToFurtherMetadataObject( + String relationToFurtherMetadataObject) { + this.relationToFurtherMetadataObject = relationToFurtherMetadataObject; + } + + public String getRepositoryObjectURIPrefix() { + return this.repositoryObjectURIPrefix; + } + + public void setRepositoryObjectURIPrefix(String repositoryObjectURIPrefix) { + this.repositoryObjectURIPrefix = repositoryObjectURIPrefix; + } + + public String getIdentifierField() { + return this.identifierField; + } + + public void setIdentifierField(String identifierPrefix) { + this.identifierField = identifierPrefix; + } + + public void setFields(String[] fields) { + this.fields = fields; + } + + public String[] getFields() { + return this.fields; + } + + public void setWorkFields(String[] workFields) { + this.workFields = workFields; + } + + public void setContributor(String[] contributorList) { + this.contributorList = contributorList; + } + + public String[] getContributor() { + return this.contributorList; + } + + public void setCoverage(String[] coveragesList) { + + this.coverageList = coveragesList; + } + + public void setCreator(String[] creatorsList) { + + this.creatorList = creatorsList; + } + + public void setDates(String[] datesList) { + + this.dateList = datesList; + } + + public void setDescriptions(String[] descriptionsList) { + + this.descriptionList = descriptionsList; + } + + public void setFormats(String[] formatsList) { + + this.formatList = formatsList; + } + + public void setIdentifiers(String[] identifiersList) { + + this.identifierList = identifiersList; + } + + public void setLanguages(String[] languagesList) { + + this.languageList = languagesList; + } + + public void setPublishers(String[] publishersList) { + + this.publisherList = publishersList; + } + + public void setRelations(String[] relationsList) { + + this.relationList = relationsList; + } + + public void setRelationsForWork(String[] relationsList) { + + this.relationForWorkList = relationsList; + } + + public void setRights(String[] rightsList) { + + this.rightList = rightsList; + } + + public void setSources(String[] sourcesList) { + + this.sourceList = sourcesList; + } + + public void setSubjects(String[] subjectsList) { + + this.subjectList = subjectsList; + } + + public void setTitles(String[] titlesList) { + + this.titleList = titlesList; + } + + public void setTypes(String[] typesList) { + + this.typeList = typesList; + } + +} diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererInterface.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererInterface.java new file mode 100644 index 0000000000000000000000000000000000000000..65f66e4eaf41ea6e7cee2d0ab8866987d0e80af0 --- /dev/null +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererInterface.java @@ -0,0 +1,37 @@ +package info.textgrid.middleware; + +import info.textgrid.middleware.oaipmh.GetRecordType; +import info.textgrid.middleware.oaipmh.RequestType; + +/** + * FIXME + * + * @author Maximilian Brodhun, SUB Göttingen + * @author Stefan E. Funk, SUB Göttingen + * @version 2019-03-07 + * @since 2019-03-07 + */ + +public interface RecordDelivererInterface { + + /** + * <p> + * Query database (whatever) for specific dataset. + * </p> + * + * @param id identifier within database + * @return Get the GetRecord response for the request + */ + GetRecordType getRecordById(String id); + + /** + * <p> + * Checking if necessary values are set and not allowed values are not set. + * </p> + * + * @param request the request from the client + * @return requestCheck indicating if the request is correct or not + */ + boolean requestChecker(RequestType request); + +}