move Apis and Database to dedicated Factory Objects

This commit is contained in:
Felix 2017-11-25 00:13:26 +01:00
parent f8af098b13
commit fbf9ae983a
4 changed files with 65 additions and 39 deletions

View file

@ -53,7 +53,7 @@ android {
dependencies {
implementation 'de.nicidienase.chaosflix:common:1.2.1-SNAPSHOT'
implementation 'de.nicidienase.chaosflix:common:1.3-SNAPSHOT'
implementation 'com.android.support:multidex:1.0.2'

View file

@ -0,0 +1,49 @@
package de.nicidienase.chaosflix.touch
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.kotlin.KotlinModule
import de.nicidienase.chaosflix.R
import de.nicidienase.chaosflix.common.network.RecordingService
import de.nicidienase.chaosflix.common.network.StreamingService
import okhttp3.OkHttpClient
import retrofit2.Retrofit
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
import retrofit2.converter.jackson.JacksonConverterFactory
import java.util.concurrent.TimeUnit
object ApiFactory {
val recordingApi: RecordingService
val streamingApi: StreamingService
init {
val res = ChaosflixApplication.APPLICATION_CONTEXT.resources
val recordingUrl = res.getString(R.string.api_media_ccc_url)
val streamingUrl = res.getString(R.string.streaming_media_ccc_url)
val client = OkHttpClient.Builder()
.connectTimeout(60, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
.build()
val jacksonConverterFactory = JacksonConverterFactory.create(ObjectMapper().registerModule(KotlinModule()))
val rxJava2CallAdapterFactory = RxJava2CallAdapterFactory.create()
val retrofitRecordings = Retrofit.Builder()
.baseUrl(recordingUrl)
.client(client)
.addConverterFactory(jacksonConverterFactory)
.addCallAdapterFactory(rxJava2CallAdapterFactory)
.build()
recordingApi = retrofitRecordings.create(RecordingService::class.java)
val retrofigStreaming = Retrofit.Builder()
.baseUrl(streamingUrl)
.client(client)
.addConverterFactory(jacksonConverterFactory)
.addCallAdapterFactory(rxJava2CallAdapterFactory)
.build()
streamingApi = retrofigStreaming.create(StreamingService::class.java)
}
}

View file

@ -0,0 +1,12 @@
package de.nicidienase.chaosflix.touch
import android.arch.persistence.room.Room
import de.nicidienase.chaosflix.common.entities.ChaosflixDatabase
object DatabaseFactory {
val database = Room.databaseBuilder(
ChaosflixApplication.APPLICATION_CONTEXT,
ChaosflixDatabase::class.java, "mediaccc.de")
.fallbackToDestructiveMigration()
.build()
}

View file

@ -20,44 +20,9 @@ import java.util.concurrent.TimeUnit
object ViewModelFactory : ViewModelProvider.Factory {
val database: ChaosflixDatabase
val recordingApi: RecordingService
val streamingApi: StreamingService
init {
val res = ChaosflixApplication.APPLICATION_CONTEXT.resources
val recordingUrl = res.getString(R.string.api_media_ccc_url)
val streamingUrl = res.getString(R.string.streaming_media_ccc_url)
val client = OkHttpClient.Builder()
.connectTimeout(60, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
.build()
val jacksonConverterFactory = JacksonConverterFactory.create(ObjectMapper().registerModule(KotlinModule()))
val rxJava2CallAdapterFactory = RxJava2CallAdapterFactory.create()
val retrofitRecordings = Retrofit.Builder()
.baseUrl(recordingUrl)
.client(client)
.addConverterFactory(jacksonConverterFactory)
.addCallAdapterFactory(rxJava2CallAdapterFactory)
.build()
recordingApi = retrofitRecordings.create(RecordingService::class.java)
val retrofigStreaming = Retrofit.Builder()
.baseUrl(streamingUrl)
.client(client)
.addConverterFactory(jacksonConverterFactory)
.addCallAdapterFactory(rxJava2CallAdapterFactory)
.build()
streamingApi = retrofigStreaming.create(StreamingService::class.java)
database = Room.databaseBuilder(
ChaosflixApplication.APPLICATION_CONTEXT,
ChaosflixDatabase::class.java, "mediaccc.de")
.fallbackToDestructiveMigration()
.build()
}
val database = DatabaseFactory.database
val recordingApi = ApiFactory.recordingApi
val streamingApi = ApiFactory.streamingApi
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel?> create(modelClass: Class<T>): T {