use of org.mycore.pi.exceptions.MCRIdentifierUnresolvableException in project mycore by MyCoRe-Org.
the class MCRDOIRest method get.
public static MCRDOIRestResponse get(MCRDigitalObjectIdentifier doi) throws MCRIdentifierUnresolvableException {
HttpGet get = new HttpGet(URL_TEMPLATE.replaceAll("\\{doi\\}", doi.asString()));
try (CloseableHttpClient httpClient = getHttpClient()) {
CloseableHttpResponse response = httpClient.execute(get);
HttpEntity entity = response.getEntity();
try (BufferedReader buffer = new BufferedReader(new InputStreamReader(entity.getContent(), Charset.forName("UTF-8")))) {
String json = buffer.lines().collect(Collectors.joining("\n"));
Gson gson = new GsonBuilder().registerTypeAdapter(MCRDOIRestResponseEntryData.class, new MCRDOIRestResponseEntryDataValueDeserializer()).create();
return gson.fromJson(json, MCRDOIRestResponse.class);
}
} catch (IOException e) {
throw new MCRIdentifierUnresolvableException(doi.asString(), "The identifier " + doi.asString() + " is not resolvable!", e);
}
}
use of org.mycore.pi.exceptions.MCRIdentifierUnresolvableException in project mycore by MyCoRe-Org.
the class MCRDNBPIDefProvider method get.
public static Document get(String identifier) throws MCRIdentifierUnresolvableException {
HttpGet get = new HttpGet(RESOLVING_URL_TEMPLATE.replaceAll("\\{urn\\}", identifier));
try (CloseableHttpClient httpClient = MCRHttpUtils.getHttpClient()) {
CloseableHttpResponse response = httpClient.execute(get);
HttpEntity entity = response.getEntity();
return new SAXBuilder().build(entity.getContent());
} catch (IOException | JDOMException e) {
String message = "The identifier " + identifier + " is not resolvable!";
throw new MCRIdentifierUnresolvableException(identifier, message, e);
}
}
use of org.mycore.pi.exceptions.MCRIdentifierUnresolvableException in project mycore by MyCoRe-Org.
the class MCRURNOAIRegistrationService method isRegistered.
@Override
public boolean isRegistered(MCRObjectID id, String additional) {
boolean registered = super.isRegistered(id, additional);
if (registered)
return true;
if (!isCreated(id, additional)) {
return false;
}
// URN is created. Now we need to check if it is resolvable
MCRPI mcrpi = getTableEntry(id, additional);
MCRDNBURN dnburn = new MCRDNBURNParser().parse(mcrpi.getIdentifier()).orElseThrow(() -> new MCRException("Cannot parse Identifier from table: " + mcrpi.getIdentifier()));
try {
// Find register date in dnb rest
Date dnbRegisteredDate = MCRURNUtils.getDNBRegisterDate(dnburn);
if (dnbRegisteredDate == null) {
return false;
}
mcrpi.setRegistered(dnbRegisteredDate);
updateFlag(id, additional, mcrpi);
return true;
} catch (ParseException e) {
LOGGER.error("Could not parse Date from PIDEF ! URN wont be marked as registered because of this! ", e);
return false;
} catch (MCRIdentifierUnresolvableException e) {
return false;
}
}
use of org.mycore.pi.exceptions.MCRIdentifierUnresolvableException in project mycore by MyCoRe-Org.
the class MCRDataciteClient method deleteMetadata.
public void deleteMetadata(final MCRDigitalObjectIdentifier doiParam) throws MCRPersistentIdentifierException {
MCRDigitalObjectIdentifier doi = isTestPrefix() ? doiParam.toTestPrefix() : doiParam;
URI requestURI = getRequestURI("/metadata/" + doi.asString());
HttpDelete delete = new HttpDelete(requestURI);
try (CloseableHttpClient httpClient = getHttpClient()) {
CloseableHttpResponse response = httpClient.execute(delete);
StatusLine statusLine = response.getStatusLine();
switch(statusLine.getStatusCode()) {
case HttpStatus.SC_OK:
return;
case HttpStatus.SC_UNAUTHORIZED:
throw new MCRDatacenterAuthenticationException();
case HttpStatus.SC_NOT_FOUND:
throw new MCRIdentifierUnresolvableException(doi.asString(), doi.asString() + " was not found!");
default:
throw new MCRDatacenterException("Unknown return status: " + statusLine.getStatusCode() + " - " + statusLine.getReasonPhrase());
}
} catch (IOException e) {
throw new MCRDatacenterException("Error while deleting metadata!", e);
}
}
use of org.mycore.pi.exceptions.MCRIdentifierUnresolvableException in project mycore by MyCoRe-Org.
the class MCRDataciteClient method getMediaList.
public List<Map.Entry<String, URI>> getMediaList(final MCRDigitalObjectIdentifier doiParam) throws MCRPersistentIdentifierException {
ArrayList<Map.Entry<String, URI>> entries = new ArrayList<>();
MCRDigitalObjectIdentifier doi = isTestPrefix() ? doiParam.toTestPrefix() : doiParam;
URI requestURI = getRequestURI("/media/" + doi.asString());
HttpGet httpGet = new HttpGet(requestURI);
try (CloseableHttpClient httpClient = getHttpClient()) {
CloseableHttpResponse response = httpClient.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
switch(statusLine.getStatusCode()) {
case HttpStatus.SC_OK:
Scanner scanner = new Scanner(response.getEntity().getContent(), "UTF-8");
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] parts = line.split("=", 2);
String mediaType = parts[0];
URI mediaURI = new URI(parts[1]);
entries.add(new AbstractMap.SimpleEntry<>(mediaType, mediaURI));
}
return entries;
case HttpStatus.SC_UNAUTHORIZED:
throw new MCRDatacenterAuthenticationException();
case HttpStatus.SC_NOT_FOUND:
throw new MCRIdentifierUnresolvableException(doi.asString(), doi.asString() + " is not resolvable! " + getStatusString(response));
// return entries; // datacite says no media attached or doi does not exist (not sure what to do)
default:
throw new MCRDatacenterException(String.format(Locale.ENGLISH, "Datacenter-Error while set media-list for doi: \"%s\" : %s", doi.asString(), getStatusString(response)));
}
} catch (IOException e) {
throw new MCRDatacenterException("Unknown error while set media list", e);
} catch (URISyntaxException e) {
throw new MCRDatacenterException("Could not parse media url!", e);
}
}
Aggregations