/** * Handles only single elements from the {@link PersistentEventLogLoader} * in order to keep transactions short and safe. * * @see <a href="https://trac.openmicroscopy.org/ome/ticket/5814">ticket:5814</a> */ public void handleEventLog(EventLog eventLog, Session session, ServiceFactory sf) { final long start = System.currentTimeMillis(); final boolean handled = process(eventLog.getEntityId(), sf, session); final String msg = String.format("EventLog:%s(entityId=%s) [%s ms.]", eventLog.getId(), eventLog.getEntityId(), (System.currentTimeMillis() - start)); if (handled) { log.info("HANDLED "+ msg); } else { log.debug("SKIPPED "+ msg); } }
@Override protected EventLog query() { long current_id = getCurrentId(); EventLog el = nextEventLog(current_id); if (el != null) { setCurrentId(el.getId()); } return el; }
/** * Loads {@link #reps} {@link EventLog} instances and returns them. * This is the first phase used by the {@link PixelDataThread}. A later * phase will invoke {@link #handleEventLog(EventLog, Session, ServiceFactory)} * with the returned instance. */ @Transactional(readOnly = false) public Object doWork(Session session, ServiceFactory sf) { List<EventLog> logs = new ArrayList<EventLog>(); while (logs.size() < this.reps) { try { logs.add(loader.next()); } catch (NoSuchElementException nsee) { if (!loader.hasNext()) { break; }; } } // Preload for (EventLog el : logs) { EventLog live = (EventLog) session.get(EventLog.class, el.getId()); Event evt = live.getEvent(); el.setEvent(evt); } return logs; }
@Override public Object retrieve(String field) { if (field == null) { return null; } else if (field.equals(ID)) { return getId(); } else if (field.equals(ENTITYID)) { return getEntityId(); } else if (field.equals(ENTITYTYPE)) { return getEntityType(); } else if (field.equals(ACTION)) { return getAction(); } else if (field.equals(EVENT)) { return getEvent(); } else if (field.equals(DETAILS)) { return getDetails(); } else { if (_dynamicFields != null) { return _dynamicFields.get(field); } return null; } }
@Override protected EventLog query() { if (max < 0) { final IObject lastLog = lastEventLog(); max = lastLog.getId(); } EventLog el = nextEventLog(previous); if (el == null) { previous = Long.MAX_VALUE; } else { previous = el.getId(); } if (previous >= max) { more = false; } return el; }
if (loader instanceof PersistentEventLogLoader) { long currId = ((PersistentEventLogLoader) loader).getCurrentId(); long lastId = loader.lastEventLog().getId(); String which = "~"; double perc = 0.0f;