/* * Copyright (c) 2010-2013 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.notifications.api.events; import com.evolveum.midpoint.notifications.api.OperationStatus; import com.evolveum.midpoint.prism.delta.ChangeType; import com.evolveum.midpoint.prism.delta.ObjectDelta; import com.evolveum.midpoint.prism.path.ItemPath; import com.evolveum.midpoint.provisioning.api.ResourceOperationDescription; import com.evolveum.midpoint.task.api.LightweightIdentifierGenerator; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.xml.ns._public.common.common_3.EventCategoryType; import com.evolveum.midpoint.xml.ns._public.common.common_3.EventOperationType; import com.evolveum.midpoint.xml.ns._public.common.common_3.EventStatusType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowKindType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType; import com.evolveum.prism.xml.ns._public.types_3.PolyStringType; import org.apache.commons.lang.StringUtils; /** * @author mederly */ public class ResourceObjectEvent extends BaseEvent { private static final Trace LOGGER = TraceManager.getTrace(ResourceObjectEvent.class); private OperationStatus operationStatus; // status of the operation private ResourceOperationDescription accountOperationDescription; private ChangeType changeType; // the following two are currently unused private boolean activationRequested; private boolean deactivationRequested; public ResourceObjectEvent(LightweightIdentifierGenerator lightweightIdentifierGenerator) { super(lightweightIdentifierGenerator); } public ResourceOperationDescription getAccountOperationDescription() { return accountOperationDescription; } public void setAccountOperationDescription(ResourceOperationDescription accountOperationDescription) { this.accountOperationDescription = accountOperationDescription; } public boolean isActivationRequested() { return activationRequested; } public void setActivationRequested(boolean activationRequested) { this.activationRequested = activationRequested; } public boolean isDeactivationRequested() { return deactivationRequested; } public void setDeactivationRequested(boolean deactivationRequested) { this.deactivationRequested = deactivationRequested; } public ChangeType getChangeType() { return changeType; } public void setChangeType(ChangeType changeType) { this.changeType = changeType; } @Override public boolean isOperationType(EventOperationType eventOperationType) { return changeTypeMatchesOperationType(changeType, eventOperationType); } @Override public boolean isCategoryType(EventCategoryType eventCategoryType) { return eventCategoryType == EventCategoryType.RESOURCE_OBJECT_EVENT; } public boolean isShadowKind(ShadowKindType shadowKindType) { ShadowKindType actualKind = accountOperationDescription.getCurrentShadow().asObjectable().getKind(); if (actualKind != null) { return actualKind.equals(shadowKindType); } else { return ShadowKindType.ACCOUNT.equals(shadowKindType); } } public boolean isShadowIntent(String intent) { if (StringUtils.isNotEmpty(intent)) { return intent.equals(accountOperationDescription.getCurrentShadow().asObjectable().getIntent()); } else { return StringUtils.isEmpty(accountOperationDescription.getCurrentShadow().asObjectable().getIntent()); } } public ObjectDelta<ShadowType> getShadowDelta() { return (ObjectDelta<ShadowType>) accountOperationDescription.getObjectDelta(); } public OperationStatus getOperationStatus() { return operationStatus; } public void setOperationStatus(OperationStatus operationStatus) { this.operationStatus = operationStatus; } @Override public boolean isStatusType(EventStatusType eventStatusType) { return operationStatus.matchesEventStatusType(eventStatusType); } @Override public boolean isRelatedToItem(ItemPath itemPath) { return containsItem(getShadowDelta(), itemPath); } @Override public String toString() { return "ResourceObjectEvent{" + "base=" + super.toString() + ", changeType=" + changeType + ", operationStatus=" + operationStatus + '}'; } public String getShadowName() { return getNotificationFunctions().getShadowName(getAccountOperationDescription().getCurrentShadow()); } public PolyStringType getResourceName() { return getAccountOperationDescription().getResource().asObjectable().getName(); } public String getResourceOid() { return getAccountOperationDescription().getResource().getOid(); } public String getPlaintextPassword() { ObjectDelta delta = getAccountOperationDescription().getObjectDelta(); return delta != null ? getNotificationFunctions().getPlaintextPasswordFromDelta(delta) : null; } public String getContentAsFormattedList() { return getContentAsFormattedList(false, false); } public String getContentAsFormattedList(boolean showSynchronizationItems, boolean showAuxiliaryAttributes) { return getNotificationFunctions().getContentAsFormattedList(this, showSynchronizationItems, showAuxiliaryAttributes); } }