package com.tyndalehouse.step.core.data.entities.impl;
import java.util.HashMap;
import java.util.Map;
import com.google.inject.Binder;
import com.google.inject.Guice;
import com.google.inject.Module;
import com.tyndalehouse.step.core.data.EntityIndexReader;
import com.tyndalehouse.step.core.service.jsword.JSwordPassageService;
/**
* a test entity manager, which gives us indexes in memory
*
* @author chrisburrell
*
*/
public class TestEntityManager extends EntityManagerImpl {
private final Map<String, EntityIndexReader> indexReaders;
/**
* constructs a memory mapped entity manager
*/
public TestEntityManager() {
super(true, "test/step/entities/", Guice.createInjector(new Module() {
@Override
public void configure(final Binder binder) {
binder.bind(JSwordPassageService.class).to(MockJSwordPassageServiceImpl.class);
}
}));
this.indexReaders = new HashMap<String, EntityIndexReader>();
super.setIndexReaders(this.indexReaders);
}
@Override
public EntityIndexReader getReader(final String entity) {
EntityIndexReader entityIndexReader = this.indexReaders.get(entity);
if (entityIndexReader == null) {
entityIndexReader = new TestEntityIndexReaderImpl(getConfig(entity));
this.indexReaders.put(entity, entityIndexReader);
}
return entityIndexReader;
}
/**
* @param entity the entity name
* @return entity writer
*/
@Override
public EntityIndexWriterImpl getNewWriter(final String entity) {
return new TestEntityIndexWriterImpl(this, entity);
}
}