/* * 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.handlers; 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.Containerable; import com.evolveum.midpoint.prism.Item; import com.evolveum.midpoint.prism.PrismContainer; import com.evolveum.midpoint.schema.constants.ObjectTypes; import com.evolveum.midpoint.task.api.Task; import com.evolveum.midpoint.web.page.admin.certification.dto.CertCaseOrWorkItemDto; import com.evolveum.midpoint.web.util.ObjectTypeGuiDescriptor; import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationAssignmentCaseType; import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCaseType; import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType; import org.apache.commons.lang3.StringUtils; import org.apache.wicket.model.IModel; import javax.xml.namespace.QName; import java.util.ArrayList; import java.util.List; /** * @author mederly */ public class DirectAssignmentCertGuiHandler implements CertGuiHandler { @Override public String getCaseInfoButtonTitle(IModel<? extends CertCaseOrWorkItemDto> rowModel, PageBase page) { CertCaseOrWorkItemDto dto = rowModel.getObject(); AccessCertificationCaseType _case = dto.getCertCase(); if (!(_case instanceof AccessCertificationAssignmentCaseType)) { return null; // should not occur, TODO treat gracefully } AccessCertificationAssignmentCaseType assignmentCase = (AccessCertificationAssignmentCaseType) _case; AssignmentType assignment = assignmentCase.getAssignment(); List<String> infoList = new ArrayList<>(); String assignmentOrInducement; if (Boolean.TRUE.equals(assignmentCase.isIsInducement())) { assignmentOrInducement = page.createStringResource("PageCert.message.textInducement").getString(); } else { assignmentOrInducement = page.createStringResource("PageCert.message.textAssignment").getString(); } String targetType = getLocalizedTypeName(_case.getTargetRef().getType(), page); String targetName = dto.getTargetName(); String objectType = getLocalizedTypeName(_case.getObjectRef().getType(), page); String objectName = dto.getObjectName(); infoList.add(page.createStringResource("PageCert.message.assignment", assignmentOrInducement, emptyToDash(targetType), emptyToDash(targetName), emptyToDash(objectType), emptyToDash(objectName)).getString()); if (StringUtils.isNotEmpty(assignment.getDescription())) { infoList.add(page.createStringResource("PageCert.message.textDescription", assignment.getDescription()).getString()); } if (assignment.getOrder() != null) { infoList.add(page.createStringResource("PageCert.message.textOrder", assignment.getOrder()).getString()); } if (assignment.getConstruction() != null) { if (assignment.getConstruction().getKind() != null) { infoList.add(page.createStringResource("PageCert.message.textKind", page.createStringResource(assignment.getConstruction().getKind()).getString()).getString()); } if (assignment.getConstruction().getIntent() != null) { infoList.add(page.createStringResource("PageCert.message.textIntent", assignment.getConstruction().getIntent()).getString()); } } if (_case.getTargetRef().getRelation() != null) { infoList.add(page.createStringResource("PageCert.message.textRelation", _case.getTargetRef().getRelation().getLocalPart()).getString()); } Task task = page.createSimpleTask("dummy"); if (assignment.getOrgRef() != null) { String orgName = WebModelServiceUtils.resolveReferenceName(assignment.getOrgRef(), page, task, task.getResult()); infoList.add(page.createStringResource("PageCert.message.textOrg", orgName).getString()); } if (assignment.getTenantRef() != null) { String tenantName = WebModelServiceUtils.resolveReferenceName(assignment.getTenantRef(), page, task, task.getResult()); infoList.add(page.createStringResource("PageCert.message.textTenant", tenantName).getString()); } PrismContainer<? extends Containerable> extensionContainer = assignment.asPrismContainerValue().findContainer(AssignmentType.F_EXTENSION); if (extensionContainer != null && !extensionContainer.isEmpty()) { List<String> extensionItemNameList = new ArrayList<>(); for (Item extensionItem : extensionContainer.getValue().getItems()) { extensionItemNameList.add(extensionItem.getElementName().getLocalPart()); } infoList.add(page.createStringResource("PageCert.message.textExtensions", StringUtils.join(extensionItemNameList, ", ")).getString()); } if (assignment.getActivation() != null) { String validFrom = WebComponentUtil.formatDate(assignment.getActivation().getValidFrom()); if (validFrom != null) { infoList.add(page.createStringResource("PageCert.message.textValidFrom", validFrom).getString()); } String validTo = WebComponentUtil.formatDate(assignment.getActivation().getValidTo()); if (validTo != null) { infoList.add(page.createStringResource("PageCert.message.textValidTo", validTo).getString()); } if (assignment.getActivation().getAdministrativeStatus() != null) { infoList.add(page.createStringResource("PageCert.message.textAdministrativeState", page.createStringResource(assignment.getActivation().getAdministrativeStatus()).getString()).getString()); } } String rv = StringUtils.join(infoList, "<br/>"); return rv; } protected String getLocalizedTypeName(QName typeQName, PageBase page) { String targetTypeKey = ObjectTypeGuiDescriptor.getDescriptor(ObjectTypes.getObjectTypeFromTypeQName(typeQName)).getLocalizationKey(); return page.createStringResource(targetTypeKey).getString(); } private String emptyToDash(String s) { return StringUtils.isNotEmpty(s) ? s : "-"; } }