package org.activityinfo.server.geo;
import com.google.common.collect.Lists;
import org.activityinfo.server.database.hibernate.entity.AdminEntity;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import java.util.List;
public class MysqlGeometryProvider implements AdminGeometryProvider {
private final Provider<EntityManager> em;
@Inject
public MysqlGeometryProvider(Provider<EntityManager> em) {
super();
this.em = em;
}
@Override
public List<AdminGeo> getGeometries(int adminLevelId) {
List<AdminEntity> entityList = em.get()
.createQuery(
"select e from AdminEntity e where e.level.id = :levelId and e" +
".deleted = false and e.geometry is not null")
.setParameter("levelId", adminLevelId)
.getResultList();
List<AdminGeo> resultList = Lists.newArrayList();
for (AdminEntity entity : entityList) {
resultList.add(new AdminGeo(entity.getId(), entity.getGeometry()));
}
return resultList;
}
}