/** * Returns the work originating from the given local object, if any. * This is done by comparing the ID and all mods:identifier elements given in the MyCoRe MODS object * with the identifiers given in the ORCID work. */ public Optional<MCRWork> findWork(MCRObjectID oid) { MCRObject obj = MCRMetadataManager.retrieveMCRObject(oid); return findWork(obj); }
public boolean isMyPublication(MCRObjectID oid) { MCRObject obj = MCRMetadataManager.retrieveMCRObject(oid); MCRMODSWrapper wrapper = new MCRMODSWrapper(obj); Set<String> nameIdentifierKeys = getNameIdentifierKeys(wrapper); Set<String> userIdentifierKeys = getUserIdentifierKeys(); nameIdentifierKeys.retainAll(userIdentifierKeys); if (!nameIdentifierKeys.isEmpty()) { for (String key : nameIdentifierKeys) { LOGGER.info("user's identifier occurs in publication: " + key); } } return !nameIdentifierKeys.isEmpty(); }
public static final String detectPPN(String objectIDString) { MCRObjectID objectID = MCRObjectID.getInstance(objectIDString); MCRObject mcrObject = MCRMetadataManager.retrieveMCRObject(objectID); String defaultPPNDB = MCRPackerJobAction.getConfiguration("ImageWare").get(DEFAULT_PPN_DB_CONFIGURATION_KEY); String ppn = detectPPN(mcrObject, defaultPPNDB).orElse(""); return ppn; }
@Override public Entry provideListMetadata(MCRObjectID id) throws SwordError { final Entry entry = super.provideListMetadata(id); MCRObject mcrObject = MCRMetadataManager.retrieveMCRObject(id); MCRSwordUtil.addDatesToEntry(entry, mcrObject); return entry; }
private void releaseDocument(MCRObjectID objectID) { try { LOGGER.info("Release object {}", objectID); final MCRObject object = MCRMetadataManager.retrieveMCRObject(objectID); final MCRMODSWrapper modsWrapper = new MCRMODSWrapper(object); final String embargoXPATH = "mods:accessCondition[@type='embargo']"; Optional<Element> element = Optional.ofNullable(modsWrapper.getElement(embargoXPATH)); if (element.isPresent()) { element.get().setAttribute("type", "expiredEmbargo"); MCRMetadataManager.update(object); } } catch (MCRAccessException e) { LOGGER.error("Error while releasing embargo document!", e); } }
@Override public MCRObjectID ingestMetadataResources(Deposit entry) throws SwordError, SwordServerException { final MCRObjectID objectID = this.ingestMetadata(entry); this.ingestResource(MCRMetadataManager.retrieveMCRObject(objectID), entry); return objectID; }
@Override public void rollback() { MCRObjectID objectID = getObjectID(); MCRObject mcrObject = MCRMetadataManager.retrieveMCRObject(objectID); Optional<String> ppn = detectPPN(mcrObject, getConfiguration().get(DEFAULT_PPN_DB_CONFIGURATION_KEY)); if (ppn.isPresent()) { Path filePath = getTargetZipPath(ppn.get() + ".zip"); LOGGER.info("Rollback: Check for existing ImageWarePackage: " + filePath.toString()); if (Files.exists(filePath)) { LOGGER.info("Rollback: File found, try to delete: " + filePath.toString()); try { Files.delete(filePath); } catch (IOException e) { LOGGER.error("Could not delete file " + filePath.toString(), e); } } } } }
public static boolean hasManagedPI(String objectID) { return MCRPIManager.getInstance() .getRegistered(MCRMetadataManager.retrieveMCRObject(MCRObjectID.getInstance(objectID))).size() > 0; }
@MCRCommand(syntax = "update all PI of object {0}", help = "Triggers the update method of every Object!") public static void updateObject(String objectIDString) { MCRObjectID objectID = MCRObjectID.getInstance(objectIDString); MCRObject object = MCRMetadataManager.retrieveMCRObject(objectID); MCRPersistentIdentifierEventHandler.updateObject(object); }
/** * Get the full path of the main file of the first derivate. * * @return the mainfile of the first derivate related to the given mcrid or * null if there are no derivates related to the given mcrid */ public static String getSupportedMainFileByOwner(String mcrID) { MCRObjectID objectID = null; try { objectID = MCRObjectID.getInstance(mcrID); } catch (Exception e) { return null; } MCRObject obj = MCRMetadataManager.retrieveMCRObject(objectID); List<MCRMetaLinkID> derivates = obj.getStructure().getDerivates(); if (derivates.size() > 0) { return derivates.get(0) + "/" + ADAPTER.getSupportedMainFile(derivates.get(0).toString()); } return null; }
public static final boolean displayPackerButton(String objectIDString, String packerId) { MCRObjectID objectID = MCRObjectID.getInstance(objectIDString); MCRObject mcrObject = MCRMetadataManager.retrieveMCRObject(objectID); Map<String, String> configuration = MCRPackerJobAction.getConfiguration(packerId); if (configuration.size() == 0) { return false; } try { checkACL(objectID, packerId); } catch (MCRAccessException e) { return false; } Date date = mcrObject.getService().getDate(configuration.get(FLAG_TYPE_CONFIGURATION_KEY)); if (date != null) { return false; } if (!detectPPN(mcrObject, configuration.get(DEFAULT_PPN_DB_CONFIGURATION_KEY)).isPresent()) { return false; } return true; }
@Override public void checkSetup() throws MCRConfigurationException, MCRAccessException { Map<String, String> parameters = this.getParameters(); if (!parameters.containsKey("objectId")) { throw new MCRUsageException("No ObjectID in parameters!"); } MCRObjectID objectID = getObjectID(); MCRObject mcrObject = MCRMetadataManager.retrieveMCRObject(objectID); Optional<String> ppn = detectPPN(mcrObject, ""); if (!ppn.isPresent()) { throw new MCRUsageException("No PPN detected in object: " + objectID.toString()); } if (!parameters.containsKey("packer")) { throw new MCRException("Packer is undefined! This should be impossible!"); } String packer = parameters.get("packer"); checkACL(objectID, packer); }
public static String getCachedEmbargo(final MCRObjectID objectId) { MCRCache.ModifiedHandle modifiedHandle = MCRXMLMetadataManager.instance().getLastModifiedHandle(objectId, 10, TimeUnit.MINUTES); String embargo = null; try { embargo = embargoCache.getIfUpToDate(objectId, modifiedHandle); } catch (IOException e) { LOGGER.warn("Could not determine last modified timestamp of object {}", objectId); } if (embargo != null) { return embargo == EMPTY_VALUE ? null : embargo; } MCRMODSWrapper modsWrapper = new MCRMODSWrapper(MCRMetadataManager.retrieveMCRObject(objectId)); embargo = modsWrapper.getElementValue("mods:accessCondition[@type='embargo']"); embargoCache.put(objectId, embargo != null ? embargo : EMPTY_VALUE); return embargo; }
MCRObject obj = MCRMetadataManager.retrieveMCRObject(objectID); List<Map.Entry<String, URI>> entryList = registrationService.getMediaList(obj); dataciteClient.setMediaList(doi, entryList);
@Override public void registerJob(Map<String, String> parameters) throws MCRPersistentIdentifierException { MCRDigitalObjectIdentifier doi = getDOIFromJob(parameters); String idString = parameters.get(CONTEXT_OBJ); MCRObjectID objectID = MCRObjectID.getInstance(idString); this.validateJobUserRights(objectID); MCRObject object = MCRMetadataManager.retrieveMCRObject(objectID); MCRObject mcrBase = MCRMetadataManager.retrieveMCRObject(objectID); Document dataciteDocument = transformToDatacite(doi, mcrBase); MCRDataciteClient dataciteClient = getDataciteClient(); dataciteClient.storeMetadata(dataciteDocument); URI registeredURI; try { registeredURI = getRegisteredURI(object); dataciteClient.mintDOI(doi, registeredURI); } catch (URISyntaxException e) { throw new MCRException("Base-URL seems to be invalid!", e); } List<Map.Entry<String, URI>> entryList = getMediaList((MCRObject) object); dataciteClient.setMediaList(doi, entryList); this.updateRegistrationDate(objectID, "", new Date()); }
return cachedResponse.get(); MCRObject obj = MCRMetadataManager.retrieveMCRObject(mcrId); List<MCRMetaLinkID> derivates = obj.getStructure().getDerivates(); GenericEntity<List<MCRMetaLinkID>> entity = new GenericEntity<List<MCRMetaLinkID>>(derivates) {
MCRObject object = MCRMetadataManager.retrieveMCRObject(objectID); boolean objNeedsUpdate = setURN(object, urn); if (objNeedsUpdate) {
MCRObject mcrObject = MCRMetadataManager.retrieveMCRObject(objectID); MCRPIMetadataService<MCRDigitalObjectIdentifier> synchronizer = registrationService .getMetadataService();
@Override public void receiveMetadata(MCRObject child) { MCRMODSWrapper childWrapper = new MCRMODSWrapper(child); MCRObjectID parentID = child.getStructure().getParentID(); LOGGER.debug("Removing old inherited Metadata."); childWrapper.removeInheritedMetadata(); if (parentID != null && MCRMODSWrapper.isSupported(parentID)) { MCRObject parent = MCRMetadataManager.retrieveMCRObject(parentID); MCRMODSWrapper parentWrapper = new MCRMODSWrapper(parent); inheritToChild(parentWrapper, childWrapper); } for (Element relatedItem : childWrapper.getLinkedRelatedItems()) { String type = relatedItem.getAttributeValue("type"); String holderId = relatedItem.getAttributeValue("href", MCRConstants.XLINK_NAMESPACE); LOGGER.info("receive metadata from {} document {}", type, holderId); if ((holderId == null || parentID != null && parentID.toString().equals(holderId)) && MCRMODSRelationshipType.host.name().equals(type)) { //already received metadata from parent; continue; } MCRObjectID holderObjectID = MCRObjectID.getInstance(holderId); if (MCRMODSWrapper.isSupported(holderObjectID)) { MCRObject targetObject = MCRMetadataManager.retrieveMCRObject(holderObjectID); MCRMODSWrapper targetWrapper = new MCRMODSWrapper(targetObject); relatedItem.addContent(targetWrapper.getMODS().cloneContent()); } } }
@Override public void updateJob(Map<String, String> parameters) throws MCRPersistentIdentifierException { MCRDigitalObjectIdentifier doi = getDOIFromJob(parameters); String idString = parameters.get(CONTEXT_OBJ); MCRObjectID objectID = MCRObjectID.getInstance(idString); this.validateJobUserRights(objectID); MCRObject object = MCRMetadataManager.retrieveMCRObject(objectID); Document newDataciteMetadata = transformToDatacite(doi, object); MCRDataciteClient dataciteClient = getDataciteClient(); try { URI uri = dataciteClient.resolveDOI(doi); URI registeredURI = getRegisteredURI(object); if (!uri.equals(registeredURI)) { LOGGER.info("Sending new URL({}) to Datacite!", registeredURI); dataciteClient.mintDOI(doi, registeredURI); } } catch (URISyntaxException e) { throw new MCRPersistentIdentifierException("Error while updating URL!", e); } Document oldDataciteMetadata = dataciteClient.resolveMetadata(doi); if (!MCRXMLHelper.deepEqual(newDataciteMetadata, oldDataciteMetadata)) { LOGGER.info("Sending new Metadata of {} to Datacite!", idString); dataciteClient.deleteMetadata(doi); dataciteClient.storeMetadata(newDataciteMetadata); } }