Vessel.kt 4.25 KB
package application.model

import java.util.*


class Vessel(val mmsi: String?) {
    val messages: SortedMap<Long, Message> = sortedMapOf()
    var messageToDisplay: Message? = null
        get() {
            //            messages.forEach { (key, value) ->
//                if(observableCurrentTime.value < key) {
//                    field = value
//                    return@forEach
//                }
//            }
            field = messages.asSequence().map{ it }.firstOrNull {observableCurrentTime.value < it.key}.let { it?.value }
            return field
        }

    //    val timesNormalized : SortedMap<Long, LocalDateTime> = sortedMapOf()

//    fun getAllNormalizedDate(): SortedMap<Long, LocalDateTime> {
//        var offset: Long? = null
//        if(timesNormalized.size == 0){
//            messages.keys.forEach {
//                val currentTime = it.toEpochSecond(ZoneOffset.UTC)
//                if(offset == null){
//                  offset = currentTime
//                }
//                timesNormalized[currentTime - offset!!]= it
//            }
//        }
//        return timesNormalized
//    }

    fun getAllTime(): ArrayList<MessageData?> {
        val timeList = arrayListOf<MessageData?>()
        messages.forEach {
            timeList.add(it.value.time)
        }

        return timeList
    }

    fun getAllLatitude(): ArrayList<MessageData?> {
        val latitudeList = arrayListOf<MessageData?>()
        messages.forEach {
            latitudeList.add(it.value.latitude)
        }

        return latitudeList
    }

    fun getAllLongitude(): ArrayList<MessageData?> {
        val longitudeList = arrayListOf<MessageData?>()
        messages.forEach {
            longitudeList.add(it.value.longitude)
        }

        return longitudeList
    }

    fun getAllSpeedOverGround(): ArrayList<MessageData?> {
        val speedOverGroundList = arrayListOf<MessageData?>()
        messages.forEach {
            speedOverGroundList.add(it.value.speedOverGround)
        }

        return speedOverGroundList
    }

    fun getAllCourseOverGround(): ArrayList<MessageData?> {
        val res = arrayListOf<MessageData?>()
        messages.forEach {
            res.add(it.value.courseOverGround)
        }

        return res
    }

    fun getAllHeading(): ArrayList<MessageData?> {
        val res = arrayListOf<MessageData?>()
        messages.forEach {
            res.add(it.value.heading)
        }

        return res
    }

    fun getAllVesselName(): ArrayList<MessageData?> {
        val res = arrayListOf<MessageData?>()
        messages.forEach {
            res.add(it.value.vesselName)
        }
        return res
    }

    fun getAllIMO(): ArrayList<MessageData?> {
        val res = arrayListOf<MessageData?>()
        messages.forEach {
            res.add(it.value.imo)
        }
        return res
    }

    fun getAllCallSign(): ArrayList<MessageData?> {
        val res = arrayListOf<MessageData?>()
        messages.forEach {
            res.add(it.value.callSign)
        }
        return res
    }

    fun getAllVesselType(): ArrayList<MessageData?> {
        val res = arrayListOf<MessageData?>()
        messages.forEach {
            res.add(it.value.vesselType)
        }
        return res
    }

    fun getAllStatus(): ArrayList<MessageData?> {
        val res = arrayListOf<MessageData?>()
        messages.forEach {
            res.add(it.value.status)
        }
        return res
    }

    fun getAllLength(): ArrayList<MessageData?> {
        val res = arrayListOf<MessageData?>()
        messages.forEach {
            res.add(it.value.length)
        }
        return res
    }

    fun getAllWidth(): ArrayList<MessageData?> {
        val res = arrayListOf<MessageData?>()
        messages.forEach {
            res.add(it.value.width)
        }
        return res
    }

    fun getAllDraft(): ArrayList<MessageData?> {
        val res = arrayListOf<MessageData?>()
        messages.forEach {
            res.add(it.value.draft)
        }
        return res
    }

    fun getAllCargo(): ArrayList<MessageData?> {
        val res = arrayListOf<MessageData?>()
        messages.forEach {
            res.add(it.value.cargo)
        }
        return res
    }

    companion object{
        var maxTime: Long = 0
        var minTime: Long = 0
    }

}