package org.dodgybits.shuffle.android.core.model.persistence;
import org.dodgybits.shuffle.android.core.model.Entity;
import org.dodgybits.shuffle.android.core.model.Id;
import org.dodgybits.shuffle.android.core.util.ItemCache;
import org.dodgybits.shuffle.android.core.util.ItemCache.ValueBuilder;
import roboguice.inject.ContextScoped;
import android.util.Log;
import com.google.inject.Inject;
@ContextScoped
public class DefaultEntityCache<E extends Entity> implements EntityCache<E> {
private static final String cTag = "DefaultEntityCache";
private EntityPersister<E> mPersister;
private Builder mBuilder;
private ItemCache<Id, E> mCache;
@Inject
public DefaultEntityCache(EntityPersister<E> persister) {
Log.d(cTag, "Created entity cache with " + persister);
mPersister = persister;
mBuilder = new Builder();
mCache = new ItemCache<Id, E>(mBuilder);
}
public E findById(Id localId) {
E entity = null;
if (localId.isInitialised()) {
entity = mCache.get(localId);
}
return entity;
}
private class Builder implements ValueBuilder<Id, E> {
@Override
public E build(Id key) {
return mPersister.findById(key);
}
}
}