From 55a827330f18d60da8b6b80d87310e8ef8bec965 Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Tue, 5 Oct 2021 19:02:04 +0100 Subject: [PATCH] Moved and renamed several classes --- app/build.gradle | 4 ++ .../2.json | 0 .../{utility => framework}/DataMapper.kt | 12 ++-- .../look4sat/framework/PreferencesSource.kt | 60 +++++++++--------- .../RoomConverters.kt => local/Converters.kt} | 8 +-- .../LocalSource.kt} | 16 ++--- .../framework/{db => local}/SatelliteDao.kt | 4 +- .../framework/{db => local}/SatelliteDb.kt | 4 +- .../rtbishop/look4sat/framework/model/OMM.kt | 33 ---------- .../look4sat/framework/model/SatEntry.kt | 2 +- .../RemoteSource.kt} | 10 +-- .../framework/{api => remote}/SatelliteApi.kt | 2 +- .../{ThreadsModule.kt => CoroutinesModule.kt} | 0 .../{DataModule.kt => Look4SatModule.kt} | 48 +++++++------- .../{utility => presentation}/Extensions.kt | 0 .../ItemDivider.kt} | 4 +- .../entriesScreen/EntriesAdapter.kt | 18 +++--- .../entriesScreen/EntriesFragment.kt | 18 +++--- .../entriesScreen/EntriesViewModel.kt | 22 +++---- .../presentation/mapScreen/MapData.kt | 4 +- .../presentation/mapScreen/MapFragment.kt | 4 +- .../presentation/mapScreen/MapViewModel.kt | 14 +++-- .../passesScreen/PassesAdapter.kt | 2 +- .../passesScreen/PassesFragment.kt | 8 +-- .../passesScreen/PassesViewModel.kt | 14 ++--- .../presentation/radarScreen/RadarData.kt | 19 +++++- .../presentation/radarScreen/RadarFragment.kt | 12 ++-- .../presentation/radarScreen/RadarView.kt | 2 +- .../radarScreen/RadarViewModel.kt | 24 +++---- .../radarScreen/TransmittersAdapter.kt | 2 +- .../settingsScreen/SettingsFragment.kt | 3 +- .../sourcesScreen/SourcesDialog.kt | 4 +- .../look4sat/utility/CustomHandler.kt | 18 ------ app/src/main/res/xml/preference.xml | 2 +- build.gradle | 4 +- .../com/rtbishop/look4sat/common/Constants.kt | 28 +++++++++ .../rtbishop/look4sat/common}/DataState.kt | 2 +- .../{SatelliteRepo.kt => DataRepository.kt} | 38 +++++------ .../{LocalSource.kt => LocalDataSource.kt} | 8 ++- .../com/rtbishop/look4sat/data/Preferences.kt | 63 ------------------- .../{RemoteSource.kt => RemoteDataSource.kt} | 4 +- .../{PassReporter.kt => DataReporter.kt} | 19 +++++- .../rtbishop/look4sat/domain/QthConverter.kt | 1 + .../rtbishop/look4sat/domain/Repository.kt | 39 ++++++++++++ .../java/com/rtbishop/look4sat/model/OMM.kt | 31 +++++++++ .../look4sat/{data => model}/SatEntry.kt | 4 +- .../look4sat/{data => model}/SatItem.kt | 2 +- .../look4sat/{domain => model}/Transmitter.kt | 2 +- .../DeepSpaceSat.kt | 2 +- .../{domain => predict4kotlin}/GeoPos.kt | 2 +- .../NearEarthSat.kt | 2 +- .../{domain => predict4kotlin}/Predictor.kt | 2 +- .../{domain => predict4kotlin}/SatPass.kt | 2 +- .../{domain => predict4kotlin}/SatPos.kt | 2 +- .../{domain => predict4kotlin}/Satellite.kt | 2 +- .../{domain => predict4kotlin}/TLE.kt | 2 +- .../usecases/GetSelectedSatellites.kt | 24 +++++++ .../look4sat/{ => domain}/QthConverterTest.kt | 3 +- .../{ => predict4kotlin}/TleParserTest.kt | 20 +++++- 59 files changed, 383 insertions(+), 322 deletions(-) rename app/schemas/{com.rtbishop.look4sat.framework.db.SatelliteDb => com.rtbishop.look4sat.framework.local.SatelliteDb}/2.json (100%) rename app/src/main/java/com/rtbishop/look4sat/{utility => framework}/DataMapper.kt (91%) rename app/src/main/java/com/rtbishop/look4sat/framework/{db/RoomConverters.kt => local/Converters.kt} (89%) rename app/src/main/java/com/rtbishop/look4sat/framework/{db/LocalDataSource.kt => local/LocalSource.kt} (82%) rename app/src/main/java/com/rtbishop/look4sat/framework/{db => local}/SatelliteDao.kt (96%) rename app/src/main/java/com/rtbishop/look4sat/framework/{db => local}/SatelliteDb.kt (95%) delete mode 100644 app/src/main/java/com/rtbishop/look4sat/framework/model/OMM.kt rename app/src/main/java/com/rtbishop/look4sat/framework/{api/RemoteDataSource.kt => remote/RemoteSource.kt} (80%) rename app/src/main/java/com/rtbishop/look4sat/framework/{api => remote}/SatelliteApi.kt (96%) rename app/src/main/java/com/rtbishop/look4sat/injection/{ThreadsModule.kt => CoroutinesModule.kt} (100%) rename app/src/main/java/com/rtbishop/look4sat/injection/{DataModule.kt => Look4SatModule.kt} (75%) rename app/src/main/java/com/rtbishop/look4sat/{utility => presentation}/Extensions.kt (100%) rename app/src/main/java/com/rtbishop/look4sat/{utility/RecyclerDivider.kt => presentation/ItemDivider.kt} (93%) delete mode 100644 app/src/main/java/com/rtbishop/look4sat/utility/CustomHandler.kt create mode 100644 core/src/main/java/com/rtbishop/look4sat/common/Constants.kt rename {app/src/main/java/com/rtbishop/look4sat/framework/model => core/src/main/java/com/rtbishop/look4sat/common}/DataState.kt (95%) rename core/src/main/java/com/rtbishop/look4sat/data/{SatelliteRepo.kt => DataRepository.kt} (74%) rename core/src/main/java/com/rtbishop/look4sat/data/{LocalSource.kt => LocalDataSource.kt} (85%) delete mode 100644 core/src/main/java/com/rtbishop/look4sat/data/Preferences.kt rename core/src/main/java/com/rtbishop/look4sat/data/{RemoteSource.kt => RemoteDataSource.kt} (92%) rename core/src/main/java/com/rtbishop/look4sat/domain/{PassReporter.kt => DataReporter.kt} (68%) create mode 100644 core/src/main/java/com/rtbishop/look4sat/domain/Repository.kt create mode 100644 core/src/main/java/com/rtbishop/look4sat/model/OMM.kt rename core/src/main/java/com/rtbishop/look4sat/{data => model}/SatEntry.kt (91%) rename core/src/main/java/com/rtbishop/look4sat/{data => model}/SatItem.kt (96%) rename core/src/main/java/com/rtbishop/look4sat/{domain => model}/Transmitter.kt (96%) rename core/src/main/java/com/rtbishop/look4sat/{domain => predict4kotlin}/DeepSpaceSat.kt (99%) rename core/src/main/java/com/rtbishop/look4sat/{domain => predict4kotlin}/GeoPos.kt (95%) rename core/src/main/java/com/rtbishop/look4sat/{domain => predict4kotlin}/NearEarthSat.kt (99%) rename core/src/main/java/com/rtbishop/look4sat/{domain => predict4kotlin}/Predictor.kt (99%) rename core/src/main/java/com/rtbishop/look4sat/{domain => predict4kotlin}/SatPass.kt (96%) rename core/src/main/java/com/rtbishop/look4sat/{domain => predict4kotlin}/SatPos.kt (98%) rename core/src/main/java/com/rtbishop/look4sat/{domain => predict4kotlin}/Satellite.kt (99%) rename core/src/main/java/com/rtbishop/look4sat/{domain => predict4kotlin}/TLE.kt (98%) create mode 100644 core/src/main/java/com/rtbishop/look4sat/usecases/GetSelectedSatellites.kt rename core/src/test/java/com/rtbishop/look4sat/{ => domain}/QthConverterTest.kt (96%) rename core/src/test/java/com/rtbishop/look4sat/{ => predict4kotlin}/TleParserTest.kt (65%) diff --git a/app/build.gradle b/app/build.gradle index 870d50d7..f58f70ec 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -24,8 +24,12 @@ android { } } +// def props = new Properties() +// file("../securityKeys.properties").withInputStream { props.load(it) } + buildTypes { release { +// buildConfigField "String", "ApiKey", props.getProperty("apiKey") // minifyEnabled true // shrinkResources true // proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' diff --git a/app/schemas/com.rtbishop.look4sat.framework.db.SatelliteDb/2.json b/app/schemas/com.rtbishop.look4sat.framework.local.SatelliteDb/2.json similarity index 100% rename from app/schemas/com.rtbishop.look4sat.framework.db.SatelliteDb/2.json rename to app/schemas/com.rtbishop.look4sat.framework.local.SatelliteDb/2.json diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/DataMapper.kt b/app/src/main/java/com/rtbishop/look4sat/framework/DataMapper.kt similarity index 91% rename from app/src/main/java/com/rtbishop/look4sat/utility/DataMapper.kt rename to app/src/main/java/com/rtbishop/look4sat/framework/DataMapper.kt index e6ef0648..969c3531 100644 --- a/app/src/main/java/com/rtbishop/look4sat/utility/DataMapper.kt +++ b/app/src/main/java/com/rtbishop/look4sat/framework/DataMapper.kt @@ -15,18 +15,18 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.utility +package com.rtbishop.look4sat.framework import com.rtbishop.look4sat.framework.model.SatEntry import com.rtbishop.look4sat.framework.model.SatItem import com.rtbishop.look4sat.framework.model.Transmitter -import com.rtbishop.look4sat.data.SatEntry as DomainEntry -import com.rtbishop.look4sat.data.SatItem as DomainItem -import com.rtbishop.look4sat.domain.Transmitter as DomainTrans +import com.rtbishop.look4sat.model.SatEntry as DomainEntry +import com.rtbishop.look4sat.model.SatItem as DomainItem +import com.rtbishop.look4sat.model.Transmitter as DomainTrans object DataMapper { - // Framework to Domain + // Presentation to Domain fun satEntryToDomainEntry(entry: SatEntry): DomainEntry { return DomainEntry(entry.tle, entry.catNum, entry.name, entry.isSelected) @@ -55,7 +55,7 @@ object DataMapper { return transmitters.map { transmitter -> satTransToDomainTrans(transmitter) } } - // Domain to Framework + // Domain to Presentation fun domainEntryToSatEntry(entry: DomainEntry): SatEntry { return SatEntry(entry.tle, entry.catNum, entry.name, entry.isSelected) diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/PreferencesSource.kt b/app/src/main/java/com/rtbishop/look4sat/framework/PreferencesSource.kt index b8627896..323eda69 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/PreferencesSource.kt +++ b/app/src/main/java/com/rtbishop/look4sat/framework/PreferencesSource.kt @@ -21,8 +21,8 @@ import android.content.SharedPreferences import android.hardware.GeomagneticField import android.location.LocationManager import androidx.core.content.edit -import com.rtbishop.look4sat.data.Preferences -import com.rtbishop.look4sat.domain.GeoPos +import com.rtbishop.look4sat.common.Constants +import com.rtbishop.look4sat.predict4kotlin.GeoPos import com.rtbishop.look4sat.domain.QthConverter import com.rtbishop.look4sat.utility.round import com.squareup.moshi.Moshi @@ -33,12 +33,12 @@ class PreferencesSource @Inject constructor( moshi: Moshi, private val locationManager: LocationManager, private val preferences: SharedPreferences -) : Preferences { +) { private val sourcesType = Types.newParameterizedType(List::class.java, String::class.java) private val sourcesAdapter = moshi.adapter>(sourcesType) - override fun loadTleSources(): List { + fun loadTleSources(): List { return try { val sourcesString = preferences.getString(keySources, String()) if (sourcesString.isNullOrEmpty()) { @@ -51,17 +51,15 @@ class PreferencesSource @Inject constructor( } } - override fun saveTleSources(sources: List) { + fun saveTleSources(sources: List) { val sourcesJson = sourcesAdapter.toJson(sources) preferences.edit { putString(keySources, sourcesJson) } } - override fun loadDefaultSources(): List { + fun loadDefaultSources(): List { return listOf( - "https://celestrak.com/NORAD/elements/active.txt", - "https://amsat.org/tle/current/nasabare.txt", - "https://www.prismnet.com/~mmccants/tles/classfd.zip", - "https://www.prismnet.com/~mmccants/tles/inttles.zip" + Constants.URL_CELESTRAK, Constants.URL_AMSAT, + Constants.URL_PRISM_CLASSFD, Constants.URL_PRISM_INTEL ) } @@ -85,11 +83,11 @@ class PreferencesSource @Inject constructor( const val keyPositionQTH = "setPositionQTH" } - override fun positionToQTH(lat: Double, lon: Double): String? { + fun positionToQTH(lat: Double, lon: Double): String? { return QthConverter.positionToQTH(lat, lon) } - override fun loadStationPosition(): GeoPos { + fun loadStationPosition(): GeoPos { val defaultSP = "0.0" val latitude = preferences.getString(keyLatitude, null) ?: defaultSP val longitude = preferences.getString(keyLongitude, null) ?: defaultSP @@ -97,7 +95,7 @@ class PreferencesSource @Inject constructor( return GeoPos(latitude.toDouble(), longitude.toDouble(), altitude.toDouble()) } - override fun saveStationPosition(pos: GeoPos) { + fun saveStationPosition(pos: GeoPos) { preferences.edit { putString(keyLatitude, pos.latitude.toString()) putString(keyLongitude, pos.longitude.toString()) @@ -105,7 +103,7 @@ class PreferencesSource @Inject constructor( } } - override fun updatePositionFromGPS(): Boolean { + fun updatePositionFromGPS(): Boolean { return try { val location = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER) if (location == null) false @@ -122,14 +120,14 @@ class PreferencesSource @Inject constructor( } } - override fun updatePositionFromQTH(qthString: String): Boolean { + fun updatePositionFromQTH(qthString: String): Boolean { val position = QthConverter.qthToPosition(qthString) ?: return false val stationPosition = GeoPos(position.latitude, position.longitude, 0.0) saveStationPosition(stationPosition) return true } - override fun getMagDeclination(): Float { + fun getMagDeclination(): Float { val stationPosition = loadStationPosition() val lat = stationPosition.latitude.toFloat() val lon = stationPosition.longitude.toFloat() @@ -137,56 +135,60 @@ class PreferencesSource @Inject constructor( return GeomagneticField(lat, lon, alt, System.currentTimeMillis()).declination } - override fun getHoursAhead(): Int { + fun getHoursAhead(): Int { return preferences.getInt(keyHoursAhead, 8) } - override fun getMinElevation(): Double { + fun getMinElevation(): Double { return preferences.getInt(keyMinElevation, 16).toDouble() } - override fun shouldUseTextLabels(): Boolean { + fun shouldUseTextLabels(): Boolean { return preferences.getBoolean(keyTextLabels, false) } - override fun shouldUseUTC(): Boolean { + fun shouldUseUTC(): Boolean { return preferences.getBoolean(keyTimeUTC, false) } - override fun shouldUseCompass(): Boolean { + fun shouldUseCompass(): Boolean { return preferences.getBoolean(keyCompass, true) } - override fun shouldShowSweep(): Boolean { + fun shouldShowSweep(): Boolean { return preferences.getBoolean(keyRadarSweep, true) } - override fun isSetupDone(): Boolean { + fun isSetupDone(): Boolean { return preferences.getBoolean(keyInitialSetup, false) } - override fun setSetupDone() { + fun setSetupDone() { preferences.edit { putBoolean(keyInitialSetup, true) } } - override fun saveModesSelection(modes: List) { + fun saveModesSelection(modes: List) { val modesSet = modes.toSet() preferences.edit { putStringSet(keyModes, modesSet) } } - override fun loadModesSelection(): List { + fun loadModesSelection(): List { preferences.getStringSet(keyModes, setOf())?.let { modesSet -> return modesSet.toList().sorted() } return emptyList() } - override fun getRotatorServer(): Pair? { - return if (preferences.getBoolean(keyRotator, false)) { + fun isRotatorEnabled(): Boolean { + return preferences.getBoolean(keyRotator, false) + } + + fun getRotatorServer(): Pair? { + return if (isRotatorEnabled()) { val address = preferences.getString(keyRotatorAddress, null) ?: "127.0.0.1" - val port = preferences.getString(keyRotatorPort, null) ?: "4096" + val port = preferences.getString(keyRotatorPort, null) ?: "4533" Pair(address, port.toInt()) } else null } diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/db/RoomConverters.kt b/app/src/main/java/com/rtbishop/look4sat/framework/local/Converters.kt similarity index 89% rename from app/src/main/java/com/rtbishop/look4sat/framework/db/RoomConverters.kt rename to app/src/main/java/com/rtbishop/look4sat/framework/local/Converters.kt index f9da541b..8a1077c2 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/db/RoomConverters.kt +++ b/app/src/main/java/com/rtbishop/look4sat/framework/local/Converters.kt @@ -15,15 +15,15 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.framework.db +package com.rtbishop.look4sat.framework.local import androidx.room.TypeConverter -import com.rtbishop.look4sat.domain.Satellite -import com.rtbishop.look4sat.domain.TLE +import com.rtbishop.look4sat.predict4kotlin.Satellite +import com.rtbishop.look4sat.predict4kotlin.TLE import com.squareup.moshi.JsonAdapter import com.squareup.moshi.Moshi -object RoomConverters { +object Converters { private lateinit var paramsAdapter: JsonAdapter diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/db/LocalDataSource.kt b/app/src/main/java/com/rtbishop/look4sat/framework/local/LocalSource.kt similarity index 82% rename from app/src/main/java/com/rtbishop/look4sat/framework/db/LocalDataSource.kt rename to app/src/main/java/com/rtbishop/look4sat/framework/local/LocalSource.kt index b52ccfb7..0e915b51 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/db/LocalDataSource.kt +++ b/app/src/main/java/com/rtbishop/look4sat/framework/local/LocalSource.kt @@ -15,18 +15,18 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.framework.db +package com.rtbishop.look4sat.framework.local -import com.rtbishop.look4sat.data.LocalSource -import com.rtbishop.look4sat.data.SatEntry -import com.rtbishop.look4sat.data.SatItem -import com.rtbishop.look4sat.domain.Satellite -import com.rtbishop.look4sat.domain.Transmitter -import com.rtbishop.look4sat.utility.DataMapper +import com.rtbishop.look4sat.data.LocalDataSource +import com.rtbishop.look4sat.model.SatEntry +import com.rtbishop.look4sat.model.SatItem +import com.rtbishop.look4sat.predict4kotlin.Satellite +import com.rtbishop.look4sat.model.Transmitter +import com.rtbishop.look4sat.framework.DataMapper import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map -class LocalDataSource(private val satelliteDao: SatelliteDao) : LocalSource { +class LocalSource(private val satelliteDao: SatelliteDao) : LocalDataSource { override fun getEntriesWithModes(): Flow> { return satelliteDao.getSatItems() diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/db/SatelliteDao.kt b/app/src/main/java/com/rtbishop/look4sat/framework/local/SatelliteDao.kt similarity index 96% rename from app/src/main/java/com/rtbishop/look4sat/framework/db/SatelliteDao.kt rename to app/src/main/java/com/rtbishop/look4sat/framework/local/SatelliteDao.kt index d579b18e..71e2a9dc 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/db/SatelliteDao.kt +++ b/app/src/main/java/com/rtbishop/look4sat/framework/local/SatelliteDao.kt @@ -15,13 +15,13 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.framework.db +package com.rtbishop.look4sat.framework.local import androidx.room.* import com.rtbishop.look4sat.framework.model.SatEntry import com.rtbishop.look4sat.framework.model.SatItem import com.rtbishop.look4sat.framework.model.Transmitter -import com.rtbishop.look4sat.domain.Satellite +import com.rtbishop.look4sat.predict4kotlin.Satellite import kotlinx.coroutines.flow.Flow @Dao diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/db/SatelliteDb.kt b/app/src/main/java/com/rtbishop/look4sat/framework/local/SatelliteDb.kt similarity index 95% rename from app/src/main/java/com/rtbishop/look4sat/framework/db/SatelliteDb.kt rename to app/src/main/java/com/rtbishop/look4sat/framework/local/SatelliteDb.kt index e543313d..bc08e8bd 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/db/SatelliteDb.kt +++ b/app/src/main/java/com/rtbishop/look4sat/framework/local/SatelliteDb.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.framework.db +package com.rtbishop.look4sat.framework.local import androidx.room.Database import androidx.room.RoomDatabase @@ -26,7 +26,7 @@ import com.rtbishop.look4sat.framework.model.SatEntry import com.rtbishop.look4sat.framework.model.Transmitter @Database(entities = [SatEntry::class, Transmitter::class], version = 2, exportSchema = true) -@TypeConverters(RoomConverters::class) +@TypeConverters(Converters::class) abstract class SatelliteDb : RoomDatabase() { abstract fun satelliteDao(): SatelliteDao diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/model/OMM.kt b/app/src/main/java/com/rtbishop/look4sat/framework/model/OMM.kt deleted file mode 100644 index 468db128..00000000 --- a/app/src/main/java/com/rtbishop/look4sat/framework/model/OMM.kt +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Look4Sat. Amateur radio satellite tracker and pass predictor. - * Copyright (C) 2019-2021 Arty Bishop (bishop.arty@gmail.com) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package com.rtbishop.look4sat.framework.model - -import com.squareup.moshi.Json - -data class OMM( - @field:Json(name = "OBJECT_NAME") val name: String, - @field:Json(name = "EPOCH") val epochString: String, - @field:Json(name = "MEAN_MOTION") val meanmo: Double, - @field:Json(name = "ECCENTRICITY") val eccn: Double, - @field:Json(name = "INCLINATION") val incl: Double, - @field:Json(name = "RA_OF_ASC_NODE") val raan: Double, - @field:Json(name = "ARG_OF_PERICENTER") val argper: Double, - @field:Json(name = "MEAN_ANOMALY") val meanan: Double, - @field:Json(name = "NORAD_CAT_ID") val catnum: Int, - @field:Json(name = "BSTAR") val bstar: Double, -) diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/model/SatEntry.kt b/app/src/main/java/com/rtbishop/look4sat/framework/model/SatEntry.kt index 272c8048..4d7aec2a 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/model/SatEntry.kt +++ b/app/src/main/java/com/rtbishop/look4sat/framework/model/SatEntry.kt @@ -19,7 +19,7 @@ package com.rtbishop.look4sat.framework.model import androidx.room.Entity import androidx.room.PrimaryKey -import com.rtbishop.look4sat.domain.TLE +import com.rtbishop.look4sat.predict4kotlin.TLE @Entity(tableName = "entries") data class SatEntry( diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/api/RemoteDataSource.kt b/app/src/main/java/com/rtbishop/look4sat/framework/remote/RemoteSource.kt similarity index 80% rename from app/src/main/java/com/rtbishop/look4sat/framework/api/RemoteDataSource.kt rename to app/src/main/java/com/rtbishop/look4sat/framework/remote/RemoteSource.kt index 724c12ca..46efa2cb 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/api/RemoteDataSource.kt +++ b/app/src/main/java/com/rtbishop/look4sat/framework/remote/RemoteSource.kt @@ -15,14 +15,14 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.framework.api +package com.rtbishop.look4sat.framework.remote -import com.rtbishop.look4sat.data.RemoteSource -import com.rtbishop.look4sat.domain.Transmitter -import com.rtbishop.look4sat.utility.DataMapper +import com.rtbishop.look4sat.data.RemoteDataSource +import com.rtbishop.look4sat.model.Transmitter +import com.rtbishop.look4sat.framework.DataMapper import java.io.InputStream -class RemoteDataSource(private val satelliteApi: SatelliteApi) : RemoteSource { +class RemoteSource(private val satelliteApi: SatelliteApi) : RemoteDataSource { override suspend fun fetchFileStream(url: String): InputStream? { return satelliteApi.fetchFileStream(url).body()?.byteStream() diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/api/SatelliteApi.kt b/app/src/main/java/com/rtbishop/look4sat/framework/remote/SatelliteApi.kt similarity index 96% rename from app/src/main/java/com/rtbishop/look4sat/framework/api/SatelliteApi.kt rename to app/src/main/java/com/rtbishop/look4sat/framework/remote/SatelliteApi.kt index 3781f117..c829b4f0 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/api/SatelliteApi.kt +++ b/app/src/main/java/com/rtbishop/look4sat/framework/remote/SatelliteApi.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.framework.api +package com.rtbishop.look4sat.framework.remote import com.rtbishop.look4sat.framework.model.Transmitter import okhttp3.ResponseBody diff --git a/app/src/main/java/com/rtbishop/look4sat/injection/ThreadsModule.kt b/app/src/main/java/com/rtbishop/look4sat/injection/CoroutinesModule.kt similarity index 100% rename from app/src/main/java/com/rtbishop/look4sat/injection/ThreadsModule.kt rename to app/src/main/java/com/rtbishop/look4sat/injection/CoroutinesModule.kt diff --git a/app/src/main/java/com/rtbishop/look4sat/injection/DataModule.kt b/app/src/main/java/com/rtbishop/look4sat/injection/Look4SatModule.kt similarity index 75% rename from app/src/main/java/com/rtbishop/look4sat/injection/DataModule.kt rename to app/src/main/java/com/rtbishop/look4sat/injection/Look4SatModule.kt index 22d634c9..b8d6568b 100644 --- a/app/src/main/java/com/rtbishop/look4sat/injection/DataModule.kt +++ b/app/src/main/java/com/rtbishop/look4sat/injection/Look4SatModule.kt @@ -21,16 +21,17 @@ import android.content.Context import android.content.SharedPreferences import android.location.LocationManager import androidx.room.Room -import com.rtbishop.look4sat.data.LocalSource -import com.rtbishop.look4sat.data.Preferences -import com.rtbishop.look4sat.data.RemoteSource -import com.rtbishop.look4sat.data.SatelliteRepo -import com.rtbishop.look4sat.domain.PassReporter -import com.rtbishop.look4sat.domain.Predictor +import com.rtbishop.look4sat.data.LocalDataSource +import com.rtbishop.look4sat.data.RemoteDataSource +import com.rtbishop.look4sat.data.DataRepository +import com.rtbishop.look4sat.framework.remote.SatelliteApi +import com.rtbishop.look4sat.common.Constants +import com.rtbishop.look4sat.domain.Repository import com.rtbishop.look4sat.framework.PreferencesSource -import com.rtbishop.look4sat.framework.api.RemoteDataSource -import com.rtbishop.look4sat.framework.api.SatelliteApi -import com.rtbishop.look4sat.framework.db.* +import com.rtbishop.look4sat.domain.DataReporter +import com.rtbishop.look4sat.predict4kotlin.Predictor +import com.rtbishop.look4sat.framework.remote.RemoteSource +import com.rtbishop.look4sat.framework.local.* import com.squareup.moshi.Moshi import dagger.Module import dagger.Provides @@ -44,7 +45,7 @@ import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) -object DataModule { +object Look4SatModule { @Provides @Singleton @@ -58,7 +59,7 @@ object DataModule { moshi: Moshi, locationManager: LocationManager, preferences: SharedPreferences - ): Preferences { + ): PreferencesSource { return PreferencesSource(moshi, locationManager, preferences) } @@ -71,17 +72,16 @@ object DataModule { @Provides @Singleton fun provideSatelliteRepo( - preferences: Preferences, - localSource: LocalSource, - remoteSource: RemoteSource, + localSource: LocalDataSource, + remoteSource: RemoteDataSource, @IoDispatcher dispatcher: CoroutineDispatcher - ): SatelliteRepo { - return SatelliteRepo(preferences, localSource, remoteSource, dispatcher) + ): Repository { + return DataRepository(localSource, remoteSource, dispatcher) } @Provides - fun provideLocalDataSource(satelliteDao: SatelliteDao): LocalSource { - return LocalDataSource(satelliteDao) + fun provideLocalDataSource(satelliteDao: SatelliteDao): LocalDataSource { + return LocalSource(satelliteDao) } @Provides @@ -93,29 +93,29 @@ object DataModule { @Provides @Singleton fun provideSatelliteDb(@ApplicationContext context: Context, moshi: Moshi): SatelliteDb { - RoomConverters.initialize(moshi) + Converters.initialize(moshi) return Room.databaseBuilder(context, SatelliteDb::class.java, "SatelliteDb") .addMigrations(MIGRATION_1_2).build() } @Provides @Singleton - fun provideRemoteDataSource(satelliteApi: SatelliteApi): RemoteSource { - return RemoteDataSource(satelliteApi) + fun provideRemoteDataSource(satelliteApi: SatelliteApi): RemoteDataSource { + return RemoteSource(satelliteApi) } @Provides @Singleton fun provideSatelliteService(): SatelliteApi { return Retrofit.Builder() - .baseUrl("https://db.satnogs.org/api/") + .baseUrl(Constants.URL_BASE) .addConverterFactory(MoshiConverterFactory.create()) .build().create(SatelliteApi::class.java) } @Provides @Singleton - fun provideDataReporter(@IoDispatcher dispatcher: CoroutineDispatcher): PassReporter { - return PassReporter(dispatcher) + fun provideDataReporter(@IoDispatcher dispatcher: CoroutineDispatcher): DataReporter { + return DataReporter(dispatcher) } } diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/Extensions.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/Extensions.kt similarity index 100% rename from app/src/main/java/com/rtbishop/look4sat/utility/Extensions.kt rename to app/src/main/java/com/rtbishop/look4sat/presentation/Extensions.kt diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/RecyclerDivider.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/ItemDivider.kt similarity index 93% rename from app/src/main/java/com/rtbishop/look4sat/utility/RecyclerDivider.kt rename to app/src/main/java/com/rtbishop/look4sat/presentation/ItemDivider.kt index 206a2992..1a441e04 100644 --- a/app/src/main/java/com/rtbishop/look4sat/utility/RecyclerDivider.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/ItemDivider.kt @@ -15,13 +15,13 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.utility +package com.rtbishop.look4sat.presentation import android.graphics.Canvas import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView -class RecyclerDivider(private val resId: Int) : RecyclerView.ItemDecoration() { +class ItemDivider(private val resId: Int) : RecyclerView.ItemDecoration() { override fun onDrawOver(canvas: Canvas, parent: RecyclerView) { ContextCompat.getDrawable(parent.context, resId)?.let { drawable -> diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesAdapter.kt index 0304a840..8fe5e4d3 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesAdapter.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesAdapter.kt @@ -22,10 +22,11 @@ import android.view.ViewGroup import androidx.recyclerview.widget.AsyncListDiffer import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView -import com.rtbishop.look4sat.data.SatItem +import com.rtbishop.look4sat.model.SatItem import com.rtbishop.look4sat.databinding.ItemEntryBinding -class EntriesAdapter : RecyclerView.Adapter() { +class EntriesAdapter(private val clickListener: EntriesClickListener) : + RecyclerView.Adapter() { private val diffCallback = object : DiffUtil.ItemCallback() { override fun areItemsTheSame(oldItem: SatItem, newItem: SatItem): Boolean { @@ -37,15 +38,6 @@ class EntriesAdapter : RecyclerView.Adapter() { } } private val differ = AsyncListDiffer(this, diffCallback) - private lateinit var clickListener: EntriesClickListener - - interface EntriesClickListener { - fun updateSelection(catNums: List, isSelected: Boolean) - } - - fun setEntriesClickListener(listener: EntriesClickListener) { - clickListener = listener - } fun submitList(items: List) { differ.submitList(items) @@ -79,4 +71,8 @@ class EntriesAdapter : RecyclerView.Adapter() { } } } + + interface EntriesClickListener { + fun updateSelection(catNums: List, isSelected: Boolean) + } } diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesFragment.kt index 3a3c87b2..a53e721f 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesFragment.kt @@ -27,10 +27,10 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.SimpleItemAnimator import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.rtbishop.look4sat.R -import com.rtbishop.look4sat.data.SatItem +import com.rtbishop.look4sat.model.SatItem import com.rtbishop.look4sat.databinding.FragmentEntriesBinding -import com.rtbishop.look4sat.framework.model.DataState -import com.rtbishop.look4sat.utility.RecyclerDivider +import com.rtbishop.look4sat.common.DataState +import com.rtbishop.look4sat.presentation.ItemDivider import com.rtbishop.look4sat.utility.getNavResult import com.rtbishop.look4sat.utility.navigateSafe import com.rtbishop.look4sat.utility.showSnack @@ -51,16 +51,18 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) { } private fun setupComponents(view: View) { - val entriesAdapter = EntriesAdapter().apply { - setEntriesClickListener(viewModel) - } + val entriesAdapter = EntriesAdapter(object: EntriesAdapter.EntriesClickListener { + override fun updateSelection(catNums: List, isSelected: Boolean) { + viewModel.updateSelection(catNums, isSelected) + } + }) val binding = FragmentEntriesBinding.bind(view).apply { entriesRecycler.apply { setHasFixedSize(true) adapter = entriesAdapter layoutManager = LinearLayoutManager(requireContext()) (itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false - addItemDecoration(RecyclerDivider(R.drawable.rec_divider_light)) + addItemDecoration(ItemDivider(R.drawable.rec_divider_light)) } entriesImportWeb.setOnClickListener { findNavController().navigateSafe(R.id.action_entries_to_sources) @@ -98,6 +100,8 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) { binding.entriesRecycler.visibility = View.VISIBLE requireView().showSnack(getString(R.string.entries_update_error)) } + else -> { + } } } diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesViewModel.kt index b56b291a..f28d5f15 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesViewModel.kt @@ -21,10 +21,10 @@ import android.content.ContentResolver import android.net.Uri import android.widget.SearchView import androidx.lifecycle.* -import com.rtbishop.look4sat.data.Preferences -import com.rtbishop.look4sat.data.SatelliteRepo -import com.rtbishop.look4sat.data.SatItem -import com.rtbishop.look4sat.framework.model.DataState +import com.rtbishop.look4sat.model.SatItem +import com.rtbishop.look4sat.common.DataState +import com.rtbishop.look4sat.domain.Repository +import com.rtbishop.look4sat.framework.PreferencesSource import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineExceptionHandler import kotlinx.coroutines.flow.collect @@ -35,16 +35,16 @@ import javax.inject.Inject @HiltViewModel class EntriesViewModel @Inject constructor( - private val preferences: Preferences, + private val preferences: PreferencesSource, private val resolver: ContentResolver, - private val satelliteRepo: SatelliteRepo, -) : ViewModel(), EntriesAdapter.EntriesClickListener, SearchView.OnQueryTextListener { + private val satelliteRepo: Repository, +) : ViewModel(), SearchView.OnQueryTextListener { private val coroutineHandler = CoroutineExceptionHandler { _, throwable -> Timber.d(throwable) _satData.value = DataState.Error(throwable) } - private val transModes = MutableLiveData(satelliteRepo.loadSelectedModes()) + private val transModes = MutableLiveData(preferences.loadModesSelection()) private val currentQuery = MutableLiveData(String()) private val itemsWithModes = transModes.switchMap { modes -> liveData { satelliteRepo.getSatItems().collect { emit(filterByModes(it, modes)) } } @@ -86,12 +86,12 @@ class EntriesViewModel @Inject constructor( } fun loadSelectedModes(): List { - return satelliteRepo.loadSelectedModes() + return preferences.loadModesSelection() } fun saveSelectedModes(modes: List) { transModes.value = modes - satelliteRepo.saveSelectedModes(modes) + preferences.saveModesSelection(modes) } override fun onQueryTextSubmit(query: String): Boolean { @@ -103,7 +103,7 @@ class EntriesViewModel @Inject constructor( return true } - override fun updateSelection(catNums: List, isSelected: Boolean) { + fun updateSelection(catNums: List, isSelected: Boolean) { viewModelScope.launch { satelliteRepo.updateEntriesSelection(catNums, isSelected) } } diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapData.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapData.kt index 92c8dc11..aef324f5 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapData.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapData.kt @@ -17,8 +17,8 @@ */ package com.rtbishop.look4sat.presentation.mapScreen -import com.rtbishop.look4sat.domain.GeoPos -import com.rtbishop.look4sat.domain.Satellite +import com.rtbishop.look4sat.predict4kotlin.GeoPos +import com.rtbishop.look4sat.predict4kotlin.Satellite data class MapData( val pass: Satellite, diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapFragment.kt index 93ca4e2e..ec97c2ef 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapFragment.kt @@ -29,8 +29,8 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import com.rtbishop.look4sat.R import com.rtbishop.look4sat.databinding.FragmentMapBinding -import com.rtbishop.look4sat.domain.GeoPos -import com.rtbishop.look4sat.domain.Satellite +import com.rtbishop.look4sat.predict4kotlin.GeoPos +import com.rtbishop.look4sat.predict4kotlin.Satellite import dagger.hilt.android.AndroidEntryPoint import org.osmdroid.config.Configuration import org.osmdroid.tileprovider.tilesource.TileSourceFactory diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapViewModel.kt index d69f80f0..81f4f45f 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapViewModel.kt @@ -18,10 +18,12 @@ package com.rtbishop.look4sat.presentation.mapScreen import androidx.lifecycle.* -import com.rtbishop.look4sat.domain.Predictor -import com.rtbishop.look4sat.data.Preferences -import com.rtbishop.look4sat.data.SatelliteRepo -import com.rtbishop.look4sat.domain.* +import com.rtbishop.look4sat.predict4kotlin.Predictor +import com.rtbishop.look4sat.domain.Repository +import com.rtbishop.look4sat.framework.PreferencesSource +import com.rtbishop.look4sat.predict4kotlin.GeoPos +import com.rtbishop.look4sat.domain.QthConverter +import com.rtbishop.look4sat.predict4kotlin.Satellite import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.* import java.util.* @@ -31,9 +33,9 @@ import kotlin.math.min @HiltViewModel class MapViewModel @Inject constructor( - private val satelliteRepo: SatelliteRepo, + private val satelliteRepo: Repository, private val predictor: Predictor, - private val preferences: Preferences, + private val preferences: PreferencesSource, ) : ViewModel() { private val stationPos = preferences.loadStationPosition() diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt index 95f169bd..2c08d42f 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt @@ -25,7 +25,7 @@ import androidx.recyclerview.widget.RecyclerView import com.rtbishop.look4sat.R import com.rtbishop.look4sat.databinding.ItemPassGeoBinding import com.rtbishop.look4sat.databinding.ItemPassLeoBinding -import com.rtbishop.look4sat.domain.SatPass +import com.rtbishop.look4sat.predict4kotlin.SatPass import java.text.SimpleDateFormat import java.util.* diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt index ae02f7d0..651c85a0 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt @@ -29,9 +29,9 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.SimpleItemAnimator import com.rtbishop.look4sat.R import com.rtbishop.look4sat.databinding.FragmentPassesBinding -import com.rtbishop.look4sat.domain.SatPass -import com.rtbishop.look4sat.framework.model.DataState -import com.rtbishop.look4sat.utility.RecyclerDivider +import com.rtbishop.look4sat.predict4kotlin.SatPass +import com.rtbishop.look4sat.common.DataState +import com.rtbishop.look4sat.presentation.ItemDivider import com.rtbishop.look4sat.utility.navigateSafe import com.rtbishop.look4sat.utility.toTimerString import dagger.hilt.android.AndroidEntryPoint @@ -60,7 +60,7 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC isVerticalScrollBarEnabled = false layoutManager = LinearLayoutManager(context) (itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false - addItemDecoration(RecyclerDivider(R.drawable.rec_divider_dark)) + addItemDecoration(ItemDivider(R.drawable.rec_divider_dark)) } passesRefresh.setOnClickListener { passesViewModel.forceCalculation() } } diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt index 8ab74768..17969d4b 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt @@ -21,11 +21,11 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.rtbishop.look4sat.data.Preferences -import com.rtbishop.look4sat.data.SatelliteRepo -import com.rtbishop.look4sat.domain.Predictor -import com.rtbishop.look4sat.domain.SatPass -import com.rtbishop.look4sat.framework.model.DataState +import com.rtbishop.look4sat.predict4kotlin.Predictor +import com.rtbishop.look4sat.predict4kotlin.SatPass +import com.rtbishop.look4sat.common.DataState +import com.rtbishop.look4sat.domain.Repository +import com.rtbishop.look4sat.framework.PreferencesSource import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.* import kotlinx.coroutines.flow.collect @@ -34,9 +34,9 @@ import javax.inject.Inject @HiltViewModel class PassesViewModel @Inject constructor( - private val satelliteRepo: SatelliteRepo, + private val satelliteRepo: Repository, private val predictor: Predictor, - private val preferences: Preferences + private val preferences: PreferencesSource ) : ViewModel() { private val _passes = MutableLiveData>>(DataState.Loading) diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarData.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarData.kt index 93341801..8a0946bc 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarData.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarData.kt @@ -1,5 +1,22 @@ +/* + * Look4Sat. Amateur radio satellite tracker and pass predictor. + * Copyright (C) 2019-2021 Arty Bishop (bishop.arty@gmail.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ package com.rtbishop.look4sat.presentation.radarScreen -import com.rtbishop.look4sat.domain.SatPos +import com.rtbishop.look4sat.predict4kotlin.SatPos data class RadarData(val satPos: SatPos, val satTrack: List = emptyList()) diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarFragment.kt index a5e7b4ab..dc6b9627 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarFragment.kt @@ -25,11 +25,11 @@ import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.SimpleItemAnimator import com.rtbishop.look4sat.R -import com.rtbishop.look4sat.data.Preferences import com.rtbishop.look4sat.databinding.FragmentRadarBinding -import com.rtbishop.look4sat.domain.SatPass -import com.rtbishop.look4sat.domain.SatPos -import com.rtbishop.look4sat.utility.RecyclerDivider +import com.rtbishop.look4sat.framework.PreferencesSource +import com.rtbishop.look4sat.predict4kotlin.SatPass +import com.rtbishop.look4sat.predict4kotlin.SatPos +import com.rtbishop.look4sat.presentation.ItemDivider import com.rtbishop.look4sat.utility.navigateSafe import com.rtbishop.look4sat.utility.toTimerString import dagger.hilt.android.AndroidEntryPoint @@ -39,7 +39,7 @@ import javax.inject.Inject class RadarFragment : Fragment(R.layout.fragment_radar) { @Inject - lateinit var preferences: Preferences + lateinit var preferences: PreferencesSource private val viewModel: RadarViewModel by viewModels() private var radarView: RadarView? = null @@ -53,7 +53,7 @@ class RadarFragment : Fragment(R.layout.fragment_radar) { isVerticalScrollBarEnabled = false layoutManager = LinearLayoutManager(context) (itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false - addItemDecoration(RecyclerDivider(R.drawable.rec_divider_dark)) + addItemDecoration(ItemDivider(R.drawable.rec_divider_dark)) } setupObservers(transAdapter, this) } diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarView.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarView.kt index 273c2be7..576ed258 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarView.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarView.kt @@ -22,7 +22,7 @@ import android.graphics.* import android.view.View import androidx.core.content.ContextCompat import com.rtbishop.look4sat.R -import com.rtbishop.look4sat.domain.SatPos +import com.rtbishop.look4sat.predict4kotlin.SatPos import kotlin.math.cos import kotlin.math.min import kotlin.math.sin diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarViewModel.kt index 39a13045..38939e51 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/RadarViewModel.kt @@ -18,14 +18,14 @@ package com.rtbishop.look4sat.presentation.radarScreen import androidx.lifecycle.* -import com.rtbishop.look4sat.domain.PassReporter -import com.rtbishop.look4sat.data.Preferences -import com.rtbishop.look4sat.data.SatelliteRepo -import com.rtbishop.look4sat.domain.Predictor -import com.rtbishop.look4sat.domain.SatPass -import com.rtbishop.look4sat.domain.SatPos -import com.rtbishop.look4sat.domain.Transmitter +import com.rtbishop.look4sat.domain.DataReporter +import com.rtbishop.look4sat.domain.Repository +import com.rtbishop.look4sat.predict4kotlin.Predictor +import com.rtbishop.look4sat.predict4kotlin.SatPass +import com.rtbishop.look4sat.predict4kotlin.SatPos +import com.rtbishop.look4sat.model.Transmitter import com.rtbishop.look4sat.framework.OrientationSource +import com.rtbishop.look4sat.framework.PreferencesSource import com.rtbishop.look4sat.utility.round import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.delay @@ -38,10 +38,10 @@ import javax.inject.Inject @HiltViewModel class RadarViewModel @Inject constructor( private val orientationSource: OrientationSource, - private val preferences: Preferences, + private val preferences: PreferencesSource, private val predictor: Predictor, - private val satelliteRepo: SatelliteRepo, - private val passReporter: PassReporter + private val satelliteRepo: Repository, + private val dataReporter: DataReporter ) : ViewModel(), OrientationSource.OrientationListener { private val stationPos = preferences.loadStationPosition() @@ -80,7 +80,7 @@ class RadarViewModel @Inject constructor( var satTrack: List = emptyList() val rotatorPrefs = preferences.getRotatorServer() if (rotatorPrefs != null) { - passReporter.setupRotatorSocket(rotatorPrefs.first, rotatorPrefs.second) + dataReporter.setupRotatorSocket(rotatorPrefs.first, rotatorPrefs.second) } if (!satPass.isDeepSpace) { val startDate = Date(satPass.aosTime) @@ -91,7 +91,7 @@ class RadarViewModel @Inject constructor( val satPos = predictor.getSatPos(satPass.satellite, stationPos, Date()) val azimuth = Math.toDegrees(satPos.azimuth).round(1) val elevation = Math.toDegrees(satPos.elevation).round(1) - passReporter.reportRotation(azimuth, elevation) + dataReporter.reportRotation(azimuth, elevation) _passData.postValue(RadarData(satPos, satTrack)) delay(1000) } diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/TransmittersAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/TransmittersAdapter.kt index 53702f73..8d69c5a6 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/TransmittersAdapter.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radarScreen/TransmittersAdapter.kt @@ -24,7 +24,7 @@ import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import com.rtbishop.look4sat.R import com.rtbishop.look4sat.databinding.ItemTransBinding -import com.rtbishop.look4sat.domain.Transmitter +import com.rtbishop.look4sat.model.Transmitter import java.util.* class TransmittersAdapter : RecyclerView.Adapter() { diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsFragment.kt index 8cd878a9..1634469b 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsFragment.kt @@ -29,7 +29,6 @@ import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import com.google.android.material.snackbar.Snackbar import com.rtbishop.look4sat.R -import com.rtbishop.look4sat.data.Preferences import com.rtbishop.look4sat.framework.PreferencesSource import dagger.hilt.android.AndroidEntryPoint import javax.inject.Inject @@ -38,7 +37,7 @@ import javax.inject.Inject class SettingsFragment : PreferenceFragmentCompat() { @Inject - lateinit var preferences: Preferences + lateinit var preferences: PreferencesSource private val requestPermissionLauncher = registerForActivityResult(ActivityResultContracts.RequestPermission()) { isGranted -> diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/sourcesScreen/SourcesDialog.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/sourcesScreen/SourcesDialog.kt index 7ccfd3b0..7f7dede8 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/sourcesScreen/SourcesDialog.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/sourcesScreen/SourcesDialog.kt @@ -25,8 +25,8 @@ import android.view.WindowManager import androidx.appcompat.app.AppCompatDialogFragment import androidx.recyclerview.widget.LinearLayoutManager import com.rtbishop.look4sat.R -import com.rtbishop.look4sat.data.Preferences import com.rtbishop.look4sat.databinding.DialogSourcesBinding +import com.rtbishop.look4sat.framework.PreferencesSource import com.rtbishop.look4sat.utility.setNavResult import dagger.hilt.android.AndroidEntryPoint import javax.inject.Inject @@ -35,7 +35,7 @@ import javax.inject.Inject class SourcesDialog : AppCompatDialogFragment() { @Inject - lateinit var prefsManager: Preferences + lateinit var prefsManager: PreferencesSource override fun onCreateView(inflater: LayoutInflater, group: ViewGroup?, state: Bundle?): View? { return inflater.inflate(R.layout.dialog_sources, group, false) diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/CustomHandler.kt b/app/src/main/java/com/rtbishop/look4sat/utility/CustomHandler.kt deleted file mode 100644 index 387d09a4..00000000 --- a/app/src/main/java/com/rtbishop/look4sat/utility/CustomHandler.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.rtbishop.look4sat.utility - -import android.app.Activity - -class CustomHandler(private val activity: Activity) : Thread.UncaughtExceptionHandler { - - private val rootHandler = Thread.getDefaultUncaughtExceptionHandler() - - init { - Thread.setDefaultUncaughtExceptionHandler(this) - } - - override fun uncaughtException(thread: Thread, throwable: Throwable) { -// Custom exception handling, use intents instead of dialogs -// Process.killProcess(Process.myPid()) -// exitProcess(0) - } -} diff --git a/app/src/main/res/xml/preference.xml b/app/src/main/res/xml/preference.xml index 66460680..910e472c 100644 --- a/app/src/main/res/xml/preference.xml +++ b/app/src/main/res/xml/preference.xml @@ -50,7 +50,7 @@ app:iconSpaceReserved="false" app:useSimpleSummaryProvider="true" /> . + */ +package com.rtbishop.look4sat.common + +object Constants { + + const val URL_BASE = "https://db.satnogs.org/api/" + const val URL_CELESTRAK = "https://celestrak.com/NORAD/elements/active.txt" + const val URL_AMSAT = "https://amsat.org/tle/current/nasabare.txt" + const val URL_PRISM_CLASSFD = "https://www.prismnet.com/~mmccants/tles/classfd.zip" + const val URL_PRISM_INTEL = "https://www.prismnet.com/~mmccants/tles/inttles.zip" + +} diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/model/DataState.kt b/core/src/main/java/com/rtbishop/look4sat/common/DataState.kt similarity index 95% rename from app/src/main/java/com/rtbishop/look4sat/framework/model/DataState.kt rename to core/src/main/java/com/rtbishop/look4sat/common/DataState.kt index 07d9d788..d6c00810 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/model/DataState.kt +++ b/core/src/main/java/com/rtbishop/look4sat/common/DataState.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.framework.model +package com.rtbishop.look4sat.common sealed class DataState { data class Success(val data: T) : DataState() diff --git a/core/src/main/java/com/rtbishop/look4sat/data/SatelliteRepo.kt b/core/src/main/java/com/rtbishop/look4sat/data/DataRepository.kt similarity index 74% rename from core/src/main/java/com/rtbishop/look4sat/data/SatelliteRepo.kt rename to core/src/main/java/com/rtbishop/look4sat/data/DataRepository.kt index 07d1bc63..8454331a 100644 --- a/core/src/main/java/com/rtbishop/look4sat/data/SatelliteRepo.kt +++ b/core/src/main/java/com/rtbishop/look4sat/data/DataRepository.kt @@ -17,9 +17,12 @@ */ package com.rtbishop.look4sat.data -import com.rtbishop.look4sat.domain.Transmitter -import com.rtbishop.look4sat.domain.Satellite -import com.rtbishop.look4sat.domain.TLE +import com.rtbishop.look4sat.domain.Repository +import com.rtbishop.look4sat.model.SatEntry +import com.rtbishop.look4sat.model.SatItem +import com.rtbishop.look4sat.model.Transmitter +import com.rtbishop.look4sat.predict4kotlin.Satellite +import com.rtbishop.look4sat.predict4kotlin.TLE import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.flow.Flow @@ -28,38 +31,29 @@ import kotlinx.coroutines.withContext import java.io.InputStream import java.util.zip.ZipInputStream -class SatelliteRepo( - private val preferences: Preferences, - private val localSource: LocalSource, - private val remoteSource: RemoteSource, +class DataRepository( + private val localSource: LocalDataSource, + private val remoteSource: RemoteDataSource, private val repoDispatcher: CoroutineDispatcher -) { +) : Repository { - fun saveSelectedModes(modes: List) { - preferences.saveModesSelection(modes) - } - - fun loadSelectedModes(): List { - return preferences.loadModesSelection() - } - - fun getSatItems(): Flow> { + override fun getSatItems(): Flow> { return localSource.getEntriesWithModes() } - fun getSatTransmitters(catNum: Int): Flow> { + override fun getSatTransmitters(catNum: Int): Flow> { return localSource.getTransmitters(catNum) } - suspend fun getSelectedSatellites(): List { + override suspend fun getSelectedSatellites(): List { return localSource.getSelectedSatellites() } - suspend fun updateEntriesFromFile(stream: InputStream) = withContext(repoDispatcher) { + override suspend fun updateEntriesFromFile(stream: InputStream) = withContext(repoDispatcher) { localSource.updateEntries(importSatEntries(stream)) } - suspend fun updateEntriesFromWeb(sources: List) { + override suspend fun updateEntriesFromWeb(sources: List) { coroutineScope { launch(repoDispatcher) { val streams = mutableListOf() @@ -84,7 +78,7 @@ class SatelliteRepo( } } - suspend fun updateEntriesSelection(catNums: List, isSelected: Boolean) { + override suspend fun updateEntriesSelection(catNums: List, isSelected: Boolean) { localSource.updateEntriesSelection(catNums, isSelected) } diff --git a/core/src/main/java/com/rtbishop/look4sat/data/LocalSource.kt b/core/src/main/java/com/rtbishop/look4sat/data/LocalDataSource.kt similarity index 85% rename from core/src/main/java/com/rtbishop/look4sat/data/LocalSource.kt rename to core/src/main/java/com/rtbishop/look4sat/data/LocalDataSource.kt index 604b5630..e7d74964 100644 --- a/core/src/main/java/com/rtbishop/look4sat/data/LocalSource.kt +++ b/core/src/main/java/com/rtbishop/look4sat/data/LocalDataSource.kt @@ -17,11 +17,13 @@ */ package com.rtbishop.look4sat.data -import com.rtbishop.look4sat.domain.Transmitter -import com.rtbishop.look4sat.domain.Satellite +import com.rtbishop.look4sat.model.SatEntry +import com.rtbishop.look4sat.model.SatItem +import com.rtbishop.look4sat.model.Transmitter +import com.rtbishop.look4sat.predict4kotlin.Satellite import kotlinx.coroutines.flow.Flow -interface LocalSource { +interface LocalDataSource { fun getEntriesWithModes(): Flow> diff --git a/core/src/main/java/com/rtbishop/look4sat/data/Preferences.kt b/core/src/main/java/com/rtbishop/look4sat/data/Preferences.kt deleted file mode 100644 index 08a20883..00000000 --- a/core/src/main/java/com/rtbishop/look4sat/data/Preferences.kt +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Look4Sat. Amateur radio satellite tracker and pass predictor. - * Copyright (C) 2019-2021 Arty Bishop (bishop.arty@gmail.com) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package com.rtbishop.look4sat.data - -import com.rtbishop.look4sat.domain.GeoPos - -interface Preferences { - - fun positionToQTH(lat: Double, lon: Double): String? - - fun loadStationPosition(): GeoPos - - fun saveStationPosition(pos: GeoPos) - - fun updatePositionFromGPS(): Boolean - - fun updatePositionFromQTH(qthString: String): Boolean - - fun getMagDeclination(): Float - - fun getHoursAhead(): Int - - fun getMinElevation(): Double - - fun shouldUseTextLabels(): Boolean - - fun shouldUseUTC(): Boolean - - fun shouldUseCompass(): Boolean - - fun shouldShowSweep(): Boolean - - fun isSetupDone(): Boolean - - fun setSetupDone() - - fun saveModesSelection(modes: List) - - fun loadModesSelection(): List - - fun getRotatorServer(): Pair? - - fun loadTleSources(): List - - fun saveTleSources(sources: List) - - fun loadDefaultSources(): List -} diff --git a/core/src/main/java/com/rtbishop/look4sat/data/RemoteSource.kt b/core/src/main/java/com/rtbishop/look4sat/data/RemoteDataSource.kt similarity index 92% rename from core/src/main/java/com/rtbishop/look4sat/data/RemoteSource.kt rename to core/src/main/java/com/rtbishop/look4sat/data/RemoteDataSource.kt index 9a1e1c98..73ab2924 100644 --- a/core/src/main/java/com/rtbishop/look4sat/data/RemoteSource.kt +++ b/core/src/main/java/com/rtbishop/look4sat/data/RemoteDataSource.kt @@ -17,10 +17,10 @@ */ package com.rtbishop.look4sat.data -import com.rtbishop.look4sat.domain.Transmitter +import com.rtbishop.look4sat.model.Transmitter import java.io.InputStream -interface RemoteSource { +interface RemoteDataSource { suspend fun fetchFileStream(url: String): InputStream? diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/PassReporter.kt b/core/src/main/java/com/rtbishop/look4sat/domain/DataReporter.kt similarity index 68% rename from core/src/main/java/com/rtbishop/look4sat/domain/PassReporter.kt rename to core/src/main/java/com/rtbishop/look4sat/domain/DataReporter.kt index 8b350692..3dcd7cbd 100644 --- a/core/src/main/java/com/rtbishop/look4sat/domain/PassReporter.kt +++ b/core/src/main/java/com/rtbishop/look4sat/domain/DataReporter.kt @@ -1,3 +1,20 @@ +/* + * Look4Sat. Amateur radio satellite tracker and pass predictor. + * Copyright (C) 2019-2021 Arty Bishop (bishop.arty@gmail.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ package com.rtbishop.look4sat.domain import kotlinx.coroutines.CoroutineDispatcher @@ -5,7 +22,7 @@ import kotlinx.coroutines.withContext import java.io.BufferedWriter import java.net.Socket -class PassReporter(private val reporterDispatcher: CoroutineDispatcher) { +class DataReporter(private val reporterDispatcher: CoroutineDispatcher) { private var radioSocket: Socket? = null private var radioWriter: BufferedWriter? = null diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/QthConverter.kt b/core/src/main/java/com/rtbishop/look4sat/domain/QthConverter.kt index 80aacccd..b53c8fd6 100644 --- a/core/src/main/java/com/rtbishop/look4sat/domain/QthConverter.kt +++ b/core/src/main/java/com/rtbishop/look4sat/domain/QthConverter.kt @@ -17,6 +17,7 @@ */ package com.rtbishop.look4sat.domain +import com.rtbishop.look4sat.predict4kotlin.GeoPos import kotlin.math.round object QthConverter { diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/Repository.kt b/core/src/main/java/com/rtbishop/look4sat/domain/Repository.kt new file mode 100644 index 00000000..2651be83 --- /dev/null +++ b/core/src/main/java/com/rtbishop/look4sat/domain/Repository.kt @@ -0,0 +1,39 @@ +/* + * Look4Sat. Amateur radio satellite tracker and pass predictor. + * Copyright (C) 2019-2021 Arty Bishop (bishop.arty@gmail.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package com.rtbishop.look4sat.domain + +import com.rtbishop.look4sat.model.SatItem +import com.rtbishop.look4sat.model.Transmitter +import com.rtbishop.look4sat.predict4kotlin.Satellite +import kotlinx.coroutines.flow.Flow +import java.io.InputStream + +interface Repository { + + fun getSatItems(): Flow> + + fun getSatTransmitters(catNum: Int): Flow> + + suspend fun getSelectedSatellites(): List + + suspend fun updateEntriesFromFile(stream: InputStream) + + suspend fun updateEntriesFromWeb(sources: List) + + suspend fun updateEntriesSelection(catNums: List, isSelected: Boolean) +} diff --git a/core/src/main/java/com/rtbishop/look4sat/model/OMM.kt b/core/src/main/java/com/rtbishop/look4sat/model/OMM.kt new file mode 100644 index 00000000..519126f6 --- /dev/null +++ b/core/src/main/java/com/rtbishop/look4sat/model/OMM.kt @@ -0,0 +1,31 @@ +/* + * Look4Sat. Amateur radio satellite tracker and pass predictor. + * Copyright (C) 2019-2021 Arty Bishop (bishop.arty@gmail.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package com.rtbishop.look4sat.model + +data class OMM( + val name: String, + val epochString: String, + val meanmo: Double, + val eccn: Double, + val incl: Double, + val raan: Double, + val argper: Double, + val meanan: Double, + val catnum: Int, + val bstar: Double, +) diff --git a/core/src/main/java/com/rtbishop/look4sat/data/SatEntry.kt b/core/src/main/java/com/rtbishop/look4sat/model/SatEntry.kt similarity index 91% rename from core/src/main/java/com/rtbishop/look4sat/data/SatEntry.kt rename to core/src/main/java/com/rtbishop/look4sat/model/SatEntry.kt index 1b7157b0..fe6d9b55 100644 --- a/core/src/main/java/com/rtbishop/look4sat/data/SatEntry.kt +++ b/core/src/main/java/com/rtbishop/look4sat/model/SatEntry.kt @@ -15,9 +15,9 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.data +package com.rtbishop.look4sat.model -import com.rtbishop.look4sat.domain.TLE +import com.rtbishop.look4sat.predict4kotlin.TLE data class SatEntry( val tle: TLE, diff --git a/core/src/main/java/com/rtbishop/look4sat/data/SatItem.kt b/core/src/main/java/com/rtbishop/look4sat/model/SatItem.kt similarity index 96% rename from core/src/main/java/com/rtbishop/look4sat/data/SatItem.kt rename to core/src/main/java/com/rtbishop/look4sat/model/SatItem.kt index e754b461..21752953 100644 --- a/core/src/main/java/com/rtbishop/look4sat/data/SatItem.kt +++ b/core/src/main/java/com/rtbishop/look4sat/model/SatItem.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.data +package com.rtbishop.look4sat.model data class SatItem( val catNum: Int, diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/Transmitter.kt b/core/src/main/java/com/rtbishop/look4sat/model/Transmitter.kt similarity index 96% rename from core/src/main/java/com/rtbishop/look4sat/domain/Transmitter.kt rename to core/src/main/java/com/rtbishop/look4sat/model/Transmitter.kt index 882400c7..62daa909 100644 --- a/core/src/main/java/com/rtbishop/look4sat/domain/Transmitter.kt +++ b/core/src/main/java/com/rtbishop/look4sat/model/Transmitter.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain +package com.rtbishop.look4sat.model data class Transmitter( val uuid: String, diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/DeepSpaceSat.kt b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/DeepSpaceSat.kt similarity index 99% rename from core/src/main/java/com/rtbishop/look4sat/domain/DeepSpaceSat.kt rename to core/src/main/java/com/rtbishop/look4sat/predict4kotlin/DeepSpaceSat.kt index f1d1fc6b..483c11fe 100644 --- a/core/src/main/java/com/rtbishop/look4sat/domain/DeepSpaceSat.kt +++ b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/DeepSpaceSat.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain +package com.rtbishop.look4sat.predict4kotlin import kotlin.math.* diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/GeoPos.kt b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/GeoPos.kt similarity index 95% rename from core/src/main/java/com/rtbishop/look4sat/domain/GeoPos.kt rename to core/src/main/java/com/rtbishop/look4sat/predict4kotlin/GeoPos.kt index b1c779c8..4213ff5b 100644 --- a/core/src/main/java/com/rtbishop/look4sat/domain/GeoPos.kt +++ b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/GeoPos.kt @@ -15,6 +15,6 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain +package com.rtbishop.look4sat.predict4kotlin data class GeoPos(val latitude: Double, val longitude: Double, val altitude: Double = 0.0) diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/NearEarthSat.kt b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/NearEarthSat.kt similarity index 99% rename from core/src/main/java/com/rtbishop/look4sat/domain/NearEarthSat.kt rename to core/src/main/java/com/rtbishop/look4sat/predict4kotlin/NearEarthSat.kt index 38a526df..00bf9f06 100644 --- a/core/src/main/java/com/rtbishop/look4sat/domain/NearEarthSat.kt +++ b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/NearEarthSat.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain +package com.rtbishop.look4sat.predict4kotlin import kotlin.math.* diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/Predictor.kt b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/Predictor.kt similarity index 99% rename from core/src/main/java/com/rtbishop/look4sat/domain/Predictor.kt rename to core/src/main/java/com/rtbishop/look4sat/predict4kotlin/Predictor.kt index b0b454d3..cdaf9b5a 100644 --- a/core/src/main/java/com/rtbishop/look4sat/domain/Predictor.kt +++ b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/Predictor.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain +package com.rtbishop.look4sat.predict4kotlin import com.rtbishop.look4sat.domain.* import kotlinx.coroutines.CoroutineDispatcher diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/SatPass.kt b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/SatPass.kt similarity index 96% rename from core/src/main/java/com/rtbishop/look4sat/domain/SatPass.kt rename to core/src/main/java/com/rtbishop/look4sat/predict4kotlin/SatPass.kt index 3ea2dd90..3f2a9558 100644 --- a/core/src/main/java/com/rtbishop/look4sat/domain/SatPass.kt +++ b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/SatPass.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain +package com.rtbishop.look4sat.predict4kotlin data class SatPass( val aosTime: Long, diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/SatPos.kt b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/SatPos.kt similarity index 98% rename from core/src/main/java/com/rtbishop/look4sat/domain/SatPos.kt rename to core/src/main/java/com/rtbishop/look4sat/predict4kotlin/SatPos.kt index 4b80f874..e787dd34 100644 --- a/core/src/main/java/com/rtbishop/look4sat/domain/SatPos.kt +++ b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/SatPos.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain +package com.rtbishop.look4sat.predict4kotlin import kotlin.math.* diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/Satellite.kt b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/Satellite.kt similarity index 99% rename from core/src/main/java/com/rtbishop/look4sat/domain/Satellite.kt rename to core/src/main/java/com/rtbishop/look4sat/predict4kotlin/Satellite.kt index 585119a4..90c46286 100644 --- a/core/src/main/java/com/rtbishop/look4sat/domain/Satellite.kt +++ b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/Satellite.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain +package com.rtbishop.look4sat.predict4kotlin import java.util.* import java.util.concurrent.atomic.AtomicReference diff --git a/core/src/main/java/com/rtbishop/look4sat/domain/TLE.kt b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/TLE.kt similarity index 98% rename from core/src/main/java/com/rtbishop/look4sat/domain/TLE.kt rename to core/src/main/java/com/rtbishop/look4sat/predict4kotlin/TLE.kt index df3ef2dc..b86f4932 100644 --- a/core/src/main/java/com/rtbishop/look4sat/domain/TLE.kt +++ b/core/src/main/java/com/rtbishop/look4sat/predict4kotlin/TLE.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain +package com.rtbishop.look4sat.predict4kotlin import java.io.InputStream import kotlin.math.pow diff --git a/core/src/main/java/com/rtbishop/look4sat/usecases/GetSelectedSatellites.kt b/core/src/main/java/com/rtbishop/look4sat/usecases/GetSelectedSatellites.kt new file mode 100644 index 00000000..81338f90 --- /dev/null +++ b/core/src/main/java/com/rtbishop/look4sat/usecases/GetSelectedSatellites.kt @@ -0,0 +1,24 @@ +/* + * Look4Sat. Amateur radio satellite tracker and pass predictor. + * Copyright (C) 2019-2021 Arty Bishop (bishop.arty@gmail.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package com.rtbishop.look4sat.usecases + +import com.rtbishop.look4sat.domain.Repository + +class GetSelectedSatellites(private val dataRepository: Repository) { + suspend operator fun invoke() = dataRepository.getSelectedSatellites() +} diff --git a/core/src/test/java/com/rtbishop/look4sat/QthConverterTest.kt b/core/src/test/java/com/rtbishop/look4sat/domain/QthConverterTest.kt similarity index 96% rename from core/src/test/java/com/rtbishop/look4sat/QthConverterTest.kt rename to core/src/test/java/com/rtbishop/look4sat/domain/QthConverterTest.kt index 9667fb7b..11d2b936 100644 --- a/core/src/test/java/com/rtbishop/look4sat/QthConverterTest.kt +++ b/core/src/test/java/com/rtbishop/look4sat/domain/QthConverterTest.kt @@ -15,9 +15,8 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat +package com.rtbishop.look4sat.domain -import com.rtbishop.look4sat.domain.QthConverter import org.junit.Test class QthConverterTest { diff --git a/core/src/test/java/com/rtbishop/look4sat/TleParserTest.kt b/core/src/test/java/com/rtbishop/look4sat/predict4kotlin/TleParserTest.kt similarity index 65% rename from core/src/test/java/com/rtbishop/look4sat/TleParserTest.kt rename to core/src/test/java/com/rtbishop/look4sat/predict4kotlin/TleParserTest.kt index 2b92a872..3e9feaa5 100644 --- a/core/src/test/java/com/rtbishop/look4sat/TleParserTest.kt +++ b/core/src/test/java/com/rtbishop/look4sat/predict4kotlin/TleParserTest.kt @@ -1,6 +1,22 @@ -package com.rtbishop.look4sat +/* + * Look4Sat. Amateur radio satellite tracker and pass predictor. + * Copyright (C) 2019-2021 Arty Bishop (bishop.arty@gmail.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package com.rtbishop.look4sat.predict4kotlin -import com.rtbishop.look4sat.domain.TLE import org.junit.Test class TleParserTest {