Moved and refactored several classes

This commit is contained in:
Arty Bishop committed 2021-09-16 10:33:21 +01:00
1 parent 673474a51f
commit 94751519ac
22 files changed
+65 -63

No files matched your search

@@ -18,7 +18,7 @@
package com.rtbishop.look4sat.framework.api
import com.rtbishop.look4sat.data.RemoteDataSource
import com.rtbishop.look4sat.domain.SatTrans
import com.rtbishop.look4sat.domain.Transmitter
import com.rtbishop.look4sat.utility.DataMapper
import java.io.InputStream
@@ -28,7 +28,7 @@ class RemoteSource(private val api: SatelliteService) : RemoteDataSource {
return api.fetchFileByUrl(url).body()?.byteStream()
}
override suspend fun fetchTransmitters(): List<SatTrans> {
override suspend fun fetchTransmitters(): List<Transmitter> {
return DataMapper.satTransListToDomainTransList(api.fetchTransmitters())
}
}
@@ -17,7 +17,7 @@
*/
package com.rtbishop.look4sat.framework.api
import com.rtbishop.look4sat.framework.model.SatTrans
import com.rtbishop.look4sat.framework.model.Transmitter
import okhttp3.ResponseBody
import retrofit2.Response
import retrofit2.http.GET
@@ -31,5 +31,5 @@ interface SatelliteService {
suspend fun fetchFileByUrl(@Url url: String): Response<ResponseBody>
@GET("transmitters/")
suspend fun fetchTransmitters(): List<SatTrans>
suspend fun fetchTransmitters(): List<Transmitter>
}
@@ -18,9 +18,9 @@
package com.rtbishop.look4sat.framework.db
import com.rtbishop.look4sat.data.LocalDataSource
import com.rtbishop.look4sat.domain.SatEntry
import com.rtbishop.look4sat.domain.SatItem
import com.rtbishop.look4sat.domain.SatTrans
import com.rtbishop.look4sat.data.SatEntry
import com.rtbishop.look4sat.data.SatItem
import com.rtbishop.look4sat.domain.Transmitter
import com.rtbishop.look4sat.domain.Satellite
import com.rtbishop.look4sat.utility.DataMapper
import kotlinx.coroutines.flow.Flow
@@ -46,12 +46,12 @@ class LocalSource(private val satelliteDao: SatelliteDao) : LocalDataSource {
satelliteDao.updateEntriesSelection(catNums, isSelected)
}
override fun getSatTransmitters(catNum: Int): Flow<List<SatTrans>> {
override fun getSatTransmitters(catNum: Int): Flow<List<Transmitter>> {
return satelliteDao.getSatTransmitters(catNum)
.map { satTransList -> DataMapper.satTransListToDomainTransList(satTransList) }
}
override suspend fun updateTransmitters(satelliteTrans: List<SatTrans>) {
override suspend fun updateTransmitters(satelliteTrans: List<Transmitter>) {
val satTransList = DataMapper.domainTransListToSatTransList(satelliteTrans)
satelliteDao.updateTransmitters(satTransList)
}
@@ -20,7 +20,7 @@ package com.rtbishop.look4sat.framework.db
import androidx.room.*
import com.rtbishop.look4sat.framework.model.SatEntry
import com.rtbishop.look4sat.framework.model.SatItem
import com.rtbishop.look4sat.framework.model.SatTrans
import com.rtbishop.look4sat.framework.model.Transmitter
import com.rtbishop.look4sat.domain.Satellite
import kotlinx.coroutines.flow.Flow
@@ -32,7 +32,7 @@ interface SatelliteDao {
fun getSatItems(): Flow<List<SatItem>>
@Query("SELECT * FROM transmitters WHERE catNum = :catNum")
fun getSatTransmitters(catNum: Int): Flow<List<SatTrans>>
fun getSatTransmitters(catNum: Int): Flow<List<Transmitter>>
@Query("SELECT tle FROM entries WHERE isSelected = 1")
suspend fun getSelectedSatellites(): List<Satellite>
@@ -68,7 +68,7 @@ interface SatelliteDao {
}
@Transaction
suspend fun updateTransmitters(transmitters: List<SatTrans>) {
suspend fun updateTransmitters(transmitters: List<Transmitter>) {
deleteTransmitters()
insertTransmitters(transmitters)
}
@@ -77,5 +77,5 @@ interface SatelliteDao {
suspend fun deleteTransmitters()
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertTransmitters(transmitters: List<SatTrans>)
suspend fun insertTransmitters(transmitters: List<Transmitter>)
}
@@ -21,9 +21,9 @@ import androidx.room.Database
import androidx.room.RoomDatabase
import androidx.room.TypeConverters
import com.rtbishop.look4sat.framework.model.SatEntry
import com.rtbishop.look4sat.framework.model.SatTrans
import com.rtbishop.look4sat.framework.model.Transmitter
@Database(entities = [SatEntry::class, SatTrans::class], version = 1, exportSchema = false)
@Database(entities = [SatEntry::class, Transmitter::class], version = 1, exportSchema = false)
@TypeConverters(Converters::class)
abstract class SatelliteDb : RoomDatabase() {
@@ -25,7 +25,7 @@ data class SatItem(
var isSelected: Boolean,
@Relation(
parentColumn = "catNum",
entity = SatTrans::class,
entity = Transmitter::class,
entityColumn = "catNum",
projection = ["mode"]
)
@@ -22,7 +22,7 @@ import androidx.room.PrimaryKey
import com.squareup.moshi.Json
@Entity(tableName = "transmitters")
data class SatTrans(
data class Transmitter(
@PrimaryKey @field:Json(name = "uuid") val uuid: String,
@field:Json(name = "description") val info: String,
@field:Json(name = "alive") val isAlive: Boolean,
@@ -23,7 +23,7 @@ import androidx.recyclerview.widget.AsyncListDiffer
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView
import com.rtbishop.look4sat.databinding.SatItemBinding
import com.rtbishop.look4sat.domain.SatItem
import com.rtbishop.look4sat.data.SatItem
class SatItemAdapter : RecyclerView.Adapter<SatItemAdapter.SatItemHolder>() {
@@ -28,7 +28,7 @@ import androidx.recyclerview.widget.SimpleItemAnimator
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.databinding.FragmentEntriesBinding
import com.rtbishop.look4sat.domain.SatItem
import com.rtbishop.look4sat.data.SatItem
import com.rtbishop.look4sat.framework.model.Result
import com.rtbishop.look4sat.utility.RecyclerDivider
import com.rtbishop.look4sat.utility.getNavResult
@@ -23,7 +23,7 @@ import android.widget.SearchView
import androidx.lifecycle.*
import com.rtbishop.look4sat.data.PreferencesSource
import com.rtbishop.look4sat.data.SatelliteRepo
import com.rtbishop.look4sat.domain.SatItem
import com.rtbishop.look4sat.data.SatItem
import com.rtbishop.look4sat.framework.model.Result
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.collect
@@ -31,7 +31,7 @@ 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.domain.SatData
import com.rtbishop.look4sat.data.SatData
import dagger.hilt.android.AndroidEntryPoint
import org.osmdroid.config.Configuration
import org.osmdroid.tileprovider.tilesource.TileSourceFactory
@@ -20,6 +20,7 @@ package com.rtbishop.look4sat.presentation.satMapScreen
import androidx.lifecycle.*
import com.rtbishop.look4sat.domain.Predictor
import com.rtbishop.look4sat.data.PreferencesSource
import com.rtbishop.look4sat.data.SatData
import com.rtbishop.look4sat.data.SatelliteRepo
import com.rtbishop.look4sat.domain.*
import dagger.hilt.android.lifecycle.HiltViewModel
@@ -18,13 +18,13 @@
package com.rtbishop.look4sat.presentation.satPassInfoScreen
import androidx.lifecycle.*
import com.rtbishop.look4sat.domain.Predictor
import com.rtbishop.look4sat.data.PreferencesSource
import com.rtbishop.look4sat.data.SatelliteRepo
import com.rtbishop.look4sat.injection.IoDispatcher
import com.rtbishop.look4sat.domain.SatTrans
import com.rtbishop.look4sat.domain.Predictor
import com.rtbishop.look4sat.domain.SatPass
import com.rtbishop.look4sat.domain.Transmitter
import com.rtbishop.look4sat.framework.OrientationProvider
import com.rtbishop.look4sat.injection.IoDispatcher
import com.rtbishop.look4sat.utility.round
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.*
@@ -44,9 +44,9 @@ class PassInfoViewModel @Inject constructor(
) : ViewModel(), OrientationProvider.OrientationListener {
private val stationPos = preferences.loadStationPosition()
private val _transmitters = MutableLiveData<List<SatTrans>>()
private val _transmitters = MutableLiveData<List<Transmitter>>()
private val _orientation = MutableLiveData<Triple<Float, Float, Float>>()
val transmitters: LiveData<List<SatTrans>> = _transmitters
val transmitters: LiveData<List<Transmitter>> = _transmitters
val orientation: LiveData<Triple<Float, Float, Float>> = _orientation
fun getPass(catNum: Int, aosTime: Long) = liveData {
@@ -81,7 +81,7 @@ class PassInfoViewModel @Inject constructor(
val socket = Socket(rotatorPrefs.first, rotatorPrefs.second)
val writer = socket.getOutputStream().bufferedWriter()
while (isActive) {
val satPos = satPass.satellite.getPosition(stationPos, Date().time)
val satPos = predictor.getSatPos(satPass.satellite, stationPos, Date())
val azimuth = Math.toDegrees(satPos.azimuth).round(1)
val elevation = Math.toDegrees(satPos.elevation).round(1)
writer.write("\\set_pos $azimuth $elevation")
@@ -100,7 +100,7 @@ class PassInfoViewModel @Inject constructor(
viewModelScope.launch {
satelliteRepo.getSatTransmitters(satPass.catNum).collect { transList ->
while (isActive) {
val satPos = satPass.satellite.getPosition(stationPos, Date().time)
val satPos = predictor.getSatPos(satPass.satellite, stationPos, Date())
val copiedList = transList.map { it.copy() }
copiedList.forEach { transmitter ->
transmitter.downlink?.let {
@@ -24,23 +24,23 @@ 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.SatTrans
import com.rtbishop.look4sat.domain.Transmitter
import java.util.*
class SatTransAdapter : RecyclerView.Adapter<SatTransAdapter.TransHolder>() {
private val diffCallback = object : DiffUtil.ItemCallback<SatTrans>() {
override fun areItemsTheSame(oldItem: SatTrans, newItem: SatTrans): Boolean {
private val diffCallback = object : DiffUtil.ItemCallback<Transmitter>() {
override fun areItemsTheSame(oldItem: Transmitter, newItem: Transmitter): Boolean {
return oldItem.uuid == newItem.uuid
}
override fun areContentsTheSame(oldItem: SatTrans, newItem: SatTrans): Boolean {
override fun areContentsTheSame(oldItem: Transmitter, newItem: Transmitter): Boolean {
return oldItem.downlink == newItem.downlink
}
}
private val differ = AsyncListDiffer(this, diffCallback)
fun submitList(transmitters: List<SatTrans>) {
fun submitList(transmitters: List<Transmitter>) {
differ.submitList(transmitters)
}
@@ -65,27 +65,27 @@ class SatTransAdapter : RecyclerView.Adapter<SatTransAdapter.TransHolder>() {
private val formatLinkNull = itemView.context.getString(R.string.trans_no_link)
private val isInverted = itemView.context.getString(R.string.trans_inverted)
fun bind(satTrans: SatTrans) {
binding.description.text = satTrans.info
fun bind(transmitter: Transmitter) {
binding.description.text = transmitter.info
satTrans.downlink.let { downlink ->
transmitter.downlink.let { downlink ->
if (downlink != null) {
val downlinkFreq = downlink / divider
binding.downlink.text = String.format(Locale.ENGLISH, formatLink, downlinkFreq)
} else binding.downlink.text = formatLinkNull
}
satTrans.uplink.let { uplink ->
transmitter.uplink.let { uplink ->
if (uplink != null) {
val uplinkFreq = uplink / divider
binding.uplink.text = String.format(Locale.ENGLISH, formatLink, uplinkFreq)
} else binding.uplink.text = formatLinkNull
}
if (satTrans.mode != null) binding.mode.text = String.format(mode, satTrans.mode)
if (transmitter.mode != null) binding.mode.text = String.format(mode, transmitter.mode)
else binding.mode.text = String.format(mode, strNo)
if (satTrans.isInverted) binding.isInverted.text = String.format(isInverted, strYes)
if (transmitter.isInverted) binding.isInverted.text = String.format(isInverted, strYes)
else binding.isInverted.text = String.format(isInverted, strNo)
}
@@ -19,10 +19,10 @@ package com.rtbishop.look4sat.utility
import com.rtbishop.look4sat.framework.model.SatEntry
import com.rtbishop.look4sat.framework.model.SatItem
import com.rtbishop.look4sat.framework.model.SatTrans
import com.rtbishop.look4sat.domain.SatEntry as DomainEntry
import com.rtbishop.look4sat.domain.SatItem as DomainItem
import com.rtbishop.look4sat.domain.SatTrans as DomainTrans
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
object DataMapper {
@@ -44,14 +44,14 @@ object DataMapper {
return items.map { item -> satItemToDomainItem(item) }
}
fun satTransToDomainTrans(transmitter: SatTrans): DomainTrans {
fun satTransToDomainTrans(transmitter: Transmitter): DomainTrans {
return DomainTrans(
transmitter.uuid, transmitter.info, transmitter.isAlive, transmitter.downlink,
transmitter.uplink, transmitter.mode, transmitter.isInverted, transmitter.catNum
)
}
fun satTransListToDomainTransList(transmitters: List<SatTrans>): List<DomainTrans> {
fun satTransListToDomainTransList(transmitters: List<Transmitter>): List<DomainTrans> {
return transmitters.map { transmitter -> satTransToDomainTrans(transmitter) }
}
@@ -73,14 +73,14 @@ object DataMapper {
return items.map { item -> domainItemToSatItem(item) }
}
fun domainTransToSatTrans(transmitter: DomainTrans): SatTrans {
return SatTrans(
fun domainTransToSatTrans(transmitter: DomainTrans): Transmitter {
return Transmitter(
transmitter.uuid, transmitter.info, transmitter.isAlive, transmitter.downlink,
transmitter.uplink, transmitter.mode, transmitter.isInverted, transmitter.catNum
)
}
fun domainTransListToSatTransList(transmitters: List<DomainTrans>): List<SatTrans> {
fun domainTransListToSatTransList(transmitters: List<DomainTrans>): List<Transmitter> {
return transmitters.map { transmitter -> domainTransToSatTrans(transmitter) }
}
}