Skip to content
Snippets Groups Projects
Commit 3f7cf143 authored by Stefan E. Funk's avatar Stefan E. Funk
Browse files

ID are being filtered now: hdl: projects: and textgrid: prefixes are omitted from incoming id.

parent abd5e07e
No related branches found
No related tags found
No related merge requests found
......@@ -32,7 +32,7 @@ import info.textgrid.middleware.oaipmh.VerbType;
*
* @author Maximilian Brodhun, SUB Göttingen
* @author Stefan E. Funk, SUB Göttingen
* @version 2021-07-06
* @version 2021-07-09
* @since 2014-01-29
*/
public class OAIPMHImpl implements OAIPMHProducer {
......@@ -130,20 +130,22 @@ public class OAIPMHImpl implements OAIPMHProducer {
* @see info.textgrid.middleware.OAIPMHProducer#postRequest(java.lang.String, java.lang.String,
* java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
*/
public String postRequest(String verb, String identifier, String metadataPrefix, String set,
String from, String until, String resumptionToken) {
public String postRequest(final String verb, final String identifier, final String metadataPrefix,
final String set, final String from, final String until, final String resumptionToken) {
String result = "";
System.out.println("Incoming ID (POST): " + identifier);
// Check IDs.
String checkedID = OAIPMHUtilities.omitPrefixFromIdentifier(identifier);
String checkedSET = OAIPMHUtilities.omitPrefixFromIdentifier(set);
try {
result = getStringFromJAXBOAIElement(verb,
handleRequest(
verb,
identifier,
checkedID,
metadataPrefix,
set,
checkedSET,
from,
until,
resumptionToken));
......@@ -162,20 +164,22 @@ public class OAIPMHImpl implements OAIPMHProducer {
* @see info.textgrid.middleware.OAIPMHProducer#getRequest(java.lang.String, java.lang.String,
* java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
*/
public String getRequest(String verb, String identifier, String metadataPrefix,
String set, String from, String until, String resumptionToken) {
public String getRequest(final String verb, final String identifier, final String metadataPrefix,
final String set, final String from, final String until, final String resumptionToken) {
String result = "";
System.out.println("Incoming ID (GET): " + identifier);
// Check IDs.
String checkedID = OAIPMHUtilities.omitPrefixFromIdentifier(identifier);
String checkedSET = OAIPMHUtilities.omitPrefixFromIdentifier(set);
try {
result = getStringFromJAXBOAIElement(verb,
handleRequest(
verb,
identifier,
checkedID,
metadataPrefix,
set,
checkedSET,
from,
until,
resumptionToken));
......
......@@ -6,12 +6,15 @@ import java.math.BigInteger;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.TimeZone;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
......@@ -77,6 +80,15 @@ public class OAIPMHUtilities {
public static final String ES_DIVIDER_CHAR = ".";
public static final String ES_DIVIDER_REGEXP = "\\.";
public static final String PREFIX_DEVIDER = ":";
public static final String PREFIX_HDL = "hdl";
public static final String PREFIX_TEXTGRID = "textgrid";
public static final String PREFIX_PROJECT = "project";
public static final Set<String> IDENTIFIER_PREFIXES_TO_FILTER = new HashSet<String>(Arrays.asList(
PREFIX_HDL,
PREFIX_TEXTGRID,
PREFIX_PROJECT));
// **
// CLASS
// **
......@@ -542,6 +554,31 @@ public class OAIPMHUtilities {
return array;
}
/**
* <p>
* Check identifier for prefixes: Remove "textgrid:", "project:", and "hdl:" prefixes.
* </p>
*
* @param identifier
* @return The identifier without prefix, if contained in defined prefix list.
*/
public static String omitPrefixFromIdentifier(final String identifier) {
String result = identifier;
if (identifier != null && !identifier.isEmpty() && identifier.contains(PREFIX_DEVIDER)) {
String prefix[] = identifier.split(PREFIX_DEVIDER);
String px = prefix[0];
String id = prefix[1];
if (IDENTIFIER_PREFIXES_TO_FILTER.contains(px)) {
result = id;
log.debug("incoming id has been filtered to: " + result);
}
}
return result;
}
/*
* public List<String> getUriListOfAllEditions(String from, String to, String set, String
* resumptionToken) throws IOException {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment