Sammoa-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
August 2012
- 4 participants
- 171 discussions
r350 - trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application
by fdesbois@users.forge.codelutin.com 03 Aug '12
by fdesbois@users.forge.codelutin.com 03 Aug '12
03 Aug '12
Author: fdesbois
Date: 2012-08-03 12:06:05 +0200 (Fri, 03 Aug 2012)
New Revision: 350
Url: http://forge.codelutin.com/repositories/revision/sammoa/350
Log:
fixes #1382 : allow update for csv import
Modified:
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java 2012-08-02 16:01:59 UTC (rev 349)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java 2012-08-03 10:06:05 UTC (rev 350)
@@ -192,9 +192,16 @@
} else {
- if (logger.isWarnEnabled()) {
- logger.warn(String.format("The species %1$s already " +
- "exists and will be ignored",
+ speciesExists.setCommonName(species.getCommonName());
+ speciesExists.setLatinName(species.getLatinName());
+ speciesExists.setGroupName(species.getGroupName());
+ speciesExists.setFamily(species.getFamily());
+ speciesExists.setType(species.getType());
+ dao.update(speciesExists);
+
+ if (logger.isInfoEnabled()) {
+ logger.info(String.format("The species %1$s already " +
+ "exists and is updated",
species.getCode()));
}
}
@@ -684,9 +691,16 @@
} else {
- if (logger.isWarnEnabled()) {
- logger.warn(String.format("The observer %1$s already " +
- "exists and will be ignored",
+ observerExists.setEmail(observer.getEmail());
+ observerExists.setFirstName(observer.getFirstName());
+ observerExists.setLastName(observer.getLastName());
+ observerExists.setOrganization(observer.getOrganization());
+ observerExists.setPilot(observer.isPilot());
+ observerDAO.update(observerExists);
+
+ if (logger.isInfoEnabled()) {
+ logger.info(String.format("The observer %1$s already " +
+ "exists and is updated",
observer.getInitials()));
}
}
1
0
Author: fdesbois
Date: 2012-08-02 18:01:59 +0200 (Thu, 02 Aug 2012)
New Revision: 349
Url: http://forge.codelutin.com/repositories/revision/sammoa/349
Log:
refs #1203 : define export SHP
Modified:
trunk/src/site/rst/import-export.rst
Modified: trunk/src/site/rst/import-export.rst
===================================================================
--- trunk/src/site/rst/import-export.rst 2012-08-02 15:29:09 UTC (rev 348)
+++ trunk/src/site/rst/import-export.rst 2012-08-02 16:01:59 UTC (rev 349)
@@ -195,83 +195,176 @@
Chaque parcours est une ligne d'effort du fichier DBF à exporter, et correspond à un point graphique sur le fichier SHP.
+Une colonne STATUS pour chaque LEG est nécessaire pour distinguer un BEGIN, d'un ADD, de plus une ligne avec un status END
+devra être créée à l'export. Une ligne END correspond à la fin d'un groupe de LEG et comprendra les même données que le
+dernier LEG avec les données GPS (GeoPoint) du prochain TRANSIT ou CIRCLE_BACK.
+
Voici les colonnes du fichier DBF :
-- ROUTE_TYPE : Type de parcours (LEG, TRANSIT, CIRCLE_BACK)
- route.routeType
- REGION : Code de la région
- route.flight.campaign.region.code
+
+ * route.flight.campaign.region.code
+
- CAMPAIGN : Code de la campagne
- route.flight.campaign.code
+
+ * route.flight.campaign.code
+
- SECTOR* : Numéro du secteur
- route.transectFlight.transect.strate.sector.sectorNumber
+
+ * route.transectFlight.transect.strate.sector.sectorNumber
+
- STRATE_TYPE* : Type de strate
- route.transectFlight.transect.strate.strateType
+
+ * route.transectFlight.transect.strate.strateType
+
- STRATE* : Code de la strate
- route.transectFlight.transect.strate.code
+
+ * route.transectFlight.transect.strate.code
+
- TRANSECT* : Code du transect
- route.transectFlight.transect.name
+
+ * route.transectFlight.transect.name
+
- PASSAGE* : Numéro de passage
- route.transectFlight.crossingNumber
+
+ * route.transectFlight.crossingNumber
+
- FLIGHT : Numéro de vol
- route.flight.flightNumber
+
+ * route.flight.flightNumber
+
- COMPUTER : Identifiant du système
- route.flight.systemId
+
+ * route.flight.systemId
+
+- ROUTE_TYPE : Type de parcours (LEG, TRANSIT, CIRCLE_BACK)
+
+ * route.routeType
+
- EFFORT_GROUP* : Identifiant du group d'effort
- "G" + BEGIN route.effortNumber + "-" + route.flight.flightNumber + "-" + route.flight.systemId
+
+ * "G" + BEGIN route.effortNumber + "-" + route.flight.flightNumber + "-" + route.flight.systemId
+ * si route.routeType = LEG et currentLegGroup = null => création currentLegGroup avec l'identifiant de l'effort
+
- EFFORT* : Identifiant de l'effort
- "L" + route.effortNumber + "-" + route.flight.flightNumber + "-" + route.flight.systemId
+
+ * "L" + route.effortNumber + "-" + route.flight.flightNumber + "-" + route.flight.systemId
+
+
+
+- STATUS* : Status (BEGIN, ADD, END)
+
+ * si route.routeType = TRANSIT ou CIRCLE_BACK => ajout d'une ligne END (ensuite currentLegGroup = null)
+ * si previousRoute.routeType = TRANSIT ou CIRCLE_BACK (ou currentLegGroup = null) => BEGIN
+ * si previousRoute.routeType = LEG et nextRoute.routeType = LEG (ou currentLegGroup != null) => ADD
+
- DATE : Date du parcours/segment
- route.beginTime
+
+ * route.beginTime
+
- HHMMSS : Heure du parcours/segment
- format(route.beginTime, "HHmmss")
+
+ * format(route.beginTime, "HHmmss")
+
- SEA_STATE : Etat de la mer
- route.seaState
+
+ * route.seaState
+
- SWELL : Houle
- route.swell
+
+ * route.swell
+
- TURBIDITY : Turbidité
- route.turbidity
+
+ * route.turbidity
+
- SKY_GLINT : Transparence
- route.skyGlint
+
+ * route.skyGlint
+
- GLARE_FROM : Eblouissement de
- route.glareFrom
+
+ * route.glareFrom
+
- GLARE_TO : Eblouissement à
- route.glareTo
+
+ * route.glareTo
+
- GLARE_SEVERITY : Intensité d'éblouissement
- route.glareSeverity
+
+ * route.glareSeverity
+
- GLARE_UNDER :
- route.glareUnder
+
+ * route.glareUnder
+
- CLOUD_COVER : Couverture nuageuse
- route.cloudCover
+
+ * route.cloudCover
+
- SUBJECTIVE : Détectabilité
- route.subjectiveConditions
+
+ * route.subjectiveConditions
+
- UNEXP_LEFT : Nombre d'observations à gauche (pour les exocet par exemple)
- route.unexpectedLeft
+
+ * route.unexpectedLeft
+
- UNEXP_RIGHT : Nombre d'observations à droite (pour les exocet par exemple)
- route.unexpectedRight
+
+ * route.unexpectedRight
+
- LEFT_REAR : Observateur à gauche
- route.observerPosition[FRONT_LEFT].observer.initials
+
+ * route.observerPosition[FRONT_LEFT].observer.initials
+
- RIGHT_REAR : Observateur à droite
- route.observerPosition[FRONT_RIGHT].observer.initials
+
+ * route.observerPosition[FRONT_RIGHT].observer.initials
+
- CENTER : Observateur au centre
- route.observerPosition[NAVIGATOR].observer.initials
+
+ * route.observerPosition[NAVIGATOR].observer.initials
+
+
+
+
+- CB_CAUSE** : Cause du circle-back
+
+ * "O" + route.circleBackCause.observationNumber + "-" + route.circleBackCause.flight.flightNumber + "-" + route.circleBackCause.flight.systemId
+
- LAT : Latitude du point GPS
- geoPoint.latitude
+
+ * geoPoint.latitude
+
- LON : Longitude du point GPS
- geoPoint.longitude
+
+ * geoPoint.longitude
+
- SPEED : Vitesse de l'avion à ce point GPS
- geoPoint.speed
+
+ * geoPoint.speed
+
- ALTITUDE : Altitude de l'avion à ce point GPS
- geoPoint.altitude
+
+ * geoPoint.altitude
+
- GPS_TIME : Heure d'enregistrement du point (rarement différente de celle du parcours)
- format(geoPoint.recordTime, "HHmmss")
+
+ * format(geoPoint.recordTime, "HHmmss")
+
- AIRCRAFT : Immatriculation de l'avion
- route.flight.planeImmatriculation
+
+ * route.flight.planeImmatriculation
+
- COMMENT : Commentaires
- route.comment
+ * route.comment
+
(*) uniquement pour un parcours de type LEG, sinon la cellule sera vide
+(**) uniquement pour un parcours de type CIRCLE_BACK, sinon la cellule sera vide
+
Observation
~~~~~~~~~~~
@@ -287,82 +380,173 @@
Voici les colonnes du fichier DBF :
- REGION : Code de la région
- observation.flight.campaign.region.code
+
+ * observation.flight.campaign.region.code
+
- CAMPAIGN : Code de la campagne
- observation.flight.campaign.code
+
+ * observation.flight.campaign.code
+
- SECTOR* : Numéro du secteur
- route.transectFlight.transect.strate.sector.sectorNumber
+
+ * route.transectFlight.transect.strate.sector.sectorNumber
+
- STRATE_TYPE* : Type de strate
- route.transectFlight.transect.strate.strateType
+
+ * route.transectFlight.transect.strate.strateType
+
- STRATE* : Code de la strate
- route.transectFlight.transect.strate.code
+
+ * route.transectFlight.transect.strate.code
+
- TRANSECT* : Code du transect
- route.transectFlight.transect.name
+
+ * route.transectFlight.transect.name
+
- PASSAGE* : Numéro de passage
- route.transectFlight.crossingNumber
+
+ * route.transectFlight.crossingNumber
+
- FLIGHT : Numéro de vol
- route.flight.flightNumber
+
+ * route.flight.flightNumber
+
- COMPUTER : Identifiant du système
- route.flight.systemId
+
+ * route.flight.systemId
+
+- ROUTE_TYPE : Type de parcours (LEG, TRANSIT, CIRCLE_BACK)
+
+ * route.routeType
+
- EFFORT_GROUP* : Identifiant du group d'effort
- "G" + BEGIN route.effortNumber + "-" + route.flight.flightNumber + "-" + route.flight.systemId
+
+ * "G" + BEGIN route.effortNumber + "-" + route.flight.flightNumber + "-" + route.flight.systemId
+ * si route.routeType = LEG et currentLegGroup = null => création currentLegGroup avec l'identifiant de l'effort
+
- EFFORT* : Identifiant de l'effort
- "L" + route.effortNumber + "-" + route.flight.flightNumber + "-" + route.flight.systemId
+
+ * "L" + route.effortNumber + "-" + route.flight.flightNumber + "-" + route.flight.systemId
+
- OBSERVATION : Identifiant de l'observation
- "O" + observation.observationNumber + "-" + observation.flight.flightNumber + "-" + observation.flight.systemId
+
+ * "O" + observation.observationNumber + "-" + observation.flight.flightNumber + "-" + observation.flight.systemId
+
- DATE : Date de l'observation
- observation.beginTime
+
+ * observation.beginTime
+
- HHMMSS : Heure de l'observation
- format(observation.beginTime, "HHmmss")
+
+ * format(observation.beginTime, "HHmmss")
+
- TAXON : Type d'espèce
- observation.species.type
+
+ * observation.species.type
+
- GROUP : Groupe de l'espèce
- observation.species.groupName
+
+ * observation.species.groupName
+
- FAMILY : Famille de l'espèce
- observation.species.family
+
+ * observation.species.family
+
- SPECIES : Code de l'espèce
- observation.species.code
+
+ * observation.species.code
+
- SPECIES_NAME : Nom commun de l'espèce
- observation.species.commonName
+
+ * observation.species.commonName
+
- SPECIES_LATIN : Nom latin de l'espèce
- observation.species.latinName
+
+ * observation.species.latinName
+
- POD_SIZE : Taille des groupes
- observation.podSize
+
+ * observation.podSize
+
- AGE :
- observation.age
+
+ * observation.age
+
- DEC_ANGLE : Angle ou Bande
- observation.decAngle
+
+ * observation.decAngle
+
- CUE : Détection, signal visuel
- observation.cue
+
+ * observation.cue
+
- BEHAVIOUR : Comportement
- observation.behaviour
+
+ * observation.behaviour
+
- SWIM_DIR : Direction de nage
- observation.swimDir
+
+ * observation.swimDir
+
- CALVES : Nombre de jeunes
- observation.calves
+
+ * observation.calves
+
- PHOTO : Des photos ont été prises
- observation.photo
+
+ * observation.photo
+
- OBSERVER : Initiales de l'observateur
- observation.observerPosition.observer.initials
+
+ * observation.observerPosition.observer.initials
+
- SIDE : Position de l'observateur (L : LEFT, R : RIGHT, C : CENTER)
- observation.observerPosition.observer.position
+
+ * observation.observerPosition.observer.position
+
+- STATUS : Status de l'observation (NEW, CIRCLE_BACK, RECAPTURE, NO_RECAPTURE)
+
+ * observation.observationStatus
+
+
+
+
+- CB_CAUSE** : Cause du circle-back
+
+ * "O" + route.circleBackCause.observationNumber + "-" + route.circleBackCause.flight.flightNumber + "-" + route.circleBackCause.flight.systemId
+
- LAT : Latitude du point GPS
- geoPoint.latitude
+
+ * geoPoint.latitude
+
- LON : Longitude du point GPS
- geoPoint.longitude
+
+ * geoPoint.longitude
+
- SPEED : Vitesse de l'avion à ce point GPS
- geoPoint.speed
+
+ * geoPoint.speed
+
- ALTITUDE : Altitude de l'avion à ce point GPS
- geoPoint.altitude
+
+ * geoPoint.altitude
+
- GPS_TIME : Heure d'enregistrement du point (rarement différente de celle du parcours)
- format(geoPoint.recordTime, "HHmmss")
+
+ * format(geoPoint.recordTime, "HHmmss")
+
- AIRCRAFT : Immatriculation de l'avion
- observation.flight.planeImmatriculation
+
+ * observation.flight.planeImmatriculation
+
- COMMENT : Commentaires
- observation.comment
+ * observation.comment
+
(*) uniquement pour un parcours de type LEG, sinon la cellule sera vide
+(**) uniquement pour un parcours de type CIRCLE_BACK, sinon la cellule sera vide
+
EFFORT, EFFORT_GROUP et OBSERVATION
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -389,33 +573,58 @@
- EFFORT = L{effortNumber}-{flightNumber}-{systemId} (ex: L001-286-A)
- EFFORT_GROUP = G{beginEffortNumber}-{flightNumber}-{systemId} (ex: G001-286-A)
-::
++-------------+------------+-----------------+------------+-----------+-------------+
+| ROUTE_TYPE | STATUS | EFFORT_GROUP | EFFORT | GPS data | CB_CAUSE |
++=============+============+=================+============+===========+=============+
+| LEG | BEGIN | G001-286-A | L001-286-A | $1 | |
++-------------+------------+-----------------+------------+-----------+-------------+
+| LEG | ADD | G001-286-A | L002-286-A | $2 | |
++-------------+------------+-----------------+------------+-----------+-------------+
+| LEG | END | G001-286-A | L002-286-A | $3 | |
++-------------+------------+-----------------+------------+-----------+-------------+
+| TRANSIT | | | | $3 | |
++-------------+------------+-----------------+------------+-----------+-------------+
+| LEG | BEGIN | G003-286-A | L003-286-A | $4 | |
++-------------+------------+-----------------+------------+-----------+-------------+
+| LEG | ADD | G003-286-A | L005-286-A | $5 | |
++-------------+------------+-----------------+------------+-----------+-------------+
+| LEG | END | G003-286-A | L005-286-A | $6 | |
++-------------+------------+-----------------+------------+-----------+-------------+
+| CIRCLE_BACK | | | | $6 | O0010-286-A |
++-------------+------------+-----------------+------------+-----------+-------------+
+| LEG | BEGIN | G006-286-A | L006-286-A | $7 | |
++-------------+------------+-----------------+------------+-----------+-------------+
+| LEG | END | G006-286-A | L006-286-A | $8 | |
++-------------+------------+-----------------+------------+-----------+-------------+
+| TRANSIT | | | | $8 | |
++-------------+------------+-----------------+------------+-----------+-------------+
- L001-286-A G001-286-A LEG (BEGIN)
- L002-286-A G001-286-A LEG (ADD)
- TRANSIT
- L003-286-A G003-286-A LEG (BEGIN)
- L005-286-A G003-286-A LEG (ADD)
- CIRCLE_BACK
- L006-286-A G005-286-A LEG (BEGIN)
- TRANSIT
-
Pour l'export des observations :
- OBSERVATION = O{observationNumber}-{flightNumber}-{systemId} (ex: O0001-286-A)
-::
++-------------+-----------------+------------+-------------+-------------+-------------+
+| ROUTE_TYPE | EFFORT_GROUP | EFFORT | OBSERVATION | STATUS | CB_CAUSE |
++=============+=================+============+=============+=============+=============+
+| LEG | G001-286-A | L001-286-A | O0001-286-A | NEW | |
++-------------+-----------------+------------+-------------+-------------+-------------+
+| LEG | G001-286-A | L001-286-A | O0002-286-A | NEW | |
++-------------+-----------------+------------+-------------+-------------+-------------+
+| LEG | G001-286-A | L002-286-A | O0003-286-A | NEW | |
++-------------+-----------------+------------+-------------+-------------+-------------+
+| LEG | G003-286-A | L003-286-A | O0006-286-A | NEW | |
++-------------+-----------------+------------+-------------+-------------+-------------+
+| LEG | G003-286-A | L003-286-A | O0008-286-A | NEW | |
++-------------+-----------------+------------+-------------+-------------+-------------+
+| LEG | G003-286-A | L005-286-A | O0010-286-A | CIRCLE_BACK | |
++-------------+-----------------+------------+-------------+-------------+-------------+
+| CIRCLE_BACK | | | O0011-286-A | RECAPTURE | O0010-286-A |
++-------------+-----------------+------------+-------------+-------------+-------------+
+| CIRCLE_BACK | | | O0012-286-A | NEW | O0010-286-A |
++-------------+-----------------+------------+-------------+-------------+-------------+
+| LEG | G006-286-A | L006-286-A | O0013-286-A | NEW | |
++-------------+-----------------+------------+-------------+-------------+-------------+
- O0001-286-A L001-286-A G001-286-A NEW
- O0002-286-A L001-286-A G001-286-A NEW
- O0003-286-A L002-286-A G001-286-A NEW
- O0006-286-A L003-286-A G003-286-A NEW
- O0008-286-A L003-286-A G003-286-A NEW
- O0010-286-A L004-286-A G003-286-A CIRCLE_BACK
- O0011-286-A RECAPTURE
- O0012-286-A NEW
- O0013-286-A L005-286-A G005-286-A NEW
-
Export SAMMOA
-------------
@@ -427,19 +636,19 @@
::
- campaign-${campaignCode}.sammoa (nom du fichier exporté par défaut, mais peut être configurable)
- ├── campaign.properties (meta données sur la campagne)
- ├── csv
- │ └── Données exportés depuis la base au format csv
- ├── flight
- │ ├── {flightTopiaId 1}
- │ │ ├── audio
- │ │ │ └── Fichiers audio enregistrés pendant le vol
- │ │ └── flight.properties (meta données sur le vol)
- │ └── {flightTopiaId 2}
- │ └── ...
- └── map
- └── Fichiers sources au format SHP
+ campaign-${campaignCode}.sammoa (nom du fichier exporté par défaut, mais peut être configurable)
+ ├── campaign.properties (meta données sur la campagne)
+ ├── csv
+ │ └── Données exportés depuis la base au format csv
+ ├── flight
+ │ ├── {flightTopiaId 1}
+ │ │ ├── audio
+ │ │ │ └── Fichiers audio enregistrés pendant le vol
+ │ │ └── flight.properties (meta données sur le vol)
+ │ └── {flightTopiaId 2}
+ │ └── ...
+ └── map
+ └── Fichiers sources au format SHP
.. - campaign-${campaignCode}.sammoa (ex: campaign-PACOMM-2012.sammoa)
.. - /campaign.properties : meta données sur la campagne
1
0
Author: fdesbois
Date: 2012-08-02 17:29:09 +0200 (Thu, 02 Aug 2012)
New Revision: 348
Url: http://forge.codelutin.com/repositories/revision/sammoa/348
Log:
#1203 : define export SHP
Modified:
trunk/src/site/rst/import-export.rst
Modified: trunk/src/site/rst/import-export.rst
===================================================================
--- trunk/src/site/rst/import-export.rst 2012-08-02 15:28:55 UTC (rev 347)
+++ trunk/src/site/rst/import-export.rst 2012-08-02 15:29:09 UTC (rev 348)
@@ -38,10 +38,6 @@
Ces fichiers sont importés depuis l'édition d'une campagne. Toutes les données
sont enregistrés en base sauf les fichiers shp.
-Note
- En version 0.3 les fichiers sont importés depuis la configuration et ne sont
- pas enregistrés en base de données.
-
Il y a deux import :
- strates : contient la liste des strates et leurs secteurs
@@ -109,11 +105,8 @@
~~~~~~~~~~~~~~~~~~
L'import des observateurs est possible depuis l'interface d'édition d'une
-campagne.
+campagne.
-Note
- En version 0.3 le fichier est importé depuis le menu "Data">"Import observer".
-
Le fichier doit être encodé en UTF-8. Le caractère de séparation est
le ";". Le fichier des observateurs doit contenir les en-têtes suivantes ::
@@ -131,11 +124,8 @@
~~~~~~~~~~~~~
L'import des observateurs est possible depuis l'interface d'édition d'une
-région.
+région.
-Note
- En version 0.3 le fichier est importé depuis le menu "Data">"Import observer".
-
Le fichier doit être encodé en UTF-8. Le caractère de séparation est
le ";". Le fichier des observateurs doit contenir les en-têtes suivantes ::
@@ -154,13 +144,278 @@
L'export se fera via une interface dédiée accessible depuis l'écran d'accueil.
-Deux types de SHP peuvent être exportés :
+Trois types de SHP peuvent être exportés :
-- Vol : conditions d'observations, détails des routes et coordonnées GPS du
+- Points GPS : ensemble des points GPS capturés associés au vol
+- Effort : conditions d'observations, détails des routes et coordonnées GPS du
tracée de l'avion.
- Observation : observations et coordonnées GPS des points sur lesquels ont
été effectuées ces observations.
+Points GPS
+~~~~~~~~~~
+
+On effectue un export des points GPS à partir d'une campagne sur une période (date de début, date de fin) encadrée par
+celle de la campagne
+
+On récupère ainsi une liste de vols avec leurs points GPS capturés
+
+Chaque point est une ligne du fichier DBF à exporter, et correspond à un point graphique sur le fichier SHP.
+
+Voici les colonnes du fichier DBF :
+
+- REGION : Code de la région
+ geoPoint.flight.campaign.region.code
+- CAMPAIGN : Code de la campagne
+ geoPoint.flight.campaign.code
+- FLIGHT : Numéro de vol
+ geoPoint.flight.flightNumber
+- COMPUTER : Identifiant du système
+ geoPoint.flight.systemId
+- DATE : Date d'enregistrement du poin
+ geoPoint.recordTime
+- HHMMSS : Heure d'enregistrement du point
+ format(geoPoint.recordTime, "HHmmss")
+- LAT : Latitude du point GPS
+ geoPoint.latitude
+- LON : Longitude du point GPS
+ geoPoint.longitude
+- SPEED : Vitesse de l'avion à ce point GPS
+ geoPoint.speed
+- ALTITUDE : Altitude de l'avion à ce point GPS
+ geoPoint.altitude
+
+Effort
+~~~~~~
+
+On effectue un export d'efforts à partir d'une campagne, d'une période (date de début, date de fin) encadrée par celle de la
+campagne et d'une sélection de strates. On peut également filtrer sur les types de parcours (LEG, TRANSIT, CIRCLE_BACK).
+
+On récupère ainsi une liste de vols et pour chacun des vols, sa liste de parcours sur les strates sélectionnées pour les LEG.
+
+Chaque parcours est une ligne d'effort du fichier DBF à exporter, et correspond à un point graphique sur le fichier SHP.
+
+Voici les colonnes du fichier DBF :
+
+- ROUTE_TYPE : Type de parcours (LEG, TRANSIT, CIRCLE_BACK)
+ route.routeType
+- REGION : Code de la région
+ route.flight.campaign.region.code
+- CAMPAIGN : Code de la campagne
+ route.flight.campaign.code
+- SECTOR* : Numéro du secteur
+ route.transectFlight.transect.strate.sector.sectorNumber
+- STRATE_TYPE* : Type de strate
+ route.transectFlight.transect.strate.strateType
+- STRATE* : Code de la strate
+ route.transectFlight.transect.strate.code
+- TRANSECT* : Code du transect
+ route.transectFlight.transect.name
+- PASSAGE* : Numéro de passage
+ route.transectFlight.crossingNumber
+- FLIGHT : Numéro de vol
+ route.flight.flightNumber
+- COMPUTER : Identifiant du système
+ route.flight.systemId
+- EFFORT_GROUP* : Identifiant du group d'effort
+ "G" + BEGIN route.effortNumber + "-" + route.flight.flightNumber + "-" + route.flight.systemId
+- EFFORT* : Identifiant de l'effort
+ "L" + route.effortNumber + "-" + route.flight.flightNumber + "-" + route.flight.systemId
+- DATE : Date du parcours/segment
+ route.beginTime
+- HHMMSS : Heure du parcours/segment
+ format(route.beginTime, "HHmmss")
+- SEA_STATE : Etat de la mer
+ route.seaState
+- SWELL : Houle
+ route.swell
+- TURBIDITY : Turbidité
+ route.turbidity
+- SKY_GLINT : Transparence
+ route.skyGlint
+- GLARE_FROM : Eblouissement de
+ route.glareFrom
+- GLARE_TO : Eblouissement à
+ route.glareTo
+- GLARE_SEVERITY : Intensité d'éblouissement
+ route.glareSeverity
+- GLARE_UNDER :
+ route.glareUnder
+- CLOUD_COVER : Couverture nuageuse
+ route.cloudCover
+- SUBJECTIVE : Détectabilité
+ route.subjectiveConditions
+- UNEXP_LEFT : Nombre d'observations à gauche (pour les exocet par exemple)
+ route.unexpectedLeft
+- UNEXP_RIGHT : Nombre d'observations à droite (pour les exocet par exemple)
+ route.unexpectedRight
+- LEFT_REAR : Observateur à gauche
+ route.observerPosition[FRONT_LEFT].observer.initials
+- RIGHT_REAR : Observateur à droite
+ route.observerPosition[FRONT_RIGHT].observer.initials
+- CENTER : Observateur au centre
+ route.observerPosition[NAVIGATOR].observer.initials
+- LAT : Latitude du point GPS
+ geoPoint.latitude
+- LON : Longitude du point GPS
+ geoPoint.longitude
+- SPEED : Vitesse de l'avion à ce point GPS
+ geoPoint.speed
+- ALTITUDE : Altitude de l'avion à ce point GPS
+ geoPoint.altitude
+- GPS_TIME : Heure d'enregistrement du point (rarement différente de celle du parcours)
+ format(geoPoint.recordTime, "HHmmss")
+- AIRCRAFT : Immatriculation de l'avion
+ route.flight.planeImmatriculation
+- COMMENT : Commentaires
+ route.comment
+
+(*) uniquement pour un parcours de type LEG, sinon la cellule sera vide
+
+Observation
+~~~~~~~~~~~
+
+On effectue un export des observations à partir d'une campagne, d'une période (date de début, date de fin) encadrée par celle de la
+campagne, d'une sélection de strates et d'une sélection d'espèces. On peut également filtrer sur les types de parcours
+(LEG, TRANSIT, CIRCLE_BACK).
+
+On récupère ainsi une liste de vols et pour chacun des vols, sa liste de parcours sur les strates sélectionnées pour les LEG.
+Grâce à la date, on retrouve les observations pour ces parcours.
+
+Chaque parcours est une ligne d'observation du fichier DBF à exporter, et correspond à un point graphique sur le fichier SHP.
+
+Voici les colonnes du fichier DBF :
+
+- REGION : Code de la région
+ observation.flight.campaign.region.code
+- CAMPAIGN : Code de la campagne
+ observation.flight.campaign.code
+- SECTOR* : Numéro du secteur
+ route.transectFlight.transect.strate.sector.sectorNumber
+- STRATE_TYPE* : Type de strate
+ route.transectFlight.transect.strate.strateType
+- STRATE* : Code de la strate
+ route.transectFlight.transect.strate.code
+- TRANSECT* : Code du transect
+ route.transectFlight.transect.name
+- PASSAGE* : Numéro de passage
+ route.transectFlight.crossingNumber
+- FLIGHT : Numéro de vol
+ route.flight.flightNumber
+- COMPUTER : Identifiant du système
+ route.flight.systemId
+- EFFORT_GROUP* : Identifiant du group d'effort
+ "G" + BEGIN route.effortNumber + "-" + route.flight.flightNumber + "-" + route.flight.systemId
+- EFFORT* : Identifiant de l'effort
+ "L" + route.effortNumber + "-" + route.flight.flightNumber + "-" + route.flight.systemId
+- OBSERVATION : Identifiant de l'observation
+ "O" + observation.observationNumber + "-" + observation.flight.flightNumber + "-" + observation.flight.systemId
+- DATE : Date de l'observation
+ observation.beginTime
+- HHMMSS : Heure de l'observation
+ format(observation.beginTime, "HHmmss")
+- TAXON : Type d'espèce
+ observation.species.type
+- GROUP : Groupe de l'espèce
+ observation.species.groupName
+- FAMILY : Famille de l'espèce
+ observation.species.family
+- SPECIES : Code de l'espèce
+ observation.species.code
+- SPECIES_NAME : Nom commun de l'espèce
+ observation.species.commonName
+- SPECIES_LATIN : Nom latin de l'espèce
+ observation.species.latinName
+- POD_SIZE : Taille des groupes
+ observation.podSize
+- AGE :
+ observation.age
+- DEC_ANGLE : Angle ou Bande
+ observation.decAngle
+- CUE : Détection, signal visuel
+ observation.cue
+- BEHAVIOUR : Comportement
+ observation.behaviour
+- SWIM_DIR : Direction de nage
+ observation.swimDir
+- CALVES : Nombre de jeunes
+ observation.calves
+- PHOTO : Des photos ont été prises
+ observation.photo
+- OBSERVER : Initiales de l'observateur
+ observation.observerPosition.observer.initials
+- SIDE : Position de l'observateur (L : LEFT, R : RIGHT, C : CENTER)
+ observation.observerPosition.observer.position
+- LAT : Latitude du point GPS
+ geoPoint.latitude
+- LON : Longitude du point GPS
+ geoPoint.longitude
+- SPEED : Vitesse de l'avion à ce point GPS
+ geoPoint.speed
+- ALTITUDE : Altitude de l'avion à ce point GPS
+ geoPoint.altitude
+- GPS_TIME : Heure d'enregistrement du point (rarement différente de celle du parcours)
+ format(geoPoint.recordTime, "HHmmss")
+- AIRCRAFT : Immatriculation de l'avion
+ observation.flight.planeImmatriculation
+- COMMENT : Commentaires
+ observation.comment
+
+(*) uniquement pour un parcours de type LEG, sinon la cellule sera vide
+
+EFFORT, EFFORT_GROUP et OBSERVATION
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+L'incrément du effortNumber et observationNumber se fait au sein d'un vol. Ainsi le premier LEG d'un vol aura toujours
+le numéro 1. Une suppression d'un LEG ou d'une observation ne décalera pas ce numéro. On pourra donc passer du LEG 1
+au LEG 4 par exemple (le 2 et 3 ayant été supprimés à la validation).
+
+Pour pouvoir identifier à l'export de façon unique l'identifiant de l'effort (colonne EFFORT) contiendra le vol associé.
+Par exemple : L001-286-A : LEG n°1 pour le vol n°286 sur le système A
+
+Même chose pour les observations (colonne OBSERVATION) : O0001-286-A : Observation n°1 pour le vol n°286 sur le sytème A
+
+Petite précision : pour garder une uniformité, on considère un numéro de LEG (effortNumber) sur 3 chiffres (ex: 001, 012, 123)
+et un numéro d'observation sur 4 chiffres (ex: 0001, 0085, 1230).
+
+L'ancienne colonne FLIGHT_NO des tableaux de résultats xls fournis sera renommé EFFORT_GROUP et correspondra à un
+ensemble de LEG sans interruption (TRANSIT ou CIRCLE_BACK). L'EFFORT_GROUPE commencera par la lettre G et gardera
+le même code que le premier effort du groupe.
+
+Exemples :
+
+Pour l'export des efforts :
+
+- EFFORT = L{effortNumber}-{flightNumber}-{systemId} (ex: L001-286-A)
+- EFFORT_GROUP = G{beginEffortNumber}-{flightNumber}-{systemId} (ex: G001-286-A)
+
+::
+
+ L001-286-A G001-286-A LEG (BEGIN)
+ L002-286-A G001-286-A LEG (ADD)
+ TRANSIT
+ L003-286-A G003-286-A LEG (BEGIN)
+ L005-286-A G003-286-A LEG (ADD)
+ CIRCLE_BACK
+ L006-286-A G005-286-A LEG (BEGIN)
+ TRANSIT
+
+Pour l'export des observations :
+
+- OBSERVATION = O{observationNumber}-{flightNumber}-{systemId} (ex: O0001-286-A)
+
+::
+
+ O0001-286-A L001-286-A G001-286-A NEW
+ O0002-286-A L001-286-A G001-286-A NEW
+ O0003-286-A L002-286-A G001-286-A NEW
+ O0006-286-A L003-286-A G003-286-A NEW
+ O0008-286-A L003-286-A G003-286-A NEW
+ O0010-286-A L004-286-A G003-286-A CIRCLE_BACK
+ O0011-286-A RECAPTURE
+ O0012-286-A NEW
+ O0013-286-A L005-286-A G005-286-A NEW
+
Export SAMMOA
-------------
@@ -172,24 +427,26 @@
::
- {campaignTopiaId 1}
- ├── campaign.properties (meta données sur la campagne)
- ├── audio
- │ ├── {flightTopiaId 1}
- │ │ └── Fichiers audio enregistrés pendant le vol
- │ └── {flightTopiaId 2}
- │ └── ...
- ├── csv
- │ └── Données exportés depuis la base au format csv
- └── map
- └── Fichiers sources au format SHP
- {campaignTopiaId 2}
- └── ...
+ campaign-${campaignCode}.sammoa (nom du fichier exporté par défaut, mais peut être configurable)
+ ├── campaign.properties (meta données sur la campagne)
+ ├── csv
+ │ └── Données exportés depuis la base au format csv
+ ├── flight
+ │ ├── {flightTopiaId 1}
+ │ │ ├── audio
+ │ │ │ └── Fichiers audio enregistrés pendant le vol
+ │ │ └── flight.properties (meta données sur le vol)
+ │ └── {flightTopiaId 2}
+ │ └── ...
+ └── map
+ └── Fichiers sources au format SHP
+.. - campaign-${campaignCode}.sammoa (ex: campaign-PACOMM-2012.sammoa)
.. - /campaign.properties : meta données sur la campagne
-.. - /{campaignTopiaId}/audio/{flightTopiaId}*/*.* : fichiers audios enregistrés
-.. - /{campaignTopiaId}/shp/*.* : fichiers sources SHP
-.. - /{campaignTopiaId}/csv/*.csv : données exportés depuis la base en CSV
+.. - /map/*.* : fichiers sources SHP
+.. - /csv/*.csv : données exportés depuis la base en CSV
+.. - /flight/{flightTopiaId}*/flight.properties : meta données sur le vol
+.. - /flight/{flightTopiaId}*/audio/*.* : fichiers audios enregistrés
L'export peut se faire sur deux niveaux :
1
0
02 Aug '12
Author: fdesbois
Date: 2012-08-02 17:28:55 +0200 (Thu, 02 Aug 2012)
New Revision: 347
Url: http://forge.codelutin.com/repositories/revision/sammoa/347
Log:
refs #1378 :
- clean some deprecated code
- move GpsHandler initialize in FlightController and allow init on runtime
- add all configuration for GPS in UI
Removed:
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/GraphicReference.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ReferentialModel.java
Modified:
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightController.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightControllerDefault.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaConfig.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/gps/BaseGpsHandler.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/gps/FakeGpsHandler.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/gps/GpsHandler.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/gps/GpsHandlerGpsylon.java
trunk/sammoa-application/src/main/resources/i18n/sammoa-application_en_GB.properties
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/BaseHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUIContext.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/ValidationTableHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/CircleBackAction.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/SammoaAction.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBarHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUIHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUIModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ObserverListSelectorModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanelHandler.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/FlightController.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightController.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightController.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -25,6 +25,7 @@
import fr.ulr.sammoa.application.audio.AudioRecorder;
import fr.ulr.sammoa.application.audio.AudioRecorderDefault;
+import fr.ulr.sammoa.application.gps.GpsConfig;
import fr.ulr.sammoa.application.gps.GpsHandler;
import fr.ulr.sammoa.persistence.GeoPoint;
import fr.ulr.sammoa.persistence.Observation;
@@ -64,6 +65,11 @@
GpsHandler getGpsHandler();
/**
+ * @param config GpsConfig to initialize the Gps
+ */
+ void initGpsHandler(GpsConfig config);
+
+ /**
* @return The current {@link Route}
*/
Route getCurrentRoute();
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightControllerDefault.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightControllerDefault.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightControllerDefault.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -28,9 +28,23 @@
import com.google.common.base.Throwables;
import com.google.common.collect.Sets;
import fr.ulr.sammoa.application.audio.AudioRecorder;
+import fr.ulr.sammoa.application.gps.GpsConfig;
import fr.ulr.sammoa.application.gps.GpsHandler;
import fr.ulr.sammoa.application.gps.GpsUpdateListener;
-import fr.ulr.sammoa.persistence.*;
+import fr.ulr.sammoa.persistence.Flight;
+import fr.ulr.sammoa.persistence.FlightDAO;
+import fr.ulr.sammoa.persistence.GeoPoint;
+import fr.ulr.sammoa.persistence.GeoPointDAO;
+import fr.ulr.sammoa.persistence.Observation;
+import fr.ulr.sammoa.persistence.ObservationDAO;
+import fr.ulr.sammoa.persistence.ObservationStatus;
+import fr.ulr.sammoa.persistence.ObserverPosition;
+import fr.ulr.sammoa.persistence.Position;
+import fr.ulr.sammoa.persistence.Route;
+import fr.ulr.sammoa.persistence.RouteType;
+import fr.ulr.sammoa.persistence.SammoaDAOHelper;
+import fr.ulr.sammoa.persistence.SammoaPersistence;
+import fr.ulr.sammoa.persistence.TransectFlight;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.TopiaRuntimeException;
@@ -40,6 +54,8 @@
import java.io.File;
import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
import java.util.Date;
import java.util.Set;
@@ -81,8 +97,10 @@
this.context = context;
this.flight = flight;
- this.gpsHandler = context.getGpsHandler();
- this.gpsHandler.addGpsUpdateListener(this);
+
+ GpsConfig gpsConfig = context.getConfig().getGpsConfig();
+ initGpsHandler(gpsConfig);
+
this.audioRecorder = context.getAudioRecorder();
this.persistence = context.getPersistence();
@@ -131,6 +149,52 @@
}
@Override
+ public void initGpsHandler(GpsConfig config) {
+
+ Set<GpsUpdateListener> updateListeners;
+ if (gpsHandler != null) {
+
+ // Remove all existing listeners and keep them for the new instance
+ updateListeners = Sets.newHashSet(gpsHandler.getGpsUpdateListeners());
+ for (GpsUpdateListener listener : updateListeners) {
+ gpsHandler.removeGpsUpdateListener(listener);
+ }
+
+ } else {
+ updateListeners = Sets.<GpsUpdateListener>newHashSet(this);
+ }
+
+ // Instanciate the GpsHandler
+ Class<? extends GpsHandler> gpsHandlerClass = config.getGpsHandlerClass();
+ try {
+
+ Constructor<? extends GpsHandler> constructor =
+ gpsHandlerClass.getConstructor(GpsConfig.class);
+
+ gpsHandler = constructor.newInstance(config);
+
+ } catch (InstantiationException e) {
+ throw Throwables.propagate(e);
+ } catch (IllegalAccessException e) {
+ throw Throwables.propagate(e);
+ } catch (NoSuchMethodException e) {
+ throw Throwables.propagate(e);
+ } catch (InvocationTargetException e) {
+ throw Throwables.propagate(e);
+ }
+
+ // Attach all updateListener
+ for (GpsUpdateListener listener : updateListeners) {
+ gpsHandler.addGpsUpdateListener(listener);
+ }
+
+ // Start the GpsHandler if Flight is running
+ if (isRunning()) {
+ gpsHandler.start();
+ }
+ }
+
+ @Override
public boolean isWaiting() {
return state == FlightState.WAITING;
}
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaConfig.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaConfig.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaConfig.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -26,6 +26,7 @@
import com.google.common.base.Preconditions;
import com.google.common.base.Throwables;
+import fr.ulr.sammoa.application.gps.GpsConfig;
import fr.ulr.sammoa.persistence.AutoSaveListener;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.nuiton.util.ApplicationConfig;
@@ -82,6 +83,8 @@
*/
protected ApplicationConfig applicationConfig;
+ protected GpsConfig gpsConfig;
+
public SammoaConfig(String file, String... args) {
applicationConfig = new ApplicationConfig();
@@ -98,6 +101,8 @@
"Could not parse configuration", e);
}
+ gpsConfig = new GpsConfig(applicationConfig);
+
// create directory if needed
getOrCreateDirectory(SammoaConfigOption.DATA_DIRECTORY);
@@ -108,6 +113,10 @@
return applicationConfig;
}
+ public GpsConfig getGpsConfig() {
+ return gpsConfig;
+ }
+
public void save() {
applicationConfig.saveForUser();
}
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -24,17 +24,11 @@
*/
package fr.ulr.sammoa.application;
-import com.google.common.base.Throwables;
import fr.ulr.sammoa.application.audio.AudioRecorder;
import fr.ulr.sammoa.application.audio.AudioRecorderDefault;
-import fr.ulr.sammoa.application.gps.GpsConfig;
-import fr.ulr.sammoa.application.gps.GpsHandler;
import fr.ulr.sammoa.application.map.ExportMapService;
import fr.ulr.sammoa.persistence.SammoaPersistence;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-
/**
* Created: 08/06/12
*
@@ -56,8 +50,6 @@
protected AudioRecorder audioRecorder;
- protected GpsHandler gpsHandler;
-
public SammoaContext(SammoaConfig config) {
this(config, new SammoaPersistence(
config.getApplicationConfig().getFlatOptions(),
@@ -85,32 +77,6 @@
return audioRecorder;
}
- public GpsHandler getGpsHandler() {
- if (gpsHandler == null) {
-
- GpsConfig gpsConfig = new GpsConfig(config.getApplicationConfig());
-
- Class<? extends GpsHandler> gpsHandlerClass = gpsConfig.getGpsHandlerClass();
- try {
-
- Constructor<? extends GpsHandler> constructor =
- gpsHandlerClass.getConstructor(GpsConfig.class);
-
- gpsHandler = constructor.newInstance(gpsConfig);
-
- } catch (InstantiationException e) {
- throw Throwables.propagate(e);
- } catch (IllegalAccessException e) {
- throw Throwables.propagate(e);
- } catch (NoSuchMethodException e) {
- throw Throwables.propagate(e);
- } catch (InvocationTargetException e) {
- throw Throwables.propagate(e);
- }
- }
- return gpsHandler;
- }
-
public FlightService getFlightService() {
if (flightService == null) {
flightService = new FlightService(this);
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/gps/BaseGpsHandler.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/gps/BaseGpsHandler.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/gps/BaseGpsHandler.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -48,7 +48,7 @@
*/
public abstract class BaseGpsHandler extends TimerTask implements GpsHandler {
- protected Set<GpsUpdateListener> locationUpdateListeners;
+ protected Set<GpsUpdateListener> gpsUpdateListeners;
/** To test if connection to device is effective. */
protected DeviceState gpsState = DeviceState.NO_DEVICE;
@@ -70,7 +70,7 @@
this.config = config;
int periodSeconds = config.getCheckPeriod();
int timeoutSeconds = config.getTimeout();
- locationUpdateListeners = Sets.newHashSet();
+ gpsUpdateListeners = Sets.newHashSet();
onInit();
@@ -98,15 +98,20 @@
@Override
public void addGpsUpdateListener(GpsUpdateListener gpsUpdateListener) {
- locationUpdateListeners.add(gpsUpdateListener);
+ gpsUpdateListeners.add(gpsUpdateListener);
}
@Override
public void removeGpsUpdateListener(GpsUpdateListener gpsUpdateListener) {
- locationUpdateListeners.remove(gpsUpdateListener);
+ gpsUpdateListeners.remove(gpsUpdateListener);
}
@Override
+ public Set<GpsUpdateListener> getGpsUpdateListeners() {
+ return gpsUpdateListeners;
+ }
+
+ @Override
public void run() {
GeoPoint currentLocation = getCurrentLocation();
@@ -130,7 +135,7 @@
setGpsState(DeviceState.RECORDING);
// Fire events for location change
- for (GpsUpdateListener listener : locationUpdateListeners) {
+ for (GpsUpdateListener listener : gpsUpdateListeners) {
listener.onLocationReceived(currentLocation);
}
}
@@ -148,7 +153,7 @@
protected void setGpsState(DeviceState gpsState) {
this.gpsState = gpsState;
- for (GpsUpdateListener listener : locationUpdateListeners) {
+ for (GpsUpdateListener listener : gpsUpdateListeners) {
listener.onStateChanged(gpsState);
}
}
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/gps/FakeGpsHandler.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/gps/FakeGpsHandler.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/gps/FakeGpsHandler.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -82,7 +82,7 @@
//
// if (!newState.equals(currentState)) {
// currentState = newState;
-// for (GpsUpdateListener locationUpdateListener : locationUpdateListeners) {
+// for (GpsUpdateListener locationUpdateListener : gpsUpdateListeners) {
// locationUpdateListener.onStateChanged(currentState);
// }
// }
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/gps/GpsHandler.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/gps/GpsHandler.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/gps/GpsHandler.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -26,6 +26,8 @@
import fr.ulr.sammoa.persistence.GeoPoint;
+import java.util.Set;
+
/**
* Représente l'accès à un périphérique GPS.
*/
@@ -67,4 +69,8 @@
*/
void removeGpsUpdateListener(GpsUpdateListener gpsUpdateListener);
+ /**
+ * @return all the listeners
+ */
+ Set<GpsUpdateListener> getGpsUpdateListeners();
}
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/gps/GpsHandlerGpsylon.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/gps/GpsHandlerGpsylon.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/gps/GpsHandlerGpsylon.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -52,7 +52,7 @@
private static final Logger logger = LoggerFactory.getLogger(GpsHandlerGpsylon.class);
-// protected Set<GpsUpdateListener> locationUpdateListeners;
+// protected Set<GpsUpdateListener> gpsUpdateListeners;
protected GPSDataProcessor gpsDataProcessor;
Modified: trunk/sammoa-application/src/main/resources/i18n/sammoa-application_en_GB.properties
===================================================================
--- trunk/sammoa-application/src/main/resources/i18n/sammoa-application_en_GB.properties 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-application/src/main/resources/i18n/sammoa-application_en_GB.properties 2012-08-02 15:28:55 UTC (rev 347)
@@ -8,11 +8,11 @@
sammoa.config.effort.number=
sammoa.config.flight.number=
sammoa.config.fly.mode=
-sammoa.config.gps.check.period=
-sammoa.config.gps.device=
-sammoa.config.gps.handler=
-sammoa.config.gps.speed=
-sammoa.config.gps.timeout=
+sammoa.config.gps.check.period=Time in seconds between each GPS capture
+sammoa.config.gps.device=GPS device port
+sammoa.config.gps.handler=GpsHandler class \: fr.ulr.sammoa.application.gps.GpsHandlerGpylon or fr.ulr.sammoa.application.gps.FakeGpsHandler
+sammoa.config.gps.speed=GPS speed for capture
+sammoa.config.gps.timeout=Time in seconds before GPS going to timeout (always the same data is received for this laps of time) and return error
sammoa.config.log.file=Path for application log file
sammoa.config.observation.number=
sammoa.config.strate.shape.file=
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/BaseHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/BaseHandler.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/BaseHandler.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -46,12 +46,12 @@
@Deprecated
public FlightController getFlightController() {
- return getUIContext().getFlightController();
+ return getUIContext().getFlightUIHandler().getFlightController();
}
@Deprecated
public FlightUIModel getFlightUIModel() {
- return getUIContext().getFlightUIModel();
+ return getUIContext().getFlightUIHandler().getModel();
}
@Deprecated
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -32,6 +32,7 @@
import fr.ulr.sammoa.persistence.Flight;
import fr.ulr.sammoa.ui.swing.campaign.CampaignUI;
import fr.ulr.sammoa.ui.swing.flight.FlightUI;
+import fr.ulr.sammoa.ui.swing.flight.FlightUIHandler;
import fr.ulr.sammoa.ui.swing.home.HomeUI;
import fr.ulr.sammoa.ui.swing.io.exportMap.ExportMapUI;
import jaxx.runtime.SwingUtil;
@@ -244,9 +245,6 @@
helper.addOption(SammoaConfig.SammoaConfigOption.OBSERVATION_NUMBER);
helper.addOption(SammoaConfig.SammoaConfigOption.BACKGROUND_SHAPE_FILE);
helper.setOptionCallBack("ui");
- // seconds
- helper.addOption(GpsConfig.GpsConfigOption.GPS_CHECK_PERIOD);
- helper.setOptionCallBack("ui");
// milliseconds
helper.addOption(SammoaConfig.SammoaConfigOption.AUTO_COMMIT_DELAY);
helper.setOptionCallBack("ui");
@@ -290,6 +288,34 @@
helper.addOption(SammoaConfig.SammoaConfigOption.KEY_CIRCLE_BACK);
helper.setOptionCallBack("actions");
+ // gps
+ helper.registerCallBack("gps",
+ n_("sammoa.action.reload.gps"),
+ SwingUtil.createActionIcon("config"),
+ new Runnable() {
+
+ @Override
+ public void run() {
+ FlightUIHandler flightUIHandler = context.getFlightUIHandler();
+ if (flightUIHandler != null) {
+ GpsConfig gpsConfig = context.getConfig().getGpsConfig();
+ flightUIHandler.getFlightController().initGpsHandler(gpsConfig);
+ }
+ }
+ });
+ helper.addCategory(n_("sammoa.config.category.gps"),
+ n_("sammoa.config.category.gps.description"));
+// helper.addOption(GpsConfig.GpsConfigOption.GPS_HANDLER);
+// helper.setOptionCallBack("gps");
+ helper.addOption(GpsConfig.GpsConfigOption.GPS_DEVICE);
+ helper.setOptionCallBack("gps");
+ helper.addOption(GpsConfig.GpsConfigOption.GPS_SPEED);
+ helper.setOptionCallBack("gps");
+ helper.addOption(GpsConfig.GpsConfigOption.GPS_CHECK_PERIOD);
+ helper.setOptionCallBack("gps");
+ helper.addOption(GpsConfig.GpsConfigOption.GPS_TIMEOUT);
+ helper.setOptionCallBack("gps");
+
// others
helper.addCategory(n_("sammoa.config.category.other"),
n_("sammoa.config.category.other.description"));
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUIContext.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUIContext.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUIContext.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -108,32 +108,6 @@
public void setSwingSession(SwingSession swingSession) {
this.swingSession = swingSession;
}
-
- /**
- * @return FlightUIModel
- * @deprecated need to be used from FlightUIHandler
- */
- @Deprecated
- public FlightUIModel getFlightUIModel() {
- return flightUIModel;
- }
-
- public void setFlightUIModel(FlightUIModel flightUIModel) {
- this.flightUIModel = flightUIModel;
- }
-
- /**
- * @return FlightController
- * @deprecated need to be used from FlightUIHandler
- */
- @Deprecated
- public FlightController getFlightController() {
- return flightController;
- }
-
- public void setFlightController(FlightController flightController) {
- this.flightController = flightController;
- }
public SammoaDecoratorProvider getDecoratorProvider() {
if (decoratorProvider == null) {
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/ValidationTableHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/ValidationTableHandler.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/ValidationTableHandler.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -31,14 +31,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.JComponent;
-import javax.swing.JDialog;
-import javax.swing.JRootPane;
-import javax.swing.KeyStroke;
-import java.awt.Component;
-import java.awt.Frame;
+import javax.swing.*;
+import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
@@ -62,7 +56,7 @@
}
public SwingValidatorMessageTableModel getValidationModel() {
- return SammoaUIContext.getUIContext().getFlightUIModel().getValidatorTableModel();
+ return SammoaUIContext.getUIContext().getFlightUIHandler().getModel().getValidatorTableModel();
}
public void init() {
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/CircleBackAction.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/CircleBackAction.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/CircleBackAction.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -29,8 +29,7 @@
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import org.nuiton.util.Resource;
-import javax.swing.ImageIcon;
-import javax.swing.JComponent;
+import javax.swing.*;
import java.awt.event.ActionEvent;
import java.util.List;
@@ -60,7 +59,7 @@
}
if (observation == null) {
- List<Observation> obsList = context.getFlightUIModel().getObservations();
+ List<Observation> obsList = getModel().getObservations();
observation = obsList.get(obsList.size());
}
@@ -70,7 +69,7 @@
@Override
protected boolean checkEnabled() {
boolean result = false;
- Route route = context.getFlightUIModel().getCurrentRoute();
+ Route route = getModel().getCurrentRoute();
if (route != null) {
result = route.getRouteType() != RouteType.TRANSIT;
}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/SammoaAction.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/SammoaAction.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/SammoaAction.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -29,9 +29,9 @@
import fr.ulr.sammoa.persistence.Route;
import fr.ulr.sammoa.persistence.TransectFlight;
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
+import fr.ulr.sammoa.ui.swing.flight.FlightUIModel;
-import javax.swing.AbstractAction;
-import javax.swing.Icon;
+import javax.swing.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
@@ -56,7 +56,7 @@
protected void init(SammoaUIContext context) {
this.context = context;
- this.context.getFlightUIModel().addPropertyChangeListener(this);
+ getModel().addPropertyChangeListener(this);
setEnabled(checkEnabled());
}
@@ -66,23 +66,27 @@
}
protected FlightController getFlightController() {
- return context.getFlightController();
+ return context.getFlightUIHandler().getFlightController();
}
+
+ protected FlightUIModel getModel() {
+ return context.getFlightUIHandler().getModel();
+ }
protected FlightState getFlightState() {
- return context.getFlightUIModel().getFlightState();
+ return getModel().getFlightState();
}
protected Flight getFlight() {
- return context.getFlightUIModel().getFlight();
+ return getModel().getFlight();
}
protected TransectFlight getNextTransect() {
- return context.getFlightUIModel().getNextTransect();
+ return getModel().getNextTransect();
}
protected Route getCurrentRoute() {
- return context.getFlightUIModel().getCurrentRoute();
+ return getModel().getCurrentRoute();
}
protected abstract boolean checkEnabled();
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBarHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBarHandler.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBarHandler.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -61,11 +61,9 @@
public void init() {
getFlightUIModel().addPropertyChangeListener(this);
- getContext().getGpsHandler().addGpsUpdateListener(getModel());
- if (getFlightController() != null) {
- getFlightController().getAudioRecorder().addAudioUpdateListener(getAudioLED());
- getFlightController().getGpsHandler().addGpsUpdateListener(getGpsLED());
- }
+ getFlightController().getAudioRecorder().addAudioUpdateListener(getAudioLED());
+ getFlightController().getGpsHandler().addGpsUpdateListener(getGpsLED());
+ getFlightController().getGpsHandler().addGpsUpdateListener(getModel());
}
@Override
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUIHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUIHandler.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUIHandler.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -24,7 +24,11 @@
*/
package fr.ulr.sammoa.ui.swing.flight;
-import com.bbn.openmap.*;
+import com.bbn.openmap.InformationDelegator;
+import com.bbn.openmap.LayerHandler;
+import com.bbn.openmap.MapBean;
+import com.bbn.openmap.MapHandler;
+import com.bbn.openmap.MouseDelegator;
import com.bbn.openmap.event.OMMouseMode;
import com.bbn.openmap.gui.EmbeddedNavPanel;
import com.bbn.openmap.gui.EmbeddedScaleDisplayPanel;
@@ -37,14 +41,45 @@
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
-import com.google.common.collect.*;
-import fr.ulr.sammoa.application.*;
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Ordering;
+import fr.ulr.sammoa.application.DeviceState;
+import fr.ulr.sammoa.application.FlightController;
+import fr.ulr.sammoa.application.FlightControllerDefault;
+import fr.ulr.sammoa.application.FlightControllerUpdateListener;
+import fr.ulr.sammoa.application.FlightService;
+import fr.ulr.sammoa.application.FlightState;
+import fr.ulr.sammoa.application.ReferentialService;
+import fr.ulr.sammoa.application.SammoaConfig;
+import fr.ulr.sammoa.application.SammoaContext;
import fr.ulr.sammoa.application.gps.GpsUpdateListener;
-import fr.ulr.sammoa.persistence.*;
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.Flight;
+import fr.ulr.sammoa.persistence.GeoPoint;
+import fr.ulr.sammoa.persistence.Observation;
+import fr.ulr.sammoa.persistence.Observer;
+import fr.ulr.sammoa.persistence.Route;
+import fr.ulr.sammoa.persistence.Strate;
+import fr.ulr.sammoa.persistence.Transect;
+import fr.ulr.sammoa.persistence.TransectFlight;
+import fr.ulr.sammoa.persistence.TransectFlights;
import fr.ulr.sammoa.ui.swing.SammoaDecoratorProvider;
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import fr.ulr.sammoa.ui.swing.SammoaUIHandler;
-import fr.ulr.sammoa.ui.swing.action.*;
+import fr.ulr.sammoa.ui.swing.action.AddAction;
+import fr.ulr.sammoa.ui.swing.action.BeginAction;
+import fr.ulr.sammoa.ui.swing.action.CenterObservationAction;
+import fr.ulr.sammoa.ui.swing.action.CircleBackAction;
+import fr.ulr.sammoa.ui.swing.action.EndAction;
+import fr.ulr.sammoa.ui.swing.action.LeftObservationAction;
+import fr.ulr.sammoa.ui.swing.action.NextAction;
+import fr.ulr.sammoa.ui.swing.action.NextTransectAction;
+import fr.ulr.sammoa.ui.swing.action.RightObservationAction;
+import fr.ulr.sammoa.ui.swing.action.StartAction;
+import fr.ulr.sammoa.ui.swing.action.StopAction;
import fr.ulr.sammoa.ui.swing.flight.layer.GpsTracingLayer;
import fr.ulr.sammoa.ui.swing.flight.layer.StrateLayer;
import fr.ulr.sammoa.ui.swing.flight.layer.TransectLayer;
@@ -85,6 +120,8 @@
protected SammoaUIContext context;
+ protected FlightController flightController;
+
protected FlightUI ui;
protected long uiStartTime;
@@ -106,6 +143,10 @@
return context.getAppContext();
}
+ public FlightController getFlightController() {
+ return flightController;
+ }
+
protected FlightService getFlightService() {
return context.getAppContext().getFlightService();
}
@@ -161,13 +202,12 @@
startTime = timeLog.log(startTime, "beforeInitUI", "entities are loaded");
- FlightController controller = new FlightControllerDefault(getAppContext(), flight);
- controller.addListener(this);
- context.setFlightController(controller);
+ flightController = new FlightControllerDefault(getAppContext(), flight);
+ flightController.addListener(this);
FlightUIModel model = new FlightUIModel();
- model.getReferential().setObservers(referentialObservers);
+ model.setObservers(referentialObservers);
model.setFlight(flight);
model.setFlightObserverForPositions(observers);
model.setObservations(observations);
@@ -177,12 +217,11 @@
model.setTransectFlights(prepareTransectFlights(model, flight.getTransectFlight()));
- model.setFlightState(controller.getState());
- model.setCurrentRoute(controller.getCurrentRoute());
- model.setNextTransect(controller.getNextTransect());
+ model.setFlightState(flightController.getState());
+ model.setCurrentRoute(flightController.getCurrentRoute());
+ model.setNextTransect(flightController.getNextTransect());
ui.setContextValue(model);
- context.setFlightUIModel(model);
timeLog.log(startTime, "beforeInitUI", "model is created");
@@ -319,7 +358,7 @@
initMapHandler();
- getAppContext().getGpsHandler().addGpsUpdateListener(
+ getFlightController().getGpsHandler().addGpsUpdateListener(
new GpsUpdateListener() {
@Override
@@ -342,7 +381,7 @@
@Override
public void onCloseUI() {
- context.getFlightController().close();
+ flightController.close();
getTransectUI().removeComponentListener(transectUIListener);
}
@@ -662,9 +701,6 @@
mapHandler.add(shapeLayer);
}
- // Ajout d'un layer pour afficher les graduations latitutes/longitutes
-// mapHandler.add(new GraticuleLayer());
-
// File strateFile = getConfig().getStrateShapeFile();
String campaignId = getModel().getFlight().getCampaign().getTopiaId();
File mapDirectory = new File(new File(new File(getConfig().getDataDirectory(), "campaign"), campaignId), "map");
@@ -689,7 +725,7 @@
// Ajout d'un layer pour représenter les points relevés par le GPS
GpsTracingLayer gpsTracingLayer = new GpsTracingLayer();
- getAppContext().getGpsHandler().addGpsUpdateListener(gpsTracingLayer);
+ getFlightController().getGpsHandler().addGpsUpdateListener(gpsTracingLayer);
mapHandler.add(gpsTracingLayer);
InformationDelegator informationDelegator = new InformationDelegator();
@@ -708,32 +744,6 @@
mapHandler.add(informationDelegator);
}
-//
-// /**
-// * @return les différentes propriétés de configuration du fond de carte
-// */
-// protected Properties getBackgroundLayerProperties() {
-// Properties result = new Properties();
-// result.put("prettyName", "Political Solid");
-// result.put(DrawingAttributes.linePaintProperty, "ff000000");
-// result.put(DrawingAttributes.fillPaintProperty, "ffbdde83");
-// String path = getConfig().getBackgroundShapeFile().getPath();
-//// String path = SammoaConfig.SammoaConfigOption.BACKGROUND_SHAPE_FILE.getDefaultValue();
-// result.put(ShapeLayer.shapeFileProperty, path);
-// return result;
-// }
-//
-// @Deprecated
-// protected void setCurrentTransect(Route route, boolean current) {
-// if (route != null) {
-// TransectFlight transectFlight = route.getTransectFlight();
-// if (transectFlight != null) {
-// GraphicReference<Transect> graphic =
-// getReferential().getTransect(transectFlight.getTransect());
-// graphic.setCurrent(current);
-// }
-// }
-// }
protected PropertyChangeListener transectFlightListener = new PropertyChangeListener() {
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUIModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUIModel.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUIModel.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -27,7 +27,12 @@
import com.google.common.collect.FluentIterable;
import com.google.common.collect.Lists;
import fr.ulr.sammoa.application.FlightState;
-import fr.ulr.sammoa.persistence.*;
+import fr.ulr.sammoa.persistence.Flight;
+import fr.ulr.sammoa.persistence.Observation;
+import fr.ulr.sammoa.persistence.Observations;
+import fr.ulr.sammoa.persistence.Observer;
+import fr.ulr.sammoa.persistence.Route;
+import fr.ulr.sammoa.persistence.TransectFlight;
import fr.ulr.sammoa.ui.swing.BaseModel;
import jaxx.runtime.validator.swing.SwingValidatorMessageTableModel;
@@ -46,7 +51,7 @@
public static final String PROPERTY_FLIGHT = "flight";
- public static final String PROPERTY_REFERENTIAL = "referential";
+ public static final String PROPERTY_OBSERVERS = "observers";
public static final String PROPERTY_CURRENT_ROUTE = "currentRoute";
@@ -80,7 +85,7 @@
protected Flight flight;
- protected ReferentialModel referential;
+ protected List<Observer> observers;
protected Route currentRoute;
@@ -145,17 +150,17 @@
firePropertyChange(PROPERTY_FLIGHT, oldValue, flight);
}
- public ReferentialModel getReferential() {
- if (referential == null) {
- referential = new ReferentialModel();
+ public List<Observer> getObservers() {
+ if (observers == null) {
+ observers = Lists.newArrayList();
}
- return referential;
+ return observers;
}
- public void setReferential(ReferentialModel referential) {
- ReferentialModel oldValue = getReferential();
- this.referential = referential;
- firePropertyChange(PROPERTY_REFERENTIAL, oldValue, referential);
+ public void setObservers(List<Observer> observers) {
+ List<Observer> oldValue = Lists.newArrayList(getObservers());
+ this.observers = observers;
+ firePropertyChange(PROPERTY_OBSERVERS, oldValue, observers);
}
public Route getCurrentRoute() {
Deleted: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/GraphicReference.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/GraphicReference.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/GraphicReference.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -1,121 +0,0 @@
-/*
- * #%L
- * SAMMOA :: UI Swing
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 UMS 3462, Code Lutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-package fr.ulr.sammoa.ui.swing.flight;
-
-import fr.ulr.sammoa.ui.swing.BaseModel;
-
-/**
- * Created: 12/06/12
- *
- * @author fdesbois <desbois(a)codelutin.com>
- */
-@Deprecated
-public class GraphicReference<E> extends BaseModel {
-
- private static final long serialVersionUID = 1L;
-
- public static final String PROPERTY_REFERENCE = "reference";
-
- public static final String PROPERTY_INDEX = "index";
-
- public static final String PROPERTY_SELECTED = "selected";
-
- public static final String PROPERTY_VISIBLE = "visible";
-
- public static final String PROPERTY_CURRENT = "current";
-
- protected E reference;
-
- protected int index;
-
- protected boolean selected;
-
- protected boolean visible;
-
- protected boolean current;
-
- public static <E> GraphicReference<E> newGraphicReference(E reference, int index) {
- return new GraphicReference<E>(reference, index);
- }
-
- public GraphicReference() {
- }
-
- protected GraphicReference(E reference, int index) {
- this.reference = reference;
- this.index = index;
- this.visible = true;
- }
-
- public E getReference() {
- return reference;
- }
-
- public void setReference(E reference) {
- E oldValue = getReference();
- this.reference = reference;
- firePropertyChange(PROPERTY_REFERENCE, oldValue, reference);
- }
-
- public int getIndex() {
- return index;
- }
-
- public void setIndex(int index) {
- int oldValue = getIndex();
- this.index = index;
- firePropertyChange(PROPERTY_INDEX, oldValue, index);
- }
-
- public boolean isSelected() {
- return selected;
- }
-
- public void setSelected(boolean selected) {
- boolean oldValue = isSelected();
- this.selected = selected;
- firePropertyChange(PROPERTY_SELECTED, oldValue, selected);
- }
-
- public boolean isVisible() {
- return visible;
- }
-
- public void setVisible(boolean visible) {
- boolean oldValue = isVisible();
- this.visible = visible;
- firePropertyChange(PROPERTY_VISIBLE, oldValue, visible);
- }
-
- public boolean isCurrent() {
- return current;
- }
-
- public void setCurrent(boolean current) {
- boolean oldValue = isCurrent();
- this.current = current;
- firePropertyChange(PROPERTY_CURRENT, oldValue, current);
- }
-}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ObserverListSelectorModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ObserverListSelectorModel.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ObserverListSelectorModel.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -52,16 +52,17 @@
Flight oldValue = getBean();
this.bean = bean;
if (bean != null) {
- flightUIModel.getReferential().addPropertyChangeListener(ReferentialModel.PROPERTY_OBSERVERS, new PropertyChangeListener() {
+ flightUIModel.addPropertyChangeListener(FlightUIModel.PROPERTY_OBSERVERS,
+ new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
- setValues(flightUIModel.getReferential().getObservers());
+ setValues(flightUIModel.getObservers());
setSelectedValues(Lists.newArrayList(getBean().getObserver()));
}
});
firePropertyChange(PROPERTY_BEAN, oldValue, bean);
- setValues(flightUIModel.getReferential().getObservers());
+ setValues(flightUIModel.getObservers());
setSelectedValues(bean.getObserver());
}
}
Deleted: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ReferentialModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ReferentialModel.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ReferentialModel.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -1,171 +0,0 @@
-/*
- * #%L
- * SAMMOA :: UI Swing
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 UMS 3462, Code Lutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-package fr.ulr.sammoa.ui.swing.flight;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import fr.ulr.sammoa.persistence.Observer;
-import fr.ulr.sammoa.persistence.Strate;
-import fr.ulr.sammoa.persistence.Strates;
-import fr.ulr.sammoa.persistence.Transect;
-import fr.ulr.sammoa.persistence.Transects;
-import fr.ulr.sammoa.ui.swing.BaseModel;
-
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-/**
- * Created: 12/06/12
- *
- * @author fdesbois <desbois(a)codelutin.com>
- */
-@Deprecated
-public class ReferentialModel extends BaseModel {
-
- private static final long serialVersionUID = 1L;
-
- public static final String PROPERTY_TRANSECTS = "transects";
-
- public static final String PROPERTY_TRANSECTS_SELECTION_EXISTS = "transectsSelectionExists";
-
- public static final String PROPERTY_STRATES = "strates";
-
- public static final String PROPERTY_OBSERVERS = "observers";
-
- protected List<GraphicReference<Transect>> transects;
-
- protected boolean transectsSelectionExists;
-
- protected List<GraphicReference<Strate>> strates;
-
- protected List<Observer> observers = Lists.newArrayList();
-
- public List<GraphicReference<Transect>> getTransects() {
- if (transects == null) {
- transects = Lists.newArrayList();
- }
- return transects;
- }
-
- public void sortTransectsByName() {
- Collections.sort(getTransects(), transectNameComparator());
- }
-
- public GraphicReference<Transect> getTransect(int index) {
- return getTransects().get(index);
- }
-
- public GraphicReference<Transect> getTransect(Transect transect) {
- for (GraphicReference<Transect> row : getTransects()) {
- if (row.getReference().equals(transect)) {
- return row;
- }
- }
- return null;
- }
-
- public void setTransects(List<GraphicReference<Transect>> transects) {
- List<GraphicReference<Transect>> oldValue = Lists.newArrayList(getTransects());
- this.transects = transects;
- firePropertyChange(PROPERTY_TRANSECTS, oldValue, transects);
- }
-
- public void addTransect(GraphicReference<Transect> transect) {
- List<GraphicReference<Transect>> oldValue = Lists.newArrayList(getTransects());
- getTransects().add(transect);
- fireIndexedPropertyChange(PROPERTY_TRANSECTS, getTransects().size(), oldValue, transects);
- }
-
- public boolean isTransectsSelectionExists() {
- return transectsSelectionExists;
- }
-
- public void setTransectsSelectionExists(boolean transectsSelectionExists) {
- boolean oldValue = isTransectsSelectionExists();
- this.transectsSelectionExists = transectsSelectionExists;
- firePropertyChange(PROPERTY_TRANSECTS_SELECTION_EXISTS, oldValue, transectsSelectionExists);
- }
-
- public List<GraphicReference<Strate>> getStrates() {
- if (strates == null) {
- strates = Lists.newArrayList();
- }
- return strates;
- }
-
- public Strate getStrate(String strateCode) {
- GraphicReference<Strate> graphicReference =
- Iterables.find(getStrates(), withCode(strateCode));
- return graphicReference == null ? null : graphicReference.getReference();
- }
-
- public void setStrates(List<GraphicReference<Strate>> strates) {
- List<GraphicReference<Strate>> oldValue = Lists.newArrayList(getStrates());
- this.strates = strates;
- firePropertyChange(PROPERTY_STRATES, oldValue, strates);
- }
-
- public void addStrate(GraphicReference<Strate> strate) {
- List<GraphicReference<Strate>> oldValue = Lists.newArrayList(getStrates());
- getStrates().add(strate);
- fireIndexedPropertyChange(PROPERTY_STRATES, getStrates().size(), oldValue, strates);
- }
-
- public List<Observer> getObservers() {
- return observers;
- }
-
- public void setObservers(List<Observer> observers) {
- List<Observer> oldValue = Lists.newArrayList(getObservers());
- this.observers = observers;
- firePropertyChange(PROPERTY_OBSERVERS, oldValue, observers);
- }
-
- public Observer getObserver(int index) {
- return observers.get(index);
- }
-
- public static Predicate<GraphicReference<Strate>> withCode(final String code) {
- return new Predicate<GraphicReference<Strate>>() {
-
- @Override
- public boolean apply(GraphicReference<Strate> input) {
- return Strates.withCode(code).apply(input.getReference());
- }
- };
- }
-
- public static Comparator<GraphicReference<Transect>> transectNameComparator() {
- return new Comparator<GraphicReference<Transect>>() {
-
- @Override
- public int compare(GraphicReference<Transect> o1, GraphicReference<Transect> o2) {
- return Transects.onName().compare(o1.getReference(), o2.getReference());
- }
- };
- }
-}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanelHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanelHandler.java 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanelHandler.java 2012-08-02 15:28:55 UTC (rev 347)
@@ -124,7 +124,7 @@
@Deprecated
public FlightUIModel getFlightUIModel() {
- return SammoaUIContext.getUIContext().getFlightUIModel();
+ return SammoaUIContext.getUIContext().getFlightUIHandler().getModel();
}
public void init() {
@@ -281,7 +281,7 @@
{
FlightController flightController =
- SammoaUIContext.getUIContext().getFlightController();
+ SammoaUIContext.getUIContext().getFlightUIHandler().getFlightController();
if (flightController != null) {
flightController.getGpsHandler().addGpsUpdateListener(this);
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 2012-08-02 13:18:27 UTC (rev 346)
+++ trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 2012-08-02 15:28:55 UTC (rev 347)
@@ -30,6 +30,7 @@
sammoa.action.play.tip=Play
sammoa.action.quitExportMaps=Quit
sammoa.action.reload.actions=Reload actions
+sammoa.action.reload.gps=Reload GPS
sammoa.action.reload.ui=Reload sammoa ui
sammoa.action.save=Save
sammoa.action.site=Site
@@ -40,6 +41,8 @@
sammoa.action.validation=Validation
sammoa.config.category.applications=Application
sammoa.config.category.applications.description=Application
+sammoa.config.category.gps=GPS
+sammoa.config.category.gps.description=GPS configuration
sammoa.config.category.other=Other
sammoa.config.category.other.description=Other
sammoa.config.category.shortcuts=Shortcuts
1
0
r346 - trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap
by tchemit@users.forge.codelutin.com 02 Aug '12
by tchemit@users.forge.codelutin.com 02 Aug '12
02 Aug '12
Author: tchemit
Date: 2012-08-02 15:18:27 +0200 (Thu, 02 Aug 2012)
New Revision: 346
Url: http://forge.codelutin.com/repositories/revision/sammoa/346
Log:
add GeoPoints method + remove file field from main export ui
Modified:
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.css
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.jaxx
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIModel.java
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.css
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.css 2012-08-02 13:17:22 UTC (rev 345)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.css 2012-08-02 13:18:27 UTC (rev 346)
@@ -71,19 +71,14 @@
#exportObservations {
text:"sammoa.action.exportObservationsMap";
}
+#exportGeoPoints {
+ text:"sammoa.action.exportGeoPointsMap";
+}
#exportDirectoryFileChooseAction {
actionIcon:"fileChooser";
}
-#exportEffortsFilenameLbl {
- text:"sammoa.label.exportEffortsFilename";
-}
-
#exportDirectoryLbl {
text:"sammoa.label.exportDirectory";
}
-
-#exportObservationsFilenameLbl {
- text:"sammoa.label.exportObservationsFilename";
-}
\ No newline at end of file
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.jaxx
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.jaxx 2012-08-02 13:17:22 UTC (rev 345)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.jaxx 2012-08-02 13:18:27 UTC (rev 346)
@@ -41,21 +41,6 @@
initializer='getContextValue(ExportMapUIHandler.class)'/>
<Table fill='both' constraints='BorderLayout.CENTER'>
- <!-- export directory-->
- <row>
- <cell anchor='west'>
- <JLabel id='exportDirectoryLbl'/>
- </cell>
- <cell weightx='1' fill="horizontal">
- <JTextField id='exportDirectory' text='{model.getExportDirectory().getAbsolutePath()}'
- onKeyReleased='getModel().setExportDirectory(new File(((JTextField)event.getSource()).getText()))'/>
- </cell>
- <cell anchor="east">
- <JButton id="exportDirectoryFileChooseAction"
- onActionPerformed="getHandler().chooseEffortDirectory()"/>
- </cell>
-
- </row>
<!-- Campaign filter -->
<row>
<cell anchor='west'>
@@ -98,22 +83,13 @@
</cell>
</row>
- <!-- export efforts filename-->
+ <!-- export efforts / geoPoints -->
<row>
- <cell anchor='west'>
- <JLabel id='exportEffortsFilenameLbl'/>
- </cell>
- <cell fill='horizontal' weightx='1.0'>
- <JTextField id='exportEffortsFilename' text='{model.getExportEffortsFilename()}'
- onKeyReleased='model.setExportEffortsFilename(((JTextField)event.getSource()).getText())'/>
- </cell>
- </row>
-
- <!-- export efforts -->
- <row>
<cell columns='5' fill="both">
- <JPanel layout='{new BorderLayout()}'>
- <JButton id='exportEfforts' constraints='BorderLayout.CENTER'
+ <JPanel layout='{new GridLayout(1,2,0,0)}'>
+ <JButton id='exportGeoPoints' constraints='BorderLayout.CENTER'
+ onActionPerformed='getHandler().exportGeoPoints()'/>
+ <JButton id='exportEfforts'
onActionPerformed='getHandler().exportEfforts()'/>
</JPanel>
</cell>
@@ -140,15 +116,29 @@
</cell>
</row>
<!-- export observations filename-->
- <row>
+ <!-- export directory-->
+ <!--row>
<cell anchor='west'>
+ <JLabel id='exportDirectoryLbl'/>
+ </cell>
+ <cell weightx='1' fill="horizontal">
+ <JTextField id='exportDirectory' text='{model.getExportDirectory().getAbsolutePath()}'
+ onKeyReleased='getModel().setExportDirectory(new File(((JTextField)event.getSource()).getText()))'/>
+ </cell>
+ <cell anchor="east">
+ <JButton id="exportDirectoryFileChooseAction"
+ onActionPerformed="getHandler().chooseEffortDirectory()"/>
+ </cell>
+ </row-->
+ <!--row>
+ <cell anchor='west'>
<JLabel id='exportObservationsFilenameLbl'/>
</cell>
<cell fill='horizontal' weightx='1.0'>
<JTextField id='exportObservationsFilename' text='{model.getExportObservationsFilename()}'
onKeyReleased='model.setExportObservationsFilename(((JTextField)event.getSource()).getText())'/>
</cell>
- </row>
+ </row-->
<!--export observations -->
<row>
<cell columns='5' fill="both">
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIHandler.java 2012-08-02 13:17:22 UTC (rev 345)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIHandler.java 2012-08-02 13:18:27 UTC (rev 346)
@@ -188,23 +188,63 @@
ExportMapUIModel model = ui.getModel();
- ExportMapModel dataModel =
- model.toModel(model.getExportEffortsFilename());
+ boolean canContinue = askExportFile(
+ _("sammoa.title.export.exportEfforts"),
+ ExportMapUIModel.PROPERTY_EXPORT_EFFORTS_FILENAME,
+ model);
- getExportMapService().exportEffortsMap(dataModel);
+ if (canContinue) {
+ ExportMapModel dataModel =
+ model.toModel(model.getExportEffortsFilename());
+
+ getExportMapService().exportEffortsMap(dataModel);
+ }
}
public void exportObservations() {
ExportMapUIModel model = ui.getModel();
- ExportMapModel dataModel =
- model.toModel(model.getExportObservationsFilename());
+ boolean canContinue = askExportFile(
+ _("sammoa.title.export.exportObservations"),
+ ExportMapUIModel.PROPERTY_EXPORT_OBSERVATIONS_FILENAME,
+ model);
- getExportMapService().exportObservationsMap(dataModel);
+ if (canContinue) {
+ ExportMapModel dataModel =
+ model.toModel(model.getExportObservationsFilename());
+
+ getExportMapService().exportObservationsMap(dataModel);
+ }
}
+ public void exportGeoPoints() {
+ ExportMapUIModel model = ui.getModel();
+
+ boolean canContinue = askExportFile(
+ _("sammoa.title.export.exportGeoPoints"),
+ ExportMapUIModel.PROPERTY_EXPORT_GEO_POINTS_FILENAME,
+ model);
+
+ if (canContinue) {
+ ExportMapModel dataModel =
+ model.toModel(model.getExportGeoPointsFilename());
+
+ getExportMapService().exportGeoPointsMap(dataModel);
+ }
+ }
+
+ protected boolean askExportFile(String effortTitle,
+ String exportType,
+ ExportMapUIModel model) {
+ boolean canContinue = false;
+
+ //TODO
+ return canContinue;
+ }
+
+
/**
* Remplit le modèle d'une liste graphique avec la liste des entités d'un
* type donné sur un service de persistance donné.
@@ -213,7 +253,7 @@
* @param incomingData les données à mettre dans la liste
* @since 0.5
*/
- public <E> void prepareList(BeanListHeader<E> list, List<E> incomingData) {
+ protected <E> void prepareList(BeanListHeader<E> list, List<E> incomingData) {
Class<E> beanType = list.getBeanType();
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIModel.java 2012-08-02 13:17:22 UTC (rev 345)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIModel.java 2012-08-02 13:18:27 UTC (rev 346)
@@ -53,6 +53,8 @@
public static final String PROPERTY_EXPORT_OBSERVATIONS_FILENAME = "exportObservationsFilename";
+ public static final String PROPERTY_EXPORT_GEO_POINTS_FILENAME = "exportGeoPointsFilename";
+
protected List<Campaign> campaigns;
protected Campaign selectedCampaign;
@@ -82,6 +84,7 @@
protected String exportEffortsFilename;
protected String exportObservationsFilename;
+ protected String exportGeoPointsFilename;
public File getExportDirectory() {
return exportDirectory;
@@ -113,6 +116,16 @@
firePropertyChange(PROPERTY_EXPORT_OBSERVATIONS_FILENAME, oldValue, exportObservationsFilename);
}
+ public String getExportGeoPointsFilename() {
+ return exportGeoPointsFilename;
+ }
+
+ public void setExportGeoPointsFilename(String exportGeoPointsFilename) {
+ String oldValue = this.exportGeoPointsFilename;
+ this.exportGeoPointsFilename = exportGeoPointsFilename;
+ firePropertyChange(PROPERTY_EXPORT_GEO_POINTS_FILENAME, oldValue, exportGeoPointsFilename);
+ }
+
public List<Campaign> getCampaigns() {
if (campaigns == null) {
campaigns = Lists.newArrayList();
1
0
r345 - trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map
by tchemit@users.forge.codelutin.com 02 Aug '12
by tchemit@users.forge.codelutin.com 02 Aug '12
02 Aug '12
Author: tchemit
Date: 2012-08-02 15:17:22 +0200 (Thu, 02 Aug 2012)
New Revision: 345
Url: http://forge.codelutin.com/repositories/revision/sammoa/345
Log:
add export GeoPoints method
Modified:
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapModel.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapService.java
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapModel.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapModel.java 2012-08-02 13:15:58 UTC (rev 344)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapModel.java 2012-08-02 13:17:22 UTC (rev 345)
@@ -60,6 +60,7 @@
protected List<StringRef> speciesTypes;
protected File exportDirectory;
+
protected String exportFilename;
public File getExportDirectory() {
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapService.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapService.java 2012-08-02 13:15:58 UTC (rev 344)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapService.java 2012-08-02 13:17:22 UTC (rev 345)
@@ -6,8 +6,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.File;
-
/**
* Export map service
*
@@ -38,4 +36,10 @@
public void exportObservationsMap(ExportMapModel dataModel) {
}
+
+ public void exportGeoPointsMap(ExportMapModel dataModel) {
+
+ }
+
+
}
1
0
r344 - in trunk: . sammoa-application/src/main/resources/i18n sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing sammoa-ui-swing/src/main/resources/i18n
by tchemit@users.forge.codelutin.com 02 Aug '12
by tchemit@users.forge.codelutin.com 02 Aug '12
02 Aug '12
Author: tchemit
Date: 2012-08-02 15:15:58 +0200 (Thu, 02 Aug 2012)
New Revision: 344
Url: http://forge.codelutin.com/repositories/revision/sammoa/344
Log:
use only gb i18n
Removed:
trunk/sammoa-application/src/main/resources/i18n/sammoa-application_fr_FR.properties
trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_fr_FR.properties
Modified:
trunk/pom.xml
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUI.css
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUI.jaxx
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java
trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-08-01 16:35:52 UTC (rev 343)
+++ trunk/pom.xml 2012-08-02 13:15:58 UTC (rev 344)
@@ -128,6 +128,9 @@
<slf4jVersion>1.6.6</slf4jVersion>
<logbackVersion>1.0.2</logbackVersion>
+ <i18n.bundles>en_GB</i18n.bundles>
+ <i18n.silent>false</i18n.silent>
+
<!--<googleSearchEnabled>true</googleSearchEnabled>-->
<!-- license header configuration -->
Deleted: trunk/sammoa-application/src/main/resources/i18n/sammoa-application_fr_FR.properties
===================================================================
--- trunk/sammoa-application/src/main/resources/i18n/sammoa-application_fr_FR.properties 2012-08-01 16:35:52 UTC (rev 343)
+++ trunk/sammoa-application/src/main/resources/i18n/sammoa-application_fr_FR.properties 2012-08-02 13:15:58 UTC (rev 344)
@@ -1,33 +0,0 @@
-sammoa.config.admin.email=E-mail de l'administrateur
-sammoa.config.application.site.url=Site Internet de l'application
-sammoa.config.application.version=Version de l'application
-sammoa.config.audio.directory=Répertoire où sont stockés les enregistrements audio
-sammoa.config.background.shape.file=
-sammoa.config.campaign.id=
-sammoa.config.data.directory=Répertoire principale où sont stockées les données. Vous pouvez utiliser ${data.directory} pour d'autres propriétés (ex\: ${data.directory}/audio).
-sammoa.config.effort.number=
-sammoa.config.flight.number=
-sammoa.config.fly.mode=
-sammoa.config.gps.check.period=
-sammoa.config.gps.device=
-sammoa.config.gps.handler=
-sammoa.config.gps.speed=
-sammoa.config.gps.timeout=
-sammoa.config.log.file=Chemin vers le fichier journal (log) de l'application
-sammoa.config.observation.number=
-sammoa.config.strate.shape.file=
-sammoa.config.system.id=
-sammoa.config.transect.shape.file=
-sammoa.config.ui.add=Ajouter
-sammoa.config.ui.begin=Démarrer
-sammoa.config.ui.centerObservation=Observation depuis la place du milieu
-sammoa.config.ui.circleBack=Faire un "circle-back"
-sammoa.config.ui.config=Chemin vers le fichier de configuration des fenêtres de l'application
-sammoa.config.ui.end=Fin
-sammoa.config.ui.leftObservation=Observation depuis la place de gauche
-sammoa.config.ui.locale=Langue
-sammoa.config.ui.next=Suivant
-sammoa.config.ui.rightObservation=Observation depuis la place de droite
-sammoa.config.ui.start=Démarrer
-sammoa.config.ui.stop=Arrêter
-sammoa.copyright.text=Copyright CRMM 2012
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUI.css
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUI.css 2012-08-01 16:35:52 UTC (rev 343)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUI.css 2012-08-02 13:15:58 UTC (rev 344)
@@ -32,18 +32,6 @@
mnemonic:F;
}
-#menuApplicationLanguageFR {
- text:"sammoa.action.locale.fr";
- toolTipText:"sammoa.action.locale.fr.tip";
- actionIcon:"i18n-fr";
-}
-
-#menuApplicationLanguageUK {
- text:"sammoa.action.locale.uk";
- toolTipText:"sammoa.action.locale.uk.tip";
- actionIcon:"i18n-uk";
-}
-
#menuFileConfiguration {
text:"sammoa.action.configuration";
toolTipText:"sammoa.action.configuration.tip";
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUI.jaxx
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUI.jaxx 2012-08-01 16:35:52 UTC (rev 343)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUI.jaxx 2012-08-02 13:15:58 UTC (rev 344)
@@ -62,11 +62,6 @@
<JMenuItem id='menuFileConfiguration'
onActionPerformed="getHandler().showConfig()"/>
<JSeparator/>
- <JMenuItem id='menuApplicationLanguageUK'
- onActionPerformed="getHandler().changeLanguage(Locale.UK)"/>
- <JMenuItem id='menuApplicationLanguageFR'
- onActionPerformed="getHandler().changeLanguage(Locale.FRANCE)"/>
- <JSeparator/>
<JMenuItem id='exit'
onActionPerformed='getHandler().closeSammoa()'/>
</JMenu>
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java 2012-08-01 16:35:52 UTC (rev 343)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java 2012-08-02 13:15:58 UTC (rev 344)
@@ -49,7 +49,6 @@
import java.awt.Desktop;
import java.io.File;
import java.net.URL;
-import java.util.Locale;
import static org.nuiton.i18n.I18n._;
import static org.nuiton.i18n.I18n.n_;
@@ -214,16 +213,6 @@
ui.setVisible(true);
}
- public void changeLanguage(Locale locale) {
-
- // sauvegarde de la nouvelle locale
- getConfig().setLocale(locale);
- getConfig().save();
-
- // reload sammoa
- reloadSammoa();
- }
-
public void showConfig() {
SammoaConfig config = context.getConfig();
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 2012-08-01 16:35:52 UTC (rev 343)
+++ trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 2012-08-02 13:15:58 UTC (rev 344)
@@ -5,7 +5,7 @@
sammoa.action.about.tip=About
sammoa.action.break.tip=Break
sammoa.action.cancel=Cancel
-sammoa.action.choose.export.directory=
+sammoa.action.choose.export.directory=Accept
sammoa.action.circleback.tip=Circle Back
sammoa.action.close=Close
sammoa.action.configuration=Configuration
@@ -14,6 +14,7 @@
sammoa.action.edit=Edit
sammoa.action.export=Export
sammoa.action.exportEffortsMap=Export Efforts
+sammoa.action.exportGeoPointsMap=Export GPS Points
sammoa.action.exportMap=Export Maps
sammoa.action.exportObservationsMap=Export Observations
sammoa.action.home=Home
@@ -85,6 +86,7 @@
sammoa.label.campaign.transect=Transects\:
sammoa.label.exportDirectory=Export directory
sammoa.label.exportEffortsFilename=Export filename (Efforts)
+sammoa.label.exportGeoPointsFilename=Export filename (GeoPoints)
sammoa.label.exportObservationsFilename=Export filename (Observations)
sammoa.label.flight=Flight\:
sammoa.label.flight.beginDate=Start
@@ -199,8 +201,11 @@
sammoa.timePattern=HH\:mm\:ss
sammoa.title.about=About Sammoa
sammoa.title.campaign=Campaign
-sammoa.title.choose.export.directory=
-sammoa.title.exportshape=
+sammoa.title.choose.export.directory=Choose directory where to export maps
+sammoa.title.export.exportEfforts=
+sammoa.title.export.exportGeoPoints=
+sammoa.title.export.exportObservations=
+sammoa.title.exportshape=Export Maps
sammoa.title.flight=System %1$s - Campaign %2$s - Region %3$s - Flight n°%4$d
sammoa.title.home=Home
sammoa.title.validation=
Deleted: trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_fr_FR.properties
===================================================================
--- trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_fr_FR.properties 2012-08-01 16:35:52 UTC (rev 343)
+++ trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_fr_FR.properties 2012-08-02 13:15:58 UTC (rev 344)
@@ -1,236 +0,0 @@
-SAMMOA=Sammoa
-csv.import.error.unableToReadField=Unable to read value of column '%s' at line %s
-sammoa.about.message=About Sammoa
-sammoa.action.about=About
-sammoa.action.about.tip=About
-sammoa.action.break.tip=Break
-sammoa.action.cancel=Cancel
-sammoa.action.choose.export.directory=
-sammoa.action.circleback.tip=Circle Back
-sammoa.action.close=Close
-sammoa.action.configuration=Configuration
-sammoa.action.configuration.tip=Configuration
-sammoa.action.create=Create
-sammoa.action.edit=Edit
-sammoa.action.export=Export
-sammoa.action.exportEffortsMap=Export des efforts
-sammoa.action.exportMap=Export Cartes
-sammoa.action.exportObservationsMap=Export des Observations
-sammoa.action.home=Home
-sammoa.action.home.tip=Home
-sammoa.action.import=Import
-sammoa.action.locale.fr=fr
-sammoa.action.locale.fr.tip=French
-sammoa.action.locale.uk=en
-sammoa.action.locale.uk.tip=English
-sammoa.action.new=New
-sammoa.action.next.tip=Next
-sammoa.action.onBoard=On Board
-sammoa.action.play.tip=Play
-sammoa.action.quitExportMaps=Quitter
-sammoa.action.reload.actions=Reload actions
-sammoa.action.reload.ui=Reload sammoa ui
-sammoa.action.save=Save
-sammoa.action.site=Site
-sammoa.action.site.tip=Display project site
-sammoa.action.startFlight.tip=Start the flight
-sammoa.action.stop.tip=Stop
-sammoa.action.stopFlight.tip=Stop the flight
-sammoa.action.validation=Validation
-sammoa.config.category.applications=Application
-sammoa.config.category.applications.description=Application
-sammoa.config.category.other=Other
-sammoa.config.category.other.description=Other
-sammoa.config.category.shortcuts=Shortcuts
-sammoa.config.category.shortcuts.description=List of all the shortcuts
-sammoa.confirmDialog.campaignNotLoaded.message=
-sammoa.confirmDialog.campaignNotLoaded.title=
-sammoa.confirmDialog.flightInProgress.message.exit=A flight is in progress, are you sure you want to quit ?
-sammoa.confirmDialog.flightInProgress.message.showHome=A flight is in progress, are you sure you want to go back to the home screen ?
-sammoa.confirmDialog.flightInProgress.title=Flight in progress
-sammoa.copyright.text=Version %1$s UMS 3462, Codelutin @ 2012
-sammoa.datePattern=dd/MM/yyyy
-sammoa.dateTimePattern=dd/MM/yyyy HH\:mm\:ss
-sammoa.dialog.title.observerFile=Choose a csv file for observers
-sammoa.dialog.title.region=Region
-sammoa.dialog.title.speciesFile=Choose a csv file for species
-sammoa.dialog.title.strateFile=Choose a shape file for strates
-sammoa.dialog.title.transect=New Transect
-sammoa.dialog.title.transectFile=Choose a shape file for transects
-sammoa.flight.decorator.flight=Flight %1$d
-sammoa.flight.decorator.newFlight=New flight
-sammoa.flight.decorator.notEnded=not ended
-sammoa.flight.decorator.notStarted=not started
-sammoa.flightDialog.transecLbl=Transects / tracks\:
-sammoa.flightPanel.table.column.action=Next
-sammoa.flightPanel.table.column.crossingNumber=Crossing
-sammoa.flightPanel.table.column.deleted=Del
-sammoa.flightPanel.table.column.index=N°
-sammoa.flightPanel.table.column.name=Name
-sammoa.flightPanel.table.column.nbTimes=Nb Times
-sammoa.flightPanel.table.column.position.co-navigator=Co-Nav
-sammoa.flightPanel.table.column.position.left=Left
-sammoa.flightPanel.table.column.position.navigator=Nav
-sammoa.flightPanel.table.column.position.right=Right
-sammoa.label.campaign=Campaign\:
-sammoa.label.campaign.beginDate=Begin\:
-sammoa.label.campaign.code=Code\:
-sammoa.label.campaign.endDate=End\:
-sammoa.label.campaign.name=Name\:
-sammoa.label.campaign.observer=Observers\:
-sammoa.label.campaign.period=Period\:
-sammoa.label.campaign.period.filter=Period filter
-sammoa.label.campaign.region=Region\:
-sammoa.label.campaign.strate=Strates\:
-sammoa.label.campaign.transect=Transects\:
-sammoa.label.exportDirectory=Répertoire d'export
-sammoa.label.exportEffortsFilename=Nom du fichier (Effort)
-sammoa.label.exportObservationsFilename=Nom du fichier (Observations)
-sammoa.label.flight=Flight\:
-sammoa.label.flight.beginDate=Start
-sammoa.label.flight.comment=Comment\:
-sammoa.label.flight.endDate=Stop
-sammoa.label.flight.immatriculation=Plane imma.\:
-sammoa.label.flight.period=Time\:
-sammoa.label.flight.platformType=Type\:
-sammoa.label.observers=Observers\:
-sammoa.label.region.code=Code\:
-sammoa.label.region.name=Name\:
-sammoa.label.region.species=Species\:
-sammoa.label.routeTypeFilter=Route type filter
-sammoa.label.speciesFilter=Species filter
-sammoa.label.speciesTypeFilter=Species type filter
-sammoa.label.strateFilter=Strate filter
-sammoa.label.systemId=System Id\:
-sammoa.label.transect.name=Name\:
-sammoa.label.transect.strate=Strate\:
-sammoa.map.mapFollow=Follow plane
-sammoa.menu.exit=Exit
-sammoa.menu.file=File
-sammoa.menu.file.tip=File
-sammoa.menu.help=Help
-sammoa.menu.help.tip=Help
-sammoa.menu.showLogs=Display logs
-sammoa.menu.showLogs.tip=Display logs
-sammoa.message.goto.site=Opening %1$s on navigator
-sammoa.messageDialog.observers.import.success=%1$d observers are successfully imported
-sammoa.messageDialog.species.import.success=%1$d species are successfully imported
-sammoa.messageDialog.strates.import.success=%1$d strates are successfully imported
-sammoa.messageDialog.transects.import.success=%1$d transects are successfully imported
-sammoa.observation.observations.center=Center
-sammoa.observation.observations.left=Left
-sammoa.observation.observations.right=Right
-sammoa.observation.title=<html><b>Observation</b></html>
-sammoa.observationCondition.title=<html><b>Conditions</b></html>
-sammoa.observations.observationTable.column.age=Age
-sammoa.observations.observationTable.column.age.tip=Age
-sammoa.observations.observationTable.column.behaviour=Behaviour
-sammoa.observations.observationTable.column.behaviour.tip=Behaviour
-sammoa.observations.observationTable.column.calves=Calves
-sammoa.observations.observationTable.column.calves.tip=Calves
-sammoa.observations.observationTable.column.circleback=Circle back
-sammoa.observations.observationTable.column.circleback.tip=Circle back
-sammoa.observations.observationTable.column.comment=Comments
-sammoa.observations.observationTable.column.comment.tip=Comments
-sammoa.observations.observationTable.column.cue=Cue
-sammoa.observations.observationTable.column.cue.tip=Cue
-sammoa.observations.observationTable.column.decAngle=Angle
-sammoa.observations.observationTable.column.decAngle.tip=Angle
-sammoa.observations.observationTable.column.deleted=Del
-sammoa.observations.observationTable.column.deleted.tip=Del
-sammoa.observations.observationTable.column.observationNumber=N°
-sammoa.observations.observationTable.column.observationNumber.tip=N°
-sammoa.observations.observationTable.column.observationStatus=Status
-sammoa.observations.observationTable.column.observationStatus.tip=Status
-sammoa.observations.observationTable.column.observationTime=Time
-sammoa.observations.observationTable.column.observationTime.tip=Time
-sammoa.observations.observationTable.column.observer=Obs
-sammoa.observations.observationTable.column.observer.tip=Obs
-sammoa.observations.observationTable.column.photo=Photo
-sammoa.observations.observationTable.column.photo.tip=Photo
-sammoa.observations.observationTable.column.podSize=Pod size
-sammoa.observations.observationTable.column.podSize.tip=Pod size
-sammoa.observations.observationTable.column.species=Species
-sammoa.observations.observationTable.column.species.tip=Species
-sammoa.observations.observationTable.column.swimDir=Swim dir
-sammoa.observations.observationTable.column.swimDir.tip=Swim dir
-sammoa.observations.routeTable.column.beginTime=Time
-sammoa.observations.routeTable.column.beginTime.tip=Time
-sammoa.observations.routeTable.column.cloudCover=Cloud
-sammoa.observations.routeTable.column.cloudCover.tip=Cloud
-sammoa.observations.routeTable.column.comment=Comment
-sammoa.observations.routeTable.column.comment.tip=Comment
-sammoa.observations.routeTable.column.deleted=Del
-sammoa.observations.routeTable.column.deleted.tip=Del
-sammoa.observations.routeTable.column.effortNumber=N°
-sammoa.observations.routeTable.column.effortNumber.tip=N°
-sammoa.observations.routeTable.column.glareFrom=Gl from
-sammoa.observations.routeTable.column.glareFrom.tip=Gl from
-sammoa.observations.routeTable.column.glareSeverity=Gl sev
-sammoa.observations.routeTable.column.glareSeverity.tip=Gl sev
-sammoa.observations.routeTable.column.glareTo=Gl to
-sammoa.observations.routeTable.column.glareTo.tip=Gl to
-sammoa.observations.routeTable.column.glareUnder=Gl under
-sammoa.observations.routeTable.column.glareUnder.tip=Gl under
-sammoa.observations.routeTable.column.routeType=Type
-sammoa.observations.routeTable.column.routeType.tip=Type
-sammoa.observations.routeTable.column.seaState=Sea
-sammoa.observations.routeTable.column.seaState.tip=Sea
-sammoa.observations.routeTable.column.skyGlint=Glint
-sammoa.observations.routeTable.column.skyGlint.tip=Glint
-sammoa.observations.routeTable.column.subjectiveConditions=Subj
-sammoa.observations.routeTable.column.subjectiveConditions.tip=Subj
-sammoa.observations.routeTable.column.swell=Swell
-sammoa.observations.routeTable.column.swell.tip=Swell
-sammoa.observations.routeTable.column.transect=Transect
-sammoa.observations.routeTable.column.transect.tip=Transect
-sammoa.observations.routeTable.column.turbidity=Turb
-sammoa.observations.routeTable.column.turbidity.tip=Turb
-sammoa.observations.routeTable.column.unexpectedLeft=Left
-sammoa.observations.routeTable.column.unexpectedLeft.tip=Left
-sammoa.observations.routeTable.column.unexpectedRight=Right
-sammoa.observations.routeTable.column.unexpectedRight.tip=Right
-sammoa.statusBar.audio=Audio
-sammoa.statusBar.gps=GPS
-sammoa.statusbar.alt=Alt %1$s ft
-sammoa.statusbar.speed=Speed %1$s km/h
-sammoa.strate.decorator.all=All strates
-sammoa.strate.decorator.strate=Strate %1$s
-sammoa.timePattern=HH\:mm\:ss
-sammoa.title.about=About Sammoa
-sammoa.title.campaign=Campaign
-sammoa.title.choose.export.directory=
-sammoa.title.exportshape=
-sammoa.title.flight=System %1$s - Campaign %2$s - Region %3$s - Flight n°%4$d
-sammoa.title.home=Home
-sammoa.title.validation=
-sammoa.validator.campaign.beginDate.required=The begin date must be defined
-sammoa.validator.campaign.code.required=The campaign code must be defined
-sammoa.validator.campaign.code.uniqueKey=The campaign code already exists
-sammoa.validator.campaign.endDate.anterior=The end date can't be anterior to the begin date
-sammoa.validator.campaign.endDate.required=The end date must be defined
-sammoa.validator.campaign.region.required=The region must be set
-sammoa.validator.campaign.uniqueKey=The campaign code '%1$s' already exists for the region '%2$s'
-sammoa.validator.observation.age.unkownValue=The age must be \: J for "juvénile", I for "immature", A for "adulte" and M for mixed groups
-sammoa.validator.observation.behaviour.unkownValue=The behaviour must be one of this value \: SW (normal), MI (milling), BR (breaching), LO (logging), FE (feeding), FA (feeding aggregation), SB (following boat), OT (other)
-sammoa.validator.observation.cue.unkownValue=The cue must be between 2 and 9 or U for underwater and A for surface
-sammoa.validator.observation.decAngle.invalidRange=The angle must be between %1$s and %2$s degrees or for the band \: 1 (in the band), 2 (outside the band), 3 (put in the band)
-sammoa.validator.observation.podSize.invalidMin=The pod size must be higher than %1$s
-sammoa.validator.observation.species.required=The species is mandatory
-sammoa.validator.observation.swimDir.invalidRange=The swim direction must be between %1$s and %2$s degrees
-sammoa.validator.region.code.required=The region code must be defined
-sammoa.validator.region.uniqueKey=The region code '%1$s' already exists
-sammoa.validator.route.cloudCover.invalidRange=The cloud cover must be between %1$s and %2$s (octa system \: 8 for covered, 0 for cleared)
-sammoa.validator.route.glareFrom.invalidRange=The glare must be in degrees between %1$s and %2$s (plane nose is at 0°)
-sammoa.validator.route.glareSeverity.invalidRange=The glare severity must be between %1$s and %2$s (0 \: no glare, 3 \: strong glare)
-sammoa.validator.route.glareTo.invalidRange=The glare must be in degrees between %1$s and %2$s (plane nose is at 0°)
-sammoa.validator.route.seaState.invalidRange=The sea state must be between %1$s and %2$s (beaufort system)
-sammoa.validator.route.skyGlint.invalidMin=The sky glint must be higher than %1$s
-sammoa.validator.route.subjectiveConditions.badLength=The subjective conditions must have %1$s characters (one letter for each side)
-sammoa.validator.route.subjectiveConditions.required=The subjective conditions is mandatory
-sammoa.validator.route.subjectiveConditions.unkownValue=The subjective conditions must be \: E for excellent, G for good, M for medium, P for poor
-sammoa.validator.route.swell.invalidRange=The swell must be between %1$s and %2$s (0 means no swell)
-sammoa.validator.route.turbidity.unkownValue=The turbidity must be between 0 (clear water) and 2 (turbid water) or 9 for unkown
-sammoa.validator.transect.name.required=The transect name must be defined
-sammoa.validator.transect.strate.required=The strate must be defined
-sammoa.validator.transect.uniqueKey=The transect name '%1$s' already exists
1
0
01 Aug '12
Author: tchemit
Date: 2012-08-01 18:35:52 +0200 (Wed, 01 Aug 2012)
New Revision: 343
Url: http://forge.codelutin.com/repositories/revision/sammoa/343
Log:
refs #1203: Export SHP (add ui parts) + persistence
Added:
trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/RouteType.java
trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/StringRef.java
trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/StringRefs.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.css
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.jaxx
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/importApplication/
trunk/sammoa-ui-swing/src/main/resources/icons/action-fileChooser.png
trunk/sammoa-ui-swing/src/test/resources/
trunk/sammoa-ui-swing/src/test/resources/logback-test.xml
Modified:
trunk/pom.xml
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaDecoratorProvider.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaScreen.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUIContext.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.css
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.jaxx
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUIHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/SammoaUtil.java
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_fr_FR.properties
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-08-01 16:34:48 UTC (rev 342)
+++ trunk/pom.xml 2012-08-01 16:35:52 UTC (rev 343)
@@ -121,7 +121,7 @@
<h2Version>1.3.167</h2Version>
<postgresqlVersion>9.1-901-1.jdbc4</postgresqlVersion>
- <jaxxVersion>2.5.3</jaxxVersion>
+ <jaxxVersion>2.5.4-SNAPSHOT</jaxxVersion>
<swingXVersion>1.6.3</swingXVersion>
<xworkVersion>2.3.4</xworkVersion>
Added: trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/RouteType.java
===================================================================
--- trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/RouteType.java (rev 0)
+++ trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/RouteType.java 2012-08-01 16:35:52 UTC (rev 343)
@@ -0,0 +1,11 @@
+package fr.ulr.sammoa.persistence;
+
+public enum RouteType {
+ TRANSIT,
+ LEG,
+ CIRCLE_BACK;
+
+ public String getName() {
+ return name();
+ }
+} //RouteType
Property changes on: trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/RouteType.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/StringRef.java
===================================================================
--- trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/StringRef.java (rev 0)
+++ trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/StringRef.java 2012-08-01 16:35:52 UTC (rev 343)
@@ -0,0 +1,24 @@
+package fr.ulr.sammoa.persistence;
+
+import java.io.Serializable;
+
+/**
+ * To be able to use String inside decorators.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.5
+ */
+public class StringRef implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private final String value;
+
+ public StringRef(String value) {
+ this.value = value;
+ }
+
+ public String getValue() {
+ return value;
+ }
+}
Property changes on: trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/StringRef.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/StringRefs.java
===================================================================
--- trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/StringRefs.java (rev 0)
+++ trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/StringRefs.java 2012-08-01 16:35:52 UTC (rev 343)
@@ -0,0 +1,42 @@
+package fr.ulr.sammoa.persistence;
+
+import com.google.common.base.Function;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
+import java.util.List;
+
+/**
+ * Usefulmethod aroun {@link StringRef}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.5
+ */
+public class StringRefs {
+
+
+ public static List<StringRef> toRefs(List<String> strings) {
+
+ List<StringRef> result =
+ Lists.newArrayList(Iterables.transform(strings, TO_STRING_REF_FUNCTION));
+ return result;
+ }
+
+ protected static Function<String, StringRef> TO_STRING_REF_FUNCTION =
+ new Function<String, StringRef>() {
+
+ @Override
+ public StringRef apply(String input) {
+ return new StringRef(input);
+ }
+ };
+
+ protected static Function<StringRef, String> TO_STRING_FUNCTION =
+ new Function<StringRef, String>() {
+
+ @Override
+ public String apply(StringRef input) {
+ return input.getValue();
+ }
+ };
+}
Property changes on: trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/StringRefs.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java 2012-08-01 16:34:48 UTC (rev 342)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java 2012-08-01 16:35:52 UTC (rev 343)
@@ -33,6 +33,7 @@
import fr.ulr.sammoa.ui.swing.campaign.CampaignUI;
import fr.ulr.sammoa.ui.swing.flight.FlightUI;
import fr.ulr.sammoa.ui.swing.home.HomeUI;
+import fr.ulr.sammoa.ui.swing.io.exportMap.ExportMapUI;
import jaxx.runtime.SwingUtil;
import jaxx.runtime.swing.AboutPanel;
import jaxx.runtime.swing.ErrorDialogUI;
@@ -42,8 +43,10 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.swing.*;
-import java.awt.*;
+import javax.swing.JComponent;
+import javax.swing.JOptionPane;
+import javax.swing.UIManager;
+import java.awt.Desktop;
import java.io.File;
import java.net.URL;
import java.util.Locale;
@@ -165,6 +168,14 @@
ui.getBody().setTitle(_("sammoa.title.campaign"));
ui.getBody().add(currentBody);
break;
+
+ case EXPORT_MAP:
+ currentBody = new ExportMapUI(context);
+ context.getSwingSession().add(currentBody);
+ ui.getBody().setTitle(_("sammoa.title.exportshape"));
+ ui.getBody().add(currentBody);
+ break;
+
}
ui.setScreen(screen);
}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaDecoratorProvider.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaDecoratorProvider.java 2012-08-01 16:34:48 UTC (rev 342)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaDecoratorProvider.java 2012-08-01 16:35:52 UTC (rev 343)
@@ -30,8 +30,11 @@
import fr.ulr.sammoa.persistence.Observer;
import fr.ulr.sammoa.persistence.Region;
import fr.ulr.sammoa.persistence.Route;
+import fr.ulr.sammoa.persistence.RouteType;
import fr.ulr.sammoa.persistence.Sector;
+import fr.ulr.sammoa.persistence.Species;
import fr.ulr.sammoa.persistence.Strate;
+import fr.ulr.sammoa.persistence.StringRef;
import fr.ulr.sammoa.persistence.Transect;
import fr.ulr.sammoa.ui.swing.flight.StrateModel;
import fr.ulr.sammoa.ui.swing.flight.TransectModel;
@@ -57,7 +60,11 @@
registerJXPathDecorator(Observation.class, "${observationNumber}$s ${observationTime}$tH:%2$tM:%2$tS");
registerJXPathDecorator(Transect.class, "${name}$s");
registerJXPathDecorator(Observer.class, "${initials}$s");
-// registerJXPathDecorator(Strate.class, "${code}$s");
+ registerMultiJXPathDecorator(Strate.class, "${code}$s##${name}$s", "##", " - ");
+ registerMultiJXPathDecorator(RouteType.class, "${name}$s", "##", " - ");
+ registerMultiJXPathDecorator(Species.class, "${code}$s##${commonName}$s", "##", " - ");
+ registerMultiJXPathDecorator(StringRef.class, "${value}$s", "##", " - ");
+
registerJXPathDecorator(TransectModel.class, "${source/name}$s");
registerJXPathDecorator(Sector.class, "${name}$s");
registerJXPathDecorator(Region.class, "${code}$s");
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaScreen.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaScreen.java 2012-08-01 16:34:48 UTC (rev 342)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaScreen.java 2012-08-01 16:35:52 UTC (rev 343)
@@ -2,8 +2,8 @@
/*
* #%L
* SAMMOA :: UI Swing
- * $Id:$
- * $HeadURL:$
+ * $Id$
+ * $HeadURL$
* %%
* Copyright (C) 2012 UMS 3462, Code Lutin
* %%
@@ -34,5 +34,7 @@
CAMPAIGN,
- FLIGHT;
+ FLIGHT,
+
+ EXPORT_MAP
}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUIContext.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUIContext.java 2012-08-01 16:34:48 UTC (rev 342)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUIContext.java 2012-08-01 16:35:52 UTC (rev 343)
@@ -185,6 +185,11 @@
mainUIHandler.setScreen(SammoaScreen.HOME);
}
+ public void setExportMapScreen(String campaignId) {
+ this.campaignId = campaignId;
+ mainUIHandler.setScreen(SammoaScreen.EXPORT_MAP);
+ }
+
public void open() {
context.open();
}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.css
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.css 2012-08-01 16:34:48 UTC (rev 342)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.css 2012-08-01 16:35:52 UTC (rev 343)
@@ -57,10 +57,16 @@
}
#importButton {
+ enabled:false;
text: "sammoa.action.import";
}
+#exportMapButton {
+ text: "sammoa.action.exportMap";
+}
+
#exportButton {
+ enabled:false;
text: "sammoa.action.export";
}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.jaxx
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.jaxx 2012-08-01 16:34:48 UTC (rev 342)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.jaxx 2012-08-01 16:35:52 UTC (rev 343)
@@ -101,9 +101,11 @@
</row>
<row>
<cell fill='both' columns='3'>
- <JPanel layout='{new GridLayout(1,4,0,0)}'>
+ <JPanel layout='{new GridLayout(1,0,0,0)}'>
<JButton id='importButton'
onActionPerformed='getHandler().showImport()'/>
+ <JButton id='exportMapButton'
+ onActionPerformed='getHandler().showExportMap()'/>
<JButton id='exportButton'
onActionPerformed='getHandler().showExport()'/>
<JButton id='onBoardButton'
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUIHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUIHandler.java 2012-08-01 16:34:48 UTC (rev 342)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUIHandler.java 2012-08-01 16:35:52 UTC (rev 343)
@@ -2,8 +2,8 @@
/*
* #%L
* SAMMOA :: UI Swing
- * $Id:$
- * $HeadURL:$
+ * $Id$
+ * $HeadURL$
* %%
* Copyright (C) 2012 UMS 3462, Code Lutin
* %%
@@ -275,8 +275,15 @@
}
+ public void showExportMap() {
+
+ Campaign campaign = getModel().getCampaign();
+ String campaignId = campaign==null?null:campaign.getTopiaId();
+ context.setExportMapScreen(campaignId);
+ }
+
public void showExport() {
-
+
}
public void showOnBoard() {
Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.css
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.css (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.css 2012-08-01 16:35:52 UTC (rev 343)
@@ -0,0 +1,89 @@
+BeanListHeader {
+ i18nPrefix: "sammoa.common.";
+}
+
+#campaignLabel {
+ text: "sammoa.label.campaign";
+}
+
+#campaignCombobox {
+ renderer: {new DecoratorProviderListCellRenderer(getHandler().getDecoratorProvider())};
+}
+
+#campainPeriodFilter {
+ border:{new TitledBorder(_("sammoa.label.campaign.period.filter"))};
+}
+
+#campaignBeginDateLabel {
+ text:"sammoa.label.campaign.beginDate";
+}
+
+#beginDatePicker {
+ patternLayout:{_("sammoa.datePattern")};
+ date:{getModel().getBeginDate()};
+}
+
+#campaignEndDateLabel {
+ text:"sammoa.label.campaign.endDate";
+}
+
+#endDatePicker {
+ patternLayout:{_("sammoa.datePattern")};
+ date:{getModel().getEndDate()};
+}
+
+#strateFilterListHeader {
+ beanType:{Strate.class};
+ showReset:true;
+ list:{strateFilter};
+ labelText:{_("sammoa.label.strateFilter")};
+}
+
+#routeTypeFilterListHeader {
+ beanType:{RouteType.class};
+ showReset:true;
+ list:{routeTypeFilter};
+ labelText:{_("sammoa.label.routeTypeFilter")};
+}
+
+#speciesTypeFilterListHeader {
+ beanType:{StringRef.class};
+ showReset:true;
+ list:{speciesTypeFilter};
+ labelText:{_("sammoa.label.speciesTypeFilter")};
+}
+
+#speciesFilterListHeader {
+ beanType:{Species.class};
+ showReset:true;
+ list:{speciesFilter};
+ labelText:{_("sammoa.label.speciesFilter")};
+}
+
+#quitButton {
+ text:"sammoa.action.quitExportMaps";
+}
+
+#exportEfforts {
+ text:"sammoa.action.exportEffortsMap";
+}
+
+#exportObservations {
+ text:"sammoa.action.exportObservationsMap";
+}
+
+#exportDirectoryFileChooseAction {
+ actionIcon:"fileChooser";
+}
+
+#exportEffortsFilenameLbl {
+ text:"sammoa.label.exportEffortsFilename";
+}
+
+#exportDirectoryLbl {
+ text:"sammoa.label.exportDirectory";
+}
+
+#exportObservationsFilenameLbl {
+ text:"sammoa.label.exportObservationsFilename";
+}
\ No newline at end of file
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.css
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.jaxx
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.jaxx (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUI.jaxx 2012-08-01 16:35:52 UTC (rev 343)
@@ -0,0 +1,163 @@
+<JPanel id='campaignUI' layout='{new BorderLayout()}'
+ implements='fr.ulr.sammoa.ui.swing.SammoaUI<ExportMapUIHandler>'>
+
+ <import>
+ fr.ulr.sammoa.application.FlightState
+ fr.ulr.sammoa.persistence.Campaign
+ fr.ulr.sammoa.persistence.RouteType
+ fr.ulr.sammoa.persistence.Strate
+ fr.ulr.sammoa.persistence.Species
+ fr.ulr.sammoa.persistence.StringRef
+ fr.ulr.sammoa.ui.swing.SammoaUIContext
+
+ jaxx.runtime.swing.editor.bean.BeanListHeader
+ jaxx.runtime.swing.JAXXDatePicker
+ jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer
+
+ java.awt.BorderLayout
+ java.awt.event.ItemEvent
+ java.io.File
+
+ static org.nuiton.i18n.I18n._
+ </import>
+
+ <script><![CDATA[
+
+ public ExportMapUI(SammoaUIContext context) {
+ ExportMapUIHandler handler = new ExportMapUIHandler(context, this);
+ setContextValue(handler);
+ handler.beforeInitUI();
+ }
+
+ protected void $afterCompleteSetup() {
+ getHandler().afterInitUI();
+ }
+ ]]></script>
+
+ <ExportMapUIModel id='model'
+ initializer='getContextValue(ExportMapUIModel.class)'/>
+
+ <ExportMapUIHandler id='handler'
+ initializer='getContextValue(ExportMapUIHandler.class)'/>
+
+ <Table fill='both' constraints='BorderLayout.CENTER'>
+ <!-- export directory-->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='exportDirectoryLbl'/>
+ </cell>
+ <cell weightx='1' fill="horizontal">
+ <JTextField id='exportDirectory' text='{model.getExportDirectory().getAbsolutePath()}'
+ onKeyReleased='getModel().setExportDirectory(new File(((JTextField)event.getSource()).getText()))'/>
+ </cell>
+ <cell anchor="east">
+ <JButton id="exportDirectoryFileChooseAction"
+ onActionPerformed="getHandler().chooseEffortDirectory()"/>
+ </cell>
+
+ </row>
+ <!-- Campaign filter -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='campaignLabel'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0'>
+ <JComboBox id='campaignCombobox'
+ onItemStateChanged='if (ItemEvent.SELECTED == event.getStateChange()) { getModel().setSelectedCampaign((Campaign)event.getItem()); } else { getModel().setSelectedCampaign(null); }'/>
+ </cell>
+ </row>
+ <!-- Campaign Period filter -->
+ <row>
+ <cell weightx='1.0' columns='5'>
+ <JPanel id='campainPeriodFilter' layout='{new GridLayout(1,0)}'>
+ <JAXXDatePicker id='beginDatePicker'
+ onActionPerformed='getModel().setBeginDate(beginDatePicker.getDate())'/>
+ <JAXXDatePicker id='endDatePicker'
+ onActionPerformed='getModel().setEndDate(endDatePicker.getDate())'/>
+ </JPanel>
+ </cell>
+ </row>
+ <!-- Strate filter (Multi-selection)-->
+ <row>
+ <cell fill='both' weightx='1.0' weighty='1.0' columns='5'>
+ <JScrollPane id='strateFilterScrollPane'
+ columnHeaderView='{strateFilterListHeader}'>
+ <JList id='strateFilter' />
+ <BeanListHeader id='strateFilterListHeader' genericType='Strate'/>
+ </JScrollPane>
+ </cell>
+ </row>
+ <!-- Status filter (Multi-selection)-->
+ <row>
+ <cell fill='both' weightx='1.0' weighty='1.0' columns='5'>
+ <JScrollPane id='routeTypeFilterScrollPane'
+ columnHeaderView='{routeTypeFilterListHeader}'>
+ <JList id='routeTypeFilter' />
+ <BeanListHeader id='routeTypeFilterListHeader' genericType='RouteType'/>
+ </JScrollPane>
+ </cell>
+ </row>
+
+ <!-- export efforts filename-->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='exportEffortsFilenameLbl'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0'>
+ <JTextField id='exportEffortsFilename' text='{model.getExportEffortsFilename()}'
+ onKeyReleased='model.setExportEffortsFilename(((JTextField)event.getSource()).getText())'/>
+ </cell>
+ </row>
+
+ <!-- export efforts -->
+ <row>
+ <cell columns='5' fill="both">
+ <JPanel layout='{new BorderLayout()}'>
+ <JButton id='exportEfforts' constraints='BorderLayout.CENTER'
+ onActionPerformed='getHandler().exportEfforts()'/>
+ </JPanel>
+ </cell>
+ </row>
+
+ <!-- Species type filter (Multi-selection)-->
+ <row>
+ <cell fill='both' weightx='1.0' weighty='1.0' columns='5'>
+ <JScrollPane id='speciesTypeFilterScrollPane'
+ columnHeaderView='{speciesTypeFilterListHeader}'>
+ <JList id='speciesTypeFilter'/>
+ <BeanListHeader id='speciesTypeFilterListHeader' genericType='StringRef'/>
+ </JScrollPane>
+ </cell>
+ </row>
+ <!-- Species filter (Multi-selection)-->
+ <row>
+ <cell fill='both' weightx='1.0' weighty='1.0' columns='5'>
+ <JScrollPane id='speciesFilterScrollPane'
+ columnHeaderView='{speciesFilterListHeader}'>
+ <JList id='speciesFilter'/>
+ <BeanListHeader id='speciesFilterListHeader' genericType='Species'/>
+ </JScrollPane>
+ </cell>
+ </row>
+ <!-- export observations filename-->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='exportObservationsFilenameLbl'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0'>
+ <JTextField id='exportObservationsFilename' text='{model.getExportObservationsFilename()}'
+ onKeyReleased='model.setExportObservationsFilename(((JTextField)event.getSource()).getText())'/>
+ </cell>
+ </row>
+ <!--export observations -->
+ <row>
+ <cell columns='5' fill="both">
+ <JPanel layout='{new GridLayout(1,2,0,0)}'>
+ <JButton id='quitButton' onActionPerformed='getHandler().close()'/>
+ <JButton id='exportObservations'
+ onActionPerformed='getHandler().exportObservations()'/>
+ </JPanel>
+ </cell>
+ </row>
+ </Table>
+</JPanel>
\ No newline at end of file
Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIHandler.java (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIHandler.java 2012-08-01 16:35:52 UTC (rev 343)
@@ -0,0 +1,251 @@
+package fr.ulr.sammoa.ui.swing.io.exportMap;
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import fr.ulr.sammoa.application.ReferentialService;
+import fr.ulr.sammoa.application.map.ExportMapModel;
+import fr.ulr.sammoa.application.map.ExportMapService;
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.RouteType;
+import fr.ulr.sammoa.persistence.Species;
+import fr.ulr.sammoa.persistence.Strate;
+import fr.ulr.sammoa.persistence.StringRefs;
+import fr.ulr.sammoa.ui.swing.SammoaDecoratorProvider;
+import fr.ulr.sammoa.ui.swing.SammoaUIContext;
+import fr.ulr.sammoa.ui.swing.SammoaUIHandler;
+import fr.ulr.sammoa.ui.swing.util.SammoaUtil;
+import jaxx.runtime.SwingUtil;
+import jaxx.runtime.swing.OneClicListSelectionModel;
+import jaxx.runtime.swing.editor.bean.BeanListHeader;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.decorator.Decorator;
+import org.nuiton.util.decorator.DecoratorUtil;
+import org.nuiton.util.decorator.JXPathDecorator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.swing.JList;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.File;
+import java.util.Collections;
+import java.util.List;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * Handler of {@link ExportMapUI}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.5
+ */
+public class ExportMapUIHandler implements SammoaUIHandler {
+
+ private static final Logger logger =
+ LoggerFactory.getLogger(ExportMapUIHandler.class);
+
+ private final ExportMapUI ui;
+
+ protected SammoaUIContext context;
+
+ public ExportMapUIHandler(SammoaUIContext context,
+ ExportMapUI ui) {
+ this.context = context;
+ this.ui = ui;
+ }
+
+ protected ReferentialService getReferentialService() {
+ return context.getAppContext().getReferentialService();
+ }
+
+ protected ExportMapService getExportMapService() {
+ return context.getAppContext().getExportMapService();
+ }
+
+ public SammoaDecoratorProvider getDecoratorProvider() {
+ return context.getDecoratorProvider();
+ }
+
+ @Override
+ public void beforeInitUI() {
+
+ //-- create model --//
+
+ ExportMapUIModel model = new ExportMapUIModel();
+
+ List<Campaign> campaigns = getReferentialService().getCampaigns();
+ campaigns.add(0, null);
+ model.setCampaigns(campaigns);
+
+ List<String> speciesTypes = getReferentialService().getAllSpeciesTypes();
+ model.setSpeciesTypes(StringRefs.toRefs(speciesTypes));
+
+ List<Species> species = getReferentialService().getAllSpecies();
+ model.setSpecies(species);
+
+ model.setRouteTypes(Lists.newArrayList(RouteType.values()));
+
+ String campaignId = context.getCampaignId();
+
+ if (campaignId != null) {
+
+ Campaign campaign = getReferentialService().getCampaign(campaignId);
+
+ // selected cam
+ model.setSelectedCampaign(campaign);
+ }
+
+ //-- share model and handler in jaxx context --//
+ ui.setContextValue(this);
+ ui.setContextValue(model);
+
+ model.addPropertyChangeListener(new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+
+ if (ExportMapUIModel.PROPERTY_SELECTED_CAMPAIGN.equals(evt.getPropertyName())) {
+ Campaign newValue = (Campaign) evt.getNewValue();
+ onSelectedCampaignChanged(newValue);
+ } else if (ExportMapUIModel.PROPERTY_STRATES.equals(evt.getPropertyName())) {
+
+ List<Strate> newValue = (List<Strate>) evt.getNewValue();
+ onStratesChanged(newValue);
+ }
+ }
+ });
+ }
+
+ @Override
+ public void afterInitUI() {
+ ExportMapUIModel model = ui.getModel();
+
+ model.setExportEffortsFilename("Efforts");
+ model.setExportObservationsFilename("Observations");
+ model.setExportDirectory(FileUtil.getCurrentDirectory().getAbsoluteFile());
+
+ SwingUtil.fillComboBox(ui.getCampaignCombobox(),
+ model.getCampaigns(),
+ model.getSelectedCampaign());
+
+ prepareList(ui.getStrateFilterListHeader(), model.getStrates());
+ prepareList(ui.getRouteTypeFilterListHeader(), model.getRouteTypes());
+ prepareList(ui.getSpeciesTypeFilterListHeader(), model.getSpeciesTypes());
+ prepareList(ui.getSpeciesFilterListHeader(), model.getSpecies());
+
+ onSelectedCampaignChanged(model.getSelectedCampaign());
+ }
+
+ protected void onStratesChanged(List<Strate> newValue) {
+ if (logger.isInfoEnabled()) {
+ logger.info("New strates to use: {}", newValue.size());
+ }
+ ui.getStrateFilterListHeader().setData(newValue);
+ }
+
+ protected void onSelectedCampaignChanged(Campaign newCampaign) {
+
+ // reset strates,...
+ if (logger.isInfoEnabled()) {
+ Decorator<Campaign> decorator = getDecoratorProvider().getDecoratorByType(Campaign.class);
+ logger.info("New selected campain: {}", decorator.toString(newCampaign));
+ }
+
+ ExportMapUIModel model = ui.getModel();
+
+ model.setSelectedStrates(Collections.<Strate>emptyList());
+
+ List<Strate> strates;
+ if (newCampaign == null) {
+ strates = Collections.emptyList();
+ } else {
+ strates = getReferentialService().getAllStrates(newCampaign);
+ }
+ if (logger.isDebugEnabled()) {
+ logger.debug("New strates: {}", strates.size());
+ }
+ model.setStrates(strates);
+ }
+
+ public void close() {
+ context.setHomeScreen();
+ }
+
+ @Override
+ public void onCloseUI() {
+ }
+
+ public void chooseEffortDirectory() {
+ File f = SammoaUtil.chooseDirectory(
+ ui,
+ _("sammoa.title.choose.export.directory"),
+ _("sammoa.action.choose.export.directory"),
+ ui.getModel().getExportDirectory()
+ );
+ ui.getModel().setExportDirectory(f);
+ }
+
+ public void exportEfforts() {
+
+ ExportMapUIModel model = ui.getModel();
+
+ ExportMapModel dataModel =
+ model.toModel(model.getExportEffortsFilename());
+
+ getExportMapService().exportEffortsMap(dataModel);
+ }
+
+ public void exportObservations() {
+
+ ExportMapUIModel model = ui.getModel();
+
+ ExportMapModel dataModel =
+ model.toModel(model.getExportObservationsFilename());
+
+ getExportMapService().exportObservationsMap(dataModel);
+ }
+
+
+ /**
+ * Remplit le modèle d'une liste graphique avec la liste des entités d'un
+ * type donné sur un service de persistance donné.
+ *
+ * @param list le component graphique à initialiser
+ * @param incomingData les données à mettre dans la liste
+ * @since 0.5
+ */
+ public <E> void prepareList(BeanListHeader<E> list, List<E> incomingData) {
+
+ Class<E> beanType = list.getBeanType();
+
+ JList jList = list.getList();
+
+ //FIXME-tchemit 2012-08-01 Fix selection model which bugs when deselect
+ OneClicListSelectionModel.installModel(jList);
+
+ // init list
+ Decorator<E> decorator = getDecoratorProvider().getDecoratorByType(beanType);
+ Preconditions.checkNotNull(decorator, "No decorator found for type " + beanType);
+ if (logger.isDebugEnabled()) {
+ logger.debug("Will use decorator " + decorator);
+ }
+
+ list.putClientProperty("decorator", decorator);
+ List<E> data = Lists.newArrayList(incomingData);
+
+ // sort data from first decorator context
+ DecoratorUtil.sort((JXPathDecorator<E>) decorator, data, 0);
+
+ // set datas to list and init renderer
+ list.init((JXPathDecorator<E>) decorator, data);
+
+// // get the renderer initialized
+// ListCellRenderer renderer = list.getList().getCellRenderer();
+//
+// // add the specific renderer
+// list.getList().setCellRenderer(new ReferentielListCellRenderer(renderer));
+
+ list.putClientProperty("data", data);
+ }
+
+
+}
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIModel.java (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIModel.java 2012-08-01 16:35:52 UTC (rev 343)
@@ -0,0 +1,277 @@
+package fr.ulr.sammoa.ui.swing.io.exportMap;
+
+import com.google.common.collect.Lists;
+import fr.ulr.sammoa.application.map.ExportMapModel;
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.RouteType;
+import fr.ulr.sammoa.persistence.Species;
+import fr.ulr.sammoa.persistence.Strate;
+import fr.ulr.sammoa.persistence.StringRef;
+import org.jdesktop.beans.AbstractSerializableBean;
+
+import java.io.File;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Model of export map UI.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.5
+ */
+public class ExportMapUIModel extends AbstractSerializableBean {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String PROPERTY_CAMPAIGNS = "campaigns";
+
+ public static final String PROPERTY_SELECTED_CAMPAIGN = "selectedCampaign";
+
+ public static final String PROPERTY_BEGIN_DATE = "beginDate";
+
+ public static final String PROPERTY_END_DATE = "endDate";
+
+ public static final String PROPERTY_STRATES = "strates";
+
+ public static final String PROPERTY_SELECTED_STRATES = "selectedStrates";
+
+ public static final String PROPERTY_ROUTE_TYPES = "routeTypes";
+
+ public static final String PROPERTY_SELECTED_ROUTE_TYPES = "selectedRouteTypes";
+
+ public static final String PROPERTY_SPECIES = "species";
+
+ public static final String PROPERTY_SELECTED_SPECIES = "selectedSpecies";
+
+ public static final String PROPERTY_SPECIES_TYPES = "speciesTypes";
+
+ public static final String PROPERTY_SELECTED_SPECIES_TYPES = "selectedSpeciesTypes";
+
+ public static final String PROPERTY_EXPORT_DIRECTORY = "exportDirectory";
+
+ public static final String PROPERTY_EXPORT_EFFORTS_FILENAME = "exportEffortsFilename";
+
+ public static final String PROPERTY_EXPORT_OBSERVATIONS_FILENAME = "exportObservationsFilename";
+
+ protected List<Campaign> campaigns;
+
+ protected Campaign selectedCampaign;
+
+ protected Date beginDate;
+
+ protected Date endDate;
+
+ protected List<Strate> strates;
+
+ protected List<Strate> selectedStrates;
+
+ protected List<RouteType> routeTypes;
+
+ protected List<RouteType> selectedRouteTypes;
+
+ protected List<Species> species;
+
+ protected List<Species> selectedSpecies;
+
+ protected List<StringRef> selectedSpeciesTypes;
+
+ protected List<StringRef> speciesTypes;
+
+ protected File exportDirectory;
+
+ protected String exportEffortsFilename;
+
+ protected String exportObservationsFilename;
+
+ public File getExportDirectory() {
+ return exportDirectory;
+ }
+
+ public void setExportDirectory(File exportDirectory) {
+ File oldValue = this.exportDirectory;
+ this.exportDirectory = exportDirectory;
+ firePropertyChange(PROPERTY_EXPORT_DIRECTORY, oldValue, exportDirectory);
+ }
+
+ public String getExportEffortsFilename() {
+ return exportEffortsFilename;
+ }
+
+ public void setExportEffortsFilename(String exportEffortsFilename) {
+ String oldValue = this.exportEffortsFilename;
+ this.exportEffortsFilename = exportEffortsFilename;
+ firePropertyChange(PROPERTY_EXPORT_EFFORTS_FILENAME, oldValue, exportEffortsFilename);
+ }
+
+ public String getExportObservationsFilename() {
+ return exportObservationsFilename;
+ }
+
+ public void setExportObservationsFilename(String exportObservationsFilename) {
+ String oldValue = this.exportObservationsFilename;
+ this.exportObservationsFilename = exportObservationsFilename;
+ firePropertyChange(PROPERTY_EXPORT_OBSERVATIONS_FILENAME, oldValue, exportObservationsFilename);
+ }
+
+ public List<Campaign> getCampaigns() {
+ if (campaigns == null) {
+ campaigns = Lists.newArrayList();
+ }
+ return campaigns;
+ }
+
+ public void setCampaigns(List<Campaign> campaigns) {
+ List<Campaign> oldValue = this.campaigns;
+ this.campaigns = campaigns;
+ firePropertyChange(PROPERTY_CAMPAIGNS, oldValue, campaigns);
+ }
+
+ public Campaign getSelectedCampaign() {
+ return selectedCampaign;
+ }
+
+ public void setSelectedCampaign(Campaign selectedCampaign) {
+ Campaign oldValue = this.selectedCampaign;
+ this.selectedCampaign = selectedCampaign;
+ firePropertyChange(PROPERTY_SELECTED_CAMPAIGN, oldValue, selectedCampaign);
+ }
+
+ public Date getBeginDate() {
+ return beginDate;
+ }
+
+ public void setBeginDate(Date beginDate) {
+ Date oldValue = this.beginDate;
+ this.beginDate = beginDate;
+ firePropertyChange(PROPERTY_BEGIN_DATE, oldValue, beginDate);
+ }
+
+ public Date getEndDate() {
+ return endDate;
+ }
+
+ public void setEndDate(Date endDate) {
+ Date oldValue = this.endDate;
+ this.endDate = endDate;
+ firePropertyChange(PROPERTY_END_DATE, oldValue, endDate);
+ }
+
+ public List<Strate> getStrates() {
+ if (strates == null) {
+ strates = Lists.newArrayList();
+ }
+ return strates;
+ }
+
+ public void setStrates(List<Strate> strates) {
+ List<Strate> oldValue = this.strates;
+ this.strates = strates;
+ firePropertyChange(PROPERTY_STRATES, oldValue, strates);
+ }
+
+ public List<Strate> getSelectedStrates() {
+ if (selectedStrates == null) {
+ selectedStrates = Lists.newArrayList();
+ }
+ return selectedStrates;
+ }
+
+ public void setSelectedStrates(List<Strate> selectedStrates) {
+ List<Strate> oldValue = this.selectedStrates;
+ this.selectedStrates = selectedStrates;
+ firePropertyChange(PROPERTY_SELECTED_STRATES, oldValue, selectedStrates);
+ }
+
+ public List<RouteType> getRouteTypes() {
+ if (routeTypes == null) {
+ routeTypes = Lists.newArrayList();
+ }
+ return routeTypes;
+ }
+
+ public void setRouteTypes(List<RouteType> routeTypes) {
+ List<RouteType> oldValue = this.routeTypes;
+ this.routeTypes = routeTypes;
+ firePropertyChange(PROPERTY_ROUTE_TYPES, oldValue, routeTypes);
+ }
+
+ public List<RouteType> getSelectedRouteTypes() {
+ if (selectedRouteTypes == null) {
+ selectedRouteTypes = Lists.newArrayList();
+ }
+ return selectedRouteTypes;
+ }
+
+ public void setSelectedRouteTypes(List<RouteType> selectedRouteTypes) {
+ List<RouteType> oldValue = this.selectedRouteTypes;
+ this.selectedRouteTypes = selectedRouteTypes;
+ firePropertyChange(PROPERTY_SELECTED_ROUTE_TYPES, oldValue, selectedRouteTypes);
+ }
+
+ public List<Species> getSpecies() {
+ if (species == null) {
+ species = Lists.newArrayList();
+ }
+ return species;
+ }
+
+ public void setSpecies(List<Species> species) {
+ List<Species> oldValue = this.species;
+ this.species = species;
+ firePropertyChange(PROPERTY_SPECIES, oldValue, species);
+ }
+
+ public List<Species> getSelectedSpecies() {
+ if (selectedSpecies == null) {
+ selectedSpecies = Lists.newArrayList();
+ }
+ return selectedSpecies;
+ }
+
+ public void setSelectedSpecies(List<Species> selectedSpecies) {
+ List<Species> oldValue = this.selectedSpecies;
+ this.selectedSpecies = selectedSpecies;
+ firePropertyChange(PROPERTY_SELECTED_SPECIES, oldValue, selectedSpecies);
+ }
+
+ public List<StringRef> getSpeciesTypes() {
+ if (speciesTypes == null) {
+ speciesTypes = Lists.newArrayList();
+ }
+ return speciesTypes;
+ }
+
+ public void setSpeciesTypes(List<StringRef> speciesTypes) {
+ List<StringRef> oldValue = this.speciesTypes;
+ this.speciesTypes = speciesTypes;
+ firePropertyChange(PROPERTY_SPECIES_TYPES, oldValue, speciesTypes);
+ }
+
+ public List<StringRef> getSelectedSpeciesTypes() {
+ if (selectedSpeciesTypes == null) {
+ selectedSpeciesTypes = Lists.newArrayList();
+ }
+ return selectedSpeciesTypes;
+ }
+
+ public void setSelectedSpeciesTypes(List<StringRef> selectedSpeciesTypes) {
+ List<StringRef> oldValue = this.selectedSpeciesTypes;
+ this.selectedSpeciesTypes = selectedSpeciesTypes;
+ firePropertyChange(PROPERTY_SELECTED_SPECIES_TYPES, oldValue, selectedSpeciesTypes);
+ }
+
+ public ExportMapModel toModel(String filename) {
+ ExportMapModel result = ExportMapModel.newModel(
+ getExportDirectory(),
+ filename,
+ getSelectedCampaign(),
+ getBeginDate(),
+ getEndDate(),
+ getSelectedStrates(),
+ getSelectedRouteTypes(),
+ getSelectedSpecies(),
+ getSelectedSpeciesTypes()
+ );
+ return result;
+ }
+}
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/SammoaUtil.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/SammoaUtil.java 2012-08-01 16:34:48 UTC (rev 342)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/SammoaUtil.java 2012-08-01 16:35:52 UTC (rev 343)
@@ -32,6 +32,7 @@
import org.apache.commons.beanutils.PropertyUtils;
import org.jdesktop.swingx.decorator.HighlightPredicate;
import org.jdesktop.swingx.decorator.Highlighter;
+import org.nuiton.util.FileUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,6 +40,7 @@
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
+import java.io.File;
import java.lang.reflect.InvocationTargetException;
/**
@@ -115,4 +117,76 @@
result.setVisible(true);
return result;
}
+
+ /**
+ * Choisir un fichier via un sélecteur graphique de fichiers.
+ *
+ * @param parent le component swing appelant le controle
+ * @param title le titre du dialogue de sélection
+ * @param buttonLabel le label du boutton d'acceptation
+ * @param incoming le fichier de base à utilier
+ * @param filters les filtres + descriptions sur le sélecteur de
+ * fichiers
+ * @return le fichier choisi ou le fichier incoming si l'opération a été
+ * annulée
+ */
+ public static File chooseFile(Component parent,
+ String title,
+ String buttonLabel,
+ File incoming,
+ String... filters) {
+ File oldBasedir = FileUtil.getCurrentDirectory();
+ if (incoming != null) {
+ File basedir;
+ if (incoming.isFile()) {
+ basedir = incoming.getParentFile();
+ } else {
+ basedir = incoming;
+ }
+ if (basedir.exists()) {
+ FileUtil.setCurrentDirectory(basedir);
+ }
+ }
+ File file = FileUtil.getFile(title, buttonLabel, parent, filters);
+ if (logger.isDebugEnabled()) {
+ logger.debug(title + " : " + file);
+ }
+ FileUtil.setCurrentDirectory(oldBasedir);
+ File result = file == null ? incoming : file;
+ return result;
+ }
+
+ /**
+ * Choisir un répertoire via un sélecteur graphique de fichiers.
+ *
+ * @param parent le component swing appelant le controle
+ * @param title le titre de la boite de dialogue de sléection
+ * @param buttonLabel le label de l'action d'acceptation
+ * @param incoming le fichier de base à utiliser
+ * @return le répertoire choisi ou le répertoire incoming si l'opération a
+ * été annulée
+ */
+ public static File chooseDirectory(Component parent,
+ String title,
+ String buttonLabel,
+ File incoming) {
+ File oldBasedir = FileUtil.getCurrentDirectory();
+ if (incoming != null) {
+ File basedir;
+ if (incoming.isFile()) {
+ basedir = incoming.getParentFile();
+ } else {
+ basedir = incoming;
+ }
+ if (basedir.exists()) {
+ FileUtil.setCurrentDirectory(basedir);
+ }
+ }
+ String file = FileUtil.getDirectory(parent, title, buttonLabel);
+ if (logger.isDebugEnabled()) {
+ logger.debug(title + " : " + file);
+ }
+ FileUtil.setCurrentDirectory(oldBasedir);
+ return file == null ? incoming : new File(file);
+ }
}
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 2012-08-01 16:34:48 UTC (rev 342)
+++ trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 2012-08-01 16:35:52 UTC (rev 343)
@@ -5,6 +5,7 @@
sammoa.action.about.tip=About
sammoa.action.break.tip=Break
sammoa.action.cancel=Cancel
+sammoa.action.choose.export.directory=
sammoa.action.circleback.tip=Circle Back
sammoa.action.close=Close
sammoa.action.configuration=Configuration
@@ -12,6 +13,9 @@
sammoa.action.create=Create
sammoa.action.edit=Edit
sammoa.action.export=Export
+sammoa.action.exportEffortsMap=Export Efforts
+sammoa.action.exportMap=Export Maps
+sammoa.action.exportObservationsMap=Export Observations
sammoa.action.home=Home
sammoa.action.home.tip=Home
sammoa.action.import=Import
@@ -23,6 +27,7 @@
sammoa.action.next.tip=Next
sammoa.action.onBoard=On Board
sammoa.action.play.tip=Play
+sammoa.action.quitExportMaps=Quit
sammoa.action.reload.actions=Reload actions
sammoa.action.reload.ui=Reload sammoa ui
sammoa.action.save=Save
@@ -74,9 +79,13 @@
sammoa.label.campaign.name=Name\:
sammoa.label.campaign.observer=Observers\:
sammoa.label.campaign.period=Period\:
+sammoa.label.campaign.period.filter=Period filter
sammoa.label.campaign.region=Region\:
sammoa.label.campaign.strate=Strates\:
sammoa.label.campaign.transect=Transects\:
+sammoa.label.exportDirectory=Export directory
+sammoa.label.exportEffortsFilename=Export filename (Efforts)
+sammoa.label.exportObservationsFilename=Export filename (Observations)
sammoa.label.flight=Flight\:
sammoa.label.flight.beginDate=Start
sammoa.label.flight.comment=Comment\:
@@ -88,6 +97,10 @@
sammoa.label.region.code=Code\:
sammoa.label.region.name=Name\:
sammoa.label.region.species=Species\:
+sammoa.label.routeTypeFilter=Route type filter
+sammoa.label.speciesFilter=Species filter
+sammoa.label.speciesTypeFilter=Species type filter
+sammoa.label.strateFilter=Strate filter
sammoa.label.systemId=System Id\:
sammoa.label.transect.name=Name\:
sammoa.label.transect.strate=Strate\:
@@ -186,6 +199,8 @@
sammoa.timePattern=HH\:mm\:ss
sammoa.title.about=About Sammoa
sammoa.title.campaign=Campaign
+sammoa.title.choose.export.directory=
+sammoa.title.exportshape=
sammoa.title.flight=System %1$s - Campaign %2$s - Region %3$s - Flight n°%4$d
sammoa.title.home=Home
sammoa.title.validation=
Modified: trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_fr_FR.properties
===================================================================
--- trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_fr_FR.properties 2012-08-01 16:34:48 UTC (rev 342)
+++ trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_fr_FR.properties 2012-08-01 16:35:52 UTC (rev 343)
@@ -5,6 +5,7 @@
sammoa.action.about.tip=About
sammoa.action.break.tip=Break
sammoa.action.cancel=Cancel
+sammoa.action.choose.export.directory=
sammoa.action.circleback.tip=Circle Back
sammoa.action.close=Close
sammoa.action.configuration=Configuration
@@ -12,6 +13,9 @@
sammoa.action.create=Create
sammoa.action.edit=Edit
sammoa.action.export=Export
+sammoa.action.exportEffortsMap=Export des efforts
+sammoa.action.exportMap=Export Cartes
+sammoa.action.exportObservationsMap=Export des Observations
sammoa.action.home=Home
sammoa.action.home.tip=Home
sammoa.action.import=Import
@@ -23,6 +27,7 @@
sammoa.action.next.tip=Next
sammoa.action.onBoard=On Board
sammoa.action.play.tip=Play
+sammoa.action.quitExportMaps=Quitter
sammoa.action.reload.actions=Reload actions
sammoa.action.reload.ui=Reload sammoa ui
sammoa.action.save=Save
@@ -74,9 +79,13 @@
sammoa.label.campaign.name=Name\:
sammoa.label.campaign.observer=Observers\:
sammoa.label.campaign.period=Period\:
+sammoa.label.campaign.period.filter=Period filter
sammoa.label.campaign.region=Region\:
sammoa.label.campaign.strate=Strates\:
sammoa.label.campaign.transect=Transects\:
+sammoa.label.exportDirectory=Répertoire d'export
+sammoa.label.exportEffortsFilename=Nom du fichier (Effort)
+sammoa.label.exportObservationsFilename=Nom du fichier (Observations)
sammoa.label.flight=Flight\:
sammoa.label.flight.beginDate=Start
sammoa.label.flight.comment=Comment\:
@@ -88,6 +97,10 @@
sammoa.label.region.code=Code\:
sammoa.label.region.name=Name\:
sammoa.label.region.species=Species\:
+sammoa.label.routeTypeFilter=Route type filter
+sammoa.label.speciesFilter=Species filter
+sammoa.label.speciesTypeFilter=Species type filter
+sammoa.label.strateFilter=Strate filter
sammoa.label.systemId=System Id\:
sammoa.label.transect.name=Name\:
sammoa.label.transect.strate=Strate\:
@@ -186,6 +199,8 @@
sammoa.timePattern=HH\:mm\:ss
sammoa.title.about=About Sammoa
sammoa.title.campaign=Campaign
+sammoa.title.choose.export.directory=
+sammoa.title.exportshape=
sammoa.title.flight=System %1$s - Campaign %2$s - Region %3$s - Flight n°%4$d
sammoa.title.home=Home
sammoa.title.validation=
Added: trunk/sammoa-ui-swing/src/main/resources/icons/action-fileChooser.png
===================================================================
(Binary files differ)
Property changes on: trunk/sammoa-ui-swing/src/main/resources/icons/action-fileChooser.png
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:mime-type
+ image/png
Added: trunk/sammoa-ui-swing/src/test/resources/logback-test.xml
===================================================================
--- trunk/sammoa-ui-swing/src/test/resources/logback-test.xml (rev 0)
+++ trunk/sammoa-ui-swing/src/test/resources/logback-test.xml 2012-08-01 16:35:52 UTC (rev 343)
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%L
+ SAMMOA :: Application
+
+ $Id$
+ $HeadURL: http://svn.forge.codelutin.com/svn/sammoa/trunk/sammoa-ui-swing/src/main/re… $
+ %%
+ Copyright (C) 2012 UMS 3462, Code Lutin
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program. If not, see
+ <http://www.gnu.org/licenses/gpl-3.0.html>.
+ #L%
+ -->
+
+<configuration>
+
+ <contextName>SAMMOA</contextName>
+
+ <property name="sammoa.log.pattern" value="%date %level [%thread] %logger [:%line] : %msg%n"/>
+
+ <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>${sammoa.log.pattern}</pattern>
+ </encoder>
+ </appender>
+
+ <!--<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
+ <!--<file>${sammoa.log.file}</file>-->
+ <!--<encoder>-->
+ <!--<pattern>${sammoa.log.pattern}</pattern>-->
+ <!--</encoder>-->
+ <!--<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">-->
+ <!--<fileNamePattern>${sammoa.log.file}-%d{yyyy-MM-dd}.log</fileNamePattern>-->
+ <!--<maxHistory>10</maxHistory>-->
+ <!--</rollingPolicy>-->
+ <!--</appender>-->
+
+ <logger name="fr.ulr.sammoa" level="INFO"/>
+
+ <root level="ERROR">
+ <!--<appender-ref ref="FILE"/>-->
+ <appender-ref ref="CONSOLE"/>
+ </root>
+
+</configuration>
Property changes on: trunk/sammoa-ui-swing/src/test/resources/logback-test.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
1
0
r342 - in trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application: . map
by tchemit@users.forge.codelutin.com 01 Aug '12
by tchemit@users.forge.codelutin.com 01 Aug '12
01 Aug '12
Author: tchemit
Date: 2012-08-01 18:34:48 +0200 (Wed, 01 Aug 2012)
New Revision: 342
Url: http://forge.codelutin.com/repositories/revision/sammoa/342
Log:
refs #1203: Export SHP (add service part layout), with no implementation for the moment
Added:
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapModel.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapService.java
Modified:
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java 2012-08-01 16:33:52 UTC (rev 341)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java 2012-08-01 16:34:48 UTC (rev 342)
@@ -29,6 +29,7 @@
import fr.ulr.sammoa.application.audio.AudioRecorderDefault;
import fr.ulr.sammoa.application.gps.GpsConfig;
import fr.ulr.sammoa.application.gps.GpsHandler;
+import fr.ulr.sammoa.application.map.ExportMapService;
import fr.ulr.sammoa.persistence.SammoaPersistence;
import java.lang.reflect.Constructor;
@@ -42,7 +43,7 @@
public class SammoaContext {
protected static SammoaContext instance;
-
+
protected SammoaConfig config;
protected SammoaPersistence persistence;
@@ -51,6 +52,8 @@
protected ReferentialService referentialService;
+ protected ExportMapService exportMapService;
+
protected AudioRecorder audioRecorder;
protected GpsHandler gpsHandler;
@@ -90,7 +93,7 @@
Class<? extends GpsHandler> gpsHandlerClass = gpsConfig.getGpsHandlerClass();
try {
- Constructor<? extends GpsHandler> constructor =
+ Constructor<? extends GpsHandler> constructor =
gpsHandlerClass.getConstructor(GpsConfig.class);
gpsHandler = constructor.newInstance(gpsConfig);
@@ -107,7 +110,7 @@
}
return gpsHandler;
}
-
+
public FlightService getFlightService() {
if (flightService == null) {
flightService = new FlightService(this);
@@ -122,6 +125,13 @@
return referentialService;
}
+ public ExportMapService getExportMapService() {
+ if (exportMapService == null) {
+ exportMapService = new ExportMapService(this);
+ }
+ return exportMapService;
+ }
+
public void open() {
persistence.open(
config.getApplicationConfig().getFlatOptions(),
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapModel.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapModel.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapModel.java 2012-08-01 16:34:48 UTC (rev 342)
@@ -0,0 +1,113 @@
+package fr.ulr.sammoa.application.map;
+
+import com.google.common.collect.Lists;
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.RouteType;
+import fr.ulr.sammoa.persistence.Species;
+import fr.ulr.sammoa.persistence.Strate;
+import fr.ulr.sammoa.persistence.StringRef;
+
+import java.io.File;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Model of export map UI.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.5
+ */
+public class ExportMapModel implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ public static ExportMapModel newModel(File exportDirectory,
+ String exportFilename,
+ Campaign campaign,
+ Date beginDate,
+ Date endDate,
+ List<Strate> strates,
+ List<RouteType> routeTypes,
+ List<Species> species,
+ List<StringRef> speciesTypes) {
+ ExportMapModel result = new ExportMapModel();
+ result.exportDirectory=exportDirectory;
+ result.exportFilename=exportFilename;
+ result.campaign = campaign;
+ result.beginDate = beginDate;
+ result.endDate = endDate;
+ result.strates = strates;
+ result.routeTypes = routeTypes;
+ result.species = species;
+ result.speciesTypes = speciesTypes;
+
+ return result;
+ }
+
+ protected Campaign campaign;
+
+ protected Date beginDate;
+
+ protected Date endDate;
+
+ protected List<Strate> strates;
+
+ protected List<RouteType> routeTypes;
+
+ protected List<Species> species;
+
+ protected List<StringRef> speciesTypes;
+
+ protected File exportDirectory;
+ protected String exportFilename;
+
+ public File getExportDirectory() {
+ return exportDirectory;
+ }
+
+ public String getExportFilename() {
+ return exportFilename;
+ }
+
+ public Campaign getCampaign() {
+ return campaign;
+ }
+
+ public Date getBeginDate() {
+ return beginDate;
+ }
+
+ public Date getEndDate() {
+ return endDate;
+ }
+
+ public List<Strate> getStrates() {
+ if (strates == null) {
+ strates = Lists.newArrayList();
+ }
+ return strates;
+ }
+
+ public List<RouteType> getRouteTypes() {
+ if (routeTypes == null) {
+ routeTypes = Lists.newArrayList();
+ }
+ return routeTypes;
+ }
+
+ public List<Species> getSpecies() {
+ if (species == null) {
+ species = Lists.newArrayList();
+ }
+ return species;
+ }
+
+ public List<StringRef> getSpeciesTypes() {
+ if (speciesTypes == null) {
+ speciesTypes = Lists.newArrayList();
+ }
+ return speciesTypes;
+ }
+
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapService.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapService.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapService.java 2012-08-01 16:34:48 UTC (rev 342)
@@ -0,0 +1,41 @@
+package fr.ulr.sammoa.application.map;
+
+import fr.ulr.sammoa.application.SammoaConfig;
+import fr.ulr.sammoa.application.SammoaContext;
+import fr.ulr.sammoa.persistence.SammoaPersistence;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+
+/**
+ * Export map service
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.5
+ */
+public class ExportMapService {
+
+ private static final Logger logger =
+ LoggerFactory.getLogger(ExportMapService.class);
+
+ protected SammoaContext context;
+
+ protected SammoaConfig config;
+
+ protected SammoaPersistence persistence;
+
+ public ExportMapService(SammoaContext context) {
+ this.context = context;
+ this.persistence = context.getPersistence();
+ this.config = context.getConfig();
+ }
+
+ public void exportEffortsMap(ExportMapModel dataModel) {
+
+ }
+
+ public void exportObservationsMap(ExportMapModel dataModel) {
+
+ }
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
1
0
r341 - trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing
by tchemit@users.forge.codelutin.com 01 Aug '12
by tchemit@users.forge.codelutin.com 01 Aug '12
01 Aug '12
Author: tchemit
Date: 2012-08-01 18:33:52 +0200 (Wed, 01 Aug 2012)
New Revision: 341
Url: http://forge.codelutin.com/repositories/revision/sammoa/341
Log:
remove obsolete package
Removed:
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/referential/
1
0