package com.lemoulinstudio.bikefriend; import com.j256.ormlite.dao.Dao; import com.lemoulinstudio.bikefriend.db.BikeStation; import com.lemoulinstudio.bikefriend.db.DataSourceEnum; import com.lemoulinstudio.bikefriend.db.MyDatabaseHelper; import com.lemoulinstudio.bikefriend.preference.BikefriendPreferences_; import org.androidannotations.annotations.AfterInject; import org.androidannotations.annotations.EBean; import org.androidannotations.annotations.OrmLiteDao; import org.androidannotations.annotations.sharedpreferences.Pref; import java.util.ArrayList; import java.util.Collection; import java.sql.SQLException; @EBean(scope = EBean.Scope.Singleton) public class BikeStationProviderRepository { private Collection<BikeStationProvider> bikeStationProviders; @Pref protected BikefriendPreferences_ preferences; @OrmLiteDao(helper = MyDatabaseHelper.class, model = BikeStation.class) Dao<BikeStation, String> bikeStationDao; @AfterInject public void afterInject() { bikeStationProviders = new ArrayList<BikeStationProvider>(); for (DataSourceEnum dataSource : DataSourceEnum.values()) { bikeStationProviders.add(new BikeStationProviderImpl(dataSource, preferences, bikeStationDao)); } } public Collection<BikeStationProvider> getBikeStationProviders() { return bikeStationProviders; } public void registerForBikeStationUpdates(BikeStationListener listener) { for (BikeStationProvider bikeStationProvider : bikeStationProviders) { bikeStationProvider.addListener(listener); } } public void unregisterForBikeStationUpdates(BikeStationListener listener) { for (BikeStationProvider bikeStationProvider : bikeStationProviders) { bikeStationProvider.removeListener(listener); } } public BikeStationProvider getBikeStationProvider(DataSourceEnum dataSource) { for (BikeStationProvider bikeStationProvider : bikeStationProviders) { if (bikeStationProvider.getDataSourceEnum() == dataSource) { return bikeStationProvider; } } // Not found. return null; } // This can be called from the favoriteFragment. public void updateDbFromMem(BikeStation bikeStation) throws SQLException { bikeStationDao.update(bikeStation); } }