private ModificationsToExecute getDeltasForStageOpen(AccessCertificationCampaignType campaign,
AccessCertificationStageType stage, CertificationHandler handler,
OpeningContext openingContext, final Task task, OperationResult result)
throws SchemaException, ObjectNotFoundException {
int stageNumber = campaign.getStageNumber();
int newStageNumber = stage.getNumber();
LOGGER.trace("getDeltasForStageOpen starting; campaign = {}, stage number = {}, new stage number = {}, iteration = {}",
ObjectTypeUtil.toShortStringLazy(campaign), stageNumber, newStageNumber, norm(campaign.getIteration()));
ModificationsToExecute rv = new ModificationsToExecute();
if (stageNumber == 0 && norm(campaign.getIteration()) == 1) {
getDeltasToCreateCases(campaign, stage, handler, rv, openingContext, task, result);
} else {
getDeltasToUpdateCases(campaign, stage, rv, openingContext, task, result);
}
rv.createNewBatch();
rv.add(createStageAddDelta(stage));
rv.add(createDeltasToRecordStageOpen(campaign, stage));
rv.add(updateHelper.getDeltasToCreateTriggersForTimedActions(campaign.getOid(), 0,
XmlTypeConverter.toDate(stage.getStartTimestamp()), XmlTypeConverter.toDate(stage.getDeadline()),
CertCampaignTypeUtil.findStageDefinition(campaign, newStageNumber).getTimedActions()));
if (LOGGER.isTraceEnabled()) {
List<ItemDelta<?, ?>> allDeltas = rv.getAllDeltas();
LOGGER.trace("getDeltasForStageOpen finishing, returning {} deltas (in {} batches):\n{}",
allDeltas.size(), rv.batches.size(), DebugUtil.debugDump(allDeltas));
}
return rv;
}