package org.opendaylight.controller.md.sal.common.impl.service; import java.util.Map; import java.util.Set; import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent; import org.opendaylight.controller.md.sal.common.api.data.DataModification; import org.opendaylight.yangtools.concepts.Path; import com.google.common.base.Predicate; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Maps; import com.google.common.collect.Sets; public final class ImmutableDataChangeEvent
, D> implements DataChangeEvent
{ private final D updatedOperationalSubtree; private final Map
updatedOperational; private final D updatedConfigurationSubtree; private final Map
updatedConfiguration; private final Set
removedOperational; private final Set
removedConfiguration; private final D originalOperationalSubtree; private final Map
originalOperational; private final D originalConfigurationSubtree; private final Map
originalConfiguration; private final Map
createdOperational; private final Map
createdConfiguration; private ImmutableDataChangeEvent(final Builder
builder) { createdConfiguration = builder.getCreatedConfiguration().build(); createdOperational = builder.getCreatedOperational().build(); originalConfiguration = builder.getOriginalConfiguration().build(); originalConfigurationSubtree = builder.getOriginalConfigurationSubtree(); originalOperational = builder.getOriginalOperational().build(); originalOperationalSubtree = builder.getOriginalOperationalSubtree(); removedConfiguration = builder.getRemovedConfiguration().build(); removedOperational = builder.getRemovedOperational().build(); updatedConfiguration = builder.getUpdatedConfiguration().build(); updatedConfigurationSubtree = builder.getUpdatedConfigurationSubtree(); updatedOperational = builder.getUpdatedOperational().build(); updatedOperationalSubtree = builder.getUpdatedOperationalSubtree(); } @Override public Map
getCreatedConfigurationData() { return createdConfiguration; } @Override public Map
getCreatedOperationalData() { return createdOperational; } @Override public Map
getOriginalConfigurationData() { return originalConfiguration; } @Override public D getOriginalConfigurationSubtree() { return originalConfigurationSubtree; } @Override public Map
getOriginalOperationalData() { return originalOperational; } @Override public D getOriginalOperationalSubtree() { return originalOperationalSubtree; } @Override public Set
getRemovedConfigurationData() { return removedConfiguration; } @Override public Set
getRemovedOperationalData() { return removedOperational; } @Override public Map
getUpdatedConfigurationData() { return updatedConfiguration; } @Override public D getUpdatedConfigurationSubtree() { return updatedConfigurationSubtree; } @Override public Map
getUpdatedOperationalData() { return updatedOperational; } @Override public D getUpdatedOperationalSubtree() { return updatedOperationalSubtree; } public static final
,D> Builder
builder() { return new Builder<>(); } public static final class Builder
,D> { private D updatedOperationalSubtree; private D originalOperationalSubtree; private D originalConfigurationSubtree; private D updatedConfigurationSubtree; private final ImmutableMap.Builder
updatedOperational = ImmutableMap.builder(); private final ImmutableMap.Builder
updatedConfiguration = ImmutableMap.builder(); private final ImmutableSet.Builder
removedOperational = ImmutableSet.builder(); private final ImmutableSet.Builder
removedConfiguration = ImmutableSet.builder(); private final ImmutableMap.Builder
originalOperational = ImmutableMap.builder(); private final ImmutableMap.Builder
originalConfiguration = ImmutableMap.builder(); private final ImmutableMap.Builder
createdOperational = ImmutableMap.builder(); private final ImmutableMap.Builder
createdConfiguration = ImmutableMap.builder(); protected Builder
addTransaction(final DataModification
data, final Predicate
keyFilter) { updatedOperational.putAll(Maps.filterKeys(data.getUpdatedOperationalData(), keyFilter)); updatedConfiguration.putAll(Maps.filterKeys(data.getUpdatedConfigurationData(), keyFilter)); originalConfiguration.putAll(Maps.filterKeys(data.getOriginalConfigurationData(), keyFilter)); originalOperational.putAll(Maps.filterKeys(data.getOriginalOperationalData(), keyFilter)); createdOperational.putAll(Maps.filterKeys(data.getCreatedOperationalData(), keyFilter)); createdConfiguration.putAll(Maps.filterKeys(data.getCreatedConfigurationData(), keyFilter)); removedOperational.addAll(Sets.filter(data.getRemovedOperationalData(), keyFilter)); removedConfiguration.addAll(Sets.filter(data.getRemovedConfigurationData(), keyFilter)); return this; } protected Builder
addConfigurationChangeSet(final RootedChangeSet
changeSet) { if(changeSet == null) { return this; } originalConfiguration.putAll(changeSet.getOriginal()); createdConfiguration.putAll(changeSet.getCreated()); updatedConfiguration.putAll(changeSet.getUpdated()); removedConfiguration.addAll(changeSet.getRemoved()); return this; } protected Builder
addOperationalChangeSet(final RootedChangeSet
changeSet) { if(changeSet == null) { return this; } originalOperational.putAll(changeSet.getOriginal()); createdOperational.putAll(changeSet.getCreated()); updatedOperational.putAll(changeSet.getUpdated()); removedOperational.addAll(changeSet.getRemoved()); return this; } public ImmutableDataChangeEvent
build() { return new ImmutableDataChangeEvent
(this); } protected D getUpdatedOperationalSubtree() { return updatedOperationalSubtree; } public Builder
setUpdatedOperationalSubtree(final D updatedOperationalSubtree) { this.updatedOperationalSubtree = updatedOperationalSubtree; return this; } protected D getOriginalOperationalSubtree() { return originalOperationalSubtree; } public Builder
setOriginalOperationalSubtree(final D originalOperationalSubtree) { this.originalOperationalSubtree = originalOperationalSubtree; return this; } protected D getOriginalConfigurationSubtree() { return originalConfigurationSubtree; } public Builder
setOriginalConfigurationSubtree(final D originalConfigurationSubtree) { this.originalConfigurationSubtree = originalConfigurationSubtree; return this; } protected D getUpdatedConfigurationSubtree() { return updatedConfigurationSubtree; } public Builder
setUpdatedConfigurationSubtree(final D updatedConfigurationSubtree) { this.updatedConfigurationSubtree = updatedConfigurationSubtree; return this; } protected ImmutableMap.Builder
getUpdatedOperational() { return updatedOperational; } protected ImmutableMap.Builder
getUpdatedConfiguration() { return updatedConfiguration; } protected ImmutableSet.Builder
getRemovedOperational() { return removedOperational; } protected ImmutableSet.Builder
getRemovedConfiguration() { return removedConfiguration; } protected ImmutableMap.Builder
getOriginalOperational() { return originalOperational; } protected ImmutableMap.Builder
getOriginalConfiguration() { return originalConfiguration; } protected ImmutableMap.Builder
getCreatedOperational() { return createdOperational; } protected ImmutableMap.Builder
getCreatedConfiguration() { return createdConfiguration; } public Builder
putOriginalOperational(final Map extends P, ? extends D> originalData) { originalOperational.putAll(originalData); return this; } public Builder
putCreatedOperational(final Map extends P, ? extends D> originalData) { createdOperational.putAll(originalData); return this; } public Builder
putUpdatedOperational(final Map extends P, ? extends D> originalData) { updatedOperational.putAll(originalData); return this; } public Builder
putRemovedOperational(final Set extends P> originalData) { removedOperational.addAll(originalData); return this; } } }