mirror of
https://github.com/rt-bishop/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Added TLE sources DAO, minor fixes
This commit is contained in:
1 parent
78b8538808
commit
2a63aa94a9
10 files changed
+113
-9
No files matched your search
@@ -25,6 +25,7 @@ import com.rtbishop.look4sat.persistence.LocalDataSource
|
||||
import com.rtbishop.look4sat.persistence.LocalSource
|
||||
import com.rtbishop.look4sat.persistence.SatelliteDb
|
||||
import com.rtbishop.look4sat.persistence.dao.EntriesDao
|
||||
import com.rtbishop.look4sat.persistence.dao.SourcesDao
|
||||
import com.rtbishop.look4sat.persistence.dao.TransmittersDao
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
@@ -45,13 +46,20 @@ class PersistenceModule {
|
||||
return db.transmittersDao()
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
fun providesSourcesDao(db: SatelliteDb): SourcesDao {
|
||||
return db.sourcesDao()
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
fun provideLocalDataSource(
|
||||
entriesDao: EntriesDao,
|
||||
transmittersDao: TransmittersDao
|
||||
transmittersDao: TransmittersDao,
|
||||
sourcesDao: SourcesDao
|
||||
): LocalSource {
|
||||
return LocalDataSource(entriesDao, transmittersDao)
|
||||
return LocalDataSource(entriesDao, transmittersDao, sourcesDao)
|
||||
}
|
||||
|
||||
@Singleton
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
package com.rtbishop.look4sat.data
|
||||
|
||||
data class TleSource(var url: String = String())
|
||||
import androidx.room.Entity
|
||||
import androidx.room.PrimaryKey
|
||||
|
||||
@Entity(tableName = "sources")
|
||||
data class TleSource(@PrimaryKey var url: String = String())
|
||||
@@ -20,14 +20,17 @@
|
||||
package com.rtbishop.look4sat.persistence
|
||||
|
||||
import com.rtbishop.look4sat.data.SatEntry
|
||||
import com.rtbishop.look4sat.data.TleSource
|
||||
import com.rtbishop.look4sat.data.Transmitter
|
||||
import com.rtbishop.look4sat.persistence.dao.EntriesDao
|
||||
import com.rtbishop.look4sat.persistence.dao.SourcesDao
|
||||
import com.rtbishop.look4sat.persistence.dao.TransmittersDao
|
||||
import javax.inject.Inject
|
||||
|
||||
class LocalDataSource @Inject constructor(
|
||||
private val entriesDao: EntriesDao,
|
||||
private val transmittersDao: TransmittersDao
|
||||
private val transmittersDao: TransmittersDao,
|
||||
private val sourcesDao: SourcesDao
|
||||
) : LocalSource {
|
||||
|
||||
override suspend fun insertEntries(entries: List<SatEntry>) {
|
||||
@@ -47,6 +50,10 @@ class LocalDataSource @Inject constructor(
|
||||
catNumList.forEach { entriesDao.updateEntrySelection(it) }
|
||||
}
|
||||
|
||||
override suspend fun clearEntries() {
|
||||
entriesDao.clearEntries()
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
override suspend fun insertTransmitters(transmitters: List<Transmitter>) {
|
||||
@@ -56,4 +63,22 @@ class LocalDataSource @Inject constructor(
|
||||
override suspend fun getTransmittersByCatNum(catNum: Int): List<Transmitter> {
|
||||
return transmittersDao.getTransmittersByCatNum(catNum)
|
||||
}
|
||||
|
||||
override suspend fun clearTransmitters() {
|
||||
transmittersDao.clearTransmitters()
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
override suspend fun insertSources(sources: List<TleSource>) {
|
||||
sourcesDao.insertSources(sources)
|
||||
}
|
||||
|
||||
override suspend fun getSources(): List<TleSource> {
|
||||
return sourcesDao.getSources()
|
||||
}
|
||||
|
||||
override suspend fun clearSources() {
|
||||
sourcesDao.clearSources()
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.rtbishop.look4sat.persistence
|
||||
|
||||
import com.rtbishop.look4sat.data.SatEntry
|
||||
import com.rtbishop.look4sat.data.TleSource
|
||||
import com.rtbishop.look4sat.data.Transmitter
|
||||
|
||||
interface LocalSource {
|
||||
@@ -13,9 +14,21 @@ interface LocalSource {
|
||||
|
||||
suspend fun updateEntriesSelection(catNumList: List<Int>)
|
||||
|
||||
suspend fun clearEntries()
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
suspend fun insertTransmitters(transmitters: List<Transmitter>)
|
||||
|
||||
suspend fun getTransmittersByCatNum(catNum: Int): List<Transmitter>
|
||||
|
||||
suspend fun clearTransmitters()
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
suspend fun insertSources(sources: List<TleSource>)
|
||||
|
||||
suspend fun getSources(): List<TleSource>
|
||||
|
||||
suspend fun clearSources()
|
||||
}
|
||||
@@ -23,16 +23,24 @@ import androidx.room.Database
|
||||
import androidx.room.RoomDatabase
|
||||
import androidx.room.TypeConverters
|
||||
import com.rtbishop.look4sat.data.SatEntry
|
||||
import com.rtbishop.look4sat.data.TleSource
|
||||
import com.rtbishop.look4sat.data.Transmitter
|
||||
import com.rtbishop.look4sat.persistence.dao.EntriesDao
|
||||
import com.rtbishop.look4sat.persistence.dao.SourcesDao
|
||||
import com.rtbishop.look4sat.persistence.dao.TransmittersDao
|
||||
import com.rtbishop.look4sat.utility.Converters
|
||||
|
||||
@Database(entities = [Transmitter::class, SatEntry::class], version = 1, exportSchema = false)
|
||||
@Database(
|
||||
entities = [Transmitter::class, SatEntry::class, TleSource::class],
|
||||
version = 1,
|
||||
exportSchema = false
|
||||
)
|
||||
@TypeConverters(Converters::class)
|
||||
abstract class SatelliteDb : RoomDatabase() {
|
||||
|
||||
abstract fun entriesDao(): EntriesDao
|
||||
|
||||
abstract fun transmittersDao(): TransmittersDao
|
||||
|
||||
abstract fun sourcesDao(): SourcesDao
|
||||
}
|
||||
@@ -42,4 +42,7 @@ interface EntriesDao {
|
||||
|
||||
@Query("UPDATE entries SET isSelected = 0")
|
||||
suspend fun clearEntriesSelection()
|
||||
|
||||
@Query("DELETE FROM entries")
|
||||
suspend fun clearEntries()
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.rtbishop.look4sat.persistence.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy
|
||||
import androidx.room.Query
|
||||
import com.rtbishop.look4sat.data.TleSource
|
||||
|
||||
@Dao
|
||||
interface SourcesDao {
|
||||
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||
suspend fun insertSources(sources: List<TleSource>)
|
||||
|
||||
@Query("SELECT * FROM sources")
|
||||
suspend fun getSources(): List<TleSource>
|
||||
|
||||
@Query("DELETE FROM sources")
|
||||
suspend fun clearSources()
|
||||
}
|
||||
@@ -14,4 +14,7 @@ interface TransmittersDao {
|
||||
|
||||
@Query("SELECT * FROM transmitters WHERE isAlive = 1 and catNum = :catNum")
|
||||
suspend fun getTransmittersByCatNum(catNum: Int): List<Transmitter>
|
||||
|
||||
@Query("DELETE FROM transmitters")
|
||||
suspend fun clearTransmitters()
|
||||
}
|
||||
@@ -38,20 +38,22 @@ class DefaultRepository @Inject constructor(
|
||||
) : Repository {
|
||||
|
||||
override suspend fun updateEntriesFromFile(tleUri: Uri) {
|
||||
resolver.openInputStream(tleUri)?.use {
|
||||
withContext(Dispatchers.IO) {
|
||||
val tleList = TLE.importSat(it)
|
||||
withContext(Dispatchers.IO) {
|
||||
resolver.openInputStream(tleUri)?.use { stream ->
|
||||
val tleList = TLE.importSat(stream)
|
||||
val entries = tleList.map { SatEntry(it) }
|
||||
localSource.clearEntries()
|
||||
localSource.insertEntries(entries)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun updateEntriesFromUrl(urlList: List<TleSource>) {
|
||||
val stream = remoteSource.fetchTleStream(urlList)
|
||||
withContext(Dispatchers.IO) {
|
||||
val stream = remoteSource.fetchTleStream(urlList)
|
||||
val tleList = TLE.importSat(stream)
|
||||
val entries = tleList.map { SatEntry(it) }
|
||||
localSource.clearEntries()
|
||||
localSource.insertEntries(entries)
|
||||
}
|
||||
}
|
||||
@@ -71,10 +73,22 @@ class DefaultRepository @Inject constructor(
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
override suspend fun updateTransmitters() {
|
||||
localSource.clearTransmitters()
|
||||
localSource.insertTransmitters(remoteSource.fetchTransmitters())
|
||||
}
|
||||
|
||||
override suspend fun getTransmittersByCatNum(catNum: Int): List<Transmitter> {
|
||||
return localSource.getTransmittersByCatNum(catNum)
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
override suspend fun updateSources(sources: List<TleSource>) {
|
||||
localSource.clearSources()
|
||||
localSource.insertSources(sources)
|
||||
}
|
||||
|
||||
override suspend fun getSources(): List<TleSource> {
|
||||
return localSource.getSources()
|
||||
}
|
||||
}
|
||||
@@ -22,4 +22,10 @@ interface Repository {
|
||||
suspend fun updateTransmitters()
|
||||
|
||||
suspend fun getTransmittersByCatNum(catNum: Int): List<Transmitter>
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
suspend fun updateSources(sources: List<TleSource>)
|
||||
|
||||
suspend fun getSources(): List<TleSource>
|
||||
}
|
||||
Reference in new issue
Block a user