Skip to content

Commit c954c37

Browse files
committed
Added source for TODO list
1 parent de4e97d commit c954c37

File tree

21 files changed

+285
-26
lines changed

21 files changed

+285
-26
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.androidarchitecture.data
2+
3+
import android.arch.lifecycle.LiveData
4+
import com.androidarchitecture.entity.Task
5+
6+
/**
7+
* Created by binary on 5/22/17.
8+
*/
9+
interface TaskDataSource {
10+
11+
fun getAllTask(): LiveData<List<Task>>
12+
13+
fun saveTask(taskName:String)
14+
15+
}

app/src/main/java/com/androidarchitecture/data/local/AppDatabase.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,18 @@ package com.androidarchitecture.data.local
22

33
import android.arch.persistence.room.Database
44
import android.arch.persistence.room.RoomDatabase
5-
6-
//import com.androidarchitecture.data.local.user.UserDao;
5+
import com.androidarchitecture.data.local.task.TaskDao
76
import com.androidarchitecture.data.local.user.UserDao
7+
import com.androidarchitecture.entity.Task
88
import com.androidarchitecture.entity.User
99

1010
/**
1111
* Created by binary on 5/19/17.
1212
*/
13-
@Database(entities = arrayOf(User::class), version = 1)
13+
@Database(entities = arrayOf(User::class, Task::class), version = 2)
1414
abstract class AppDatabase : RoomDatabase() {
15+
1516
abstract fun userDao(): UserDao
17+
18+
abstract fun taskDao(): TaskDao
1619
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.androidarchitecture.data.local.task
2+
3+
import android.arch.lifecycle.LiveData
4+
import android.arch.persistence.room.Dao
5+
import android.arch.persistence.room.Insert
6+
import android.arch.persistence.room.Query
7+
import com.androidarchitecture.entity.Task
8+
9+
/**
10+
* Created by binary on 5/22/17.
11+
*/
12+
@Dao
13+
interface TaskDao : TaskLocalAPI {
14+
15+
@Query("SELECT * FROM task")
16+
override fun getAllTask(): LiveData<List<Task>>
17+
18+
@Insert
19+
override fun saveTask(task: Task)
20+
21+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.androidarchitecture.data.local.task
2+
3+
import android.arch.lifecycle.LiveData
4+
import com.androidarchitecture.entity.Task
5+
6+
/**
7+
* Created by binary on 5/22/17.
8+
*/
9+
interface TaskLocalAPI {
10+
11+
fun getAllTask(): LiveData<List<Task>>
12+
13+
fun saveTask(task: Task)
14+
15+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.androidarchitecture.data.repository
2+
3+
import android.arch.lifecycle.LiveData
4+
import com.androidarchitecture.core.executor.ThreadExecutor
5+
import com.androidarchitecture.data.TaskDataSource
6+
import com.androidarchitecture.entity.Task
7+
import javax.inject.Inject
8+
import javax.inject.Singleton
9+
10+
/**
11+
* Created by binary on 5/22/17.
12+
*/
13+
@Singleton
14+
class TaskRepository @Inject constructor(taskRepositoryFactory: TaskRepositoryFactory , val threadExecutor: ThreadExecutor) : TaskDataSource {
15+
16+
private val taskLocalAPI = taskRepositoryFactory.createTaskLocalAPI()
17+
18+
override fun getAllTask(): LiveData<List<Task>> {
19+
return taskLocalAPI.getAllTask()
20+
}
21+
22+
override fun saveTask(taskName: String) {
23+
threadExecutor.execute { taskLocalAPI.saveTask(Task(taskName)) }
24+
}
25+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.androidarchitecture.data.repository
2+
3+
import com.androidarchitecture.data.local.AppDatabase
4+
import com.androidarchitecture.data.local.task.TaskLocalAPI
5+
import javax.inject.Inject
6+
import javax.inject.Singleton
7+
8+
/**
9+
* Created by binary on 5/22/17.
10+
*/
11+
@Singleton
12+
class TaskRepositoryFactory @Inject constructor(private var appDatabase: AppDatabase) {
13+
14+
fun createTaskLocalAPI(): TaskLocalAPI {
15+
return appDatabase.taskDao()
16+
}
17+
}

app/src/main/java/com/androidarchitecture/data/repository/UserRepository.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,19 @@ import javax.inject.Singleton
1616
@Singleton
1717
class UserRepository @Inject constructor(userRepositoryFactory: UserRepositoryFactory, var threadExecutor: ThreadExecutor) : UserDataSource {
1818

19-
private val userNetApi = userRepositoryFactory.createUserNetApi()
20-
private val userLocalApi = userRepositoryFactory.createUserLocalAPI()
19+
private val userNetAPI = userRepositoryFactory.createUserNetAPI()
20+
private val userLocalAPI = userRepositoryFactory.createUserLocalAPI()
2121

2222
//region UserDataSource
2323
override fun loadUserInfoById(userId: Int): LiveData<User> {
2424
val result = MutableLiveData<User>()
2525
threadExecutor.execute {
26-
val userLocal = userLocalApi.findById(userId)
26+
val userLocal = userLocalAPI.findById(userId)
2727

2828
if(userLocal != null) {
2929
result.postValue(userLocal)
3030
} else {
31-
userNetApi.loadUserById(userId).observeForever {
31+
userNetAPI.loadUserById(userId).observeForever {
3232
result.postValue(it)
3333
}
3434
}
@@ -38,7 +38,7 @@ class UserRepository @Inject constructor(userRepositoryFactory: UserRepositoryFa
3838
}
3939

4040
override fun saveUser(user: User) {
41-
threadExecutor.execute { userLocalApi.saveUser(user) }
41+
threadExecutor.execute { userLocalAPI.saveUser(user) }
4242
}
4343
//endregion
4444
}

app/src/main/java/com/androidarchitecture/data/repository/UserRepositoryFactory.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import javax.inject.Singleton
1414
@Singleton
1515
class UserRepositoryFactory @Inject constructor(var context:Context, private var appDatabase: AppDatabase) {
1616

17-
fun createUserNetApi() : UserNetAPI {
17+
fun createUserNetAPI() : UserNetAPI {
1818
return RetrofitUserAPI(context)
1919
}
2020

app/src/main/java/com/androidarchitecture/di/component/AppComponent.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ import com.androidarchitecture.di.module.DataModule
77
import dagger.Component
88
import javax.inject.Singleton
99
import com.androidarchitecture.core.executor.ThreadExecutor
10+
import com.androidarchitecture.data.TaskDataSource
1011
import com.androidarchitecture.view.activity.LoginActivity
12+
import com.androidarchitecture.view.fragment.MainFragment
1113

1214

1315
/**
@@ -23,5 +25,9 @@ interface AppComponent {
2325

2426
fun userDataSource(): UserDataSource
2527

28+
fun taskDataSource(): TaskDataSource
29+
2630
fun inject(loginActivity: LoginActivity)
31+
32+
fun inject(mainFragment: MainFragment)
2733
}

app/src/main/java/com/androidarchitecture/di/module/DataModule.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.androidarchitecture.di.module
22

3+
import com.androidarchitecture.data.TaskDataSource
34
import com.androidarchitecture.data.UserDataSource
5+
import com.androidarchitecture.data.repository.TaskRepository
46
import com.androidarchitecture.data.repository.UserRepository
57
import dagger.Module
68
import dagger.Provides
@@ -16,4 +18,8 @@ class DataModule {
1618
@Singleton
1719
fun providerUserDataSource(userRepository: UserRepository) : UserDataSource = userRepository
1820

21+
@Provides
22+
@Singleton
23+
fun providerTaskDataSource(taskRepository: TaskRepository) : TaskDataSource = taskRepository
24+
1925
}

0 commit comments

Comments
 (0)