package de.westnordost.streetcomplete.data; import android.content.SharedPreferences; import javax.inject.Provider; import javax.inject.Singleton; import dagger.Module; import dagger.Provides; import de.westnordost.osmapi.user.UserDao; import de.westnordost.streetcomplete.ApplicationConstants; import de.westnordost.streetcomplete.oauth.OAuth; import de.westnordost.streetcomplete.data.osm.download.ElementGeometryCreator; import de.westnordost.streetcomplete.data.osm.download.OverpassMapDataDao; import de.westnordost.streetcomplete.data.osm.download.OverpassMapDataParser; import de.westnordost.osmapi.OsmConnection; import de.westnordost.osmapi.changesets.ChangesetsDao; import de.westnordost.osmapi.map.MapDataDao; import de.westnordost.osmapi.map.MapDataFactory; import de.westnordost.osmapi.map.OsmMapDataFactory; import de.westnordost.osmapi.notes.NotesDao; import oauth.signpost.OAuthConsumer; @Module public class OsmModule { public static String OSM_API_URL = "https://api.openstreetmap.org/api/0.6/"; public static String OVERPASS_API_URL = "http://overpass-api.de/api/"; @Provides @Singleton public static OsmConnection osmConnection(OAuthConsumer consumer) { return new OsmConnection(OSM_API_URL, ApplicationConstants.USER_AGENT, consumer); } @Provides public static OAuthConsumer oAuthConsumer(SharedPreferences prefs) { return OAuth.loadConsumer(prefs); } @Provides public static MapDataFactory mapDataFactory() { return new OsmMapDataFactory(); } @Provides public static OverpassMapDataDao overpassMapDataDao( Provider<OverpassMapDataParser> parserProvider) { OsmConnection overpassConnection = new OsmConnection( OVERPASS_API_URL, ApplicationConstants.USER_AGENT, null); return new OverpassMapDataDao(overpassConnection, parserProvider); } @Provides public static OverpassMapDataParser overpassMapDataParser() { return new OverpassMapDataParser(new ElementGeometryCreator(), new OsmMapDataFactory()); } @Provides public static ChangesetsDao changesetsDao(OsmConnection osm) { return new ChangesetsDao(osm); } @Provides public static UserDao userDao(OsmConnection osm) { return new UserDao(osm); } @Provides public static NotesDao notesDao(OsmConnection osm) { return new NotesDao(osm); } @Provides public static MapDataDao mapDataDao(OsmConnection osm) { return new MapDataDao(osm); } }