Moved and refactored several classes

pull/70/head
Arty Bishop 2021-09-16 10:24:14 +01:00
rodzic 673474a51f
commit 94751519ac
22 zmienionych plików z 65 dodań i 63 usunięć

Wyświetl plik

@ -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())
}
}

Wyświetl plik

@ -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>
}

Wyświetl plik

@ -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)
}

Wyświetl plik

@ -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>)
}

Wyświetl plik

@ -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() {

Wyświetl plik

@ -25,7 +25,7 @@ data class SatItem(
var isSelected: Boolean,
@Relation(
parentColumn = "catNum",
entity = SatTrans::class,
entity = Transmitter::class,
entityColumn = "catNum",
projection = ["mode"]
)

Wyświetl plik

@ -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,

Wyświetl plik

@ -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>() {

Wyświetl plik

@ -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

Wyświetl plik

@ -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

Wyświetl plik

@ -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

Wyświetl plik

@ -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

Wyświetl plik

@ -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 {

Wyświetl plik

@ -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)
}

Wyświetl plik

@ -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) }
}
}

Wyświetl plik

@ -17,9 +17,7 @@
*/
package com.rtbishop.look4sat.data
import com.rtbishop.look4sat.domain.SatEntry
import com.rtbishop.look4sat.domain.SatItem
import com.rtbishop.look4sat.domain.SatTrans
import com.rtbishop.look4sat.domain.Transmitter
import com.rtbishop.look4sat.domain.Satellite
import kotlinx.coroutines.flow.Flow
@ -27,7 +25,7 @@ interface LocalDataSource {
fun getSatItems(): Flow<List<SatItem>>
fun getSatTransmitters(catNum: Int): Flow<List<SatTrans>>
fun getSatTransmitters(catNum: Int): Flow<List<Transmitter>>
suspend fun getSelectedSatellites(): List<Satellite>
@ -35,5 +33,5 @@ interface LocalDataSource {
suspend fun updateEntriesSelection(catNums: List<Int>, isSelected: Boolean)
suspend fun updateTransmitters(satelliteTrans: List<SatTrans>)
suspend fun updateTransmitters(satelliteTrans: List<Transmitter>)
}

Wyświetl plik

@ -17,12 +17,12 @@
*/
package com.rtbishop.look4sat.data
import com.rtbishop.look4sat.domain.SatTrans
import com.rtbishop.look4sat.domain.Transmitter
import java.io.InputStream
interface RemoteDataSource {
suspend fun fetchDataStream(url: String): InputStream?
suspend fun fetchTransmitters(): List<SatTrans>
suspend fun fetchTransmitters(): List<Transmitter>
}

Wyświetl plik

@ -15,7 +15,10 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.rtbishop.look4sat.domain
package com.rtbishop.look4sat.data
import com.rtbishop.look4sat.domain.GeoPos
import com.rtbishop.look4sat.domain.Satellite
data class SatData(
val pass: Satellite,

Wyświetl plik

@ -15,7 +15,9 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.rtbishop.look4sat.domain
package com.rtbishop.look4sat.data
import com.rtbishop.look4sat.domain.TLE
data class SatEntry(
val tle: TLE,

Wyświetl plik

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.rtbishop.look4sat.domain
package com.rtbishop.look4sat.data
data class SatItem(
val catNum: Int,

Wyświetl plik

@ -17,9 +17,7 @@
*/
package com.rtbishop.look4sat.data
import com.rtbishop.look4sat.domain.SatEntry
import com.rtbishop.look4sat.domain.SatItem
import com.rtbishop.look4sat.domain.SatTrans
import com.rtbishop.look4sat.domain.Transmitter
import com.rtbishop.look4sat.domain.Satellite
import com.rtbishop.look4sat.domain.TLE
import kotlinx.coroutines.CoroutineDispatcher
@ -49,7 +47,7 @@ class SatelliteRepo(
return localDataSource.getSatItems()
}
fun getSatTransmitters(catNum: Int): Flow<List<SatTrans>> {
fun getSatTransmitters(catNum: Int): Flow<List<Transmitter>> {
return localDataSource.getSatTransmitters(catNum)
}

Wyświetl plik

@ -17,7 +17,7 @@
*/
package com.rtbishop.look4sat.domain
data class SatTrans(
data class Transmitter(
val uuid: String,
val info: String,
val isAlive: Boolean,