diff --git a/.idea/codeStyleSettings.xml b/.idea/codeStyleSettings.xml
index f61acbe5..7e0bedfd 100644
--- a/.idea/codeStyleSettings.xml
+++ b/.idea/codeStyleSettings.xml
@@ -38,17 +38,27 @@
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
diff --git a/app/build.gradle b/app/build.gradle
index f0ff4322..cd409af1 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -159,6 +159,11 @@ android {
enabled = true
}
+ kapt {
+ // NonExistentClass Errorを無視
+ correctErrorTypes = true
+ }
+
lintOptions {
textReport true
textOutput 'stdout'
diff --git a/app/src/main/kotlin/com/ayatk/biblio/App.kt b/app/src/main/kotlin/com/ayatk/biblio/App.kt
index 1ae1d995..bb94b280 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/App.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/App.kt
@@ -4,7 +4,6 @@
package com.ayatk.biblio
-import com.ayatk.biblio.di.AppModule
import com.ayatk.biblio.di.DaggerAppComponent
import com.crashlytics.android.Crashlytics
import com.squareup.leakcanary.LeakCanary
@@ -21,12 +20,12 @@ open class App : DaggerApplication() {
initLeakCanary()
}
- override fun applicationInjector(): AndroidInjector
- = DaggerAppComponent
- .builder()
- .application(this)
- .appModule(AppModule(this))
- .build()
+ override fun applicationInjector(): AndroidInjector {
+ return DaggerAppComponent
+ .builder()
+ .application(this)
+ .build()
+ }
private fun initLeakCanary() {
if (LeakCanary.isInAnalyzerProcess(this)) {
diff --git a/app/src/main/kotlin/com/ayatk/biblio/data/dao/OrmaDatabaseWrapper.kt b/app/src/main/kotlin/com/ayatk/biblio/data/dao/OrmaDatabaseWrapper.kt
deleted file mode 100644
index 61de5af5..00000000
--- a/app/src/main/kotlin/com/ayatk/biblio/data/dao/OrmaDatabaseWrapper.kt
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright (c) 2016-2017 Aya Tokikaze. All Rights Reserved.
- */
-
-package com.ayatk.biblio.data.dao
-
-import android.content.Context
-import com.ayatk.biblio.model.OrmaDatabase
-import com.github.gfx.android.orma.AccessThreadConstraint
-
-class OrmaDatabaseWrapper(context: Context) {
- val db: OrmaDatabase = OrmaDatabase.builder(context)
- .writeOnMainThread(AccessThreadConstraint.FATAL)
- .readOnMainThread(AccessThreadConstraint.FATAL)
- .build()
-}
diff --git a/app/src/main/kotlin/com/ayatk/biblio/data/narou/NarouClient.kt b/app/src/main/kotlin/com/ayatk/biblio/data/narou/NarouClient.kt
index 40629d23..5a3bca0c 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/data/narou/NarouClient.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/data/narou/NarouClient.kt
@@ -29,7 +29,8 @@ class NarouClient
private val htmlUtil: HtmlUtil,
private val narouApiService: NarouApiService,
@Named("Narou") private val narouService: NarouService,
- @Named("Narou18") private val narou18Service: NarouService) {
+ @Named("Narou18") private val narou18Service: NarouService
+) {
fun getNovel(query: Map): Single> {
return narouApiService.getNovel(query)
@@ -84,7 +85,8 @@ class NarouClient
= narouService.getSSPage(ncode).map { htmlUtil.parsePage(ncode, it, 1) }
private fun convertNarouNovelToNovel(
- narouNovels: List, publisher: Publisher): List {
+ narouNovels: List, publisher: Publisher
+ ): List {
return narouNovels.map {
Novel(
publisher = publisher,
diff --git a/app/src/main/kotlin/com/ayatk/biblio/di/AppComponent.kt b/app/src/main/kotlin/com/ayatk/biblio/di/AppComponent.kt
index 3871c198..1ae772fd 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/di/AppComponent.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/di/AppComponent.kt
@@ -4,6 +4,7 @@
package com.ayatk.biblio.di
+import android.app.Application
import com.ayatk.biblio.App
import com.ayatk.biblio.ui.UiModule
import dagger.BindsInstance
@@ -17,6 +18,7 @@ import javax.inject.Singleton
modules = arrayOf(
AndroidSupportInjectionModule::class,
AppModule::class,
+ RepositoryModule::class,
HttpClientModule::class,
UiModule::class
)
@@ -26,9 +28,7 @@ interface AppComponent : AndroidInjector {
@Component.Builder
interface Builder {
@BindsInstance
- fun application(application: App): Builder
-
- fun appModule(appModule: AppModule): Builder
+ fun application(application: Application): Builder
fun build(): AppComponent
}
diff --git a/app/src/main/kotlin/com/ayatk/biblio/di/AppModule.kt b/app/src/main/kotlin/com/ayatk/biblio/di/AppModule.kt
index 7ec70f20..5490b65e 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/di/AppModule.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/di/AppModule.kt
@@ -7,13 +7,14 @@ package com.ayatk.biblio.di
import android.app.Application
import android.content.Context
import android.net.ConnectivityManager
-import com.ayatk.biblio.data.dao.OrmaDatabaseWrapper
import com.ayatk.biblio.data.narou.entity.enums.BigGenre
import com.ayatk.biblio.data.narou.entity.enums.Genre
import com.ayatk.biblio.data.narou.service.NarouApiService
import com.ayatk.biblio.data.narou.service.NarouService
import com.ayatk.biblio.data.narou.util.HtmlUtil
-import com.ayatk.biblio.pref.DefaultPrefsWrapper
+import com.ayatk.biblio.model.OrmaDatabase
+import com.ayatk.biblio.pref.DefaultPrefs
+import com.github.gfx.android.orma.AccessThreadConstraint
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import com.google.gson.JsonDeserializer
@@ -28,11 +29,7 @@ import javax.inject.Named
import javax.inject.Singleton
@Module
-class AppModule(val application: Application) {
-
- @Provides
- @Singleton
- fun provideApplicationContext(): Application = application
+class AppModule {
@Provides
fun provideConnectivityManager(application: Application): ConnectivityManager
@@ -40,13 +37,17 @@ class AppModule(val application: Application) {
@Singleton
@Provides
- fun provideDefaultPrefs(application: Application): DefaultPrefsWrapper
- = DefaultPrefsWrapper(application)
+ fun provideDefaultPrefs(application: Application): DefaultPrefs
+ = DefaultPrefs.get(application)
@Singleton
@Provides
- fun provideOrmaDatabase(application: Application): OrmaDatabaseWrapper
- = OrmaDatabaseWrapper(application)
+ fun provideOrmaDatabase(application: Application): OrmaDatabase {
+ return OrmaDatabase.builder(application)
+ .writeOnMainThread(AccessThreadConstraint.FATAL)
+ .readOnMainThread(AccessThreadConstraint.FATAL)
+ .build()
+ }
@Singleton
@Provides
diff --git a/app/src/main/kotlin/com/ayatk/biblio/di/RepositoryModule.kt b/app/src/main/kotlin/com/ayatk/biblio/di/RepositoryModule.kt
new file mode 100644
index 00000000..bf3188e7
--- /dev/null
+++ b/app/src/main/kotlin/com/ayatk/biblio/di/RepositoryModule.kt
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2016-2017. Aya Tokikaze. All Rights Reserved.
+ */
+
+package com.ayatk.biblio.di
+
+import com.ayatk.biblio.repository.library.LibraryDataSource
+import com.ayatk.biblio.repository.library.LibraryLocalDataSource
+import com.ayatk.biblio.repository.library.LibraryRepository
+import com.ayatk.biblio.repository.novel.NovelBodyDataSource
+import com.ayatk.biblio.repository.novel.NovelBodyLocalDataSource
+import com.ayatk.biblio.repository.novel.NovelBodyRemoteDataSource
+import com.ayatk.biblio.repository.novel.NovelBodyRepository
+import com.ayatk.biblio.repository.novel.NovelDataSource
+import com.ayatk.biblio.repository.novel.NovelLocalDataSource
+import com.ayatk.biblio.repository.novel.NovelRemoteDataSource
+import com.ayatk.biblio.repository.novel.NovelRepository
+import com.ayatk.biblio.repository.novel.NovelTableDataSource
+import com.ayatk.biblio.repository.novel.NovelTableLocalDataSource
+import com.ayatk.biblio.repository.novel.NovelTableRemoteDataSource
+import com.ayatk.biblio.repository.novel.NovelTableRepository
+import dagger.Module
+import dagger.Provides
+import javax.inject.Singleton
+
+@Module
+class RepositoryModule {
+
+ @Singleton
+ @Provides
+ fun provideLibraryRepository(localDataSource: LibraryLocalDataSource): LibraryDataSource
+ = LibraryRepository(localDataSource)
+
+ @Singleton
+ @Provides
+ fun provideNovelBodyRepository(
+ local: NovelBodyLocalDataSource,
+ remote: NovelBodyRemoteDataSource
+ ): NovelBodyDataSource = NovelBodyRepository(local, remote)
+
+ @Singleton
+ @Provides
+ fun provideNovelRepository(
+ local: NovelLocalDataSource,
+ remote: NovelRemoteDataSource
+ ): NovelDataSource = NovelRepository(local, remote)
+
+ @Singleton
+ @Provides
+ fun provideNovelTableRepository(
+ local: NovelTableLocalDataSource,
+ remote: NovelTableRemoteDataSource
+ ): NovelTableDataSource = NovelTableRepository(local, remote)
+}
diff --git a/app/src/main/kotlin/com/ayatk/biblio/pref/DefaultPrefsWrapper.kt b/app/src/main/kotlin/com/ayatk/biblio/pref/DefaultPrefsWrapper.kt
deleted file mode 100644
index 1c1048ba..00000000
--- a/app/src/main/kotlin/com/ayatk/biblio/pref/DefaultPrefsWrapper.kt
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * Copyright (c) 2016-2017. Aya Tokikaze. All Rights Reserved.
- */
-
-package com.ayatk.biblio.pref
-
-import android.content.Context
-
-/**
- * Dagger2でクリーンビルドするとkaptの順番で死ぬのでラップする
- */
-class DefaultPrefsWrapper(context: Context) {
- val prefs: DefaultPrefs = DefaultPrefs.get(context)
-}
diff --git a/app/src/main/kotlin/com/ayatk/biblio/repository/library/LibraryLocalDataSource.kt b/app/src/main/kotlin/com/ayatk/biblio/repository/library/LibraryLocalDataSource.kt
index d2089f5f..f6fdf772 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/repository/library/LibraryLocalDataSource.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/repository/library/LibraryLocalDataSource.kt
@@ -4,9 +4,9 @@
package com.ayatk.biblio.repository.library
-import com.ayatk.biblio.data.dao.OrmaDatabaseWrapper
import com.ayatk.biblio.model.Library
import com.ayatk.biblio.model.Novel
+import com.ayatk.biblio.model.OrmaDatabase
import com.github.gfx.android.orma.annotation.OnConflict
import io.reactivex.Completable
import io.reactivex.Maybe
@@ -16,17 +16,17 @@ import io.reactivex.schedulers.Schedulers
import javax.inject.Inject
class LibraryLocalDataSource
-@Inject constructor(private val orma: OrmaDatabaseWrapper) : LibraryDataSource {
+@Inject constructor(private val orma: OrmaDatabase) : LibraryDataSource {
override fun findAll(): Single> {
- return orma.db.selectFromLibrary()
+ return orma.selectFromLibrary()
.executeAsObservable()
.toList()
.subscribeOn(Schedulers.io())
}
override fun find(novel: Novel): Maybe {
- return orma.db.selectFromLibrary()
+ return orma.selectFromLibrary()
.novelEq(novel)
.executeAsObservable()
.firstElement()
@@ -34,35 +34,35 @@ class LibraryLocalDataSource
}
override fun save(library: Library): Completable {
- return orma.db.transactionAsCompletable {
- if (orma.db.relationOfNovel().codeEq(library.novel.code).isEmpty) {
- orma.db.relationOfNovel().inserter().execute(library.novel)
+ return orma.transactionAsCompletable {
+ if (orma.relationOfNovel().codeEq(library.novel.code).isEmpty) {
+ orma.relationOfNovel().inserter().execute(library.novel)
}
- orma.db.relationOfLibrary().inserter(OnConflict.REPLACE).execute(library)
+ orma.relationOfLibrary().inserter(OnConflict.REPLACE).execute(library)
}.subscribeOn(Schedulers.io())
}
override fun saveAll(libraries: List): Completable {
- return orma.db.transactionAsCompletable {
+ return orma.transactionAsCompletable {
libraries.forEach { library ->
- if (orma.db.relationOfNovel().selector().codeEq(library.novel.code).isEmpty) {
- orma.db.relationOfNovel().inserter().execute(library.novel)
+ if (orma.relationOfNovel().selector().codeEq(library.novel.code).isEmpty) {
+ orma.relationOfNovel().inserter().execute(library.novel)
}
- orma.db.relationOfLibrary().inserter(OnConflict.REPLACE).execute(library)
+ orma.relationOfLibrary().inserter(OnConflict.REPLACE).execute(library)
}
}.subscribeOn(Schedulers.io())
}
override fun updateAllAsync(novels: List) {
- orma.db.transactionAsCompletable {
- novels.forEach { orma.db.relationOfLibrary().upsert(Library(novel = it)) }
+ orma.transactionAsCompletable {
+ novels.forEach { orma.relationOfLibrary().upsert(Library(novel = it)) }
}
.subscribeOn(Schedulers.io())
.subscribe()
}
override fun delete(novel: Novel): Single {
- return orma.db.relationOfLibrary()
+ return orma.relationOfLibrary()
.deleter()
.novelEq(novel)
.executeAsSingle()
diff --git a/app/src/main/kotlin/com/ayatk/biblio/repository/library/LibraryRepository.kt b/app/src/main/kotlin/com/ayatk/biblio/repository/library/LibraryRepository.kt
index bb229735..56770030 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/repository/library/LibraryRepository.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/repository/library/LibraryRepository.kt
@@ -9,12 +9,8 @@ import com.ayatk.biblio.model.Novel
import io.reactivex.Completable
import io.reactivex.Maybe
import io.reactivex.Single
-import javax.inject.Inject
-import javax.inject.Singleton
-@Singleton
-class LibraryRepository
-@Inject constructor(private val localDataSource: LibraryLocalDataSource) : LibraryDataSource {
+class LibraryRepository(private val localDataSource: LibraryLocalDataSource) : LibraryDataSource {
private var cachedLibrary = emptyMap()
diff --git a/app/src/main/kotlin/com/ayatk/biblio/repository/novel/NovelBodyLocalDataSource.kt b/app/src/main/kotlin/com/ayatk/biblio/repository/novel/NovelBodyLocalDataSource.kt
index c5793d74..b49eae11 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/repository/novel/NovelBodyLocalDataSource.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/repository/novel/NovelBodyLocalDataSource.kt
@@ -4,19 +4,19 @@
package com.ayatk.biblio.repository.novel
-import com.ayatk.biblio.data.dao.OrmaDatabaseWrapper
import com.ayatk.biblio.model.Novel
import com.ayatk.biblio.model.NovelBody
+import com.ayatk.biblio.model.OrmaDatabase
import io.reactivex.Completable
import io.reactivex.Single
import io.reactivex.schedulers.Schedulers
import javax.inject.Inject
class NovelBodyLocalDataSource
-@Inject constructor(private val orma: OrmaDatabaseWrapper) : NovelBodyDataSource {
+@Inject constructor(private val orma: OrmaDatabase) : NovelBodyDataSource {
override fun find(novel: Novel, page: Int): Single> {
- return orma.db.selectFromNovelBody()
+ return orma.selectFromNovelBody()
.novelEq(novel)
.pageEq(page)
.executeAsObservable()
@@ -25,13 +25,13 @@ class NovelBodyLocalDataSource
}
override fun save(novelBody: NovelBody): Completable {
- return orma.db.transactionAsCompletable {
- orma.db.insertIntoNovelBody(novelBody)
+ return orma.transactionAsCompletable {
+ orma.insertIntoNovelBody(novelBody)
}.subscribeOn(Schedulers.io())
}
override fun deleteAll(novel: Novel): Single {
- return orma.db.deleteFromNovelBody()
+ return orma.deleteFromNovelBody()
.novelEq(novel)
.executeAsSingle()
.subscribeOn(Schedulers.io())
diff --git a/app/src/main/kotlin/com/ayatk/biblio/repository/novel/NovelBodyRepository.kt b/app/src/main/kotlin/com/ayatk/biblio/repository/novel/NovelBodyRepository.kt
index 0230a458..88372dbd 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/repository/novel/NovelBodyRepository.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/repository/novel/NovelBodyRepository.kt
@@ -9,10 +9,8 @@ import com.ayatk.biblio.model.NovelBody
import io.reactivex.Completable
import io.reactivex.Single
import io.reactivex.rxkotlin.toSingle
-import javax.inject.Inject
-class NovelBodyRepository
-@Inject constructor(
+class NovelBodyRepository(
private val localDataSource: NovelBodyLocalDataSource,
private val remoteDataSource: NovelBodyRemoteDataSource
) : NovelBodyDataSource {
diff --git a/app/src/main/kotlin/com/ayatk/biblio/repository/novel/NovelLocalDataSource.kt b/app/src/main/kotlin/com/ayatk/biblio/repository/novel/NovelLocalDataSource.kt
index 48945e70..ba61ba95 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/repository/novel/NovelLocalDataSource.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/repository/novel/NovelLocalDataSource.kt
@@ -4,8 +4,8 @@
package com.ayatk.biblio.repository.novel
-import com.ayatk.biblio.data.dao.OrmaDatabaseWrapper
import com.ayatk.biblio.model.Novel
+import com.ayatk.biblio.model.OrmaDatabase
import com.ayatk.biblio.model.enums.Publisher
import io.reactivex.Completable
import io.reactivex.Maybe
@@ -14,10 +14,10 @@ import io.reactivex.schedulers.Schedulers
import javax.inject.Inject
class NovelLocalDataSource
-@Inject constructor(private val orma: OrmaDatabaseWrapper) : NovelDataSource {
+@Inject constructor(private val orma: OrmaDatabase) : NovelDataSource {
override fun findAll(codes: List, publisher: Publisher): Single> {
- return orma.db.selectFromNovel()
+ return orma.selectFromNovel()
.publisherEq(publisher)
.executeAsObservable()
.toList()
@@ -25,7 +25,7 @@ class NovelLocalDataSource
}
override fun find(code: String, publisher: Publisher): Maybe {
- return orma.db.selectFromNovel()
+ return orma.selectFromNovel()
.codeEq(code)
.publisherEq(publisher)
.executeAsObservable()
@@ -34,13 +34,13 @@ class NovelLocalDataSource
}
override fun save(novel: Novel): Completable {
- return orma.db.transactionAsCompletable {
- orma.db.relationOfNovel().upsert(novel)
+ return orma.transactionAsCompletable {
+ orma.relationOfNovel().upsert(novel)
}.subscribeOn(Schedulers.io())
}
override fun delete(code: String) {
- orma.db.relationOfNovel()
+ orma.relationOfNovel()
.deleter()
.codeEq(code)
.execute()
diff --git a/app/src/main/kotlin/com/ayatk/biblio/repository/novel/NovelTableLocalDataSource.kt b/app/src/main/kotlin/com/ayatk/biblio/repository/novel/NovelTableLocalDataSource.kt
index 0024099e..8a70dbd9 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/repository/novel/NovelTableLocalDataSource.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/repository/novel/NovelTableLocalDataSource.kt
@@ -4,9 +4,9 @@
package com.ayatk.biblio.repository.novel
-import com.ayatk.biblio.data.dao.OrmaDatabaseWrapper
import com.ayatk.biblio.model.Novel
import com.ayatk.biblio.model.NovelTable
+import com.ayatk.biblio.model.OrmaDatabase
import io.reactivex.Completable
import io.reactivex.Maybe
import io.reactivex.Single
@@ -14,10 +14,10 @@ import io.reactivex.schedulers.Schedulers
import javax.inject.Inject
class NovelTableLocalDataSource
-@Inject constructor(val orma: OrmaDatabaseWrapper) : NovelTableDataSource {
+@Inject constructor(val orma: OrmaDatabase) : NovelTableDataSource {
override fun findAll(novel: Novel): Single> {
- return orma.db.selectFromNovelTable()
+ return orma.selectFromNovelTable()
.novelEq(novel)
.executeAsObservable()
.toList()
@@ -25,7 +25,7 @@ class NovelTableLocalDataSource
}
override fun find(novel: Novel, page: Int): Maybe {
- return orma.db.selectFromNovelTable()
+ return orma.selectFromNovelTable()
.novelEq(novel)
.page(page.toLong())
.executeAsObservable()
@@ -34,15 +34,15 @@ class NovelTableLocalDataSource
}
override fun save(novelTables: List): Completable {
- return orma.db.transactionAsCompletable {
+ return orma.transactionAsCompletable {
novelTables.map {
- orma.db.relationOfNovelTable().upsert(it)
+ orma.relationOfNovelTable().upsert(it)
}
}.subscribeOn(Schedulers.io())
}
override fun delete(novel: Novel): Single {
- return orma.db.relationOfNovelTable()
+ return orma.relationOfNovelTable()
.deleter()
.novelEq(novel)
.executeAsSingle()
diff --git a/app/src/main/kotlin/com/ayatk/biblio/ui/body/NovelBodyActivity.kt b/app/src/main/kotlin/com/ayatk/biblio/ui/body/NovelBodyActivity.kt
index c61de6f7..d9a14ea5 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/ui/body/NovelBodyActivity.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/ui/body/NovelBodyActivity.kt
@@ -60,8 +60,10 @@ class NovelBodyActivity : DaggerAppCompatActivity() {
EventBus.getDefault().post(NovelBodySelectedEvent(position))
}
- override fun onPageScrolled(position: Int, positionOffset: Float,
- positionOffsetPixels: Int) {
+ override fun onPageScrolled(
+ position: Int, positionOffset: Float,
+ positionOffsetPixels: Int
+ ) {
}
override fun onPageScrollStateChanged(pos: Int) {}
diff --git a/app/src/main/kotlin/com/ayatk/biblio/ui/body/NovelBodyFragment.kt b/app/src/main/kotlin/com/ayatk/biblio/ui/body/NovelBodyFragment.kt
index 68061144..dd476b3c 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/ui/body/NovelBodyFragment.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/ui/body/NovelBodyFragment.kt
@@ -33,8 +33,10 @@ class NovelBodyFragment : DaggerFragment() {
arguments?.getInt(BUNDLE_ARGS_NOVEL_PAGE) ?: 1
}
- override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?): View? {
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
binding = FragmentNovelBodyBinding.inflate(inflater, container, false)
binding.viewModel = viewModel
diff --git a/app/src/main/kotlin/com/ayatk/biblio/ui/body/NovelBodyViewModel.kt b/app/src/main/kotlin/com/ayatk/biblio/ui/body/NovelBodyViewModel.kt
index 693ba86b..1683fde1 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/ui/body/NovelBodyViewModel.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/ui/body/NovelBodyViewModel.kt
@@ -9,24 +9,25 @@ import android.databinding.Bindable
import com.ayatk.biblio.BR
import com.ayatk.biblio.model.Novel
import com.ayatk.biblio.model.NovelBody
-import com.ayatk.biblio.repository.novel.NovelBodyRepository
+import com.ayatk.biblio.repository.novel.NovelBodyDataSource
import com.ayatk.biblio.ui.ViewModel
import javax.inject.Inject
class NovelBodyViewModel @Inject constructor(
- private val repository: NovelBodyRepository
+ private val novelBodyDataSource: NovelBodyDataSource
) : BaseObservable(), ViewModel {
@Bindable
var novelBody: NovelBody = NovelBody()
fun start(novel: Novel, page: Int) {
- repository.find(novel, page)
+ novelBodyDataSource.find(novel, page)
.subscribe(
{
novelBody = it.first()
notifyPropertyChanged(BR.novelBody)
},
+ // TODO: 2017/11/26 エラーを握りつぶしマン
{}
)
}
diff --git a/app/src/main/kotlin/com/ayatk/biblio/ui/detail/info/NovelInfoFragment.kt b/app/src/main/kotlin/com/ayatk/biblio/ui/detail/info/NovelInfoFragment.kt
index daa6e2eb..88b647a3 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/ui/detail/info/NovelInfoFragment.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/ui/detail/info/NovelInfoFragment.kt
@@ -10,7 +10,7 @@ import android.view.View
import android.view.ViewGroup
import com.ayatk.biblio.databinding.FragmentNovelInfoBinding
import com.ayatk.biblio.model.Novel
-import com.ayatk.biblio.repository.library.LibraryRepository
+import com.ayatk.biblio.repository.library.LibraryDataSource
import com.ayatk.biblio.ui.util.helper.Navigator
import dagger.android.support.DaggerFragment
import org.parceler.Parcels
@@ -24,25 +24,19 @@ class NovelInfoFragment : DaggerFragment() {
lateinit var navigator: Navigator
@Inject
- lateinit var libraryRepository: LibraryRepository
+ lateinit var libraryDataSource: LibraryDataSource
private val novel: Novel by lazy {
- Parcels.unwrap(
- arguments?.getParcelable(
- BUNDLE_ARGS_NOVEL
- )
- )
+ Parcels.unwrap(arguments?.getParcelable(BUNDLE_ARGS_NOVEL))
}
private lateinit var viewModel: NovelInfoViewModel
- override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?): View? {
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
+ ): View? {
binding = FragmentNovelInfoBinding.inflate(inflater, container, false)
- viewModel = NovelInfoViewModel(
- navigator, libraryRepository,
- novel
- )
+ viewModel = NovelInfoViewModel(navigator, libraryDataSource, novel)
binding.viewModel = viewModel
return binding.root
diff --git a/app/src/main/kotlin/com/ayatk/biblio/ui/detail/info/NovelInfoViewModel.kt b/app/src/main/kotlin/com/ayatk/biblio/ui/detail/info/NovelInfoViewModel.kt
index 9358c520..0123fea4 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/ui/detail/info/NovelInfoViewModel.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/ui/detail/info/NovelInfoViewModel.kt
@@ -13,7 +13,7 @@ import android.view.inputmethod.InputMethodManager
import com.ayatk.biblio.BR
import com.ayatk.biblio.model.Library
import com.ayatk.biblio.model.Novel
-import com.ayatk.biblio.repository.library.LibraryRepository
+import com.ayatk.biblio.repository.library.LibraryDataSource
import com.ayatk.biblio.ui.ViewModel
import com.ayatk.biblio.ui.util.helper.Navigator
import com.ayatk.biblio.util.DateFormat
@@ -21,7 +21,7 @@ import mabbas007.tagsedittext.TagsEditText
class NovelInfoViewModel(
private val navigator: Navigator,
- private val libraryRepository: LibraryRepository,
+ private val libraryDataSource: LibraryDataSource,
val novel: Novel
) : BaseObservable(), ViewModel {
@@ -59,7 +59,7 @@ class NovelInfoViewModel(
fun url(): String = novel.publisher.url + novel.code.toLowerCase()
fun start() {
- libraryRepository.find(novel)
+ libraryDataSource.find(novel)
.subscribe(
{ library ->
tags = library.tag
@@ -76,6 +76,7 @@ class NovelInfoViewModel(
navigator.navigateToWebPage("http://ncode.syosetu.com/" + novel.code.toLowerCase())
}
+ // TODO: 2017/11/26 context持ってるのでFragmentに移動させる
fun onClickUserTag(context: Context) {
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
@@ -87,7 +88,7 @@ class NovelInfoViewModel(
.setTitle("タグの追加")
.setView(editView)
.setPositiveButton("OK") { _, _ ->
- libraryRepository.save(Library(novel = novel, tag = editView.tags)).subscribe()
+ libraryDataSource.save(Library(novel = novel, tag = editView.tags)).subscribe()
tags = editView.tags
notifyPropertyChanged(BR.tags)
imm.hideSoftInputFromWindow(editView.windowToken, 0)
@@ -97,7 +98,7 @@ class NovelInfoViewModel(
}
.create()
- libraryRepository.find(novel)
+ libraryDataSource.find(novel)
.subscribe({ library -> editView.setTags(*library.tag.toTypedArray()) })
dialog.show()
diff --git a/app/src/main/kotlin/com/ayatk/biblio/ui/detail/table/NovelTableFragment.kt b/app/src/main/kotlin/com/ayatk/biblio/ui/detail/table/NovelTableFragment.kt
index ec54ce6c..e350e0a9 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/ui/detail/table/NovelTableFragment.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/ui/detail/table/NovelTableFragment.kt
@@ -37,8 +37,10 @@ class NovelTableFragment : DaggerFragment() {
)
}
- override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?): View? {
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
binding = FragmentNovelTableBinding.inflate(inflater, container, false)
binding.viewModel = viewModel
initRecyclerView()
@@ -74,7 +76,8 @@ class NovelTableFragment : DaggerFragment() {
}
private inner class TableAdapter constructor(
- context: Context, list: ObservableList) :
+ context: Context, list: ObservableList
+ ) :
ObservableListRecyclerAdapter>(
context, list
) {
@@ -84,7 +87,8 @@ class NovelTableFragment : DaggerFragment() {
}
override fun onCreateViewHolder(
- parent: ViewGroup, viewType: Int): BindingHolder
+ parent: ViewGroup, viewType: Int
+ ): BindingHolder
= BindingHolder(context, parent, layout.view_table_item)
override fun onBindViewHolder(holder: BindingHolder, position: Int) {
diff --git a/app/src/main/kotlin/com/ayatk/biblio/ui/home/bookmark/BookmarkFragment.kt b/app/src/main/kotlin/com/ayatk/biblio/ui/home/bookmark/BookmarkFragment.kt
index 37f1df99..1ada8bb8 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/ui/home/bookmark/BookmarkFragment.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/ui/home/bookmark/BookmarkFragment.kt
@@ -15,8 +15,10 @@ class BookmarkFragment : DaggerFragment() {
lateinit var binding: FragmentBookmarkBinding
- override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?): View? {
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
binding = FragmentBookmarkBinding.inflate(inflater, container, false)
return binding.root
}
diff --git a/app/src/main/kotlin/com/ayatk/biblio/ui/home/library/LibraryFragment.kt b/app/src/main/kotlin/com/ayatk/biblio/ui/home/library/LibraryFragment.kt
index 9fbc22b4..f06f74bd 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/ui/home/library/LibraryFragment.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/ui/home/library/LibraryFragment.kt
@@ -27,8 +27,10 @@ class LibraryFragment : DaggerFragment() {
@Inject
lateinit var viewModel: LibraryViewModel
- override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?): View? {
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
binding = FragmentLibraryBinding.inflate(inflater, container, false)
binding.viewModel = viewModel
@@ -64,7 +66,8 @@ class LibraryFragment : DaggerFragment() {
}
private inner class LibraryAdapter constructor(
- context: Context, list: ObservableList) :
+ context: Context, list: ObservableList
+ ) :
ObservableListRecyclerAdapter>(
context, list
) {
@@ -74,7 +77,8 @@ class LibraryFragment : DaggerFragment() {
}
override fun onCreateViewHolder(
- parent: ViewGroup, viewType: Int): BindingHolder
+ parent: ViewGroup, viewType: Int
+ ): BindingHolder
= BindingHolder(context, parent, R.layout.view_library_item)
override fun onBindViewHolder(holder: BindingHolder, position: Int) {
diff --git a/app/src/main/kotlin/com/ayatk/biblio/ui/home/library/LibraryViewModel.kt b/app/src/main/kotlin/com/ayatk/biblio/ui/home/library/LibraryViewModel.kt
index d96438c5..a87f36ae 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/ui/home/library/LibraryViewModel.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/ui/home/library/LibraryViewModel.kt
@@ -11,8 +11,8 @@ import android.view.View
import com.ayatk.biblio.BR
import com.ayatk.biblio.model.Library
import com.ayatk.biblio.model.enums.Publisher
-import com.ayatk.biblio.pref.DefaultPrefsWrapper
-import com.ayatk.biblio.repository.library.LibraryRepository
+import com.ayatk.biblio.pref.DefaultPrefs
+import com.ayatk.biblio.repository.library.LibraryDataSource
import com.ayatk.biblio.repository.novel.NovelRepository
import com.ayatk.biblio.repository.novel.NovelTableRepository
import com.ayatk.biblio.ui.ViewModel
@@ -25,10 +25,10 @@ import javax.inject.Inject
class LibraryViewModel @Inject constructor(
private val navigator: Navigator,
- private val libraryRepository: LibraryRepository,
+ private val libraryDataSource: LibraryDataSource,
private val novelRepository: NovelRepository,
private val novelTableRepository: NovelTableRepository,
- private val defaultPrefsWrapper: DefaultPrefsWrapper
+ private val defaultPrefs: DefaultPrefs
) : BaseObservable(), ViewModel {
companion object {
@@ -57,14 +57,14 @@ class LibraryViewModel @Inject constructor(
}
private fun loadLibraries(): Single> {
- return libraryRepository.findAll()
+ return libraryDataSource.findAll()
// 最終更新日時順でソート
.map({ libraries -> libraries.sortedByDescending { (_, novel) -> novel.lastUpdateDate } })
}
private fun convertToViewModel(libraries: List): List {
return libraries.map { library ->
- LibraryItemViewModel(navigator, library, defaultPrefsWrapper.prefs)
+ LibraryItemViewModel(navigator, library, defaultPrefs)
}
}
diff --git a/app/src/main/kotlin/com/ayatk/biblio/ui/home/ranking/RankingFragment.kt b/app/src/main/kotlin/com/ayatk/biblio/ui/home/ranking/RankingFragment.kt
index 13e91499..ebbcc653 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/ui/home/ranking/RankingFragment.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/ui/home/ranking/RankingFragment.kt
@@ -15,8 +15,10 @@ class RankingFragment : DaggerFragment() {
lateinit var binding: FragmentRankingBinding
- override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?): View? {
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
binding = FragmentRankingBinding.inflate(inflater, container, false)
return binding.root
}
diff --git a/app/src/main/kotlin/com/ayatk/biblio/ui/search/SearchActivity.kt b/app/src/main/kotlin/com/ayatk/biblio/ui/search/SearchActivity.kt
index 762b9db3..e0d40c8f 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/ui/search/SearchActivity.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/ui/search/SearchActivity.kt
@@ -150,17 +150,20 @@ class SearchActivity : DaggerAppCompatActivity() {
}
private inner class SearchResultAdapter constructor(
- context: Context, list: ObservableList) :
+ context: Context, list: ObservableList
+ ) :
ObservableListRecyclerAdapter>(
context, list
) {
override fun onCreateViewHolder(
- parent: ViewGroup, viewType: Int): BindingHolder
+ parent: ViewGroup, viewType: Int
+ ): BindingHolder
= BindingHolder(context, parent, layout.view_search_result_item)
override fun onBindViewHolder(
- holder: BindingHolder, position: Int) {
+ holder: BindingHolder, position: Int
+ ) {
holder.binding.apply {
viewModel = getItem(position)
executePendingBindings()
diff --git a/app/src/main/kotlin/com/ayatk/biblio/ui/search/SearchResultItemViewModel.kt b/app/src/main/kotlin/com/ayatk/biblio/ui/search/SearchResultItemViewModel.kt
index e36b268b..138d02be 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/ui/search/SearchResultItemViewModel.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/ui/search/SearchResultItemViewModel.kt
@@ -11,7 +11,7 @@ import com.ayatk.biblio.BR
import com.ayatk.biblio.model.Library
import com.ayatk.biblio.model.Novel
import com.ayatk.biblio.model.enums.NovelState
-import com.ayatk.biblio.repository.library.LibraryRepository
+import com.ayatk.biblio.repository.library.LibraryDataSource
import com.ayatk.biblio.ui.ViewModel
import com.ayatk.biblio.util.DateFormat
import io.reactivex.rxkotlin.subscribeBy
@@ -20,7 +20,8 @@ import timber.log.Timber
class SearchResultItemViewModel(
libraries: List,
val novel: Novel,
- private val libraryRepository: LibraryRepository) : BaseObservable(), ViewModel {
+ private val libraryDataSource: LibraryDataSource
+) : BaseObservable(), ViewModel {
@Bindable
var downloadVisibility: Int = View.VISIBLE
@@ -42,7 +43,7 @@ class SearchResultItemViewModel(
}
fun View.onClickAddLibrary() {
- libraryRepository.save(Library(novel = novel, tag = listOf()))
+ libraryDataSource.save(Library(novel = novel, tag = listOf()))
.doOnSubscribe {
downloadVisibility = View.GONE
notifyPropertyChanged(BR.downloadVisibility)
diff --git a/app/src/main/kotlin/com/ayatk/biblio/ui/search/SearchViewModel.kt b/app/src/main/kotlin/com/ayatk/biblio/ui/search/SearchViewModel.kt
index 3786dfd4..474ee7b3 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/ui/search/SearchViewModel.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/ui/search/SearchViewModel.kt
@@ -11,7 +11,7 @@ import com.ayatk.biblio.data.narou.NarouClient
import com.ayatk.biblio.data.narou.util.QueryBuilder
import com.ayatk.biblio.model.Library
import com.ayatk.biblio.model.Novel
-import com.ayatk.biblio.repository.library.LibraryRepository
+import com.ayatk.biblio.repository.library.LibraryDataSource
import com.ayatk.biblio.ui.ViewModel
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
@@ -21,10 +21,11 @@ import javax.inject.Inject
class SearchViewModel @Inject constructor(
private val narouClient: NarouClient,
- private val libraryRepository: LibraryRepository) : ViewModel {
+ private val libraryDataSource: LibraryDataSource
+) : ViewModel {
init {
- libraryRepository.findAll()
+ libraryDataSource.findAll()
.subscribeOn(Schedulers.io())
.subscribe(
{ libraries -> this.libraries = libraries },
@@ -73,7 +74,7 @@ class SearchViewModel @Inject constructor(
private fun convertToViewModel(novels: List): List {
return novels.map { novel ->
- SearchResultItemViewModel(libraries, novel, libraryRepository)
+ SearchResultItemViewModel(libraries, novel, libraryDataSource)
}
}
}
diff --git a/app/src/main/kotlin/com/ayatk/biblio/ui/util/customview/ObservableListRecyclerAdapter.kt b/app/src/main/kotlin/com/ayatk/biblio/ui/util/customview/ObservableListRecyclerAdapter.kt
index a77403c7..8b1708dc 100644
--- a/app/src/main/kotlin/com/ayatk/biblio/ui/util/customview/ObservableListRecyclerAdapter.kt
+++ b/app/src/main/kotlin/com/ayatk/biblio/ui/util/customview/ObservableListRecyclerAdapter.kt
@@ -21,22 +21,26 @@ abstract class ObservableListRecyclerAdapter(
}
override fun onItemRangeChanged(
- contributorViewModels: ObservableList, i: Int, i1: Int) {
+ contributorViewModels: ObservableList, i: Int, i1: Int
+ ) {
notifyItemRangeChanged(i, i1)
}
override fun onItemRangeInserted(
- contributorViewModels: ObservableList, i: Int, i1: Int) {
+ contributorViewModels: ObservableList, i: Int, i1: Int
+ ) {
notifyItemRangeInserted(i, i1)
}
override fun onItemRangeMoved(
- contributorViewModels: ObservableList, i: Int, i1: Int, i2: Int) {
+ contributorViewModels: ObservableList, i: Int, i1: Int, i2: Int
+ ) {
notifyItemMoved(i, i1)
}
override fun onItemRangeRemoved(
- contributorViewModels: ObservableList, i: Int, i1: Int) {
+ contributorViewModels: ObservableList, i: Int, i1: Int
+ ) {
notifyItemRangeRemoved(i, i1)
}
}