use of org.mycore.datamodel.metadata.MCRObjectID in project mycore by MyCoRe-Org.
the class MCRCompressServlet method render.
@Override
protected void render(MCRServletJob job, Exception ex) throws Exception {
if (ex != null) {
// we cannot handle it ourself
throw ex;
}
if (job.getResponse().isCommitted()) {
return;
}
MCRObjectID id = (MCRObjectID) job.getRequest().getAttribute(KEY_OBJECT_ID);
String path = (String) job.getRequest().getAttribute(KEY_PATH);
try (ServletOutputStream sout = job.getResponse().getOutputStream()) {
StringBuffer requestURL = job.getRequest().getRequestURL();
if (job.getRequest().getQueryString() != null) {
requestURL.append('?').append(job.getRequest().getQueryString());
}
MCRISO8601Date mcriso8601Date = new MCRISO8601Date();
mcriso8601Date.setDate(new Date());
String comment = "Created by " + requestURL + " at " + mcriso8601Date.getISOString();
try (T container = createContainer(sout, comment)) {
job.getResponse().setContentType(getMimeType());
String filename = getFileName(id, path);
job.getResponse().addHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
if (id.getTypeId().equals("derivate")) {
sendDerivate(id, path, container);
} else {
sendObject(id, job, container);
}
disposeContainer(container);
}
}
}
use of org.mycore.datamodel.metadata.MCRObjectID in project mycore by MyCoRe-Org.
the class MCRClassificationUtils method isInCollection.
public static boolean isInCollection(String mcrId, String collection) {
MCRObjectID mcrObjectID = MCRObjectID.getInstance(mcrId);
MCRCategoryID collectionID = new MCRCategoryID(MCRConstants.COLLECTION_CLASS_ID.getRootID(), collection);
MCRCategLinkReference reference = new MCRCategLinkReference(mcrObjectID);
return LINK_SERVICE.isInCategory(reference, collectionID);
}
use of org.mycore.datamodel.metadata.MCRObjectID in project mycore by MyCoRe-Org.
the class MCRClassificationUtils method getCollectionFromDerivate.
private static String getCollectionFromDerivate(MCRObjectID mcrObjectID) {
Collection<String> sourceOf = LINK_TABLE.getSourceOf(mcrObjectID, MCRLinkTableManager.ENTRY_TYPE_DERIVATE);
if (sourceOf.isEmpty()) {
return null;
}
MCRObjectID metaObjectID = MCRObjectID.getInstance(sourceOf.iterator().next());
return getCollectionFromObject(metaObjectID);
}
use of org.mycore.datamodel.metadata.MCRObjectID in project mycore by MyCoRe-Org.
the class MCRMetadataHistoryCommands method buildSingleHistory.
@MCRCommand(syntax = "build metadata history of id {0}", help = "build metadata history of object/derivate with id {0}")
public static void buildSingleHistory(String mcrId) {
MCRObjectID objId = MCRObjectID.getInstance(mcrId);
EntityManager em = MCREntityManagerProvider.getCurrentEntityManager();
getHistoryItems(objId).sequential().forEach(em::persist);
}
use of org.mycore.datamodel.metadata.MCRObjectID in project mycore by MyCoRe-Org.
the class MCRMetadataHistoryCommands method buildHistory.
@MCRCommand(syntax = "build metadata history of base {0}", help = "build metadata history of all objects with base id {0}")
public static List<String> buildHistory(String baseId) {
MCRMetadataStore store = MCRXMLMetadataManager.instance().getStore(baseId);
if (store instanceof MCRVersioningMetadataStore) {
LogManager.getLogger().info("Verify SVN history of {}", baseId);
((MCRVersioningMetadataStore) store).verify();
}
ExecutorService executorService = Executors.newWorkStealingPool();
MCRSession currentSession = MCRSessionMgr.getCurrentSession();
int maxId = store.getHighestStoredID();
AtomicInteger completed = new AtomicInteger(maxId);
IntStream.rangeClosed(1, maxId).parallel().mapToObj(i -> MCRObjectID.formatID(baseId, i)).map(MCRObjectID::getInstance).map(id -> new MCRTransactionableCallable<>(Executors.callable(() -> {
EntityManager em = MCREntityManagerProvider.getCurrentEntityManager();
getHistoryItems(id).sequential().forEach(em::persist);
completed.decrementAndGet();
}), currentSession)).forEach(executorService::submit);
executorService.shutdown();
boolean waitToFinish = true;
while (!executorService.isTerminated() && waitToFinish) {
LogManager.getLogger().info("Waiting for history of {} objects/derivates.", completed.get());
try {
executorService.awaitTermination(10, TimeUnit.SECONDS);
} catch (InterruptedException e) {
waitToFinish = false;
}
}
return Collections.emptyList();
}
Aggregations