/* * Copyright (c) 2010-2015 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.evolveum.midpoint.web.page.admin.certification.dto; import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.CertCampaignTypeUtil; import com.evolveum.midpoint.task.api.Task; import com.evolveum.midpoint.web.component.util.Selectable; import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCampaignStateType; import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCampaignType; import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationStageType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; import static com.evolveum.midpoint.gui.api.page.PageBase.createEnumResourceKey; import static com.evolveum.midpoint.gui.api.page.PageBase.createStringResourceStatic; /** * @author mederly */ public class CertCampaignDto extends Selectable { public static final String F_NAME = "name"; public static final String F_DESCRIPTION = "description"; public static final String F_OWNER_NAME = "ownerName"; public static final String F_CURRENT_STATE = "currentState"; public static final String F_NUMBER_OF_STAGES = "numberOfStages"; public static final String F_CAMPAIGN_START = "campaignStart"; public static final String F_CAMPAIGN_END = "campaignEnd"; public static final String F_STAGE_START = "stageStart"; public static final String F_STAGE_DEADLINE = "stageDeadline"; public static final String F_ESCALATION_LEVEL_INFO = "escalationLevelInfo"; private AccessCertificationCampaignType campaign; // TODO consider replacing this by constituent primitive data items private String ownerName; private String currentStateName; public CertCampaignDto(AccessCertificationCampaignType campaign, PageBase page, Task task, OperationResult result) { this.campaign = campaign; ownerName = resolveOwnerName(campaign.getOwnerRef(), page, task, result); currentStateName = resolveCurrentStateName(page); } public String getOwnerName() { return ownerName; } public static String resolveOwnerName(ObjectReferenceType ownerRef, PageBase page, Task task, OperationResult result) { if (ownerRef == null) { return null; } PrismObject<? extends ObjectType> ownerObject = WebModelServiceUtils.resolveReferenceRaw(ownerRef, page, task, result); if (ownerObject == null) { return null; } ObjectType owner = ownerObject.asObjectable(); if (owner instanceof UserType) { UserType user = (UserType) owner; return WebComponentUtil.getName(user) + " (" + WebComponentUtil.getOrigStringFromPoly(user.getFullName()) + ")"; } else { return WebComponentUtil.getName(owner); } } public String getName() { return WebComponentUtil.getName(campaign); } public String getDescription() { return campaign.getDescription(); } public String getCurrentState() { return currentStateName; } public int getNumberOfStages() { return CertCampaignTypeUtil.getNumberOfStages(campaign); } private String resolveCurrentStateName(PageBase page) { int stageNumber = campaign.getStageNumber(); AccessCertificationCampaignStateType state = campaign.getState(); switch (state) { case CREATED: case IN_REMEDIATION: case CLOSED: return createStringResourceStatic(page, state).getString(); case IN_REVIEW_STAGE: case REVIEW_STAGE_DONE: AccessCertificationStageType stage = CertCampaignTypeUtil.getCurrentStage(campaign); String stageName = stage != null ? stage.getName() : null; if (stageName != null) { String key = createEnumResourceKey(state) + "_FULL"; return createStringResourceStatic(page, key, stageNumber, stageName).getString(); } else { String key = createEnumResourceKey(state); return createStringResourceStatic(page, key).getString() + " " + stageNumber; } default: return null; // todo warning/error? } } public String getCampaignStart() { return WebComponentUtil.formatDate(campaign.getStartTimestamp()); } public String getCampaignEnd() { return WebComponentUtil.formatDate(campaign.getEndTimestamp()); } public String getStageStart() { AccessCertificationStageType stage = CertCampaignTypeUtil.getCurrentStage(campaign); return stage != null ? WebComponentUtil.formatDate(stage.getStartTimestamp()) : null; } public String getStageDeadline() { AccessCertificationStageType stage = CertCampaignTypeUtil.getCurrentStage(campaign); return stage != null ? WebComponentUtil.formatDate(stage.getDeadline()) : null; } public String getStageEnd() { AccessCertificationStageType stage = CertCampaignTypeUtil.getCurrentStage(campaign); return stage != null ? WebComponentUtil.formatDate(stage.getEndTimestamp()) : null; } public AccessCertificationCampaignStateType getState() { return campaign.getState(); } public int getCurrentStageNumber() { return campaign.getStageNumber(); } public String getHandlerUri() { return campaign.getHandlerUri(); } public String getEscalationLevelInfo() { return CertCampaignTypeUtil.getEscalationLevelInfo(campaign); } }