@NotNull public static AccessCertificationStageDefinitionType getCurrentStageDefinition(AccessCertificationCampaignType campaign) { return findStageDefinition(campaign, campaign.getStageNumber()); }
public static AccessCertificationStageType findCurrentStage(AccessCertificationCampaignType campaign) { return findStage(campaign, campaign.getStageNumber()); }
public Collection<AccessCertificationCaseType> getCasesAwaitingResponseFromActualReviewer() { List<AccessCertificationCaseType> rv = new ArrayList<>(); for (AccessCertificationCaseType aCase : cases) { if (awaitsResponseFrom(aCase, actualReviewer.getOid(), campaign.getStageNumber())) { rv.add(aCase); } } return rv; }
public String getStageShortName(AccessCertificationCampaignType campaign) { if (campaign.getState() == AccessCertificationCampaignStateType.IN_REMEDIATION) { return "remediation stage"; } else { return "stage " + campaign.getStageNumber() + "/" + CertCampaignTypeUtil.getNumberOfStages(campaign); } }
public AccessCertificationStageDefinitionType getCurrentStageDefinition() { if (campaign.getState() != IN_REVIEW_STAGE && campaign.getState() != REVIEW_STAGE_DONE) { return null; } return CertCampaignTypeUtil.findStageDefinition(campaign, campaign.getStageNumber()); }
private String formatStage(AccessCertificationCampaignType campaign) { String rv = campaign.getStageNumber() + "/" + CertCampaignTypeUtil.getNumberOfStages(campaign); AccessCertificationStageType stage = CertCampaignTypeUtil.findCurrentStage(campaign); if (StringUtils.isNotEmpty(stage.getName())) { rv += " (" + stage.getName() + ")"; } return rv; }
@SuppressWarnings("unused") public static boolean isCampaignClosed(AccessCertificationCampaignType campaign) { int currentStage = campaign.getStageNumber(); int stages = getNumberOfStages(campaign); return CLOSED.equals(campaign.getState()) || currentStage > stages; }
public static float getCasesDecidedPercentageCurrStageAllIterations(AccessCertificationCampaignType campaign) { return getCasesDecidedPercentage(campaign.getCase(), campaign.getStageNumber(), null, campaign.getState()); }
public static float getCasesCompletedPercentageCurrStageAllIterations(AccessCertificationCampaignType campaign) { return getCasesCompletedPercentage(campaign.getCase(), accountForClosingStates(campaign.getStageNumber(), campaign.getState()), null); }
public static float getWorkItemsCompletedPercentageCurrStageAllIterations(AccessCertificationCampaignType campaign) { return getWorkItemsCompletedPercentage(campaign.getCase(), accountForClosingStates(campaign.getStageNumber(), campaign.getState()), null); }
public static float getCasesDecidedPercentageCurrStageCurrIteration(AccessCertificationCampaignType campaign) { return getCasesDecidedPercentage(campaign.getCase(), campaign.getStageNumber(), norm(campaign.getIteration()), campaign.getState()); }
public static AccessCertificationStageType getCurrentStage(AccessCertificationCampaignType campaign) { for (AccessCertificationStageType stage : campaign.getStage()) { if (stage.getNumber() == campaign.getStageNumber() && norm(stage.getIteration()) == norm(campaign.getIteration())) { return stage; } } return null; }
public static float getWorkItemsCompletedPercentageCurrStageCurrIteration(AccessCertificationCampaignType campaign) { return getWorkItemsCompletedPercentage(campaign.getCase(), accountForClosingStates(campaign.getStageNumber(), campaign.getState()), norm(campaign.getIteration())); }
public static float getCasesCompletedPercentageCurrStageCurrIteration(AccessCertificationCampaignType campaign) { return getCasesCompletedPercentage(campaign.getCase(), accountForClosingStates(campaign.getStageNumber(), campaign.getState()), norm(campaign.getIteration())); }
private ItemDelta createStageEndTimeDelta(AccessCertificationCampaignType campaign, XMLGregorianCalendar now) throws SchemaException { AccessCertificationStageType stage = CertCampaignTypeUtil.findStage(campaign, campaign.getStageNumber()); Long stageId = stage.asPrismContainerValue().getId(); assert stageId != null; return prismContext.deltaFor(AccessCertificationCampaignType.class) .item(F_STAGE, stageId, F_END_TIMESTAMP).replace(now) .asItemDelta(); }
List<AccessCertificationResponseType> getOutcomesToStopOn(AccessCertificationCampaignType campaign) { List<AccessCertificationResponseType> rv; AccessCertificationStageDefinitionType stageDefinition = CertCampaignTypeUtil.getCurrentStageDefinition(campaign); if (!stageDefinition.getStopReviewOn().isEmpty() || !stageDefinition.getAdvanceToNextStageOn().isEmpty()) { rv = CertCampaignTypeUtil.getOutcomesToStopOn(stageDefinition.getStopReviewOn(), stageDefinition.getAdvanceToNextStageOn()); } else { AccessCertificationCaseReviewStrategyType reviewStrategy = campaign.getReviewStrategy(); if (reviewStrategy != null && (!reviewStrategy.getStopReviewOn().isEmpty() || !reviewStrategy.getAdvanceToNextStageOn().isEmpty())) { rv = CertCampaignTypeUtil.getOutcomesToStopOn(reviewStrategy.getStopReviewOn(), reviewStrategy.getAdvanceToNextStageOn()); } else { rv = getOverallOutcomeStrategy(campaign).getOutcomesToStopOn(); } } LOGGER.trace("Outcomes to stop on for campaign {}, stage {}: {}", toShortStringLazy(campaign), campaign.getStageNumber(), rv); return rv; }
protected void assertStateAndStage(AccessCertificationCampaignType campaign, AccessCertificationCampaignStateType state, int stage) { assertEquals("Unexpected campaign state", state, campaign.getState()); assertEquals("Unexpected stage number", stage, campaign.getStageNumber()); }
private void addUnansweredActiveCases(List<AccessCertificationCaseType> expectedCases, List<AccessCertificationCaseType> caseList, AccessCertificationCampaignType campaign) { for (AccessCertificationCaseType aCase : caseList) { if (aCase.getStageNumber() != campaign.getStageNumber()) { continue; } if (campaign.getState() != IN_REVIEW_STAGE) { continue; } boolean emptyDecisionFound = false; for (AccessCertificationWorkItemType workItem : aCase.getWorkItem()) { if (WorkItemTypeUtil.getOutcome(workItem) == null) { emptyDecisionFound = true; break; } } if (emptyDecisionFound) { LOGGER.info("Expecting case of {}:{}", campaign.getOid(), aCase.getId()); expectedCases.add(aCase); } } }
void openNextStage(AccessCertificationCampaignType campaign, CertificationHandler handler, Task task, OperationResult result) throws SchemaException, ObjectNotFoundException, ObjectAlreadyExistsException { boolean skipEmptyStages = norm(campaign.getIteration()) > 1; // TODO make configurable int requestedStageNumber = campaign.getStageNumber() + 1; for (;;) { OpeningContext openingContext = new OpeningContext(); AccessCertificationStageType stage = createStage(campaign, requestedStageNumber); ModificationsToExecute modifications = getDeltasForStageOpen(campaign, stage, handler, openingContext, task, result); if (!skipEmptyStages || openingContext.casesEnteringStage > 0) { updateHelper.modifyCampaignPreAuthorized(campaign.getOid(), modifications, task, result); afterStageOpen(campaign.getOid(), stage, task, result); // notifications, bookkeeping, ... return; } LOGGER.debug("No work items created, skipping to the next stage"); requestedStageNumber++; if (requestedStageNumber > CertCampaignTypeUtil.getNumberOfStages(campaign)) { result.recordWarning("No more (non-empty) stages available"); return; } } }
private void afterStageOpen(String campaignOid, AccessCertificationStageType newStage, Task task, OperationResult result) throws SchemaException, ObjectNotFoundException, ObjectAlreadyExistsException { // notifications final AccessCertificationCampaignType campaign = generalHelper.getCampaign(campaignOid, null, task, result); if (campaign.getStageNumber() == 1) { eventHelper.onCampaignStart(campaign, task, result); } eventHelper.onCampaignStageStart(campaign, task, result); updateHelper.notifyReviewers(campaign, false, task, result); if (newStage.getNumber() == 1 && norm(campaign.getIteration()) == 1 && campaign.getDefinitionRef() != null) { List<ItemDelta<?,?>> deltas = prismContext.deltaFor(AccessCertificationDefinitionType.class) .item(F_LAST_CAMPAIGN_STARTED_TIMESTAMP).replace(clock.currentTimeXMLGregorianCalendar()) .asItemDeltas(); updateHelper.modifyObjectPreAuthorized(AccessCertificationDefinitionType.class, campaign.getDefinitionRef().getOid(), deltas, task, result); } }