simpleOaiCollectorService/src/main/java/eu/dnetlib/apps/oai/utils/SimpleUtils.java

58 lines
1.7 KiB
Java

package eu.dnetlib.apps.oai.utils;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.UUID;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
public class SimpleUtils {
private static final String UTF_8 = StandardCharsets.UTF_8.toString();
private static final DateTimeFormatter oaiDateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
public static String generateNewJobId() {
return "job-" + UUID.randomUUID();
}
public static String oaiFirstUrl(final String baseUrl, final String format, final String setSpec, final LocalDateTime from, final LocalDateTime until) {
try {
String url = baseUrl + "?verb=ListRecords&metadataPrefix=" + URLEncoder.encode(format, UTF_8);
if (setSpec != null && !setSpec.isEmpty()) {
url += "&set=" + URLEncoder.encode(setSpec, UTF_8);
}
if (from != null) {
url += "&from=" + URLEncoder.encode(from.format(oaiDateFormatter), UTF_8);
}
if (until != null) {
url += "&until=" + URLEncoder.encode(until.format(oaiDateFormatter), UTF_8);
}
return url;
} catch (final UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
public static String oaiNextUrl(final String baseUrl, final String rtoken) {
try {
if (StringUtils.isNotBlank(rtoken)) {
return baseUrl + "?verb=ListRecords&resumptionToken=" + URLEncoder.encode(rtoken, UTF_8);
} else {
return null;
}
} catch (final UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
public static String oaiIdToFilename(final String id) {
return DigestUtils.md5Hex(id) + ".xml";
}
}