@Override
public void retrieveRange(FineTime from, FineTime until, ObjectTypeList objectTypes,
Identifier compression, RetrieveRangeInteraction interaction) throws MALInteractionException, MALException {
final Dispatcher dispatcher = new Dispatcher(interaction);
long interactionTicket = interaction.getInteraction().getMessageHeader().getTransactionId();
dispatchers.put(interactionTicket, dispatcher);
lastSync.set(HelperTime.getTimestamp().getValue());
interaction.sendAcknowledgement(interactionTicket);
Runnable processQueriedObjs = dispatcher.getProcessingRunnable();
Runnable flushProcessedObjs = dispatcher.getFlushingRunnable();
executor.execute(processQueriedObjs);
executor.execute(flushProcessedObjs);
ArrayList<COMObjectEntity> perObjs;
for (int i = 0; i < objectTypes.size(); i++) {
ArchiveQuery archiveQuery = new ArchiveQuery();
archiveQuery.setStartTime(from);
archiveQuery.setEndTime(until);
archiveQuery.setDomain(null);
archiveQuery.setNetwork(null);
archiveQuery.setProvider(null);
archiveQuery.setRelated(new Long(0));
archiveQuery.setSource(null);
archiveQuery.setSortFieldName(null);
perObjs = manager.queryCOMObjectEntity(objectTypes.get(i), archiveQuery, null);
dispatcher.addObjects(perObjs);
}
dispatcher.setQueriesAreDone(true);
Logger.getLogger(ArchiveSyncProviderServiceImpl.class.getName()).log(Level.INFO,
"Stage 1: The objects were queried and are now being sent back to the consumer!");
}