r672 - in trunk: sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/application sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/bar/onBoard sammoa-ui-swing/src/main/resources/i18n
Author: sbavencoff Date: 2014-05-16 17:55:47 +0200 (Fri, 16 May 2014) New Revision: 672 Url: http://forge.codelutin.com/projects/sammoa/repository/revisions/672 Log: refs #4755 : show location and changed detection off line GPS Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/BaseGpsHandler.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/FakeGpsHandler.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsHandlerGpsylon.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/SammoaImportModelFactory.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/application/ExportApplicationService.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/bar/onBoard/OnBoardBar.css trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/bar/onBoard/OnBoardBar.jaxx trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/bar/onBoard/OnBoardBarModel.java trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/BaseGpsHandler.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/BaseGpsHandler.java 2014-05-16 09:50:33 UTC (rev 671) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/BaseGpsHandler.java 2014-05-16 15:55:47 UTC (rev 672) @@ -65,6 +65,8 @@ protected Set<GpsLocationListener> gpsLocationListeners; /** To test if connection to device is effective. */ + protected long lastEventTime; + protected DeviceState state; protected GpsConfig config; @@ -75,18 +77,17 @@ * Value to check the number of timer update failures before the DeviceState * becomes {@link DeviceState#ERROR} */ - protected int nbFailuresMax; + protected long maxLastEventDelays; public BaseGpsHandler(GpsConfig config) { this.config = config; this.state = DeviceState.UNAVAILABLE; this.deviceStateListeners = Sets.newHashSet(); this.gpsLocationListeners = Sets.newHashSet(); - this.nbFailuresMax = - (int) Math.ceil(config.getTimeout() / config.getCheckPeriod()); + this.maxLastEventDelays = config.getTimeout() * 1000; if (logger.isDebugEnabled()) { - logger.debug("GPS NbFailuresMax = " + nbFailuresMax); + logger.debug("GPS maxLastEventDelays = " + maxLastEventDelays); } } @@ -247,8 +248,6 @@ protected GeoPoint lastLocation; - protected int nbFailures; - @Override public void run() { @@ -256,23 +255,19 @@ boolean sameLocation = GeoPoints.equal(location, lastLocation); + long lastEventDelays = System.currentTimeMillis() - lastEventTime; + if (logger.isTraceEnabled()) { - logger.trace("sameLocation={} [{} :: {}]", new Object[]{sameLocation, location, lastLocation}); + logger.trace("sameLocation = {} [{} :: {}], lastEventDelays= {} ms", + new Object[]{sameLocation, location, lastLocation, lastEventDelays}); } - // reset nbFailures if location hasn't changed - if (sameLocation) { - nbFailures++; - } else { - nbFailures = 0; - } + boolean offLine = lastEventDelays > maxLastEventDelays; -// location.setCaptureDelay(nbFailures * config.getCheckPeriod()); - // Data is unavailable - if (GeoPoints.isCoordinatesEmpty(location) || sameLocation && nbFailures >= nbFailuresMax) { + if (GeoPoints.isCoordinatesEmpty(location) || offLine) { - DeviceTechnicalException error = onError(location); + DeviceTechnicalException error = onError(location, offLine); setState(DeviceState.ERROR, error); @@ -291,5 +286,5 @@ } }; - protected abstract DeviceTechnicalException onError(GeoPoint location); + protected abstract DeviceTechnicalException onError(GeoPoint location, boolean offline); } Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/FakeGpsHandler.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/FakeGpsHandler.java 2014-05-16 09:50:33 UTC (rev 671) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/FakeGpsHandler.java 2014-05-16 15:55:47 UTC (rev 672) @@ -107,7 +107,7 @@ } @Override - protected DeviceTechnicalException onError(GeoPoint location) { + protected DeviceTechnicalException onError(GeoPoint location, boolean offline) { return null; } Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsHandlerGpsylon.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsHandlerGpsylon.java 2014-05-16 09:50:33 UTC (rev 671) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsHandlerGpsylon.java 2014-05-16 15:55:47 UTC (rev 672) @@ -213,7 +213,7 @@ // } @Override - protected DeviceTechnicalException onError(GeoPoint location) { + protected DeviceTechnicalException onError(GeoPoint location, boolean offLine) { DeviceTechnicalException result = null; @@ -233,24 +233,22 @@ if (!opened) { start(); - } else { + } else if (offLine) { - if (GeoPoints.isCoordinatesEmpty(location)) { + result = new DeviceTechnicalException( + this, "GPS signal lost, please check the connection port"); - result = new DeviceTechnicalException( - this, "GPS is not ready, turn it on or wait for it to find satellites"); + } else if (GeoPoints.isCoordinatesEmpty(location)) { - } else { + result = new DeviceTechnicalException( + this, "GPS is not ready, turn it on or wait for it to find satellites"); - if (lastNumberSatellites == 0) { - result = new DeviceTechnicalException( - this, "GPS signal lost, there is no available satellite found"); + } else if (lastNumberSatellites == 0) { - } else { - result = new DeviceTechnicalException( - this, "GPS signal lost, please check the connection port"); - } - } + result = new DeviceTechnicalException( + this, "GPS signal lost, there is no available satellite found"); + + } return result; } @@ -335,6 +333,8 @@ } else if (GPSDataProcessor.NUMBER_SATELLITES.equals(property)) { lastNumberSatellites = (Integer) evt.getNewValue(); } + + lastEventTime = System.currentTimeMillis(); } }; } Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/SammoaImportModelFactory.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/SammoaImportModelFactory.java 2014-05-16 09:50:33 UTC (rev 671) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/SammoaImportModelFactory.java 2014-05-16 15:55:47 UTC (rev 672) @@ -96,7 +96,8 @@ model.newColumnForImportExport( propertyName, TopiaCsvCommons.DAY_TIME_SECOND_MILI_WITH_TIMESTAMP); - } else { + // TODO bavencoff replace with constante in TopiaEntityContextable + } else if (! propertyName.equals("topiaDaoSupplier")){ model.addDefaultColumn(propertyName, type); } } else { Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/application/ExportApplicationService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/application/ExportApplicationService.java 2014-05-16 09:50:33 UTC (rev 671) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/application/ExportApplicationService.java 2014-05-16 15:55:47 UTC (rev 672) @@ -106,7 +106,8 @@ model.newColumnForImportExport( propertyName, TopiaCsvCommons.DAY_TIME_SECOND_MILI_WITH_TIMESTAMP); - } else { + // TODO bavencoff replace with constante in TopiaEntityContextable + } else if (! propertyName.equals("topiaDaoSupplier")){ model.addDefaultColumn(propertyName, type); } } Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/bar/onBoard/OnBoardBar.css =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/bar/onBoard/OnBoardBar.css 2014-05-16 09:50:33 UTC (rev 671) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/bar/onBoard/OnBoardBar.css 2014-05-16 15:55:47 UTC (rev 672) @@ -84,7 +84,7 @@ text: "sammoa.statusBar.audio"; } -#indicatorPanel { +#indicatorPanel, #indicatorPanel2 { background: {model.getEffortPanelColor()}; } @@ -95,3 +95,11 @@ #lblSpeed { text: {model.getSpeed()}; } + +#lblLat { + text: {model.getLatitude()}; +} + +#lblLong { + text: {model.getLongitude()}; +} Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/bar/onBoard/OnBoardBar.jaxx =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/bar/onBoard/OnBoardBar.jaxx 2014-05-16 09:50:33 UTC (rev 671) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/bar/onBoard/OnBoardBar.jaxx 2014-05-16 15:55:47 UTC (rev 672) @@ -96,6 +96,13 @@ <cell fill='horizontal' weightx='0.2' anchor='center'> <JPanel id='indicatorPanel' layout='{new BoxLayout(indicatorPanel, BoxLayout.Y_AXIS)}'> + <JLabel id='lblLat'/> + <JLabel id='lblLong'/> + </JPanel> + </cell> + <cell fill='horizontal' weightx='0.2' anchor='center'> + <JPanel id='indicatorPanel2' + layout='{new BoxLayout(indicatorPanel2, BoxLayout.Y_AXIS)}'> <JLabel id='lblAlt'/> <JLabel id='lblSpeed'/> </JPanel> Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/bar/onBoard/OnBoardBarModel.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/bar/onBoard/OnBoardBarModel.java 2014-05-16 09:50:33 UTC (rev 671) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/bar/onBoard/OnBoardBarModel.java 2014-05-16 15:55:47 UTC (rev 672) @@ -38,18 +38,46 @@ private static final long serialVersionUID = 1L; + public static final String PROPERTY_LATITUDE = "latitude"; + + public static final String PROPERTY_LONGITUDE = "longitude"; + public static final String PROPERTY_ALT = "alt"; public static final String PROPERTY_SPEED = "speed"; public static final String PROPERTY_EFFORT_PANEL_COLOR = "effortPanelColor"; + protected float latitude; + + protected float longitude; + protected float alt; protected float speed; protected Color effortPanelColor; + public String getLatitude() { + return t("sammoa.statusbar.latitude", latitude); + } + + public void setLatitude(float latitude) { + float oldValue = this.latitude; + this.latitude = latitude; + firePropertyChange(PROPERTY_LATITUDE, oldValue, latitude); + } + + public String getLongitude() { + return t("sammoa.statusbar.longitude", longitude); + } + + public void setLongitude(float longitude) { + float oldValue = this.longitude; + this.longitude = longitude; + firePropertyChange(PROPERTY_LONGITUDE, oldValue, longitude); + } + public String getAlt() { return t("sammoa.statusbar.alt", alt); } @@ -84,6 +112,8 @@ public void locationChanged(GpsLocationEvent event) { GeoPoint newLocation = event.getNewValue(); if (newLocation != null) { + setLatitude((float) newLocation.getLatitude()); + setLongitude((float) newLocation.getLongitude()); setSpeed((float) newLocation.getSpeed()); setAlt((float) newLocation.getAltitude()); } Modified: trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties =================================================================== --- trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 2014-05-16 09:50:33 UTC (rev 671) +++ trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 2014-05-16 15:55:47 UTC (rev 672) @@ -257,7 +257,9 @@ sammoa.observations.routeTable.column.unexpectedRight.tip=Right sammoa.statusBar.audio=Audio sammoa.statusBar.gps=GPS -sammoa.statusbar.alt=Alt %1$s ft +sammoa.statusbar.alt=Alt %1$s m +sammoa.statusbar.latitude=Lat %1$s° +sammoa.statusbar.longitude=Lon %1$s° sammoa.statusbar.speed=Speed %1$s km/h sammoa.strate.decorator.all=All strates sammoa.strate.decorator.strate=Strate %1$s
participants (1)
-
sbavencoff@users.forge.codelutin.com