public static URL getDFGViewerURL(MCRPIRegistrationInfo urn) { URL url = null; try { MCRObjectID derivateId = MCRObjectID.getInstance(urn.getMycoreID()); MCRDerivate derivate = MCRMetadataManager.retrieveMCRDerivate(derivateId); String mainDoc = Optional.ofNullable(derivate.getDerivate()) .map(MCRObjectDerivate::getInternals) .map(MCRMetaIFS::getMainDoc) .orElseThrow(() -> new RuntimeException( "Could not get main doc for " + derivateId)); String spec = null; String baseURL = MCRFrontendUtil.getBaseURL(); String id = URLEncoder.encode(derivateId.toString(), "UTF-8"); if (mainDoc != null && mainDoc.length() > 0) { String mainDocEnc = URLEncoder.encode(mainDoc, "UTF-8"); spec = MessageFormat .format(baseURL + "servlets/MCRDFGLinkServlet?deriv={0}&file={1}", id, mainDocEnc); } else { spec = baseURL + "servlets/MCRDFGLinkServlet?deriv=" + id; } LOGGER.debug("Generated URL for urn {} is {}", urn.getIdentifier(), spec); url = new URL(spec); } catch (UnsupportedEncodingException | MalformedURLException e) { LOGGER.error("Could not create dfg viewer url", e); } return url; }
/** * Builds a list with with right content types and media urls assigned of a specific Object * * @param obj the object * @return a list of entrys Media-Type, URL */ public List<Map.Entry<String, URI>> getMediaList(MCRObject obj) { List<Map.Entry<String, URI>> entryList = new ArrayList<>(); Optional<MCRObjectID> derivateIdOptional = MCRMetadataManager.getDerivateIds(obj.getId(), 1, TimeUnit.MINUTES) .stream().findFirst(); derivateIdOptional.ifPresent(derivateId -> { MCRDerivate derivate = MCRMetadataManager.retrieveMCRDerivate(derivateId); String mainDoc = derivate.getDerivate().getInternals().getMainDoc(); MCRPath mainDocumentPath = MCRPath.getPath(derivateId.toString(), mainDoc); try { String contentType = Optional.ofNullable(MCRContentTypes.probeContentType(mainDocumentPath)) .orElse("application/octet-stream"); entryList.add(new AbstractMap.SimpleEntry<>(contentType, new URI(this.registerURL + MCRXMLFunctions .encodeURIPath("/servlets/MCRFileNodeServlet/" + derivateId + "/" + mainDoc)))); } catch (IOException | URISyntaxException e) { LOGGER.error("Error while detecting the file to register!", e); } }); return entryList; }
/** * Sets a main file if not present. * @param derivateID the id of the derivate */ private static void setDefaultMainFile(String derivateID) { MCRPath path = MCRPath.getPath(derivateID, "/"); try { MCRFileCollectingFileVisitor<Path> visitor = new MCRFileCollectingFileVisitor<>(); Files.walkFileTree(path, visitor); MCRDerivate derivate = MCRMetadataManager.retrieveMCRDerivate(MCRObjectID.getInstance(derivateID)); visitor.getPaths().stream() .map(MCRPath.class::cast) .filter(p -> !p.getOwnerRelativePath().endsWith(".xml")) .findFirst() .ifPresent(file -> { derivate.getDerivate().getInternals().setMainDoc(file.getOwnerRelativePath()); try { MCRMetadataManager.update(derivate); } catch (MCRPersistenceException | MCRAccessException e) { LOGGER.error("Could not set main file!", e); } }); } catch (IOException e) { LOGGER.error("Could not set main file!", e); } } }
.filter(d -> MCRAccessManager.checkDerivateContentPermission(d, MCRAccessManager.PERMISSION_READ)) .map(d -> { String nameOfMainFile = MCRMetadataManager.retrieveMCRDerivate(d).getDerivate().getInternals() .getMainDoc(); return nameOfMainFile.isEmpty() ? null : MCRPath.getPath(d.toString(), '/' + nameOfMainFile);
MCRDerivate der = MCRMetadataManager.retrieveMCRDerivate(derID);
MCRDerivate derivate = MCRMetadataManager.retrieveMCRDerivate(MCRObjectID.getInstance(derivateID)); return new URL( MCRFrontendUtil.getBaseURL() + "receive/" + derivate.getOwnerID() + "?derivate=" + derivateID);
@MCRCommand(syntax = "migrate urn granular to service id {0}", help = "Used to migrate urn granular to MyCoRe-PI. " + "{0} should be your granular service id.") public static void migrateURNGranularToServiceID(String serviceID) { Session session = MCRHIBConnection.instance().getSession(); MCRXMLMetadataManager.instance().listIDsOfType("derivate").forEach(derivateID -> { MCRDerivate derivate = MCRMetadataManager.retrieveMCRDerivate(MCRObjectID.getInstance(derivateID)); String urn = derivate.getDerivate().getURN(); if (urn != null) { LOGGER.info("Found URN in :{}", derivateID); MCRPI derivatePI = new MCRPI(urn, MCRDNBURN.TYPE, derivateID, "", serviceID, new Date()); if (MCRPIManager.getInstance().exist(derivatePI)) { LOGGER.warn("PI-Entry for {} already exist!", urn); } else { session.save(derivatePI); derivate.getUrnMap().forEach((file, fileURN) -> { MCRPI filePI = new MCRPI(fileURN, MCRDNBURN.TYPE, derivateID, file, serviceID, new Date()); if (MCRPIManager.getInstance().exist(filePI)) { LOGGER.warn("PI-Entry for {} already exist!", fileURN); } else { session.save(fileURN); } }); } } }); }
"There is no derivate with the id '" + matchedDerID + "'.", null)); return MCRMetadataManager.retrieveMCRDerivate(derID);
"You do not have the permission to write to " + derID)); MCRDerivate der = MCRMetadataManager.retrieveMCRDerivate(derID);
return; MCRDerivate derivate = MCRMetadataManager.retrieveMCRDerivate(derivateID); String urn = derivate.getDerivate().getURN(); if (urn == null) {
Element eDerObject = new Element("derobject"); eDerObject.setAttribute("ID", oid.getId()); MCRDerivate der = MCRMetadataManager.retrieveMCRDerivate(MCRObjectID.getInstance(oid.getId())); String mcrID = der.getDerivate().getMetaLink().getXLinkHref(); eDerObject.setAttribute("metadata", mcrID); writer.beginObject(); writer.name("ID").value(oid.getId()); MCRDerivate der = MCRMetadataManager.retrieveMCRDerivate(MCRObjectID.getInstance(oid.getId())); String mcrID = der.getDerivate().getMetaLink().getXLinkHref(); writer.name("metadata").value(mcrID);
/** * @param derivateID * ID of derivate * @return empty String or absolute path to main file of derivate if file is supported. */ public static String getSupportedMainFile(String derivateID) { try { MCRDerivate deriv = MCRMetadataManager.retrieveMCRDerivate(MCRObjectID.getInstance(derivateID)); String nameOfMainFile = deriv.getDerivate().getInternals().getMainDoc(); // verify support if (nameOfMainFile != null && !nameOfMainFile.equals("")) { MCRPath mainFile = MCRPath.getPath(derivateID, '/' + nameOfMainFile); if (isFileSupported(mainFile)) { return mainFile.getRoot().relativize(mainFile).toString(); } } } catch (Exception e) { LOGGER.warn("Could not get main file of derivate.", e); } return ""; }
final MCRObjectID derivateID = MCRObjectID.getInstance(derivateId); if (MCRMetadataManager.exists(derivateID)) { final MCRDerivate mcrDerivate = MCRMetadataManager.retrieveMCRDerivate(derivateID); try { MCRMetadataManager.delete(mcrDerivate);
String derID = eDer.getAttributeValue("href", MCRConstants.XLINK_NAMESPACE); try { MCRDerivate der = MCRMetadataManager.retrieveMCRDerivate(MCRObjectID.getInstance(derID)); eDer.addContent(der.createXML().getRootElement().detach()); MCRMetadataManager.retrieveMCRDerivate(MCRObjectID.getInstance(derID)), "/", -1, info, app); if (docContents.hasRootElement()) { eDer.addContent(docContents.getRootElement().detach());