Commit df68a9fdcc44bce10a158df2905bf566f2245627
1 parent
93534e6934
Exists in
master
and in
1 other branch
refactor graph minor optimization
Showing 5 changed files with 211 additions and 183 deletions Side-by-side Diff
src/main/kotlin/application/controller/DataPanelController.kt
View file @
df68a9f
| ... | ... | @@ -20,35 +20,34 @@ |
| 20 | 20 | |
| 21 | 21 | |
| 22 | 22 | class DataPanelController : Initializable, SelectedVesselListener { |
| 23 | - private var dataList: ObservableList<Pair<String, ArrayList<MessageData?>>> = FXCollections.observableArrayList() | |
| 24 | - private lateinit var timeData: ArrayList<MessageData?> | |
| 23 | + private var dataList: ObservableList<String> = FXCollections.observableArrayList() | |
| 24 | + private lateinit var timeData: ArrayList<String> | |
| 25 | 25 | |
| 26 | - private val latitude: ArrayList<MessageData?> = arrayListOf() | |
| 27 | - private val longitude: ArrayList<MessageData?> = arrayListOf() | |
| 28 | - private val speedOverGround: ArrayList<MessageData?> = arrayListOf() | |
| 29 | - private val courseOverGround: ArrayList<MessageData?> = arrayListOf() | |
| 30 | - private val heading: ArrayList<MessageData?> = arrayListOf() | |
| 31 | - private val vesselName: ArrayList<MessageData?> = arrayListOf() | |
| 32 | - private val imo: ArrayList<MessageData?> = arrayListOf() | |
| 33 | - private val callSign: ArrayList<MessageData?> = arrayListOf() | |
| 34 | - private val vesselType: ArrayList<MessageData?> = arrayListOf() | |
| 35 | - private val status: ArrayList<MessageData?> = arrayListOf() | |
| 36 | - private val length: ArrayList<MessageData?> = arrayListOf() | |
| 37 | - private val width: ArrayList<MessageData?> = arrayListOf() | |
| 38 | - private val draft: ArrayList<MessageData?> = arrayListOf() | |
| 39 | - private val cargo: ArrayList<MessageData?> = arrayListOf() | |
| 26 | + private val latitude: ArrayList<Double> = arrayListOf() | |
| 27 | + private val longitude: ArrayList<Double> = arrayListOf() | |
| 28 | + private val speedOverGround: ArrayList<Double> = arrayListOf() | |
| 29 | + private val courseOverGround: ArrayList<Double> = arrayListOf() | |
| 30 | + private val heading: ArrayList<Double> = arrayListOf() | |
| 31 | + private val vesselName: ArrayList<String> = arrayListOf() | |
| 32 | + private val imo: ArrayList<String> = arrayListOf() | |
| 33 | + private val callSign: ArrayList<String> = arrayListOf() | |
| 34 | + private val vesselType: ArrayList<Double> = arrayListOf() | |
| 35 | + private val status: ArrayList<String> = arrayListOf() | |
| 36 | + private val length: ArrayList<Double> = arrayListOf() | |
| 37 | + private val width: ArrayList<Double> = arrayListOf() | |
| 38 | + private val draft: ArrayList<Double> = arrayListOf() | |
| 39 | + private val cargo: ArrayList<Double> = arrayListOf() | |
| 40 | 40 | |
| 41 | - private var selectedItem: Pair<String, ArrayList<MessageData?>>? = null | |
| 41 | + private var selectedItem: String? = null | |
| 42 | 42 | |
| 43 | 43 | @FXML |
| 44 | - var dataListView = ListView<Pair<String, ArrayList<MessageData?>>>() | |
| 44 | + var dataListView = ListView<String>() | |
| 45 | 45 | |
| 46 | 46 | @FXML |
| 47 | 47 | var dataViewer = JavaFxDataViewer() |
| 48 | 48 | |
| 49 | 49 | private val plotData = PlotData() |
| 50 | 50 | private val config = DataViewerConfiguration() |
| 51 | - | |
| 52 | 51 | override fun initialize(location: URL?, resources: ResourceBundle?) { |
| 53 | 52 | setObservableSelectedVesselListener() |
| 54 | 53 | dataListView.items = dataList |
| 55 | 54 | |
| ... | ... | @@ -61,13 +60,13 @@ |
| 61 | 60 | setObservableCurrentTimeListener() |
| 62 | 61 | |
| 63 | 62 | dataListView.setCellFactory { |
| 64 | - object : ListCell<Pair<String, ArrayList<MessageData?>>?>() { | |
| 65 | - override fun updateItem(item: Pair<String, ArrayList<MessageData?>>?, empty: Boolean) { | |
| 63 | + object : ListCell<String?>() { | |
| 64 | + override fun updateItem(item: String?, empty: Boolean) { | |
| 66 | 65 | super.updateItem(item, empty) |
| 67 | 66 | text = if (empty) { |
| 68 | 67 | null |
| 69 | 68 | } else { |
| 70 | - item?.first | |
| 69 | + item | |
| 71 | 70 | } |
| 72 | 71 | } |
| 73 | 72 | } |
| ... | ... | @@ -98,7 +97,9 @@ |
| 98 | 97 | } |
| 99 | 98 | } |
| 100 | 99 | |
| 101 | - private fun plot(data: Pair<String, ArrayList<MessageData?>>?) { | |
| 100 | + | |
| 101 | + | |
| 102 | + private fun plot(data: String?) { | |
| 102 | 103 | if (data == null) { |
| 103 | 104 | plotData.allTraces.clear() |
| 104 | 105 | config.setxAxisTitle("") |
| 105 | 106 | |
| 106 | 107 | |
| 107 | 108 | |
| ... | ... | @@ -108,39 +109,62 @@ |
| 108 | 109 | dataViewer.resetPlot() |
| 109 | 110 | |
| 110 | 111 | return |
| 111 | - }else if (data.second.size < timeData.size) return | |
| 112 | - | |
| 113 | - val getValueVisitorX = GetValueVisitor() | |
| 114 | - val getValueVisitorY = GetValueVisitor() | |
| 115 | - | |
| 116 | - val arrayListStringX = arrayListOf<String>() | |
| 117 | -// val arrayListDoubleX = arrayListOf<Double>() | |
| 118 | - val arrayListStringY = arrayListOf<String>() | |
| 119 | - val arrayListDoubleY = arrayListOf<Double>() | |
| 120 | - | |
| 121 | - for (x in 0 until timeData.size) { | |
| 122 | - timeData[x]?.accept(getValueVisitorX) | |
| 123 | - data.second[x]?.accept(getValueVisitorY) | |
| 124 | - | |
| 125 | - if (getValueVisitorY.value.toDoubleOrNull() == null) { | |
| 126 | - arrayListStringX.add(getValueVisitorX.value) | |
| 127 | - arrayListStringY.add(getValueVisitorY.value) | |
| 128 | - } else { | |
| 129 | - arrayListStringX.add(getValueVisitorX.value) | |
| 130 | - arrayListDoubleY.add(getValueVisitorY.value.toDouble()) | |
| 131 | - } | |
| 132 | 112 | } |
| 133 | 113 | |
| 134 | 114 | val scatterTrace = ScatterTrace<Any>() |
| 135 | 115 | scatterTrace.traceColour = TraceColour.RED |
| 136 | 116 | scatterTrace.traceVisibility = TraceVisibility.TRUE |
| 137 | 117 | |
| 138 | - val serieStringX: Array<String> = arrayListStringX.toTypedArray() | |
| 118 | + val serieStringX: Array<String> = timeData.toTypedArray() | |
| 139 | 119 | // val serieDoubleX: Array<Double> = arrayListDoubleX.toTypedArray() |
| 140 | - val serieStringY: Array<String> = arrayListStringY.toTypedArray() | |
| 141 | - val serieDoubleY: Array<Double> = arrayListDoubleY.toTypedArray() | |
| 120 | + var serieStringY: Array<String> = arrayOf() | |
| 121 | + var serieDoubleY: Array<Double> = arrayOf() | |
| 122 | + when (data) { | |
| 123 | + "Latitude" -> { | |
| 124 | + serieDoubleY = latitude.toTypedArray() | |
| 125 | + } | |
| 126 | + "Longitude" -> { | |
| 127 | + serieDoubleY = longitude.toTypedArray() | |
| 128 | + } | |
| 129 | + "Speed Over Ground" -> { | |
| 130 | + serieDoubleY = speedOverGround.toTypedArray() | |
| 131 | + } | |
| 132 | + "Course Over Ground" -> { | |
| 133 | + serieDoubleY = courseOverGround.toTypedArray() | |
| 134 | + } | |
| 135 | + "Heading" -> { | |
| 136 | + serieDoubleY = heading.toTypedArray() | |
| 137 | + } | |
| 138 | + "Vessel Name" -> { | |
| 139 | + serieStringY = vesselName.toTypedArray() | |
| 140 | + } | |
| 141 | + "IMO" -> { | |
| 142 | + serieStringY = imo.toTypedArray() | |
| 143 | + } | |
| 144 | + "Call Sign" -> { | |
| 145 | + serieStringY = callSign.toTypedArray() | |
| 146 | + } | |
| 147 | + "Vessel Type" -> { | |
| 148 | + serieDoubleY = vesselType.toTypedArray() | |
| 149 | + } | |
| 150 | + "Status" -> { | |
| 151 | + serieStringY = status.toTypedArray() | |
| 152 | + } | |
| 153 | + "Length" -> { | |
| 154 | + serieDoubleY = length.toTypedArray() | |
| 155 | + } | |
| 156 | + "Width" -> { | |
| 157 | + serieDoubleY = width.toTypedArray() | |
| 158 | + } | |
| 159 | + "Draft" -> { | |
| 160 | + serieDoubleY = draft.toTypedArray() | |
| 161 | + } | |
| 162 | + "Cargo" -> { | |
| 163 | + serieDoubleY = cargo.toTypedArray() | |
| 164 | + } | |
| 165 | + } | |
| 142 | 166 | |
| 143 | - if (getValueVisitorY.value.toDoubleOrNull() == null) { | |
| 167 | + if (serieStringY.isNotEmpty()) { | |
| 144 | 168 | scatterTrace.setxArray(serieStringX) |
| 145 | 169 | scatterTrace.setyArray(serieStringY) |
| 146 | 170 | } else { |
| ... | ... | @@ -150,7 +174,7 @@ |
| 150 | 174 | |
| 151 | 175 | config.plotTitle = "" |
| 152 | 176 | config.setxAxisTitle("Time (s)") |
| 153 | - config.setyAxisTitle(data.first) | |
| 177 | + config.setyAxisTitle(data) | |
| 154 | 178 | dataViewer.resetPlot() |
| 155 | 179 | plotData.allTraces.clear() |
| 156 | 180 | plotData.addTrace(scatterTrace) |
| 157 | 181 | |
| ... | ... | @@ -159,12 +183,11 @@ |
| 159 | 183 | |
| 160 | 184 | } |
| 161 | 185 | |
| 162 | - | |
| 163 | 186 | private fun setObservableSelectedVesselListener() { |
| 164 | 187 | observableSelectedVessel.listeners.add(this) |
| 165 | 188 | } |
| 166 | 189 | |
| 167 | - private fun populateTime(vessel: Vessel): ArrayList<MessageData?> { | |
| 190 | + private fun populateTime(vessel: Vessel): ArrayList<String> { | |
| 168 | 191 | return if (observableIsReplayState.value) { |
| 169 | 192 | vessel.getAllTimeBeforeSelectedTime() |
| 170 | 193 | } else { |
| ... | ... | @@ -172,8 +195,7 @@ |
| 172 | 195 | } |
| 173 | 196 | } |
| 174 | 197 | |
| 175 | - | |
| 176 | - private fun populateLatitude(vessel: Vessel): ArrayList<MessageData?> { | |
| 198 | + private fun populateLatitude(vessel: Vessel): ArrayList<Double> { | |
| 177 | 199 | return if (observableIsReplayState.value) { |
| 178 | 200 | vessel.getAllLatitudeBeforeSelectedTime() |
| 179 | 201 | } else { |
| ... | ... | @@ -181,7 +203,7 @@ |
| 181 | 203 | } |
| 182 | 204 | } |
| 183 | 205 | |
| 184 | - private fun populateLongitude(vessel: Vessel): ArrayList<MessageData?> { | |
| 206 | + private fun populateLongitude(vessel: Vessel): ArrayList<Double> { | |
| 185 | 207 | return if (observableIsReplayState.value) { |
| 186 | 208 | vessel.getAllLongitudeBeforeSelectedTime() |
| 187 | 209 | } else { |
| ... | ... | @@ -189,7 +211,7 @@ |
| 189 | 211 | } |
| 190 | 212 | } |
| 191 | 213 | |
| 192 | - private fun populateSpeedOverGround(vessel: Vessel): ArrayList<MessageData?> { | |
| 214 | + private fun populateSpeedOverGround(vessel: Vessel): ArrayList<Double> { | |
| 193 | 215 | return if (observableIsReplayState.value) { |
| 194 | 216 | vessel.getAllSpeedOverGroundBeforeSelectedTime() |
| 195 | 217 | } else { |
| ... | ... | @@ -197,7 +219,7 @@ |
| 197 | 219 | } |
| 198 | 220 | } |
| 199 | 221 | |
| 200 | - private fun populateCourseOverGround(vessel: Vessel): ArrayList<MessageData?> { | |
| 222 | + private fun populateCourseOverGround(vessel: Vessel): ArrayList<Double> { | |
| 201 | 223 | return if (observableIsReplayState.value) { |
| 202 | 224 | vessel.getAllCourseOverGroundBeforeSelectedTime() |
| 203 | 225 | } else { |
| ... | ... | @@ -205,7 +227,7 @@ |
| 205 | 227 | } |
| 206 | 228 | } |
| 207 | 229 | |
| 208 | - private fun populateHeading(vessel: Vessel): ArrayList<MessageData?> { | |
| 230 | + private fun populateHeading(vessel: Vessel): ArrayList<Double> { | |
| 209 | 231 | return if (observableIsReplayState.value) { |
| 210 | 232 | vessel.getAllHeadingBeforeSelectedTime() |
| 211 | 233 | } else { |
| ... | ... | @@ -213,7 +235,7 @@ |
| 213 | 235 | } |
| 214 | 236 | } |
| 215 | 237 | |
| 216 | - private fun populateVesselName(vessel: Vessel): ArrayList<MessageData?> { | |
| 238 | + private fun populateVesselName(vessel: Vessel): ArrayList<String> { | |
| 217 | 239 | return if (observableIsReplayState.value) { |
| 218 | 240 | vessel.getAllVesselNameBeforeSelectedTime() |
| 219 | 241 | } else { |
| ... | ... | @@ -221,7 +243,7 @@ |
| 221 | 243 | } |
| 222 | 244 | } |
| 223 | 245 | |
| 224 | - private fun populateIMO(vessel: Vessel): ArrayList<MessageData?> { | |
| 246 | + private fun populateIMO(vessel: Vessel): ArrayList<String> { | |
| 225 | 247 | return if (observableIsReplayState.value) { |
| 226 | 248 | vessel.getAllIMOBeforeSelectedTime() |
| 227 | 249 | } else { |
| ... | ... | @@ -229,7 +251,7 @@ |
| 229 | 251 | } |
| 230 | 252 | } |
| 231 | 253 | |
| 232 | - private fun populateCallSign(vessel: Vessel): ArrayList<MessageData?> { | |
| 254 | + private fun populateCallSign(vessel: Vessel): ArrayList<String> { | |
| 233 | 255 | return if (observableIsReplayState.value) { |
| 234 | 256 | vessel.getAllCallSignBeforeSelectedTime() |
| 235 | 257 | } else { |
| ... | ... | @@ -237,7 +259,7 @@ |
| 237 | 259 | } |
| 238 | 260 | } |
| 239 | 261 | |
| 240 | - private fun populateVesselType(vessel: Vessel): ArrayList<MessageData?> { | |
| 262 | + private fun populateVesselType(vessel: Vessel): ArrayList<Double> { | |
| 241 | 263 | return if (observableIsReplayState.value) { |
| 242 | 264 | vessel.getAllVesselTypeBeforeSelectedTime() |
| 243 | 265 | } else { |
| ... | ... | @@ -245,7 +267,7 @@ |
| 245 | 267 | } |
| 246 | 268 | } |
| 247 | 269 | |
| 248 | - private fun populateStatus(vessel: Vessel): ArrayList<MessageData?> { | |
| 270 | + private fun populateStatus(vessel: Vessel): ArrayList<String> { | |
| 249 | 271 | return if (observableIsReplayState.value) { |
| 250 | 272 | vessel.getAllStatusBeforeSelectedTime() |
| 251 | 273 | } else { |
| ... | ... | @@ -253,7 +275,7 @@ |
| 253 | 275 | } |
| 254 | 276 | } |
| 255 | 277 | |
| 256 | - private fun populateLength(vessel: Vessel): ArrayList<MessageData?> { | |
| 278 | + private fun populateLength(vessel: Vessel): ArrayList<Double> { | |
| 257 | 279 | return if (observableIsReplayState.value) { |
| 258 | 280 | vessel.getAllLengthBeforeSelectedTime() |
| 259 | 281 | } else { |
| ... | ... | @@ -261,7 +283,7 @@ |
| 261 | 283 | } |
| 262 | 284 | } |
| 263 | 285 | |
| 264 | - private fun populateWidth(vessel: Vessel): ArrayList<MessageData?> { | |
| 286 | + private fun populateWidth(vessel: Vessel): ArrayList<Double> { | |
| 265 | 287 | return if (observableIsReplayState.value) { |
| 266 | 288 | vessel.getAllWidthBeforeSelectedTime() |
| 267 | 289 | } else { |
| ... | ... | @@ -269,7 +291,7 @@ |
| 269 | 291 | } |
| 270 | 292 | } |
| 271 | 293 | |
| 272 | - private fun populateDraft(vessel: Vessel): ArrayList<MessageData?> { | |
| 294 | + private fun populateDraft(vessel: Vessel): ArrayList<Double> { | |
| 273 | 295 | return if (observableIsReplayState.value) { |
| 274 | 296 | vessel.getAllDraftBeforeSelectedTime() |
| 275 | 297 | } else { |
| ... | ... | @@ -277,7 +299,7 @@ |
| 277 | 299 | } |
| 278 | 300 | } |
| 279 | 301 | |
| 280 | - private fun populateCargo(vessel: Vessel): ArrayList<MessageData?> { | |
| 302 | + private fun populateCargo(vessel: Vessel): ArrayList<Double> { | |
| 281 | 303 | return if (observableIsReplayState.value) { |
| 282 | 304 | vessel.getAllCargoBeforeSelectedTime() |
| 283 | 305 | } else { |
| 284 | 306 | |
| ... | ... | @@ -286,22 +308,22 @@ |
| 286 | 308 | } |
| 287 | 309 | |
| 288 | 310 | private fun initDataList() { |
| 289 | - val data = arrayListOf<Pair<String, ArrayList<MessageData?>>>() | |
| 311 | + val data = arrayListOf<String>() | |
| 290 | 312 | |
| 291 | - data.add(Pair("Latitude", latitude)) | |
| 292 | - data.add(Pair("Longitude", longitude)) | |
| 293 | - data.add(Pair("Speed Over Ground", speedOverGround)) | |
| 294 | - data.add(Pair("Course Over Ground", courseOverGround)) | |
| 295 | - data.add(Pair("Heading", heading)) | |
| 296 | - data.add(Pair("Vessel Name", vesselName)) | |
| 297 | - data.add(Pair("IMO", imo)) | |
| 298 | - data.add(Pair("Call Sign", callSign)) | |
| 299 | - data.add(Pair("Vessel Type", vesselType)) | |
| 300 | - data.add(Pair("Status", status)) | |
| 301 | - data.add(Pair("Length", length)) | |
| 302 | - data.add(Pair("Width", width)) | |
| 303 | - data.add(Pair("Draft", draft)) | |
| 304 | - data.add(Pair("Cargo", cargo)) | |
| 313 | + data.add("Latitude") | |
| 314 | + data.add("Longitude") | |
| 315 | + data.add("Speed Over Ground") | |
| 316 | + data.add("Course Over Ground") | |
| 317 | + data.add("Heading") | |
| 318 | + data.add("Vessel Name") | |
| 319 | + data.add("IMO") | |
| 320 | + data.add("Call Sign") | |
| 321 | + data.add("Vessel Type") | |
| 322 | + data.add("Status") | |
| 323 | + data.add("Length") | |
| 324 | + data.add("Width") | |
| 325 | + data.add("Draft") | |
| 326 | + data.add("Cargo") | |
| 305 | 327 | |
| 306 | 328 | dataList.addAll(data) |
| 307 | 329 | } |
| ... | ... | @@ -309,9 +331,9 @@ |
| 309 | 331 | private fun updateDataList(vessel: Vessel) { |
| 310 | 332 | timeData = populateTime(vessel) |
| 311 | 333 | |
| 312 | - if(dataListView.selectionModel.selectedItem == null) return | |
| 313 | - | |
| 314 | - when (dataListView.selectionModel.selectedItem.first) { | |
| 334 | + if (dataListView.selectionModel.selectedItem == null) return | |
| 335 | +//NOTE: Ajouter les nouvelles donnรฉe ร la fin | |
| 336 | + when (dataListView.selectionModel.selectedItem) { | |
| 315 | 337 | "Latitude" -> { |
| 316 | 338 | latitude.clear() |
| 317 | 339 | latitude.addAll(populateLatitude(vessel)) |
src/main/kotlin/application/model/Message.kt
View file @
df68a9f
| ... | ... | @@ -13,12 +13,12 @@ |
| 13 | 13 | val vesselName = VesselName(if (split[7] == "") null else split[7]) |
| 14 | 14 | val imo = IMO(if (split[8] == "") null else split[8]) |
| 15 | 15 | val callSign = CallSign(if (split[9] == "") null else split[9]) |
| 16 | - val vesselType = VesselType(split[10].toIntOrNull()) | |
| 16 | + val vesselType = VesselType(split[10].toDoubleOrNull()) | |
| 17 | 17 | val status = Status(if (split[11] == "") null else split[11]) |
| 18 | 18 | val length = Length(split[12].toDoubleOrNull()) |
| 19 | 19 | val width = Width(split[13].toDoubleOrNull()) |
| 20 | 20 | val draft = Draft(split[14].toDoubleOrNull()) |
| 21 | - val cargo = Cargo(split[15].toIntOrNull()) | |
| 21 | + val cargo = Cargo(split[15].toDoubleOrNull()) | |
| 22 | 22 | |
| 23 | 23 | fun getHexColorStroke(): String { |
| 24 | 24 | var hex = Integer.toHexString(this.mmsi.value?.toInt()!!) |
src/main/kotlin/application/model/MessageData.kt
View file @
df68a9f
| ... | ... | @@ -31,7 +31,13 @@ |
| 31 | 31 | override fun accept(visitor: MessageDataVisitor) = visitor.visit(messageData = this) |
| 32 | 32 | } |
| 33 | 33 | |
| 34 | -data class Time(val value: LocalDateTime) : MessageData { | |
| 34 | +data class Time(val date: LocalDateTime) : MessageData { | |
| 35 | + val value: String? | |
| 36 | + | |
| 37 | + init { | |
| 38 | + value = date.toString() | |
| 39 | + } | |
| 40 | + | |
| 35 | 41 | override fun accept(visitor: MessageDataVisitor) = visitor.visit(messageData = this) |
| 36 | 42 | } |
| 37 | 43 | |
| ... | ... | @@ -67,7 +73,7 @@ |
| 67 | 73 | override fun accept(visitor: MessageDataVisitor) = visitor.visit(messageData = this) |
| 68 | 74 | } |
| 69 | 75 | |
| 70 | -data class VesselType(val value: Int?) : MessageData { | |
| 76 | +data class VesselType(val value: Double?) : MessageData { | |
| 71 | 77 | override fun accept(visitor: MessageDataVisitor) = visitor.visit(messageData = this) |
| 72 | 78 | } |
| 73 | 79 | |
| ... | ... | @@ -87,7 +93,7 @@ |
| 87 | 93 | override fun accept(visitor: MessageDataVisitor) = visitor.visit(messageData = this) |
| 88 | 94 | } |
| 89 | 95 | |
| 90 | -data class Cargo(val value: Int?) : MessageData { | |
| 96 | +data class Cargo(val value: Double?) : MessageData { | |
| 91 | 97 | override fun accept(visitor: MessageDataVisitor) = visitor.visit(messageData = this) |
| 92 | 98 | } |
| 93 | 99 |
src/main/kotlin/application/model/Vessel.kt
View file @
df68a9f
| ... | ... | @@ -16,254 +16,254 @@ |
| 16 | 16 | return field |
| 17 | 17 | } |
| 18 | 18 | |
| 19 | - fun getAllTimeBeforeSelectedTime(): ArrayList<MessageData?> { | |
| 20 | - val timeList = arrayListOf<MessageData?>() | |
| 19 | + fun getAllTimeBeforeSelectedTime(): ArrayList<String> { | |
| 20 | + val timeList = arrayListOf<String>() | |
| 21 | 21 | messageBeforeSelectedTime.forEach { |
| 22 | - timeList.add(it.value.time) | |
| 22 | + timeList.add(it.value.time.value!!) | |
| 23 | 23 | } |
| 24 | 24 | |
| 25 | 25 | return timeList |
| 26 | 26 | } |
| 27 | 27 | |
| 28 | - fun getAllLatitudeBeforeSelectedTime(): ArrayList<MessageData?> { | |
| 29 | - val latitudeList = arrayListOf<MessageData?>() | |
| 28 | + fun getAllLatitudeBeforeSelectedTime(): ArrayList<Double> { | |
| 29 | + val latitudeList = arrayListOf<Double>() | |
| 30 | 30 | messageBeforeSelectedTime.forEach { |
| 31 | - latitudeList.add(it.value.latitude) | |
| 31 | + latitudeList.add(it.value.latitude.value!!) | |
| 32 | 32 | } |
| 33 | 33 | |
| 34 | 34 | return latitudeList |
| 35 | 35 | } |
| 36 | 36 | |
| 37 | - fun getAllLongitudeBeforeSelectedTime(): ArrayList<MessageData?> { | |
| 38 | - val longitudeList = arrayListOf<MessageData?>() | |
| 37 | + fun getAllLongitudeBeforeSelectedTime(): ArrayList<Double> { | |
| 38 | + val longitudeList = arrayListOf<Double>() | |
| 39 | 39 | messageBeforeSelectedTime.forEach { |
| 40 | - longitudeList.add(it.value.longitude) | |
| 40 | + longitudeList.add(it.value.longitude.value!!) | |
| 41 | 41 | } |
| 42 | 42 | |
| 43 | 43 | return longitudeList |
| 44 | 44 | } |
| 45 | 45 | |
| 46 | - fun getAllSpeedOverGroundBeforeSelectedTime(): ArrayList<MessageData?> { | |
| 47 | - val speedOverGroundList = arrayListOf<MessageData?>() | |
| 46 | + fun getAllSpeedOverGroundBeforeSelectedTime(): ArrayList<Double> { | |
| 47 | + val speedOverGroundList = arrayListOf<Double>() | |
| 48 | 48 | messageBeforeSelectedTime.forEach { |
| 49 | - speedOverGroundList.add(it.value.speedOverGround) | |
| 49 | + speedOverGroundList.add(it.value.speedOverGround.value!!) | |
| 50 | 50 | } |
| 51 | 51 | |
| 52 | 52 | return speedOverGroundList |
| 53 | 53 | } |
| 54 | 54 | |
| 55 | - fun getAllCourseOverGroundBeforeSelectedTime(): ArrayList<MessageData?> { | |
| 56 | - val res = arrayListOf<MessageData?>() | |
| 55 | + fun getAllCourseOverGroundBeforeSelectedTime(): ArrayList<Double> { | |
| 56 | + val res = arrayListOf<Double>() | |
| 57 | 57 | messageBeforeSelectedTime.forEach { |
| 58 | - res.add(it.value.courseOverGround) | |
| 58 | + res.add(it.value.courseOverGround.value!!) | |
| 59 | 59 | } |
| 60 | 60 | |
| 61 | 61 | return res |
| 62 | 62 | } |
| 63 | 63 | |
| 64 | - fun getAllHeadingBeforeSelectedTime(): ArrayList<MessageData?> { | |
| 65 | - val res = arrayListOf<MessageData?>() | |
| 64 | + fun getAllHeadingBeforeSelectedTime(): ArrayList<Double> { | |
| 65 | + val res = arrayListOf<Double>() | |
| 66 | 66 | messageBeforeSelectedTime.forEach { |
| 67 | - res.add(it.value.heading) | |
| 67 | + res.add(it.value.heading.value!!) | |
| 68 | 68 | } |
| 69 | 69 | |
| 70 | 70 | return res |
| 71 | 71 | } |
| 72 | 72 | |
| 73 | - fun getAllVesselNameBeforeSelectedTime(): ArrayList<MessageData?> { | |
| 74 | - val res = arrayListOf<MessageData?>() | |
| 73 | + fun getAllVesselNameBeforeSelectedTime(): ArrayList<String> { | |
| 74 | + val res = arrayListOf<String>() | |
| 75 | 75 | messageBeforeSelectedTime.forEach { |
| 76 | - res.add(it.value.vesselName) | |
| 76 | + res.add(it.value.vesselName.value!!) | |
| 77 | 77 | } |
| 78 | 78 | return res |
| 79 | 79 | } |
| 80 | 80 | |
| 81 | - fun getAllIMOBeforeSelectedTime(): ArrayList<MessageData?> { | |
| 82 | - val res = arrayListOf<MessageData?>() | |
| 81 | + fun getAllIMOBeforeSelectedTime(): ArrayList<String> { | |
| 82 | + val res = arrayListOf<String>() | |
| 83 | 83 | messageBeforeSelectedTime.forEach { |
| 84 | - res.add(it.value.imo) | |
| 84 | + res.add(it.value.imo.value!!) | |
| 85 | 85 | } |
| 86 | 86 | return res |
| 87 | 87 | } |
| 88 | 88 | |
| 89 | - fun getAllCallSignBeforeSelectedTime(): ArrayList<MessageData?> { | |
| 90 | - val res = arrayListOf<MessageData?>() | |
| 89 | + fun getAllCallSignBeforeSelectedTime(): ArrayList<String> { | |
| 90 | + val res = arrayListOf<String>() | |
| 91 | 91 | messageBeforeSelectedTime.forEach { |
| 92 | - res.add(it.value.callSign) | |
| 92 | + res.add(it.value.callSign.value!!) | |
| 93 | 93 | } |
| 94 | 94 | return res |
| 95 | 95 | } |
| 96 | 96 | |
| 97 | - fun getAllVesselTypeBeforeSelectedTime(): ArrayList<MessageData?> { | |
| 98 | - val res = arrayListOf<MessageData?>() | |
| 97 | + fun getAllVesselTypeBeforeSelectedTime(): ArrayList<Double> { | |
| 98 | + val res = arrayListOf<Double>() | |
| 99 | 99 | messageBeforeSelectedTime.forEach { |
| 100 | - res.add(it.value.vesselType) | |
| 100 | + res.add(it.value.vesselType.value!!) | |
| 101 | 101 | } |
| 102 | 102 | return res |
| 103 | 103 | } |
| 104 | 104 | |
| 105 | - fun getAllStatusBeforeSelectedTime(): ArrayList<MessageData?> { | |
| 106 | - val res = arrayListOf<MessageData?>() | |
| 105 | + fun getAllStatusBeforeSelectedTime(): ArrayList<String> { | |
| 106 | + val res = arrayListOf<String>() | |
| 107 | 107 | messageBeforeSelectedTime.forEach { |
| 108 | - res.add(it.value.status) | |
| 108 | + res.add(it.value.status.value!!) | |
| 109 | 109 | } |
| 110 | 110 | return res |
| 111 | 111 | } |
| 112 | 112 | |
| 113 | - fun getAllLengthBeforeSelectedTime(): ArrayList<MessageData?> { | |
| 114 | - val res = arrayListOf<MessageData?>() | |
| 113 | + fun getAllLengthBeforeSelectedTime(): ArrayList<Double> { | |
| 114 | + val res = arrayListOf<Double>() | |
| 115 | 115 | messageBeforeSelectedTime.forEach { |
| 116 | - res.add(it.value.length) | |
| 116 | + res.add(it.value.length.value!!) | |
| 117 | 117 | } |
| 118 | 118 | return res |
| 119 | 119 | } |
| 120 | 120 | |
| 121 | - fun getAllWidthBeforeSelectedTime(): ArrayList<MessageData?> { | |
| 122 | - val res = arrayListOf<MessageData?>() | |
| 121 | + fun getAllWidthBeforeSelectedTime(): ArrayList<Double> { | |
| 122 | + val res = arrayListOf<Double>() | |
| 123 | 123 | messageBeforeSelectedTime.forEach { |
| 124 | - res.add(it.value.width) | |
| 124 | + res.add(it.value.width.value!!) | |
| 125 | 125 | } |
| 126 | 126 | return res |
| 127 | 127 | } |
| 128 | 128 | |
| 129 | - fun getAllDraftBeforeSelectedTime(): ArrayList<MessageData?> { | |
| 130 | - val res = arrayListOf<MessageData?>() | |
| 129 | + fun getAllDraftBeforeSelectedTime(): ArrayList<Double> { | |
| 130 | + val res = arrayListOf<Double>() | |
| 131 | 131 | messageBeforeSelectedTime.forEach { |
| 132 | - res.add(it.value.draft) | |
| 132 | + res.add(it.value.draft.value!!) | |
| 133 | 133 | } |
| 134 | 134 | return res |
| 135 | 135 | } |
| 136 | 136 | |
| 137 | - fun getAllCargoBeforeSelectedTime(): ArrayList<MessageData?> { | |
| 138 | - val res = arrayListOf<MessageData?>() | |
| 137 | + fun getAllCargoBeforeSelectedTime(): ArrayList<Double> { | |
| 138 | + val res = arrayListOf<Double>() | |
| 139 | 139 | messageBeforeSelectedTime.forEach { |
| 140 | - res.add(it.value.cargo) | |
| 140 | + res.add(it.value.cargo.value!!) | |
| 141 | 141 | } |
| 142 | 142 | return res |
| 143 | 143 | } |
| 144 | 144 | |
| 145 | - fun getAllTime(): ArrayList<MessageData?> { | |
| 146 | - val timeList = arrayListOf<MessageData?>() | |
| 145 | + fun getAllTime(): ArrayList<String> { | |
| 146 | + val timeList = arrayListOf<String>() | |
| 147 | 147 | messages.forEach { |
| 148 | - timeList.add(it.value.time) | |
| 148 | + timeList.add(it.value.time.value!!) | |
| 149 | 149 | } |
| 150 | 150 | |
| 151 | 151 | return timeList |
| 152 | 152 | } |
| 153 | 153 | |
| 154 | - fun getAllLatitude(): ArrayList<MessageData?> { | |
| 155 | - val latitudeList = arrayListOf<MessageData?>() | |
| 154 | + fun getAllLatitude(): ArrayList<Double> { | |
| 155 | + val latitudeList = arrayListOf<Double>() | |
| 156 | 156 | messages.forEach { |
| 157 | - latitudeList.add(it.value.latitude) | |
| 157 | + latitudeList.add(it.value.latitude.value!!) | |
| 158 | 158 | } |
| 159 | 159 | |
| 160 | 160 | return latitudeList |
| 161 | 161 | } |
| 162 | 162 | |
| 163 | - fun getAllLongitude(): ArrayList<MessageData?> { | |
| 164 | - val longitudeList = arrayListOf<MessageData?>() | |
| 163 | + fun getAllLongitude(): ArrayList<Double> { | |
| 164 | + val longitudeList = arrayListOf<Double>() | |
| 165 | 165 | messages.forEach { |
| 166 | - longitudeList.add(it.value.longitude) | |
| 166 | + longitudeList.add(it.value.longitude.value!!) | |
| 167 | 167 | } |
| 168 | 168 | |
| 169 | 169 | return longitudeList |
| 170 | 170 | } |
| 171 | 171 | |
| 172 | - fun getAllSpeedOverGround(): ArrayList<MessageData?> { | |
| 173 | - val speedOverGroundList = arrayListOf<MessageData?>() | |
| 172 | + fun getAllSpeedOverGround(): ArrayList<Double> { | |
| 173 | + val speedOverGroundList = arrayListOf<Double>() | |
| 174 | 174 | messages.forEach { |
| 175 | - speedOverGroundList.add(it.value.speedOverGround) | |
| 175 | + speedOverGroundList.add(it.value.speedOverGround.value!!) | |
| 176 | 176 | } |
| 177 | 177 | |
| 178 | 178 | return speedOverGroundList |
| 179 | 179 | } |
| 180 | 180 | |
| 181 | - fun getAllCourseOverGround(): ArrayList<MessageData?> { | |
| 182 | - val res = arrayListOf<MessageData?>() | |
| 181 | + fun getAllCourseOverGround(): ArrayList<Double> { | |
| 182 | + val res = arrayListOf<Double>() | |
| 183 | 183 | messages.forEach { |
| 184 | - res.add(it.value.courseOverGround) | |
| 184 | + res.add(it.value.courseOverGround.value!!) | |
| 185 | 185 | } |
| 186 | 186 | |
| 187 | 187 | return res |
| 188 | 188 | } |
| 189 | 189 | |
| 190 | - fun getAllHeading(): ArrayList<MessageData?> { | |
| 191 | - val res = arrayListOf<MessageData?>() | |
| 190 | + fun getAllHeading(): ArrayList<Double> { | |
| 191 | + val res = arrayListOf<Double>() | |
| 192 | 192 | messages.forEach { |
| 193 | - res.add(it.value.heading) | |
| 193 | + res.add(it.value.heading.value!!) | |
| 194 | 194 | } |
| 195 | 195 | |
| 196 | 196 | return res |
| 197 | 197 | } |
| 198 | 198 | |
| 199 | - fun getAllVesselName(): ArrayList<MessageData?> { | |
| 200 | - val res = arrayListOf<MessageData?>() | |
| 199 | + fun getAllVesselName(): ArrayList<String> { | |
| 200 | + val res = arrayListOf<String>() | |
| 201 | 201 | messages.forEach { |
| 202 | - res.add(it.value.vesselName) | |
| 202 | + res.add(it.value.vesselName.value!!) | |
| 203 | 203 | } |
| 204 | 204 | return res |
| 205 | 205 | } |
| 206 | 206 | |
| 207 | - fun getAllIMO(): ArrayList<MessageData?> { | |
| 208 | - val res = arrayListOf<MessageData?>() | |
| 207 | + fun getAllIMO(): ArrayList<String> { | |
| 208 | + val res = arrayListOf<String>() | |
| 209 | 209 | messages.forEach { |
| 210 | - res.add(it.value.imo) | |
| 210 | + res.add(it.value.imo.value!!) | |
| 211 | 211 | } |
| 212 | 212 | return res |
| 213 | 213 | } |
| 214 | 214 | |
| 215 | - fun getAllCallSign(): ArrayList<MessageData?> { | |
| 216 | - val res = arrayListOf<MessageData?>() | |
| 215 | + fun getAllCallSign(): ArrayList<String> { | |
| 216 | + val res = arrayListOf<String>() | |
| 217 | 217 | messages.forEach { |
| 218 | - res.add(it.value.callSign) | |
| 218 | + res.add(it.value.callSign.value!!) | |
| 219 | 219 | } |
| 220 | 220 | return res |
| 221 | 221 | } |
| 222 | 222 | |
| 223 | - fun getAllVesselType(): ArrayList<MessageData?> { | |
| 224 | - val res = arrayListOf<MessageData?>() | |
| 223 | + fun getAllVesselType(): ArrayList<Double> { | |
| 224 | + val res = arrayListOf<Double>() | |
| 225 | 225 | messages.forEach { |
| 226 | - res.add(it.value.vesselType) | |
| 226 | + res.add(it.value.vesselType.value!!) | |
| 227 | 227 | } |
| 228 | 228 | return res |
| 229 | 229 | } |
| 230 | 230 | |
| 231 | - fun getAllStatus(): ArrayList<MessageData?> { | |
| 232 | - val res = arrayListOf<MessageData?>() | |
| 231 | + fun getAllStatus(): ArrayList<String> { | |
| 232 | + val res = arrayListOf<String>() | |
| 233 | 233 | messages.forEach { |
| 234 | - res.add(it.value.status) | |
| 234 | + res.add(it.value.status.value!!) | |
| 235 | 235 | } |
| 236 | 236 | return res |
| 237 | 237 | } |
| 238 | 238 | |
| 239 | - fun getAllLength(): ArrayList<MessageData?> { | |
| 240 | - val res = arrayListOf<MessageData?>() | |
| 239 | + fun getAllLength(): ArrayList<Double> { | |
| 240 | + val res = arrayListOf<Double>() | |
| 241 | 241 | messages.forEach { |
| 242 | - res.add(it.value.length) | |
| 242 | + res.add(it.value.length.value!!) | |
| 243 | 243 | } |
| 244 | 244 | return res |
| 245 | 245 | } |
| 246 | 246 | |
| 247 | - fun getAllWidth(): ArrayList<MessageData?> { | |
| 248 | - val res = arrayListOf<MessageData?>() | |
| 247 | + fun getAllWidth(): ArrayList<Double> { | |
| 248 | + val res = arrayListOf<Double>() | |
| 249 | 249 | messages.forEach { |
| 250 | - res.add(it.value.width) | |
| 250 | + res.add(it.value.width.value!!) | |
| 251 | 251 | } |
| 252 | 252 | return res |
| 253 | 253 | } |
| 254 | 254 | |
| 255 | - fun getAllDraft(): ArrayList<MessageData?> { | |
| 256 | - val res = arrayListOf<MessageData?>() | |
| 255 | + fun getAllDraft(): ArrayList<Double> { | |
| 256 | + val res = arrayListOf<Double>() | |
| 257 | 257 | messages.forEach { |
| 258 | - res.add(it.value.draft) | |
| 258 | + res.add(it.value.draft.value!!) | |
| 259 | 259 | } |
| 260 | 260 | return res |
| 261 | 261 | } |
| 262 | 262 | |
| 263 | - fun getAllCargo(): ArrayList<MessageData?> { | |
| 264 | - val res = arrayListOf<MessageData?>() | |
| 263 | + fun getAllCargo(): ArrayList<Double> { | |
| 264 | + val res = arrayListOf<Double>() | |
| 265 | 265 | messages.forEach { |
| 266 | - res.add(it.value.cargo) | |
| 266 | + res.add(it.value.cargo.value!!) | |
| 267 | 267 | } |
| 268 | 268 | return res |
| 269 | 269 | } |
src/main/kotlin/application/model/VesselGenerator.kt
View file @
df68a9f
| ... | ... | @@ -18,7 +18,7 @@ |
| 18 | 18 | if (!vessels.containsKey(message.mmsi.value)) { |
| 19 | 19 | vessels[message.mmsi.value] = Vessel(message.mmsi.value!!) |
| 20 | 20 | } |
| 21 | - val time = message.time.value.toEpochSecond(ZoneOffset.UTC) | |
| 21 | + val time = message.time.date.toEpochSecond(ZoneOffset.UTC) | |
| 22 | 22 | vessels[message.mmsi.value]?.messages?.set(time, message) |
| 23 | 23 | if (time > maxTime) { |
| 24 | 24 | maxTime = time |