package polly.rx.core.orion.datasource;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import polly.rx.core.orion.QuadrantEvent;
import polly.rx.core.orion.QuadrantProvider;
import polly.rx.core.orion.model.Sector;
import polly.rx.core.orion.model.SectorType;
import polly.rx.entities.DBQuadrant;
import polly.rx.entities.DBSector;
import de.skuzzle.polly.sdk.PersistenceManagerV2;
import de.skuzzle.polly.sdk.PersistenceManagerV2.Param;
import de.skuzzle.polly.tools.collections.TypeMappingList;
public class DBQuadrantProvider implements QuadrantProvider {
private final PersistenceManagerV2 persistence;
public DBQuadrantProvider(PersistenceManagerV2 persistence) {
this.persistence = persistence;
}
@Override
public List<String> getAllQuadrantNames() {
final Collection<DBQuadrant> quads = getAllQuadrants();
final List<String> names = new ArrayList<>(quads.size());
for (final DBQuadrant quad : quads) {
names.add(quad.getName());
}
return names;
}
@Override
public List<Sector> getAllSectors() {
final List<Sector> result = new TypeMappingList<>(
this.persistence.atomic().findList(DBSector.class,
DBSector.QUERY_ALL_SECTORS));
return result;
}
@Override
public List<DBSector> getEntryPortals() {
return this.persistence.atomic().findList(DBSector.class,
DBSector.QUERY_SECTOR_BY_TYPE, new Param(SectorType.EINTRITTS_PORTAL));
}
@Override
public DBQuadrant getQuadrant(Sector sector) {
return this.getQuadrant(sector.getQuadName());
}
@Override
public DBQuadrant getQuadrant(String name) {
name = name.trim();
DBQuadrant quad = this.persistence.atomic().findSingle(DBQuadrant.class,
DBQuadrant.QUERY_QUADRANT_BY_NAME, new Param(name));
if (quad == null) {
quad = new DBQuadrant(name);
}
return quad;
}
@Override
public List<DBQuadrant> getAllQuadrants() {
return this.persistence.atomic().findList(DBQuadrant.class,
DBQuadrant.QUERY_ALL_QUADRANTS);
}
@Override
public void quadrantDeleted(QuadrantEvent e) {}
@Override
public void quadrantAdded(QuadrantEvent e) {}
@Override
public void sectorsAdded(QuadrantEvent e) {}
@Override
public void sectorsUpdated(QuadrantEvent e) {}
}