package org.atlasapi.persistence.content; import org.atlasapi.media.entity.Container; import org.atlasapi.media.entity.Content; import org.atlasapi.media.entity.Item; import static com.google.common.base.Preconditions.checkNotNull; public class IdSettingContentWriter implements ContentWriter { private final ContentWriter delegate; private final LookupBackedContentIdGenerator lookupBackedContentIdGenerator; public IdSettingContentWriter(ContentWriter delegate, LookupBackedContentIdGenerator lookupBackedContentIdGenerator) { this.delegate = checkNotNull(delegate); this.lookupBackedContentIdGenerator = checkNotNull(lookupBackedContentIdGenerator); } @Override public Item createOrUpdate(Item item) { return delegate.createOrUpdate(ensureId(item)); } private <T extends Content> T ensureId(T content) { content.setId(lookupBackedContentIdGenerator.getId(content)); return content; } @Override public void createOrUpdate(Container container) { delegate.createOrUpdate(ensureId(container)); } }