private static MCRDerivate createDerivate(MCRObjectID documentID, File fileDir) throws MCRPersistenceException, IOException, MCRAccessException { MCRDerivate derivate = new MCRDerivate(); derivate.setId(MCRObjectID.getNextFreeId(documentID.getProjectId(), "derivate")); derivate.setLabel("data object from " + documentID); String schema = CONFIG.getString("MCR.Metadata.Config.derivate", "datamodel-derivate.xml").replaceAll(".xml", ".xsd"); derivate.setSchema(schema); MCRMetaLinkID linkId = new MCRMetaLinkID(); linkId.setSubTag("linkmeta"); linkId.setReference(documentID, null, null); derivate.getDerivate().setLinkMeta(linkId); MCRMetaIFS ifs = new MCRMetaIFS(); ifs.setSubTag("internal"); ifs.setSourcePath(fileDir.getAbsolutePath()); derivate.getDerivate().setInternals(ifs); LOGGER.debug("Creating new derivate with ID {}", derivate.getId()); MCRMetadataManager.create(derivate); setDefaultPermissions(derivate.getId()); return derivate; }
if (overwriteOnExistingLabel) { for (MCRMetaLinkID derLink : mcrObj.getStructure().getDerivates()) { if (label.equals(derLink.getXLinkLabel()) || label.equals(derLink.getXLinkTitle())) { derID = derLink.getXLinkHrefID(); mcrDerivate.setId(derID); mcrDerivate.setSchema("datamodel-derivate.xsd"); mcrDerivate.getDerivate().setLinkMeta(new MCRMetaLinkID("linkmeta", mcrObjIDObj, null, null)); mcrDerivate.getDerivate() .setInternals(new MCRMetaIFS("internal", UPLOAD_DIR.resolve(derID.toString()).toString())); new MCRMetaLinkID("derobject", derID, null, label));
MCRObject mcrObj = MCRMetadataManager.retrieveMCRObject(parentObjId); for (MCRMetaLinkID check : mcrObj.getStructure().getDerivates()) { if (derIDString.equals(check.getXLinkLabel()) || derIDString.equals(check.getXLinkTitle())) { matchedDerID = check.getXLinkHref(); break;
private MCRObjectID createRelatedObject(Element relatedItem, MCRObjectID childID) throws MCRPersistenceException, MCRAccessException { MCRMODSWrapper wrapper = new MCRMODSWrapper(); MCRObject object = wrapper.getMCRObject(); MCRObjectID oid = MCRObjectID.getNextFreeId(childID.getBase()); if (oid.equals(childID)) { oid = MCRObjectID.getNextFreeId(childID.getBase()); } object.setId(oid); if (isHost(relatedItem)) { object.getStructure().addChild(new MCRMetaLinkID("child", childID, childID.toString(), childID.toString())); } Element mods = cloneRelatedItem(relatedItem); wrapper.setMODS(mods); LOGGER.info("create object {}", oid); MCRMetadataManager.create(object); return oid; }
@Override protected void handleObjectUpdated(final MCREvent evt, final MCRObject obj) { if (!MCRMODSWrapper.isSupported(obj)) { return; } handleObjectCreated(evt, obj); //may have to reindex children, if they inherit any information for (MCRMetaLinkID childLinkID : obj.getStructure().getChildren()) { MCRObjectID childID = childLinkID.getXLinkHrefID(); if (MCRMetadataManager.exists(childID)) { MCREvent childEvent = new MCREvent(childID.getTypeId(), MCREvent.INDEX_EVENT); childEvent.put("object", MCRMetadataManager.retrieve(childID)); MCREventManager.instance().handleEvent(childEvent); } } }
/** * 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; }
eDerObject.setAttribute("ID", oid.getId()); MCRDerivate der = MCRMetadataManager.retrieveMCRDerivate(MCRObjectID.getInstance(oid.getId())); String mcrID = der.getDerivate().getMetaLink().getXLinkHref(); eDerObject.setAttribute("metadata", mcrID); if (der.getLabel() != null) { 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); if (der.getLabel() != null) {
LOGGER.info("Update inherited metadata"); for (MCRMetaLinkID childIdRef : children) { MCRObjectID childId = childIdRef.getXLinkHrefID(); if (MCRMODSWrapper.isSupported(childId)) { LOGGER.info("Update: {}", childIdRef);
derivate.setSchema(schema); MCRMetaLinkID linkId = new MCRMetaLinkID(); linkId.setSubTag("linkmeta"); linkId.setReference(mcrId, null, null); derivate.getDerivate().setLinkMeta(linkId);
derivate.setSchema(schema); MCRMetaLinkID linkId = new MCRMetaLinkID(); linkId.setSubTag("linkmeta"); linkId.setReference(documentID, null, null); derivate.getDerivate().setLinkMeta(linkId);