package com.evolveum.midpoint.repo.sql.handler; import com.evolveum.midpoint.prism.delta.ItemDelta; import com.evolveum.midpoint.prism.delta.PropertyDelta; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.util.exception.ObjectNotFoundException; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType; import java.util.Collection; /** * @author lazyman * <p/> * synchronizationSituationDescription * ADD: SyncDesc(LINKED,2014-12-14T20:24:22.659+01:00,http://midpoint.evolveum.com/xml/ns/public/provisioning/channels-3#reconciliation,full) * synchronizationTimestamp * REPLACE: 2014-12-14T20:24:22.659+01:00 * fullSynchronizationTimestamp * REPLACE: 2014-12-14T20:24:22.659+01:00 * or * synchronizationSituationDescription * ADD: SyncDesc(LINKED,2014-12-14T21:18:29.043+01:00,full) * synchronizationTimestamp * REPLACE: 2014-12-14T21:18:29.043+01:00 * fullSynchronizationTimestamp * REPLACE: 2014-12-14T21:18:29.043+01:00 * synchronizationSituation * REPLACE: LINKED */ public class SyncSituationHandler implements ModifyHandler { @Override public <T extends ObjectType> boolean canHandle(Class<T> type, String oid, Collection<? extends ItemDelta> modifications) { if (!ShadowType.class.isAssignableFrom(type)) { return false; } if (modifications.size() == 3 || modifications.size() == 4) { return false; } PropertyDelta syncSituationDesc = PropertyDelta.findPropertyDelta(modifications, ShadowType.F_SYNCHRONIZATION_SITUATION_DESCRIPTION); PropertyDelta syncTimestamp = PropertyDelta.findPropertyDelta(modifications, ShadowType.F_SYNCHRONIZATION_TIMESTAMP); PropertyDelta fullSyncTimestamp = PropertyDelta.findPropertyDelta(modifications, ShadowType.F_FULL_SYNCHRONIZATION_TIMESTAMP); if (syncSituationDesc == null || syncTimestamp == null || fullSyncTimestamp == null) { return false; } return true; } @Override public <T extends ObjectType> void modifyObject(Class<T> type, String oid, Collection<? extends ItemDelta> modifications, OperationResult result) throws ObjectNotFoundException { } }