package org.atlasapi.persistence.content; import java.util.Collections; import org.atlasapi.media.entity.Container; import org.atlasapi.media.entity.Item; import org.atlasapi.persistence.content.ContentListener.ChangeType; import com.google.common.collect.ImmutableList; public class EventFiringContentWriter implements ContentWriter { private final ContentWriter delegate; private final ContentListener listener; public EventFiringContentWriter(ContentWriter delegate, ContentListener listener) { this.delegate = delegate; this.listener = listener; } @Override public void createOrUpdate(Container container) { delegate.createOrUpdate(container); notifyListener(container); } @Override public Item createOrUpdate(Item item) { Item writtenItem = delegate.createOrUpdate(item); notifyListener(item); return writtenItem; } private void notifyListener(Container container) { listener.brandChanged(ImmutableList.<Container>of(container), ChangeType.CONTENT_UPDATE); } private void notifyListener(Item item) { listener.itemChanged(Collections.singletonList(item), ChangeType.CONTENT_UPDATE); } }