package net.iubris.ulysses.engine.persist.sql.ormlite; import java.sql.SQLException; import java.util.Collection; import java.util.HashSet; import java.util.Set; import javax.inject.Inject; import javax.inject.Singleton; import net.iubris.ulysses.engine.persist.Persister; import net.iubris.ulysses.model.Place; import android.content.Context; import android.location.Location; import com.j256.ormlite.android.apptools.OpenHelperManager; import com.j256.ormlite.dao.CloseableIterator; import com.j256.ormlite.dao.RuntimeExceptionDao; @Singleton public class OrmlitePersister implements Persister { // private final RuntimeExceptionDao<Place, Integer> placeDao; // private Context context; private UlyssesDatabaseHelper helper; @Inject public OrmlitePersister(Context context) { // this.context = context; helper = OpenHelperManager.getHelper(context, UlyssesDatabaseHelper.class); } @Override public Set<Place> searchPlaces(Location location) { Set<Place> results = new HashSet<Place>(); try { RuntimeExceptionDao<Place, Integer> placeDao = // OpenHelperManager.getHelper(context, UlyssesDatabaseHelper.class) helper .getPlaceDao(); CloseableIterator<Place> iterator = placeDao.closeableIterator(); while (iterator.hasNext()) { Place place = iterator.next(); if (Place.distance(place, location) < 5000) { results.add(place); }; } iterator.close(); // OpenHelperManager.releaseHelper(); } catch (SQLException e) { e.printStackTrace(); } return results; } @Override public void setPlaces(Collection<Place> places) { RuntimeExceptionDao<Place, Integer> placeDao = // OpenHelperManager.getHelper(context, UlyssesDatabaseHelper.class) helper .getPlaceDao(); for (Place place : places) { placeDao.createIfNotExists(place); } // OpenHelperManager.releaseHelper(); } @Override public Set<Location> getLocations() { return null; } @Override public boolean isLocationStored(Location location) { return false; } @Override public void setLocation(Location location) {} public void releaseHelper() { OpenHelperManager.releaseHelper(); helper = null; } @Override public void setPlaces(Collection<net.iubris.ulysses.engine.model.Place> arg0) { // TODO Auto-generated method stub } }