package edu.umd.rhsmith.diads.meater.core.app.components.media.sets; import edu.umd.rhsmith.diads.meater.core.app.components.media.MediaProcessor; public abstract class BaseMediaSetUpdater<M> implements MediaSetUpdater<M> { private final MediaProcessor<M> adder; private final MediaProcessor<M> remover; public BaseMediaSetUpdater() throws IllegalArgumentException { this.adder = new MediaProcessor<M>() { @Override public boolean processMedia(M media) { return add(media); } @Override public Class<M> getMediaClass() { return BaseMediaSetUpdater.this.getMediaClass(); } @Override public String getProcessorName() { return BaseMediaSetUpdater.this.getAdderName(); } }; this.remover = new MediaProcessor<M>() { @Override public boolean processMedia(M media) { return remove(media); } @Override public Class<M> getMediaClass() { return BaseMediaSetUpdater.this.getMediaClass(); } @Override public String getProcessorName() { return BaseMediaSetUpdater.this.getRemoverName(); } }; } public abstract String getAdderName(); public abstract String getRemoverName(); public abstract Class<M> getMediaClass(); @Override public abstract boolean add(M media); @Override public abstract boolean remove(M media); @Override public MediaProcessor<M> getMediaAdder() { return adder; } @Override public MediaProcessor<M> getMediaRemover() { return remover; } }