use of org.mycore.common.MCRSession in project mycore by MyCoRe-Org.
the class MCRTransactionableCallableTest method run.
@Test
public void run() {
// with session
MCRSession session = MCRSessionMgr.getCurrentSession();
String sessionID = session.getID();
TestCallable testCallable = new TestCallable();
MCRTransactionableCallable<Boolean> transactionableRunnable = new MCRTransactionableCallable<>(testCallable, session);
try {
assertTrue(transactionableRunnable.call());
} catch (Exception e) {
fail(e.getMessage());
}
assertEquals(sessionID, testCallable.getSessionContextID());
session.close();
// without session
transactionableRunnable = new MCRTransactionableCallable<>(testCallable);
try {
assertTrue(transactionableRunnable.call());
} catch (Exception e) {
fail(e.getMessage());
}
assertNotEquals(sessionID, testCallable.getSessionContextID());
assertFalse(MCRSessionMgr.hasCurrentSession());
}
use of org.mycore.common.MCRSession in project mycore by MyCoRe-Org.
the class MCRTransactionableRunnableTest method run.
@Test
public void run() {
// with session
MCRSession session = MCRSessionMgr.getCurrentSession();
String sessionID = session.getID();
TestRunnable testRunnable = new TestRunnable();
MCRTransactionableRunnable transactionableRunnable = new MCRTransactionableRunnable(testRunnable, session);
transactionableRunnable.run();
assertTrue(testRunnable.isExecuted());
assertEquals(sessionID, testRunnable.getSessionContextID());
session.close();
// without session
transactionableRunnable = new MCRTransactionableRunnable(testRunnable);
transactionableRunnable.run();
assertTrue(testRunnable.isExecuted());
assertNotEquals(sessionID, testRunnable.getSessionContextID());
assertFalse(MCRSessionMgr.hasCurrentSession());
}
use of org.mycore.common.MCRSession in project mycore by MyCoRe-Org.
the class MCRMetaHistoryItem method now.
static MCRMetaHistoryItem now(MCRObjectID id, MCRMetadataHistoryEventType type) {
MCRMetaHistoryItem historyItem = new MCRMetaHistoryItem();
historyItem.setId(id);
historyItem.setTime(Instant.now());
historyItem.setEventType(type);
if (MCRSessionMgr.hasCurrentSession()) {
MCRSession currentSession = MCRSessionMgr.getCurrentSession();
historyItem.setUserID(currentSession.getUserInformation().getUserID());
historyItem.setUserIP(currentSession.getCurrentIP());
}
return historyItem;
}
use of org.mycore.common.MCRSession 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();
}
use of org.mycore.common.MCRSession in project mycore by MyCoRe-Org.
the class MCRCommandLineInterface method whoami.
/**
* Prints out the current user.
*/
public static void whoami() {
MCRSession session = MCRSessionMgr.getCurrentSession();
String userName = session.getUserInformation().getUserID();
output("You are user " + userName);
}
Aggregations