public static AccessCertificationDefinitionType getDefinition(AccessCertificationCampaignType campaign) { if (campaign.getDefinitionRef() == null) { throw new IllegalStateException("No definition reference in " + ObjectTypeUtil.toShortString(campaign)); } PrismReferenceValue referenceValue = campaign.getDefinitionRef().asReferenceValue(); if (referenceValue.getObject() == null) { throw new IllegalStateException("No definition object in " + ObjectTypeUtil.toShortString(campaign)); } return (AccessCertificationDefinitionType) (referenceValue.getObject().asObjectable()); }
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); } }
protected void assertDefinitionAndOwner(AccessCertificationCampaignType campaign, AccessCertificationDefinitionType certificationDefinition, String expectedOwnerOid) { assertRefEquals("Unexpected ownerRef", ObjectTypeUtil.createObjectRef(expectedOwnerOid, ObjectTypes.USER), campaign.getOwnerRef()); assertRefEquals("Unexpected definitionRef", ObjectTypeUtil.createObjectRef(certificationDefinition, prismContext), campaign.getDefinitionRef()); }
if (campaign.getDefinitionRef() != null) { String definitionOid = campaign.getDefinitionRef().getOid(); PrismObject<AccessCertificationDefinitionForReportType> definitionObject = definitionsForReportMap.get(definitionOid); if (definitionObject != null) {
void closeCampaign(AccessCertificationCampaignType campaign, Task task, OperationResult result) throws ObjectAlreadyExistsException, ObjectNotFoundException, SchemaException { LOGGER.info("Closing campaign {}", ObjectTypeUtil.toShortString(campaign)); XMLGregorianCalendar now = clock.currentTimeXMLGregorianCalendar(); int lastStageNumber = CertCampaignTypeUtil.getNumberOfStages(campaign); // TODO issue a warning if we are not in a correct state ModificationsToExecute modifications = new ModificationsToExecute(); modifications.add(updateHelper.createStageNumberDelta(lastStageNumber + 1)); modifications.add(updateHelper.createStateDelta(CLOSED)); modifications.add(updateHelper.createTriggerReplaceDelta(createTriggersForCampaignClose(campaign, result))); modifications.add(updateHelper.createEndTimeDelta(now)); createWorkItemsCloseDeltas(campaign, modifications, now, result); updateHelper.modifyCampaignPreAuthorized(campaign.getOid(), modifications, task, result); AccessCertificationCampaignType updatedCampaign = updateHelper.refreshCampaign(campaign, result); eventHelper.onCampaignEnd(updatedCampaign, task, result); if (campaign.getDefinitionRef() != null) { List<ItemDelta<?,?>> definitionDeltas = prismContext.deltaFor(AccessCertificationDefinitionType.class) .item(F_LAST_CAMPAIGN_CLOSED_TIMESTAMP).replace(now) .asItemDeltas(); updateHelper.modifyObjectPreAuthorized(AccessCertificationDefinitionType.class, campaign.getDefinitionRef().getOid(), definitionDeltas, task, result); } }
public static void copyFromJAXB(AccessCertificationCampaignType jaxb, RAccessCertificationCampaign repo, RepositoryContext repositoryContext, IdGeneratorResult generatorResult) throws DtoTranslationException { copyAssignmentHolderInformationFromJAXB(jaxb, repo, repositoryContext, generatorResult); repo.setNameCopy(RPolyString.copyFromJAXB(jaxb.getName())); repo.setDefinitionRef(RUtil.jaxbRefToEmbeddedRepoRef(jaxb.getDefinitionRef(), repositoryContext.relationRegistry)); List<AccessCertificationCaseType> cases = jaxb.getCase(); if (!cases.isEmpty()) { for (AccessCertificationCaseType case1 : cases) { RAccessCertificationCase rCase = RAccessCertificationCase.toRepo(repo, case1, repositoryContext); rCase.setTransient(generatorResult.isTransient(case1.asPrismContainerValue())); // redundant? repo.getCase().add(rCase); } } repo.setOwnerRefCampaign(RUtil.jaxbRefToEmbeddedRepoRef(jaxb.getOwnerRef(), repositoryContext.relationRegistry)); repo.setHandlerUri(jaxb.getHandlerUri()); repo.setStart(jaxb.getStartTimestamp()); repo.setEnd(jaxb.getEndTimestamp()); repo.setState(RUtil.getRepoEnumValue(jaxb.getState(), RAccessCertificationCampaignState.class)); repo.setIteration(norm(jaxb.getIteration())); repo.setStageNumber(jaxb.getStageNumber()); } }
assertEquals("Wrong # of campaigns", 2, campaigns.size()); AccessCertificationCampaignType campaign = campaigns.stream() .filter(c -> MODIFICATION_CERT_DEF_OID.equals(c.asObjectable().getDefinitionRef().getOid())) .findFirst() .orElseThrow(() -> new AssertionError("No modification-triggered campaign")).asObjectable();