Skip to content

Instantly share code, notes, and snippets.

View lomza's full-sized avatar
🗺️

Tonia lomza

🗺️
View GitHub Profile
@lomza
lomza / AndroidManifest.xml
Created June 1, 2020 12:18
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.lomza.moviesroom">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
@lomza
lomza / DirectorsListFragment.kt
Created June 1, 2020 12:17
DirectorsListFragment.kt
fun exportDirectorsToCSVFile(csvFile: File) {
csvWriter().open(csvFile, append = false) {
// Header
writeRow(listOf("[id]", "[${Director.TABLE_NAME}]"))
directorsList.forEachIndexed { index, director ->
writeRow(listOf(index, director.fullName))
}
}
}
@lomza
lomza / MoviesListFragment.kt
Created June 1, 2020 12:16
MoviesListFragment.kt
class MoviesListFragment : Fragment() {
private lateinit var moviesListAdapter: MoviesListAdapter
private lateinit var moviesViewModel: MoviesViewModel
private lateinit var moviesList: List<Movie>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
initData()
}
@lomza
lomza / MainActivity.kt
Last active June 1, 2020 15:37
MainActivity.kt
private fun getCSVFileName() : String =
if (MOVIES_SHOWN) "MoviesRoomExample.csv" else "DirectorsRoomExample.csv"
private fun exportDatabaseToCSVFile() {
val csvFile = generateFile(this, getCSVFileName())
if (csvFile != null) {
if (MOVIES_SHOWN) {
(shownFragment as MoviesListFragment).exportMoviesWithDirectorsToCSVFile(csvFile)
} else {
(shownFragment as DirectorsListFragment).exportDirectorsToCSVFile(csvFile)
@lomza
lomza / FileUtils.kt
Created June 1, 2020 12:13
FileUtils.kt
fun generateFile(context: Context, fileName: String): File? {
val csvFile = File(context.filesDir, fileName)
csvFile.createNewFile()
return if (csvFile.exists()) {
csvFile
} else {
null
}
}
@lomza
lomza / 1.json
Created May 28, 2020 14:04
Database schema json
{
"formatVersion": 1,
"database": {
"version": 1,
"identityHash": "627455825d506754f171b32a983cfc02",
"entities": [
{
"tableName": "movie",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`mid` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `directorId` INTEGER NOT NULL, FOREIGN KEY(`directorId`) REFERENCES `director`(`did`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
private suspend fun saveMovie(movieTitle: String, movieDirectorFullName: String) {
if (TextUtils.isEmpty(movieTitle) || TextUtils.isEmpty(movieDirectorFullName)) {
return
}
val directorDao = MoviesDatabase.getDatabase(requireContext()).directorDao()
val movieDao = MoviesDatabase.getDatabase(requireContext()).movieDao()
var directorId: Long = -1L
if (movieDirectorFullNameExtra != null) {
// clicked on item row -> update
val directorToUpdate = directorDao.findDirectorByName(movieDirectorFullNameExtra)
private suspend fun saveDirector(fullName: String) {
if (TextUtils.isEmpty(fullName)) {
return
}
val directorDao = MoviesDatabase.getDatabase(requireContext()).directorDao()
if (directorFullNameExtra != null) {
// clicked on item row -> update
val directorToUpdate = directorDao.findDirectorByName(directorFullNameExtra)
if (directorToUpdate != null) {
if (directorToUpdate.fullName != fullName) {
@lomza
lomza / DirectorsListFragment.kt
Created May 28, 2020 13:55
DirectorsListFragment.kt
class DirectorsListFragment : Fragment() {
private lateinit var directorsListAdapter: DirectorsListAdapter
private lateinit var directorsViewModel: DirectorsViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
initData()
}
@lomza
lomza / DirectorsViewModel.kt
Created May 28, 2020 13:54
DirectorsViewModel.kt
class DirectorsViewModel(application: Application) : AndroidViewModel(application) {
private val directorDao: DirectorDao = MoviesDatabase.getDatabase(application).directorDao()
val directorList: LiveData<List<Director>>
init {
directorList = directorDao.allDirectors
}
suspend fun insert(vararg directors: Director) {