From 1461808b1487378fab601df992af3aef7da30b29 Mon Sep 17 00:00:00 2001 From: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue, 19 Dec 2023 16:41:57 +0000 Subject: [PATCH] Logger form plotting Fixed logger form plotting in Viewer so that points can find their correct GPS position (based on time) --- src/loggerForms/FormDescription.java | 37 ++++++++++++++++++++ src/loggerForms/FormsDataUnit.java | 4 ++- src/loggerForms/FormsLogging.java | 2 +- src/loggerForms/LoggerForm.java | 50 ++++++++++++++-------------- 4 files changed, 66 insertions(+), 27 deletions(-) diff --git a/src/loggerForms/FormDescription.java b/src/loggerForms/FormDescription.java index b3d55501..95b204cb 100644 --- a/src/loggerForms/FormDescription.java +++ b/src/loggerForms/FormDescription.java @@ -38,6 +38,14 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; +import Array.streamerOrigin.GPSOriginMethod; +import Array.streamerOrigin.GPSOriginSystem; +import Array.streamerOrigin.HydrophoneOriginMethod; +import Array.streamerOrigin.HydrophoneOriginMethods; +import Array.streamerOrigin.OriginIterator; +import Array.streamerOrigin.StaticOriginSystem; +import GPS.GpsData; + import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; @@ -49,6 +57,7 @@ import pamScrollSystem.ScrollPaneAddon; import PamView.PamTabPanel; import PamView.panel.PamPanel; import PamView.symbol.StandardSymbolManager; +import PamguardMVC.PamDataBlock; import PamguardMVC.PamDataUnit; import PamController.PamControlledUnitSettings; import PamController.PamController; @@ -2021,4 +2030,32 @@ public class FormDescription implements Cloneable, Comparable { public void setNeedsUDFSave(boolean needsUDFSave) { this.needsUDFSave = needsUDFSave; } + + public GpsData getOriginLatLong(FormsDataUnit formsDataUnit) { + GpsData gps = getOrigin(GPSOriginSystem.class, formsDataUnit); + if (gps != null) { + return gps; + } + gps = getOrigin(StaticOriginSystem.class, formsDataUnit); + return gps; + } + + private GpsData getOrigin(Class originClass, FormsDataUnit formsDataUnit) { + HydrophoneOriginMethods origins = HydrophoneOriginMethods.getInstance(); + HydrophoneOriginMethod origin = origins.getMethod(GPSOriginMethod.class, null, null); + if (origin == null) { + return null; + } + OriginIterator gpsIter = origin.getGpsDataIterator(PamDataBlock.ITERATOR_END); + GpsData prev = null; + while (gpsIter.hasPrevious()) { + prev = gpsIter.previous(); + if (prev.getTimeInMillis() < formsDataUnit.getTimeMilliseconds()) { + break; + } + } + return prev; + } + + } diff --git a/src/loggerForms/FormsDataUnit.java b/src/loggerForms/FormsDataUnit.java index 963c6374..32ab905d 100644 --- a/src/loggerForms/FormsDataUnit.java +++ b/src/loggerForms/FormsDataUnit.java @@ -87,7 +87,9 @@ public class FormsDataUnit extends PamDataUnit { * we want to as a reference, etc. */ if (recalculate || formOriginLatLong == null) { - formOriginLatLong = loggerForm.getOriginLatLong(this); + if (formDescription != null) { + formOriginLatLong = formDescription.getOriginLatLong(this); + } } return formOriginLatLong; } diff --git a/src/loggerForms/FormsLogging.java b/src/loggerForms/FormsLogging.java index 5420f3a9..64e0d8e6 100644 --- a/src/loggerForms/FormsLogging.java +++ b/src/loggerForms/FormsLogging.java @@ -112,7 +112,7 @@ public class FormsLogging extends SQLLogging { // } // } - +// formDescription.getf FormsDataUnit formsDataUnit = new FormsDataUnit(null, timeMilliseconds, formDescription, formData); formsDataUnit.setDatabaseIndex(databaseIndex); diff --git a/src/loggerForms/LoggerForm.java b/src/loggerForms/LoggerForm.java index 11f562a7..58215478 100644 --- a/src/loggerForms/LoggerForm.java +++ b/src/loggerForms/LoggerForm.java @@ -104,7 +104,7 @@ public class LoggerForm{ private CounterControl counter; - private HydrophoneOriginMethods origins = HydrophoneOriginMethods.getInstance(); +// private HydrophoneOriginMethods origins = HydrophoneOriginMethods.getInstance(); /** * @return the hasCounter @@ -911,30 +911,30 @@ public class LoggerForm{ return saveButton; } - public GpsData getOriginLatLong(FormsDataUnit formsDataUnit) { - GpsData gps = getOrigin(GPSOriginSystem.class, formsDataUnit); - if (gps != null) { - return gps; - } - gps = getOrigin(StaticOriginSystem.class, formsDataUnit); - return gps; - } - - private GpsData getOrigin(Class originClass, FormsDataUnit formsDataUnit) { - HydrophoneOriginMethod origin = origins.getMethod(GPSOriginMethod.class, null, null); - if (origin == null) { - return null; - } - OriginIterator gpsIter = origin.getGpsDataIterator(PamDataBlock.ITERATOR_END); - GpsData prev = null; - while (gpsIter.hasPrevious()) { - prev = gpsIter.previous(); - if (prev.getTimeInMillis() < formsDataUnit.getTimeMilliseconds()) { - break; - } - } - return prev; - } +// public GpsData getOriginLatLong(FormsDataUnit formsDataUnit) { +// GpsData gps = getOrigin(GPSOriginSystem.class, formsDataUnit); +// if (gps != null) { +// return gps; +// } +// gps = getOrigin(StaticOriginSystem.class, formsDataUnit); +// return gps; +// } +// +// private GpsData getOrigin(Class originClass, FormsDataUnit formsDataUnit) { +// HydrophoneOriginMethod origin = origins.getMethod(GPSOriginMethod.class, null, null); +// if (origin == null) { +// return null; +// } +// OriginIterator gpsIter = origin.getGpsDataIterator(PamDataBlock.ITERATOR_END); +// GpsData prev = null; +// while (gpsIter.hasPrevious()) { +// prev = gpsIter.previous(); +// if (prev.getTimeInMillis() < formsDataUnit.getTimeMilliseconds()) { +// break; +// } +// } +// return prev; +// } // /**