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
14 Aug '12
Author: tchemit
Date: 2012-08-14 15:09:01 +0200 (Tue, 14 Aug 2012)
New Revision: 420
Url: http://forge.codelutin.com/repositories/revision/sammoa/420
Log:
Clean code :(
please stop creating public api where nobody needs it :( If a field of a class has no public behaviour do not create a
getter on it just to be called in the class.
Sammoa is not a library but a final application, keep it this way. Still some work to do on the flight package.
#refs #1202: Import format application (begin of skeleton)
Added:
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/java-info.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUI.css
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUI.jaxx
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUIHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUIModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/java-info.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/java-info.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/java-info.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/java-info.java
Removed:
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/BaseModel.java
Modified:
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/BetaLayerUI.java
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/java/fr/ulr/sammoa/ui/swing/SammoaColors.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/SammoaUI.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/StartApp.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/ValidationTable.css
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/ValidationTable.jaxx
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/AddAction.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/BeginAction.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/CenterObservationAction.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/CloseAction.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/EndAction.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/LeftObservationAction.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/NextAction.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/NextTransectAction.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/ObservationAction.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/RightObservationAction.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/action/StartAction.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/StopAction.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUI.css
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUI.jaxx
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUIHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUIModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/CurrentTransectHighlightPredicate.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/DeviceStateLED.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBar.css
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBar.jaxx
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/FlightBarModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUI.css
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUI.jaxx
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/NextTransectHighlightPredicate.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ObserverListCellRenderer.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/flight/ObserverTableCellEditor.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/StrateModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectCrossingNumberCellRenderer.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectFlightModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectListCellRenderer.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectListModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectTable.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectTableHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectTableModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/layer/BaseGeoPointLayer.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/layer/LineGeoPointLayer.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/layer/SimpleGeoPointLayer.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/layer/TransectLayer.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/home/HomeUIModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/UIImporter.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapLauncherUI.jaxx
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.css
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.jaxx
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUIHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.css
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanel.css
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/ForceSelectionSelectionModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/ObservationTableModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/RouteTableModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/SpeciesCodeValidator.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/action/MoveToNextEditableCellAction.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/action/MoveToNextRowEditableAction.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/action/MoveToPreviousRowEditableAction.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUI.css
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUI.jaxx
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUIHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUIModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUI.css
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUI.jaxx
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUIHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUIModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/AbstractRowHighlightPredicate.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/ColorTableCellRenderer.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/LogFileInitializer.java
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/TableDataChangeListener.java
trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties
Deleted: 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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/BaseHandler.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -1,61 +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;
-
-import fr.ulr.sammoa.application.SammoaContext;
-import fr.ulr.sammoa.application.flightController.FlightController;
-import fr.ulr.sammoa.ui.swing.flight.FlightUIModel;
-
-/**
- * @author sletellier <letellier(a)codelutin.com>
- */
-@Deprecated
-public abstract class BaseHandler {
-
- @Deprecated
- public SammoaUIContext getUIContext() {
- return SammoaUIContext.getUIContext();
- }
-
- @Deprecated
- public SammoaContext getContext() {
- return getUIContext().getAppContext();
- }
-
- @Deprecated
- public FlightController getFlightController() {
- return getUIContext().getFlightUIHandler().getFlightController();
- }
-
- @Deprecated
- public FlightUIModel getFlightUIModel() {
- return getUIContext().getFlightUIHandler().getModel();
- }
-
- @Deprecated
- public SammoaDecoratorProvider getDecoratorProvider() {
- return getUIContext().getDecoratorProvider();
- }
-}
Deleted: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/BaseModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/BaseModel.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/BaseModel.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -1,63 +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;
-
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeSupport;
-import java.io.Serializable;
-
-/**
- * Created: 11/06/12
- *
- * @author fdesbois <desbois(a)codelutin.com>
- */
-public abstract class BaseModel implements Serializable {
-
- protected final PropertyChangeSupport pcs = new PropertyChangeSupport(this);
-
- public void addPropertyChangeListener(PropertyChangeListener listener) {
- pcs.addPropertyChangeListener(listener);
- }
-
- public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
- pcs.addPropertyChangeListener(propertyName, listener);
- }
-
- public void removePropertyChangeListener(PropertyChangeListener listener) {
- pcs.removePropertyChangeListener(listener);
- }
-
- public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
- pcs.removePropertyChangeListener(propertyName, listener);
- }
-
- protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
- pcs.firePropertyChange(propertyName, oldValue, newValue);
- }
-
- protected void fireIndexedPropertyChange(String propertyName, int index, Object oldValue, Object newValue) {
- pcs.fireIndexedPropertyChange(propertyName, index, oldValue, newValue);
- }
-}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/BetaLayerUI.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/BetaLayerUI.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/BetaLayerUI.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -35,12 +35,12 @@
/**
* Layer qui affiche "beta version".
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
+ * <p/>
+ * Last update : $Date$
+ * By : $Author$
*/
public class BetaLayerUI extends AbstractLayerUI<JComponent> {
@@ -63,6 +63,6 @@
g2.translate(35, 20);
g2.setFont(new Font("Dialog", Font.BOLD, 16));
g2.setColor(Color.BLACK);
- g2.drawString("Beta version",10,10);
+ g2.drawString("Beta version", 10, 10);
}
}
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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUI.css 2012-08-14 13:09:01 UTC (rev 420)
@@ -26,6 +26,7 @@
title:SAMMOA;
defaultCloseOperation:{JFrame.DO_NOTHING_ON_CLOSE};
}
+
#menuFile {
text:"sammoa.menu.file";
toolTipText:"sammoa.menu.file.tip";
@@ -56,21 +57,25 @@
text:"sammoa.menu.showLogs";
toolTipText:"sammoa.menu.showLogs.tip";
}
+
#menuShowValidation {
text:"sammoa.menu.showValidation";
toolTipText:"sammoa.menu.showValidation.tip";
}
+
#menuHelp {
text:"sammoa.menu.help";
toolTipText:"sammoa.menu.help.tip";
mnemonic:E;
}
+
#menuHelpSite {
text:"sammoa.action.site";
toolTipText:"sammoa.action.site.tip";
actionIcon:"site";
mnemonic:S;
}
+
#menuHelpAbout {
text:"sammoa.action.about";
toolTipText:"sammoa.action.about.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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUI.jaxx 2012-08-14 13:09:01 UTC (rev 420)
@@ -29,11 +29,8 @@
<import>
java.awt.BorderLayout
- java.awt.Dimension
- java.util.Locale
javax.swing.JFrame
org.jdesktop.swingx.JXTitledPanel
- fr.ulr.sammoa.ui.swing.flight.FlightUI
</import>
<MainUIHandler id='handler'
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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -35,8 +35,9 @@
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.input.sammoa.ImportApplicationUI;
+import fr.ulr.sammoa.ui.swing.io.output.map.ExportMapUI;
import fr.ulr.sammoa.ui.swing.io.output.sammoa.ExportApplicationUI;
-import fr.ulr.sammoa.ui.swing.io.output.map.ExportMapUI;
import fr.ulr.sammoa.ui.swing.util.SammoaUtil;
import jaxx.runtime.SwingUtil;
import jaxx.runtime.swing.AboutPanel;
@@ -47,8 +48,11 @@
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.BorderLayout;
+import java.awt.Desktop;
import java.io.File;
import java.net.URL;
@@ -63,13 +67,13 @@
public class MainUIHandler implements SammoaUIHandler {
private static final Logger logger = LoggerFactory.getLogger(MainUIHandler.class);
-
+
protected SammoaUIContext context;
protected MainUI ui;
protected JComponent currentBody;
-
+
protected MainUIHandler(SammoaUIContext context,
MainUI ui) {
this.context = context;
@@ -126,7 +130,7 @@
}
public void setScreen(SammoaScreen screen) {
-
+
if (screen.equals(ui.getScreen())) {
// do nothing
@@ -190,6 +194,12 @@
ui.getBody().setTitle(_("sammoa.title.exportApplication"));
ui.getBody().add(currentBody);
break;
+ case IMPORT_APPLICATION:
+ currentBody = new ImportApplicationUI(context);
+ context.getSwingSession().add(currentBody);
+ ui.getBody().setTitle(_("sammoa.title.importApplication"));
+ ui.getBody().add(currentBody);
+ break;
}
ui.setScreen(screen);
@@ -249,7 +259,7 @@
// categorie applications
helper.addCategory(n_("sammoa.config.category.applications"),
- n_("sammoa.config.category.applications.description"));
+ n_("sammoa.config.category.applications.description"));
helper.addOption(SammoaConfig.SammoaConfigOption.SYSTEM_ID);
helper.addOption(SammoaConfig.SammoaConfigOption.DATA_DIRECTORY);
@@ -269,18 +279,18 @@
// helper.setOptionCallBack("ui");
helper.registerCallBack("actions",
- n_("sammoa.action.reload.actions"),
- SwingUtil.createActionIcon("config"),
- new Runnable() {
+ n_("sammoa.action.reload.actions"),
+ SwingUtil.createActionIcon("config"),
+ new Runnable() {
- @Override
- public void run() {
- context.getFlightUIHandler().initActions();
- }
- });
+ @Override
+ public void run() {
+ context.getFlightUIHandler().initActions();
+ }
+ });
// categorie raccourcis
helper.addCategory(n_("sammoa.config.category.shortcuts"),
- n_("sammoa.config.category.shortcuts.description"));
+ n_("sammoa.config.category.shortcuts.description"));
helper.addOption(SammoaConfig.SammoaConfigOption.KEY_START);
helper.setOptionCallBack("actions");
helper.addOption(SammoaConfig.SammoaConfigOption.KEY_STOP);
@@ -304,24 +314,24 @@
// gps
helper.registerCallBack("gps",
- n_("sammoa.action.reload.gps"),
- SwingUtil.createActionIcon("config"),
- new Runnable() {
+ 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();
- try {
- flightUIHandler.getFlightController().openGpsDevice(gpsConfig);
- } catch (DeviceTechnicalException ex) {
- logger.error("Error on new GpsHandler", ex);
- SammoaUtil.showErrorMessage(ui, ex.getMessageWithCause());
- }
- }
- }
- });
+ @Override
+ public void run() {
+ FlightUIHandler flightUIHandler = context.getFlightUIHandler();
+ if (flightUIHandler != null) {
+ GpsConfig gpsConfig = context.getConfig().getGpsConfig();
+ try {
+ flightUIHandler.getFlightController().openGpsDevice(gpsConfig);
+ } catch (DeviceTechnicalException ex) {
+ logger.error("Error on new GpsHandler", ex);
+ SammoaUtil.showErrorMessage(ui, ex.getMessageWithCause());
+ }
+ }
+ }
+ });
helper.addCategory(n_("sammoa.config.category.gps"),
n_("sammoa.config.category.gps.description"));
helper.addOption(GpsConfig.GpsConfigOption.GPS_HANDLER,
@@ -352,7 +362,7 @@
helper.displayUI(ui, false);
}
- public void showHome() {
+ public void showHome() {
if (checkCurrentFlight(_("sammoa.confirmDialog.flightInProgress.message.showHome"))) {
setScreen(SammoaScreen.HOME);
}
@@ -363,7 +373,7 @@
ApplicationConfig applicationConfig = context.getConfig().getApplicationConfig();
String iconPath = applicationConfig.getOption("application.icon.path");
- String name="sammoa-ui-swing";
+ String name = "sammoa-ui-swing";
String licensePath = "META-INF/" + name + "-LICENSE.txt";
String thirdPartyPath = "META-INF/" + name + "-THIRD-PARTY.txt";
@@ -419,7 +429,7 @@
* progress. In this case, a confirm dialog is opened to display the
* given {@code message} at warning level. If the user accept, the
* response will be true.
- *
+ *
* @param message String message to display to user when flight is in progress
* @return true if the confirmation is Ok or no flight is in progress
*/
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaColors.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaColors.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaColors.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -23,7 +23,7 @@
* #L%
*/
-import java.awt.*;
+import java.awt.Color;
/**
* Created: 16/07/12
@@ -31,13 +31,13 @@
* @author fdesbois <desbois(a)codelutin.com>
*/
public final class SammoaColors {
-
+
private SammoaColors() {
// class with statics doesn't need constructor
}
-
+
public static final Color ON_EFFORT_BACKGROUND_COLOR = Color.YELLOW;
-
+
public static final Color OBSERVER_PILOT_BACKGROUND_COLOR = Color.CYAN;
public static final Color CURRENT_TRANSECT_ROW_COLOR = Color.YELLOW;
@@ -46,18 +46,18 @@
public static final Color POSITION_RIGHT_COLOR = Color.GREEN;
- public static final Color NEXT_TRANSECT_ROW_COLOR = new Color(233,255,235);
+ public static final Color NEXT_TRANSECT_ROW_COLOR = new Color(233, 255, 235);
- public static final Color OBSERVATION_FOR_ROUTE_ROW_COLOR = new Color(233,255,235);
+ public static final Color OBSERVATION_FOR_ROUTE_ROW_COLOR = new Color(233, 255, 235);
- public static final Color ROUTE_NO_MODIFICATION_ROW_COLOR = new Color(255,233,233);
+ public static final Color ROUTE_NO_MODIFICATION_ROW_COLOR = new Color(255, 233, 233);
public static final Color FLIGHT_TRACKING_LINE_COLOR = Color.RED;
-
+
public static final Color TRANSECT_LINE_COLOR = new Color(102, 0, 255);
public static final Color TRANSECT_SELECT_LINE_COLOR = new Color(255, 126, 0);
- public static final Color TRANSECT_WITHOUT_GRAPHIC_BACKGROUND_COLOR = new Color(255,233,233);
-
+ public static final Color TRANSECT_WITHOUT_GRAPHIC_BACKGROUND_COLOR = new Color(255, 233, 233);
+
}
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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaDecoratorProvider.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -112,7 +112,7 @@
} else {
result += " - " + _("sammoa.flight.decorator.notEnded");
}
-
+
} else {
result += " - " + _("sammoa.flight.decorator.notStarted");
}
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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaScreen.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -36,7 +36,11 @@
FLIGHT,
+ IMPORT_APPLICATION,
+
EXPORT_APPLICATION,
- EXPORT_MAP
+ EXPORT_MAP,
+
+ VALIDATION
}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUI.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUI.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUI.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -2,8 +2,8 @@
/*
* #%L
* SAMMOA :: UI Swing
- * $Id:$
- * $HeadURL:$
+ * $Id$
+ * $HeadURL$
* %%
* Copyright (C) 2012 UMS 3462, Code Lutin
* %%
@@ -31,6 +31,6 @@
* @author fdesbois <desbois(a)codelutin.com>
*/
public interface SammoaUI<H extends SammoaUIHandler> extends JAXXObject {
-
+
H getHandler();
}
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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUIContext.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -27,7 +27,10 @@
import com.google.common.base.Preconditions;
import fr.ulr.sammoa.application.SammoaConfig;
import fr.ulr.sammoa.application.SammoaContext;
+import fr.ulr.sammoa.application.SammoaService;
import fr.ulr.sammoa.application.flightController.FlightController;
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.Flight;
import fr.ulr.sammoa.ui.swing.flight.FlightUIHandler;
import fr.ulr.sammoa.ui.swing.flight.FlightUIModel;
import org.nuiton.widget.SwingSession;
@@ -77,6 +80,10 @@
return context;
}
+ public <S extends SammoaService> S newService(Class<S> serviceType) {
+ return getAppContext().newService(serviceType);
+ }
+
public SammoaConfig getConfig() {
return context.getConfig();
}
@@ -128,31 +135,23 @@
return flightId;
}
- public void setFlightScreen(String flightId) {
- this.flightId = flightId;
- mainUIHandler.setScreen(SammoaScreen.FLIGHT);
+ public void changeScreen(SammoaScreen newScreen) {
+ changeScreen(newScreen, null, null);
}
- public void setCampaignScreen(String campaignId) {
- this.campaignId = campaignId;
- mainUIHandler.setScreen(SammoaScreen.CAMPAIGN);
+ public void changeScreen(SammoaScreen newScreen,
+ Campaign campaign,
+ Flight flight) {
+ if (campaign != null) {
+ this.campaignId = campaign.getTopiaId();
+ }
+ if (flight != null) {
+ this.flightId = flight.getTopiaId();
+ this.campaignId = flight.getCampaign().getTopiaId();
+ }
+ mainUIHandler.setScreen(newScreen);
}
- public void setHomeScreen() {
- mainUIHandler.setScreen(SammoaScreen.HOME);
- }
-
- public void setExportMapScreen(String campaignId) {
- this.campaignId = campaignId;
- mainUIHandler.setScreen(SammoaScreen.EXPORT_MAP);
- }
-
- public void setExportApplicationScreen(String campaignId, String flightId) {
- this.campaignId = campaignId;
- this.flightId = flightId;
- mainUIHandler.setScreen(SammoaScreen.EXPORT_APPLICATION);
- }
-
public void setStatusMessage(String message) {
mainUIHandler.getUI().getStatus().setStatus(message);
}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/StartApp.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/StartApp.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/StartApp.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -45,7 +45,7 @@
private static final Logger logger = LoggerFactory.getLogger(StartApp.class);
- public static void main(String[] args) {
+ public static void main(String... args) {
// Initialization of SammoaContext with configuration from sammoa.properties
SammoaConfig config = new SammoaConfig("sammoa.properties", args);
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/ValidationTable.css
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/ValidationTable.css 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/ValidationTable.css 2012-08-14 13:09:01 UTC (rev 420)
@@ -24,6 +24,7 @@
#scrollPanel {
columnHeaderView:{errorTable.getTableHeader()};
}
+
#errorTable {
rowSelectionAllowed:true;
autoCreateRowSorter:true;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/ValidationTable.jaxx
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/ValidationTable.jaxx 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/ValidationTable.jaxx 2012-08-14 13:09:01 UTC (rev 420)
@@ -27,11 +27,7 @@
<JScrollPane id='scrollPanel' constraints='BorderLayout.CENTER'>
<import>
-
- jaxx.runtime.validator.swing.SwingValidatorUtil
- jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer
jaxx.runtime.validator.swing.SwingValidatorMessageTableModel
-
</import>
<ValidationTableHandler id='handler' constructorParams='this'/>
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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/ValidationTableHandler.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -31,8 +31,14 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.swing.*;
-import java.awt.*;
+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 java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/AddAction.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/AddAction.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/AddAction.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -27,7 +27,7 @@
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import org.nuiton.util.Resource;
-import javax.swing.*;
+import javax.swing.Action;
import java.awt.event.ActionEvent;
import static org.nuiton.i18n.I18n._;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/BeginAction.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/BeginAction.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/BeginAction.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -28,7 +28,7 @@
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import org.nuiton.util.Resource;
-import javax.swing.*;
+import javax.swing.Action;
import java.awt.event.ActionEvent;
import static org.nuiton.i18n.I18n._;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/CenterObservationAction.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/CenterObservationAction.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/CenterObservationAction.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -26,7 +26,7 @@
import fr.ulr.sammoa.persistence.Position;
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
-import javax.swing.*;
+import javax.swing.Action;
import static org.nuiton.i18n.I18n._;
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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/CircleBackAction.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -30,7 +30,9 @@
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import org.nuiton.util.Resource;
-import javax.swing.*;
+import javax.swing.Action;
+import javax.swing.ImageIcon;
+import javax.swing.JComponent;
import java.awt.event.ActionEvent;
import java.util.List;
@@ -60,8 +62,8 @@
Observation observation = null;
Object source = e.getSource();
if (source instanceof JComponent) {
- JComponent comp = (JComponent)source;
- observation = (Observation)comp.getClientProperty(CLIENT_PROPERTY_OBSERVATION);
+ JComponent comp = (JComponent) source;
+ observation = (Observation) comp.getClientProperty(CLIENT_PROPERTY_OBSERVATION);
}
if (observation == null) {
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/CloseAction.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/CloseAction.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/CloseAction.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -42,7 +42,7 @@
public class CloseAction extends AbstractAction {
private static final long serialVersionUID = 1L;
-
+
protected JComponent ui;
public CloseAction(JComponent ui) {
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/EndAction.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/EndAction.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/EndAction.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -27,7 +27,7 @@
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import org.nuiton.util.Resource;
-import javax.swing.*;
+import javax.swing.Action;
import java.awt.event.ActionEvent;
import static org.nuiton.i18n.I18n._;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/LeftObservationAction.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/LeftObservationAction.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/LeftObservationAction.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -26,7 +26,7 @@
import fr.ulr.sammoa.persistence.Position;
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
-import javax.swing.*;
+import javax.swing.Action;
import static org.nuiton.i18n.I18n._;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/NextAction.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/NextAction.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/NextAction.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -27,7 +27,7 @@
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import org.nuiton.util.Resource;
-import javax.swing.*;
+import javax.swing.Action;
import java.awt.event.ActionEvent;
import static org.nuiton.i18n.I18n._;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/NextTransectAction.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/NextTransectAction.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/NextTransectAction.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -27,7 +27,8 @@
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import org.nuiton.util.Resource;
-import javax.swing.*;
+import javax.swing.Action;
+import javax.swing.JComponent;
import java.awt.event.ActionEvent;
import static org.nuiton.i18n.I18n._;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/ObservationAction.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/ObservationAction.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/ObservationAction.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -39,7 +39,7 @@
private static final long serialVersionUID = 1L;
protected Position position;
-
+
public ObservationAction(String name, SammoaUIContext context, Position position) {
super(name, context);
this.position = position;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/RightObservationAction.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/RightObservationAction.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/RightObservationAction.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -26,7 +26,7 @@
import fr.ulr.sammoa.persistence.Position;
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
-import javax.swing.*;
+import javax.swing.Action;
import static org.nuiton.i18n.I18n._;
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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/SammoaAction.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -31,7 +31,8 @@
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import fr.ulr.sammoa.ui.swing.flight.FlightUIModel;
-import javax.swing.*;
+import javax.swing.AbstractAction;
+import javax.swing.Icon;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
@@ -74,7 +75,7 @@
protected FlightUIModel getModel() {
return context.getFlightUIHandler().getModel();
}
-
+
protected FlightState getFlightState() {
return getModel().getFlightState();
}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/StartAction.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/StartAction.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/StartAction.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -27,7 +27,7 @@
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import org.nuiton.util.Resource;
-import javax.swing.*;
+import javax.swing.Action;
import java.awt.event.ActionEvent;
import static org.nuiton.i18n.I18n._;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/StopAction.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/StopAction.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/action/StopAction.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -27,7 +27,7 @@
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import org.nuiton.util.Resource;
-import javax.swing.*;
+import javax.swing.Action;
import java.awt.event.ActionEvent;
import static org.nuiton.i18n.I18n._;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUI.css
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUI.css 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUI.css 2012-08-14 13:09:01 UTC (rev 420)
@@ -24,25 +24,30 @@
*/
FileEditor {
- acceptAllFileFilterUsed:false;
+ acceptAllFileFilterUsed:false;
+ directoryEnabled:false;
}
#campaignRegionLabel {
text:"sammoa.label.campaign.region";
}
+
#regionListModel{
elements:{getModel().getRegionReferential()};
selectedItem:{getModel().getRegion()};
}
+
#regionComboBox{
model:{regionListModel};
enabled:{!getModel().isUpdate()};
renderer:{new DecoratorProviderListCellRenderer(getHandler().getDecoratorProvider())};
}
+
#editRegionButton {
enabled:{getModel().getRegion() != null};
text:"sammoa.action.edit";
}
+
#newRegionButton {
enabled:{!getModel().isUpdate()};
text:"sammoa.action.new";
@@ -51,6 +56,7 @@
#campaignCodeLabel {
text:"sammoa.label.campaign.code";
}
+
#campaignCodeField {
enabled:{!getModel().isUpdate()};
text:{getModel().getCode()};
@@ -59,6 +65,7 @@
#campaignNameLabel {
text:"sammoa.label.campaign.name";
}
+
#campaignNameField {
text:{getModel().getName()};
}
@@ -66,16 +73,20 @@
#campaignPeriodLabel {
text:"sammoa.label.campaign.period";
}
+
#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()};
@@ -84,37 +95,38 @@
#campaignStrateLabel {
text:"sammoa.label.campaign.strate";
}
+
#strateFileEditor {
title:"sammoa.dialog.title.strateFile";
exts:"shp";
extsDescription:"Shape files";
- directoryEnabled:{false};
}
#campaignTransectLabel {
text:"sammoa.label.campaign.transect";
}
+
#transectFileEditor {
title:"sammoa.dialog.title.transectFile";
exts:"shp";
extsDescription:"Shape files";
- directoryEnabled:{false};
}
#campaignObserverLabel {
text:"sammoa.label.campaign.observer";
}
+
#observerFileEditor {
title:"sammoa.dialog.title.observerFile";
exts:"csv";
extsDescription:"CSV files";
- directoryEnabled:{false};
}
#saveButton {
text:"sammoa.action.save";
enabled:{validator.isValid()};
}
+
#cancelButton {
text:"sammoa.action.cancel";
}
@@ -124,6 +136,7 @@
height:200;
width:500;
}
+
#errorTable {
rowSelectionAllowed:true;
autoCreateRowSorter:true;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUI.jaxx
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUI.jaxx 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUI.jaxx 2012-08-14 13:09:01 UTC (rev 420)
@@ -26,9 +26,7 @@
implements='fr.ulr.sammoa.ui.swing.SammoaUI<CampaignUIHandler>'>
<import>
- fr.ulr.sammoa.application.flightController.FlightState
fr.ulr.sammoa.persistence.Region
- fr.ulr.sammoa.persistence.Campaign
fr.ulr.sammoa.ui.swing.SammoaUIContext
jaxx.runtime.swing.JAXXDatePicker
@@ -36,7 +34,6 @@
jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer
jaxx.runtime.swing.editor.FileEditor
jaxx.runtime.validator.swing.SwingValidatorUtil
- jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer
jaxx.runtime.validator.swing.SwingValidatorMessageTableModel
static org.nuiton.i18n.I18n._
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUIHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUIHandler.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUIHandler.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -36,17 +36,17 @@
import fr.ulr.sammoa.persistence.Strate;
import fr.ulr.sammoa.persistence.Transect;
import fr.ulr.sammoa.ui.swing.SammoaDecoratorProvider;
+import fr.ulr.sammoa.ui.swing.SammoaScreen;
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import fr.ulr.sammoa.ui.swing.SammoaUIHandler;
+import fr.ulr.sammoa.ui.swing.io.input.CsvImporter;
+import fr.ulr.sammoa.ui.swing.io.input.UIImporter;
import fr.ulr.sammoa.ui.swing.region.RegionUI;
import fr.ulr.sammoa.ui.swing.region.RegionUIModel;
-import fr.ulr.sammoa.ui.swing.io.input.CsvImporter;
import fr.ulr.sammoa.ui.swing.util.SammoaUtil;
-import fr.ulr.sammoa.ui.swing.io.input.UIImporter;
import jaxx.runtime.swing.ErrorDialogUI;
import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer;
import jaxx.runtime.validator.swing.SwingValidatorUtil;
-import org.nuiton.util.csv.ImportModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -76,11 +76,18 @@
protected final UIImporter uiImporter;
+ protected final ImportMapService importMapService;
+
+ protected final ImportCsvService importCsvService;
+
public CampaignUIHandler(SammoaUIContext context,
CampaignUI ui) {
this.context = context;
this.ui = ui;
this.uiImporter = new UIImporter(this.ui);
+
+ importMapService = context.newService(ImportMapService.class);
+ importCsvService = context.newService(ImportCsvService.class);
}
public SammoaUIContext getContext() {
@@ -194,7 +201,7 @@
);
}
- success &= uiImporter.importShape(strateImporter, strateFile, campaignStorage);
+ success &= uiImporter.importShape(strateImporter, campaignStorage, strateFile);
}
File transectFile = ui.getTransectFileEditor().getSelectedFile();
@@ -207,8 +214,8 @@
}
success &= uiImporter.importShape(transectImporter,
- transectFile,
- campaignStorage);
+ campaignStorage, transectFile
+ );
}
final File observerFile = ui.getObserverFileEditor().getSelectedFile();
@@ -236,7 +243,7 @@
}
public void close() {
- context.setHomeScreen();
+ context.changeScreen(SammoaScreen.HOME);
}
protected ComponentListener regionUIListener = new ComponentListener() {
@@ -292,51 +299,28 @@
@Override
public String importCsvFile(File file) throws IOException {
- ImportCsvService service = new ImportCsvService(context.getAppContext());
- int nbImported = service.importObservers(getModel().getId(), file);
+ int nbImported = importCsvService.importObservers(getModel().getId(), file);
return _("sammoa.messageDialog.observers.import.success", nbImported);
}
};
- protected ShpImporter<Strate> strateImporter = new ShpImporter<Strate>() {
+ protected ShpImporter<Strate> strateImporter = new ShpImporter<Strate>(new StrateImportModel(), "strates") {
protected String onDbfLoaded(Iterable<Strate> elements, CampaignStorage storage) {
- ImportMapService service = new ImportMapService(context.getAppContext());
- int nbImported = service.importStrates(storage.getCampaignId(), elements);
+ int nbImported = importMapService.importStrates(storage.getCampaignId(), elements);
return _("sammoa.messageDialog.strates.import.success", nbImported);
}
- @Override
- protected ImportModel<Strate> getModel() {
- return new StrateImportModel();
- }
-
- @Override
- protected String getCopyFileName() {
- return "strates";
- }
-
};
- protected ShpImporter<Transect> transectImporter = new ShpImporter<Transect>() {
+ protected ShpImporter<Transect> transectImporter = new ShpImporter<Transect>(new TransectImportModel(), "transects") {
@Override
protected String onDbfLoaded(Iterable<Transect> elements, CampaignStorage storage) {
- ImportMapService service = new ImportMapService(context.getAppContext());
- int nbImported = service.importTransects(storage.getCampaignId(), elements);
+ int nbImported = importMapService.importTransects(storage.getCampaignId(), elements);
return _("sammoa.messageDialog.transects.import.success", nbImported);
}
- @Override
- protected ImportModel<Transect> getModel() {
- return new TransectImportModel();
- }
-
- @Override
- protected String getCopyFileName() {
- return "transects";
- }
-
};
}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUIModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUIModel.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUIModel.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -27,7 +27,7 @@
import fr.ulr.sammoa.persistence.Campaign;
import fr.ulr.sammoa.persistence.CampaignImpl;
import fr.ulr.sammoa.persistence.Region;
-import fr.ulr.sammoa.ui.swing.BaseModel;
+import org.jdesktop.beans.AbstractSerializableBean;
import java.util.Date;
import java.util.List;
@@ -37,8 +37,8 @@
*
* @author fdesbois <desbois(a)codelutin.com>
*/
-public class CampaignUIModel extends BaseModel {
-
+public class CampaignUIModel extends AbstractSerializableBean {
+
public static final String PROPERTY_CAMPAIGN_REFERENTIAL = "campaignReferential";
public static final String PROPERTY_REGION_REFERENTIAL = "regionReferential";
@@ -56,21 +56,23 @@
public static final String PROPERTY_END_DATE = "endDate";
public static final String PROPERTY_UPDATE = "update";
-
+
+ private static final long serialVersionUID = 1L;
+
protected List<Campaign> campaignReferential;
protected List<Region> regionReferential;
-
+
protected String id;
-
+
protected String code;
-
+
protected String name;
-
+
protected Region region;
-
+
protected Date beginDate;
-
+
protected Date endDate;
protected boolean update;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/CurrentTransectHighlightPredicate.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/CurrentTransectHighlightPredicate.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/CurrentTransectHighlightPredicate.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -26,9 +26,7 @@
import fr.ulr.sammoa.persistence.TransectFlight;
import fr.ulr.sammoa.ui.swing.util.AbstractRowHighlightPredicate;
-/**
- * @author sletellier <letellier(a)codelutin.com>
- */
+/** @author sletellier <letellier(a)codelutin.com> */
public class CurrentTransectHighlightPredicate extends AbstractRowHighlightPredicate {
protected TransectTableModel model;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/DeviceStateLED.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/DeviceStateLED.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/DeviceStateLED.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -31,12 +31,13 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.swing.*;
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
/**
* Panel qui écoute l'état du peripherique pour afficher à l'utilsateur un voyant
* lunineux dépendant de l'état du peripherique.
- *
+ * <p/>
* Indicateurs pour l'état du peripherique
* <ul>
* <li>voyant gris : pas de peripherique
@@ -44,7 +45,7 @@
* <li>voyant vert : enregistrement en cours
* <li>voyant rouge clignotant : enregistrement mais pas de données
* </ul>
- *
+ *
* @author chatellier
*/
public class DeviceStateLED extends JLabel implements DeviceStateListener {
@@ -57,8 +58,11 @@
protected DeviceState state;
protected static final ImageIcon NO_DEVICE_ICON = Resource.getIcon("/icons/device/nodevice.png");
+
protected static final ImageIcon READY_ICON = Resource.getIcon("/icons/device/ready.png");
+
protected static final ImageIcon RECORDING_ICON = Resource.getIcon("/icons/device/recording.png");
+
protected static final ImageIcon NO_DATA_ICON = Resource.getIcon("/icons/device/nodata.gif");
@Override
@@ -73,7 +77,7 @@
if (oldValue != state) {
logger.debug("[{}] Update LED status: {}",
- getClass().getSimpleName(), state);
+ getClass().getSimpleName(), state);
switch (state) {
case NO_DEVICE:
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBar.css
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBar.css 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBar.css 2012-08-14 13:09:01 UTC (rev 420)
@@ -22,49 +22,64 @@
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
+
#lblTime {
delay:1000;
pattern:"dd/MM/yyyy HH:mm:ss";
}
+
#beginButton {
_actionName: {"begin"};
}
+
#endButton {
_actionName: {"end"};
}
+
#nextButton {
_actionName: {"next"};
}
+
#effortButtonPanel {
background:{model.getEffortPanelColor()};
}
+
#statusPanel {
background:{model.getEffortPanelColor()};
}
+
#lblEffort {
text:{flightUIModel.getFlightState().name()};
}
+
#lblTransect {
text:{flightUIModel.getCurrentRoute().getTransectFlight().getTransect().getName()};
}
+
#lblStatus {
text:{flightUIModel.getCurrentRoute().getRouteType().name()};
}
+
#cbPanel {
background:{model.getEffortPanelColor()};
}
+
#gpsLED {
text:"sammoa.statusBar.gps";
}
+
#audioLED {
text:"sammoa.statusBar.audio";
}
+
#indicatorPanel {
background:{model.getEffortPanelColor()};
}
+
#lblAlt {
text:{model.getAlt()};
}
+
#lblSpeed {
text:{model.getSpeed()};
}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBar.jaxx
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBar.jaxx 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBar.jaxx 2012-08-14 13:09:01 UTC (rev 420)
@@ -28,7 +28,6 @@
javax.swing.BoxLayout
javax.swing.SwingConstants
jaxx.runtime.swing.ClockWidget
- fr.ulr.sammoa.application.flightController.FlightState
</import>
<script><![CDATA[
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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBarHandler.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -26,20 +26,19 @@
import fr.ulr.sammoa.application.device.audio.AudioRecorder;
import fr.ulr.sammoa.application.device.gps.GpsHandler;
+import fr.ulr.sammoa.application.flightController.FlightController;
import fr.ulr.sammoa.application.flightController.FlightState;
import fr.ulr.sammoa.persistence.Route;
-import fr.ulr.sammoa.ui.swing.BaseHandler;
import fr.ulr.sammoa.ui.swing.SammoaColors;
+import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
-/**
- * @author sletellier <letellier(a)codelutin.com>
- */
-public class FlightBarHandler extends BaseHandler implements PropertyChangeListener {
+/** @author sletellier <letellier(a)codelutin.com> */
+public class FlightBarHandler implements PropertyChangeListener {
private static final Logger logger = LoggerFactory.getLogger(FlightBarHandler.class);
@@ -53,6 +52,16 @@
return view.getModel();
}
+ @Deprecated
+ public FlightUIModel getFlightUIModel() {
+ return SammoaUIContext.getUIContext().getFlightUIHandler().getModel();
+ }
+
+ @Deprecated
+ public FlightController getFlightController() {
+ return SammoaUIContext.getUIContext().getFlightUIHandler().getFlightController();
+ }
+
public void init() {
getFlightUIModel().addPropertyChangeListener(this);
@@ -80,7 +89,7 @@
// si l'etat du vol passe en off effort
// affiche à l'utilisateur
- FlightState newState = (FlightState)evt.getNewValue();
+ FlightState newState = (FlightState) evt.getNewValue();
if (FlightState.OFF_EFFORT.equals(newState)) {
getModel().setEffortPanelColor(SammoaColors.ON_EFFORT_BACKGROUND_COLOR);
@@ -93,7 +102,7 @@
Route route = (Route) evt.getNewValue();
logger.debug("New value received for current route {}", route);
-
+
if (route == null || route.getTransectFlight() == null) {
// set null will hide label
view.getLblTransect().setText(null);
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBarModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBarModel.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightBarModel.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -27,21 +27,21 @@
import fr.ulr.sammoa.application.device.gps.GpsLocationEvent;
import fr.ulr.sammoa.application.device.gps.GpsLocationListener;
import fr.ulr.sammoa.persistence.GeoPoint;
-import fr.ulr.sammoa.ui.swing.BaseModel;
+import org.jdesktop.beans.AbstractSerializableBean;
-import java.awt.*;
+import java.awt.Color;
import static org.nuiton.i18n.I18n._;
-/**
- * @author sletellier <letellier(a)codelutin.com>
- */
-public class FlightBarModel extends BaseModel implements GpsLocationListener {
+/** @author sletellier <letellier(a)codelutin.com> */
+public class FlightBarModel extends AbstractSerializableBean implements GpsLocationListener {
private static final long serialVersionUID = 1L;
public static final String PROPERTY_ALT = "alt";
+
public static final String PROPERTY_SPEED = "speed";
+
public static final String PROPERTY_EFFORT_PANEL_COLOR = "effortPanelColor";
protected float alt;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUI.css
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUI.css 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUI.css 2012-08-14 13:09:01 UTC (rev 420)
@@ -22,23 +22,28 @@
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
+
JSplitPane {
oneTouchExpandable: true;
continuousLayout: true;
dividerSize: 12;
}
+
#mainSplitPane {
orientation:{JSplitPane.VERTICAL_SPLIT};
resizeWeight:0.5;
}
+
#mapPanel {
minimumSize:{new Dimension(0,0)};
preferredSize:{new Dimension(0,0)};
}
+
#effortSplitPane {
orientation:{JSplitPane.VERTICAL_SPLIT};
resizeWeight:0.8;
}
+
#effortPanel {
minimumSize:{new Dimension(0,0)};
preferredSize:{new Dimension(0,0)};
@@ -52,6 +57,7 @@
#flightImmatriculationLabel {
text:"sammoa.label.flight.immatriculation";
}
+
#flightImmatriculationField {
text:{bean.getImmatriculation()};
}
@@ -63,6 +69,7 @@
#flightCommentLabel {
text:"sammoa.label.flight.comment";
}
+
#flightCommentArea {
text:{bean.getComment()};
}
@@ -70,9 +77,11 @@
#flightPeriodLabel {
text:"sammoa.label.flight.period";
}
+
#flightBeginDateLabel {
text:"sammoa.label.flight.beginDate";
}
+
#beginDatePicker {
patternLayout:{_("sammoa.dateTimePattern")};
showPopupButton:false;
@@ -83,6 +92,7 @@
#flightEndDateLabel {
text:"sammoa.label.flight.endDate";
}
+
#endDatePicker {
patternLayout:{_("sammoa.dateTimePattern")};
showPopupButton:false;
@@ -93,9 +103,11 @@
#observerLabel {
text:"sammoa.label.observers";
}
+
#observerListSelectorModel {
bean:{bean};
}
+
#observerSelector {
enabled:{model.getFlightState() == FlightState.WAITING};
renderer:{new ObserverListCellRenderer(listCellRenderer)};
@@ -105,24 +117,30 @@
#strateCombobox {
renderer:{new DecoratorProviderListCellRenderer(handler.getDecoratorProvider())}
}
+
#transectLabel {
text:"sammoa.label.transects";
}
+
#transectSelectionModel {
selectionMode:{ListSelectionModel.MULTIPLE_INTERVAL_SELECTION};
}
+
#transectList {
model:{transectListModel};
selectionModel:{transectSelectionModel};
cellRenderer:{new TransectListCellRenderer(listCellRenderer)};
}
+
#transectNewButton {
text:"sammoa.action.new";
}
+
#transectAddButton {
actionIcon:"add";
enabled:{model.isTransectSelectionExists()}
}
+
#transectTable {
selectionModel:{transectFlightSelectionModel};
}
@@ -130,6 +148,7 @@
#startButton {
_actionName: {"start"};
}
+
#stopButton {
_actionName: {"stop"};
}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUI.jaxx
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUI.jaxx 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUI.jaxx 2012-08-14 13:09:01 UTC (rev 420)
@@ -28,8 +28,6 @@
<import>
java.awt.BorderLayout
java.awt.Dimension
- java.util.Locale
- javax.swing.JFrame
javax.swing.ListSelectionModel
javax.swing.DefaultListSelectionModel
@@ -39,10 +37,8 @@
fr.ulr.sammoa.persistence.Flight
fr.ulr.sammoa.persistence.Observer
- fr.ulr.sammoa.persistence.Strate
fr.ulr.sammoa.application.flightController.FlightState
fr.ulr.sammoa.ui.swing.SammoaUIContext
- fr.ulr.sammoa.ui.swing.ValidationTable
fr.ulr.sammoa.ui.swing.observations.EffortPanel
</import>
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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUIHandler.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -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;
@@ -39,24 +43,54 @@
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
-import com.google.common.collect.*;
+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.FlightService;
import fr.ulr.sammoa.application.ReferentialService;
import fr.ulr.sammoa.application.SammoaConfig;
-import fr.ulr.sammoa.application.SammoaContext;
import fr.ulr.sammoa.application.device.DeviceState;
import fr.ulr.sammoa.application.device.DeviceStateEvent;
import fr.ulr.sammoa.application.device.DeviceStateListener;
import fr.ulr.sammoa.application.device.DeviceTechnicalException;
import fr.ulr.sammoa.application.device.gps.GpsLocationEvent;
import fr.ulr.sammoa.application.device.gps.GpsLocationListener;
-import fr.ulr.sammoa.application.flightController.*;
-import fr.ulr.sammoa.persistence.*;
+import fr.ulr.sammoa.application.flightController.FlightController;
+import fr.ulr.sammoa.application.flightController.FlightControllerDefault;
+import fr.ulr.sammoa.application.flightController.FlightControllerListener;
+import fr.ulr.sammoa.application.flightController.FlightState;
+import fr.ulr.sammoa.application.flightController.ObservationEvent;
+import fr.ulr.sammoa.application.io.CampaignStorage;
+import fr.ulr.sammoa.application.io.CampaignStorages;
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.Flight;
+import fr.ulr.sammoa.persistence.GeoPoint;
+import fr.ulr.sammoa.persistence.GeoPoints;
+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.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.SammoaColors;
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.BaseGeoPointLayer;
import fr.ulr.sammoa.ui.swing.flight.layer.LineGeoPointLayer;
import fr.ulr.sammoa.ui.swing.flight.layer.SimpleGeoPointLayer;
@@ -70,7 +104,15 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.swing.*;
+import javax.swing.AbstractButton;
+import javax.swing.Action;
+import javax.swing.ActionMap;
+import javax.swing.InputMap;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComponent;
+import javax.swing.KeyStroke;
+import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
@@ -94,7 +136,7 @@
public class FlightUIHandler implements SammoaUIHandler, FlightControllerListener {
private static final Logger logger = LoggerFactory.getLogger(FlightUIHandler.class);
-
+
private static final TimeLog timeLog = new TimeLog(FlightUIHandler.class);
protected SammoaUIContext context;
@@ -111,37 +153,24 @@
protected BaseGeoPointLayer flightLayer;
- public FlightUIHandler(SammoaUIContext context,
- FlightUI ui) {
+ protected final FlightService flightService;
+
+ protected final ReferentialService referentialService;
+
+ public FlightUIHandler(SammoaUIContext context, FlightUI ui) {
this.context = context;
this.context.setFlightUIHandler(this);
this.ui = ui;
- }
+ ui.setContextValue(context);
- public SammoaConfig getConfig() {
- return context.getConfig();
+ flightService = context.newService(FlightService.class);
+ referentialService = context.newService(ReferentialService.class);
}
- public SammoaContext getAppContext() {
- return context.getAppContext();
- }
-
- public FlightUI getUI() {
- return ui;
- }
-
public FlightController getFlightController() {
return flightController;
}
- protected FlightService getFlightService() {
- return context.getAppContext().getFlightService();
- }
-
- protected ReferentialService getReferentialService() {
- return context.getAppContext().getReferentialService();
- }
-
public FlightUIModel getModel() {
return ui.getModel();
}
@@ -150,48 +179,40 @@
return context.getDecoratorProvider();
}
- public OverlayMapPanel getOverlayMapPanel() {
- return ui.getMapPanel();
- }
-
- public TransectUI getTransectUI() {
- return transectUi;
- }
-
@Override
public void beforeInitUI() {
-
+
long startTime = TimeLog.getTime();
-
+
String flightId = context.getFlightId();
// TODO-fdesbois-2012-07-19 : load all this data in the same transaction
// TODO-fdesbois-2012-07-19 : to avoid separated instances of same entities
// TODO-fdesbois-2012-07-19 : like ObserverPosition or use proper Model like TransectModel
- Flight flight = getFlightService().getFlight(flightId);
+ Flight flight = flightService.getFlight(flightId);
Preconditions.checkNotNull(flight);
Campaign campaign = flight.getCampaign();
List<Observer> referentialObservers =
- getReferentialService().getAllObservers(campaign);
- List<Observer> observers = getFlightService().getFlightObserverForPositions(flight);
- List<Observation> observations = getFlightService().getObservations(flight);
- List<Route> routes = getFlightService().getRoutes(flight);
+ referentialService.getAllObservers(campaign);
+ List<Observer> observers = flightService.getFlightObserverForPositions(flight);
+ List<Observation> observations = flightService.getObservations(flight);
+ List<Route> routes = flightService.getRoutes(flight);
List<GeoPoint> geoPoints =
- GeoPoints.retainsValidCoordinates(getFlightService().getFlightGeoPoints(flight));
+ GeoPoints.retainsValidCoordinates(flightService.getFlightGeoPoints(flight));
if (logger.isTraceEnabled()) {
for (GeoPoint geoPoint : geoPoints) {
logger.trace(String.format("GeoPoint={%1$tH:%1$tM:%1$tS,%2$f,%3$f}",
- geoPoint.getRecordTime(),
- geoPoint.getLatitude(),
- geoPoint.getLongitude())
+ geoPoint.getRecordTime(),
+ geoPoint.getLatitude(),
+ geoPoint.getLongitude())
);
}
}
-
-// List<Strate> strates = getReferentialService().getAllStrates(campaign);
- List<Transect> transects = getReferentialService().getAllTransects(campaign);
+// List<Strate> strates = referentialService.getAllStrates(campaign);
+ List<Transect> transects = referentialService.getAllTransects(campaign);
+
if (logger.isInfoEnabled()) {
logger.info(String.format("Init view with flight number '%d' [%s]",
flight.getFlightNumber(),
@@ -201,10 +222,10 @@
startTime = timeLog.log(startTime, "beforeInitUI", "entities are loaded");
- flightController = new FlightControllerDefault(getAppContext(), flight);
+ flightController = new FlightControllerDefault(context.getAppContext(), flight);
try {
- flightController.openGpsDevice(getConfig().getGpsConfig());
+ flightController.openGpsDevice(context.getConfig().getGpsConfig());
} catch (DeviceTechnicalException ex) {
logger.error("Error on GPS init", ex);
SammoaUtil.showErrorMessage(ui, ex.getMessageWithCause());
@@ -234,9 +255,9 @@
model.setObservations(observations);
model.setRoutes(routes);
model.setGeoPoints(geoPoints);
-
+
model.setStrates(prepareStrates(transects));
-
+
model.setTransectFlights(prepareTransectFlights(model, flight.getTransectFlight()));
model.setFlightState(flightController.getState());
@@ -249,7 +270,7 @@
uiStartTime = TimeLog.getTime();
}
-
+
protected List<StrateModel> prepareStrates(List<Transect> transects) {
long startTime = TimeLog.getTime();
@@ -274,13 +295,13 @@
List<StrateModel> result =
Ordering.natural().sortedCopy(strateMap.values());
-
+
result.add(0, strateAll);
-
+
timeLog.log(startTime, "prepareStrates");
return result;
}
-
+
protected List<TransectFlightModel> prepareTransectFlights(FlightUIModel model,
List<TransectFlight> transectFlights) {
long startTime = TimeLog.getTime();
@@ -288,15 +309,15 @@
Map<Transect, TransectModel> transectMap =
Maps.uniqueIndex(model.getTransects(),
TransectModel.toTransect());
-
+
List<TransectFlightModel> result = Lists.newArrayList();
for (TransectFlight transectFlight : transectFlights) {
Transect transect = transectFlight.getTransect();
TransectModel transectModel = transectMap.get(transect);
-
+
transectModel.setInFlight(true);
-
+
TransectFlightModel instance = new TransectFlightModel(model, transectFlight, transectModel);
instance.addPropertyChangeListener(transectFlightListener);
@@ -313,12 +334,12 @@
.toImmutableList();
Map<Transect, Long> transectRealNbTimes =
- getFlightService().getTransectRealNbTimes(transects);
-
+ flightService.getTransectRealNbTimes(transects);
+
for (Map.Entry<Transect, Long> entry : transectRealNbTimes.entrySet()) {
int realNbTimes = Objects.firstNonNull(entry.getValue(), 0).intValue();
-
+
TransectModel transectModel = transectMap.get(entry.getKey());
transectModel.setRealNbTimes(realNbTimes);
}
@@ -346,11 +367,10 @@
@Override
public void propertyChange(PropertyChangeEvent evt) {
Flight flight = (Flight) evt.getSource();
- FlightService flightService = getAppContext().getFlightService();
List<Observer> observers = flightService.getFlightObserverForPositions(flight);
getModel().setFlightObserverForPositions(observers);
}
- });
+ });
// Strate ComboBox
StrateModel strateAll = getModel().getStrateAll();
@@ -372,21 +392,19 @@
transectUi = new TransectUI(context);
- getTransectUI().addComponentListener(transectUIListener);
+ transectUi.addComponentListener(transectUIListener);
startTime = timeLog.log(startTime, "afterInitUI", "other simple stuff");
- initMapBean();
+ initMap();
- initMapHandler();
-
timeLog.log(startTime, "afterInitUI", "map is initialized");
}
@Override
public void onCloseUI() {
flightController.close();
- getTransectUI().removeComponentListener(transectUIListener);
+ transectUi.removeComponentListener(transectUIListener);
}
public ActionMap getActionMap() {
@@ -438,19 +456,19 @@
}
StrateModel oldSelection = getModel().getCurrentStrate();
-
+
if (oldSelection != null) {
for (TransectModel transect : oldSelection.getTransects()) {
transect.setInCurrentStrate(false);
}
}
-
- for (TransectModel transect : strate.getTransects()) {
+
+ for (TransectModel transect : strate.getTransects()) {
transect.setInCurrentStrate(true);
}
getModel().setCurrentStrate(strate);
-
+
ui.getTransectListModel().setStrateModel(strate);
}
@@ -465,16 +483,16 @@
// We keep currentStrate only if there is a defined source strate
StrateModel currentStrate;
- if (getModel().getCurrentStrate().getSource() != null) {
+ if (getModel().getCurrentStrate().getSource() != null) {
currentStrate = getModel().getCurrentStrate();
} else {
currentStrate = null;
}
- getTransectUI().getModel().prepareCreate(referential, currentStrate);
+ transectUi.getModel().prepareCreate(referential, currentStrate);
- getTransectUI().getHandler().openUI();
+ transectUi.getHandler().openUI();
}
/**
@@ -526,20 +544,20 @@
if (fromIndex == -1) {
// Add after the last row
fromIndex = table.getRowCount();
-
+
} else {
// Add after the selection
fromIndex++;
}
-
+
List<Transect> entities = FluentIterable.from(transects)
.transform(TransectModel.toTransect())
.toImmutableList();
// Execute add transects to create the new transectFlights
List<TransectFlight> transectFlights =
- getFlightService().addTransects(getModel().getFlight(), fromIndex, entities);
-
+ flightService.addTransects(getModel().getFlight(), fromIndex, entities);
+
List<TransectFlightModel> newTransectFlights =
prepareTransectFlights(getModel(), transectFlights);
@@ -548,11 +566,10 @@
int toIndex = fromIndex + newTransectFlights.size() - 1;
ui.getTransectTableModel().fireTableRowsInserted(fromIndex, toIndex);
-
-
+
// // Retrieve real nbTimes for each new transect
// Map<Transect, Long> transectRealNbTimes =
-// getFlightService().getTransectRealNbTimes(Lists.newArrayList(transects));
+// flightService.getTransectRealNbTimes(Lists.newArrayList(transects));
// getModel().putAllTransectRealNbTimes(transectRealNbTimes);
// Display the transects if flight is started
@@ -561,7 +578,7 @@
// }
}
}
-
+
public void selectTransects(ListSelectionEvent event) {
ListSelectionModel selectionModel = (ListSelectionModel) event.getSource();
@@ -573,28 +590,28 @@
? "all" : strateModel.getSource().getCode())
);
}
-
- for (int i = event.getFirstIndex() ; i <= event.getLastIndex() && i < strateModel.getTransects().size(); i++) {
+
+ for (int i = event.getFirstIndex(); i <= event.getLastIndex() && i < strateModel.getTransects().size(); i++) {
TransectModel model = strateModel.getTransects().get(i);
boolean selected = selectionModel.isSelectedIndex(i);
model.setSelectedInCurrentStrate(selected);
}
getModel().setTransectSelectionExists(!selectionModel.isSelectionEmpty());
}
-
+
public void selectTransectFlights(ListSelectionEvent event) {
ListSelectionModel selectionModel = (ListSelectionModel) event.getSource();
if (logger.isDebugEnabled()) {
- logger.debug(String.format("Select transectFlights",
- event.getFirstIndex())
- );
+ logger.debug("Select transectFlights {}", event.getFirstIndex());
}
-
- for (int i = event.getFirstIndex(); i <= event.getLastIndex() && i < getModel().getTransectFlights().size(); i++) {
-
+
+ for (int i = event.getFirstIndex(),
+ transectFlightsize = getModel().getTransectFlights().size();
+ i <= event.getLastIndex() && i < transectFlightsize; i++) {
+
TransectFlightModel model = getModel().getTransectFlights().get(i);
-
+
boolean selected = selectionModel.isSelectedIndex(i);
model.getTransect().setSelectedInFlight(selected);
}
@@ -636,7 +653,7 @@
*/
public static void initActions(ActionMap actionMap, JAXXObject jaxxObject, InputMap inputMap) {
for (Object object : jaxxObject.get$objectMap().values()) {
- if (jaxxObject!= object && object instanceof JAXXObject) {
+ if (jaxxObject != object && object instanceof JAXXObject) {
initActions(actionMap, (JAXXObject) object, inputMap);
}
if (object instanceof AbstractButton) {
@@ -666,10 +683,12 @@
return action;
}
- protected void initMapBean() {
+ protected void initMap() {
- MapBean mapBean = getOverlayMapPanel().getMapBean();
+ OverlayMapPanel overlayMapPanel = ui.getMapPanel();
+ MapBean mapBean = overlayMapPanel.getMapBean();
+
// Set background color to blue
// mapBean.setBackgroundColor(new Color(0x99b3cc));
@@ -680,12 +699,9 @@
// Set the map's scale
mapBean.setScale(20000000f);
- }
- protected void initMapHandler() {
+ MapHandler mapHandler = overlayMapPanel.getMapHandler();
- MapHandler mapHandler = getOverlayMapPanel().getMapHandler();
-
// Boilerplate code pour avoir, sur la carte, la barre d'outil
// la barre de zoom, le déplacement par la souris...
mapHandler.add(new LayerHandler());
@@ -696,8 +712,9 @@
mapHandler.add(new ToolPanel());
// BackgroundLayer
+ SammoaConfig config = context.getConfig();
{
- File backgroundShapeFile = getConfig().getBackgroundShapeFile();
+ File backgroundShapeFile = config.getBackgroundShapeFile();
if (backgroundShapeFile != null && backgroundShapeFile.exists()) {
Properties properties = new Properties();
@@ -715,11 +732,12 @@
}
String campaignId = getModel().getFlight().getCampaign().getTopiaId();
- File mapDirectory = new File(new File(new File(getConfig().getDataDirectory(), "campaign"), campaignId), "map");
+ CampaignStorage campaignStorage = CampaignStorages.getStorage(
+ config, campaignId);
// StrateLayer
{
- File file = new File(mapDirectory, "strates.shp");
+ File file = campaignStorage.getMapFile("strates.shp");
if (file.exists()) {
Properties properties = new Properties();
@@ -746,7 +764,7 @@
// TransectLayer
{
- File file = new File(mapDirectory, "transects.shp");
+ File file = campaignStorage.getMapFile("transects.shp");
if (file.exists()) {
Properties properties = new Properties();
@@ -826,7 +844,7 @@
@Override
public void propertyChange(PropertyChangeEvent evt) {
-
+
String propertyName = evt.getPropertyName();
// Listen index to fire the table
@@ -876,7 +894,7 @@
// Center the map on the location if mapFollow is activated
if (getModel() != null && getModel().isMapFollow()) {
- MapBean mapBean = getOverlayMapPanel().getMapBean();
+ MapBean mapBean = ui.getMapPanel().getMapBean();
LatLonPoint center = new LatLonPoint.Double(
location.getLatitude(), location.getLongitude());
mapBean.setCenter(center);
@@ -907,7 +925,7 @@
// On hide : retrieve the region saved and reset the region combo
- String transectId = getTransectUI().getModel().getId();
+ String transectId = transectUi.getModel().getId();
if (transectId == null) {
// nothing to do, no creation is done
@@ -918,7 +936,7 @@
logger.info(String.format("Retrieve from TransectUI the id = %s", transectId));
}
- Transect transectBean = getReferentialService().getTransect(transectId);
+ Transect transectBean = referentialService.getTransect(transectId);
StrateModel strate = Iterables.find(getModel().getStrates(), StrateModel.withStrate(transectBean.getStrate()));
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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/FlightUIModel.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -34,10 +34,10 @@
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;
+import org.jdesktop.beans.AbstractSerializableBean;
-import javax.swing.*;
+import javax.swing.ActionMap;
import java.util.Collections;
import java.util.List;
@@ -46,7 +46,7 @@
*
* @author fdesbois <desbois(a)codelutin.com>
*/
-public class FlightUIModel extends BaseModel {
+public class FlightUIModel extends AbstractSerializableBean {
private static final long serialVersionUID = 1L;
@@ -123,13 +123,13 @@
/**
* La liste des observateurs du vol, sans les pilotes avec l'observateur null
- *
- * @since 0.3
+ *
+ * @since 0.3
*/
protected List<Observer> flightObserverForPositions;
-
+
// protected List<Transect> transects;
-
+
protected List<StrateModel> strates;
protected boolean transectSelectionExists;
@@ -137,7 +137,7 @@
protected StrateModel currentStrate;
protected boolean mapFollow;
-
+
protected List<TransectFlightModel> transectFlights;
protected List<GeoPoint> geoPoints;
@@ -214,7 +214,7 @@
}
return observations;
}
-
+
public int indexOfObservations(Observation observation) {
return getObservations().indexOf(observation);
}
@@ -231,24 +231,24 @@
setObservationEditBean(observation);
fireIndexedPropertyChange(PROPERTY_OBSERVATIONS, index, null, observation);
}
-
+
public List<Observation> getObservationsForRoute(Route route) {
-
+
List<Observation> result;
if (route == null) {
result = Collections.emptyList();
-
+
} else {
-
+
Route nextRoute = getNextRoute(route);
-
+
result = FluentIterable.from(getObservations())
.filter(Observations.inRoute(route, nextRoute))
.toImmutableList();
}
return result;
}
-
+
public Route getNextRoute(Route route) {
int routeIndex = indexOfRoutes(route);
@@ -262,7 +262,7 @@
} else {
result = null;
}
-
+
return result;
}
@@ -384,7 +384,7 @@
this.strates = strates;
firePropertyChange(PROPERTY_STRATES, oldValue, strates);
}
-
+
public List<TransectModel> getTransects() {
return getStrates().isEmpty()
? Lists.<TransectModel>newArrayList()
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/NextTransectHighlightPredicate.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/NextTransectHighlightPredicate.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/NextTransectHighlightPredicate.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -26,9 +26,7 @@
import fr.ulr.sammoa.persistence.TransectFlight;
import fr.ulr.sammoa.ui.swing.util.AbstractRowHighlightPredicate;
-/**
- * @author sletellier <letellier(a)codelutin.com>
- */
+/** @author sletellier <letellier(a)codelutin.com> */
public class NextTransectHighlightPredicate extends AbstractRowHighlightPredicate {
protected TransectTableModel model;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ObserverListCellRenderer.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ObserverListCellRenderer.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ObserverListCellRenderer.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -2,8 +2,8 @@
/*
* #%L
* SAMMOA :: UI Swing
- * $Id:$
- * $HeadURL:$
+ * $Id$
+ * $HeadURL$
* %%
* Copyright (C) 2012 UMS 3462, Code Lutin
* %%
@@ -37,7 +37,7 @@
* @author fdesbois <desbois(a)codelutin.com>
*/
public class ObserverListCellRenderer implements ListCellRenderer {
-
+
protected ListCellRenderer delegate;
public ObserverListCellRenderer(ListCellRenderer delegate) {
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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ObserverListSelectorModel.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -31,13 +31,13 @@
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
-/**
- * @author sletellier <letellier(a)codelutin.com>
- */
+/** @author sletellier <letellier(a)codelutin.com> */
public class ObserverListSelectorModel extends ListSelectorModel<Observer> {
public static final String PROPERTY_BEAN = "bean";
+
protected FlightUIModel flightUIModel;
+
protected Flight bean;
public ObserverListSelectorModel(FlightUIModel flightUIModel) {
@@ -53,14 +53,14 @@
this.bean = bean;
if (bean != null) {
flightUIModel.addPropertyChangeListener(FlightUIModel.PROPERTY_OBSERVERS,
- new PropertyChangeListener() {
+ new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- setValues(flightUIModel.getObservers());
- setSelectedValues(Lists.newArrayList(getBean().getObserver()));
- }
- });
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ setValues(flightUIModel.getObservers());
+ setSelectedValues(Lists.newArrayList(getBean().getObserver()));
+ }
+ });
firePropertyChange(PROPERTY_BEAN, oldValue, bean);
setValues(flightUIModel.getObservers());
setSelectedValues(bean.getObserver());
@@ -78,7 +78,7 @@
// TODO sletellier 29062012 : genererate removeAll in topia
for (Object o : toModel.getSelectedValues()) {
- Observer observer = (Observer)o;
+ Observer observer = (Observer) o;
if (bean.getObserver().contains(observer)) {
bean.removeObserver(observer);
}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ObserverTableCellEditor.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ObserverTableCellEditor.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/ObserverTableCellEditor.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -41,13 +41,14 @@
import java.beans.PropertyChangeListener;
import java.util.List;
-/**
- * @author sletellier <letellier(a)codelutin.com>
- */
+/** @author sletellier <letellier(a)codelutin.com> */
public class ObserverTableCellEditor extends AbstractCellEditor
- implements TableCellEditor, FocusListener {
+ implements TableCellEditor, FocusListener {
+ private static final long serialVersionUID = 1L;
+
protected DecoratorProviderListCellRenderer decoratorProviderListCellRenderer;
+
protected GenericListModel<Observer> model;
public ObserverTableCellEditor(FlightUIModel flightUIModel) {
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/StrateModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/StrateModel.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/StrateModel.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -27,7 +27,7 @@
import com.google.common.collect.Lists;
import fr.ulr.sammoa.persistence.Strate;
import fr.ulr.sammoa.persistence.Strates;
-import fr.ulr.sammoa.ui.swing.BaseModel;
+import org.jdesktop.beans.AbstractSerializableBean;
import java.util.List;
@@ -36,7 +36,7 @@
*
* @author fdesbois <desbois(a)codelutin.com>
*/
-public class StrateModel extends BaseModel implements Comparable<StrateModel> {
+public class StrateModel extends AbstractSerializableBean implements Comparable<StrateModel> {
private static final long serialVersionUID = 1L;
@@ -45,7 +45,7 @@
public static final String PROPERTY_TRANSECTS = "transects";
protected Strate source;
-
+
protected List<TransectModel> transects;
public StrateModel(Strate source) {
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectCrossingNumberCellRenderer.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectCrossingNumberCellRenderer.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectCrossingNumberCellRenderer.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -2,8 +2,8 @@
/*
* #%L
* SAMMOA :: UI Swing
- * $Id:$
- * $HeadURL:$
+ * $Id$
+ * $HeadURL$
* %%
* Copyright (C) 2012 UMS 3462, Code Lutin
* %%
@@ -23,9 +23,9 @@
* #L%
*/
-import javax.swing.*;
+import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
-import java.awt.*;
+import java.awt.Component;
/**
* Created: 18/07/12
@@ -33,9 +33,9 @@
* @author fdesbois <desbois(a)codelutin.com>
*/
public class TransectCrossingNumberCellRenderer implements TableCellRenderer {
-
+
protected TableCellRenderer delegate;
-
+
protected TransectTableModel model;
public TransectCrossingNumberCellRenderer(TableCellRenderer delegate,
@@ -53,8 +53,8 @@
int crossingNumber = transectFlight.getCrossingNumber();
int realNbTimes = transect.getRealNbTimes();
- String newValue = crossingNumber + " (" + realNbTimes +")";
-
+ String newValue = crossingNumber + " (" + realNbTimes + ")";
+
return delegate.getTableCellRendererComponent(table, newValue, isSelected, hasFocus, row, column);
}
}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectFlightModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectFlightModel.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectFlightModel.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -31,14 +31,14 @@
import fr.ulr.sammoa.persistence.ObserverPosition;
import fr.ulr.sammoa.persistence.Position;
import fr.ulr.sammoa.persistence.TransectFlight;
-import fr.ulr.sammoa.ui.swing.BaseModel;
+import org.jdesktop.beans.AbstractSerializableBean;
/**
* Created: 27/07/12
*
* @author fdesbois <desbois(a)codelutin.com>
*/
-public class TransectFlightModel extends BaseModel {
+public class TransectFlightModel extends AbstractSerializableBean {
private static final long serialVersionUID = 1L;
@@ -51,17 +51,17 @@
public static final String PROPERTY_INDEX = "index";
public static final String PROPERTY_CROSSING_NUMBER = "crossingNumber";
-
+
protected FlightUIModel flightModel;
-
+
protected TransectFlight source;
-
+
protected TransectModel transect;
public TransectFlightModel(FlightUIModel flightModel,
- TransectFlight source,
+ TransectFlight source,
TransectModel transect) {
-
+
Preconditions.checkNotNull(flightModel);
Preconditions.checkNotNull(source);
Preconditions.checkNotNull(transect);
@@ -105,22 +105,22 @@
}
public void setIndex(int index) {
-
+
int oldValue = getIndex();
// Manage maxBound to avoid IndexOutOfBoundsException
if (index >= getFlight().getTransectFlight().size()) {
index = getFlight().getTransectFlight().size() - 1;
}
-
+
getFlight().getTransectFlight().remove(getSource());
// Use add on Flight to fire change
getFlight().addTransectFlight(index, getSource());
flightModel.getTransectFlights().remove(this);
-
+
flightModel.getTransectFlights().add(index, this);
firePropertyChange(PROPERTY_INDEX, oldValue, index);
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectListCellRenderer.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectListCellRenderer.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectListCellRenderer.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -26,8 +26,9 @@
import com.google.common.base.Preconditions;
import fr.ulr.sammoa.ui.swing.SammoaColors;
-import javax.swing.*;
-import java.awt.*;
+import javax.swing.JList;
+import javax.swing.ListCellRenderer;
+import java.awt.Component;
/**
* Created: 11/07/12
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectListModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectListModel.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectListModel.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -24,17 +24,9 @@
*/
package fr.ulr.sammoa.ui.swing.flight;
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.collect.FluentIterable;
import com.google.common.collect.Iterables;
-import fr.ulr.sammoa.persistence.Transect;
import javax.swing.AbstractListModel;
-import javax.swing.DefaultListSelectionModel;
-import javax.swing.ListSelectionModel;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
/**
* Created: 12/06/12
@@ -70,7 +62,7 @@
public Iterable<TransectModel> getSelectedTransects() {
return Iterables.filter(getStrateModel().getTransects(), TransectModel.selectedInCurrentStrate());
}
-
+
@Override
public int getSize() {
return strateModel != null ? strateModel.getTransects().size() : 0;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectModel.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectModel.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -27,19 +27,19 @@
import com.google.common.base.Preconditions;
import com.google.common.base.Predicate;
import fr.ulr.sammoa.persistence.Transect;
-import fr.ulr.sammoa.ui.swing.BaseModel;
+import org.jdesktop.beans.AbstractSerializableBean;
/**
* Created: 26/07/12
*
* @author fdesbois <desbois(a)codelutin.com>
*/
-public class TransectModel extends BaseModel {
+public class TransectModel extends AbstractSerializableBean {
private static final long serialVersionUID = 1L;
-
+
public static final String PROPERTY_SOURCE = "source";
-
+
public static final String PROPERTY_IN_CURRENT_STRATE = "inCurrentStrate";
public static final String PROPERTY_SELECTED_IN_CURRENT_STRATE = "selectedInCurrentStrate";
@@ -47,19 +47,19 @@
public static final String PROPERTY_IN_FLIGHT = "inFlight";
public static final String PROPERTY_SELECTED_IN_FLIGHT = "selectedInFlight";
-
+
public static final String PROPERTY_REAL_NB_TIMES = "realNbTimes";
protected Transect source;
protected boolean inCurrentStrate;
-
+
protected boolean selectedInCurrentStrate;
-
+
protected boolean inFlight;
-
+
protected boolean selectedInFlight;
-
+
protected int realNbTimes;
public TransectModel(Transect source) {
@@ -140,10 +140,10 @@
}
};
}
-
+
public static Function<TransectModel, Transect> toTransect() {
return new Function<TransectModel, Transect>() {
-
+
@Override
public Transect apply(TransectModel input) {
return input.getSource();
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectTable.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectTable.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectTable.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -24,8 +24,12 @@
package fr.ulr.sammoa.ui.swing.flight;
import com.google.common.collect.Lists;
+import fr.ulr.sammoa.persistence.Flight;
import fr.ulr.sammoa.persistence.Observer;
+import fr.ulr.sammoa.persistence.Route;
+import fr.ulr.sammoa.persistence.TransectFlight;
import fr.ulr.sammoa.ui.swing.SammoaColors;
+import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import fr.ulr.sammoa.ui.swing.action.NextTransectAction;
import fr.ulr.sammoa.ui.swing.util.ColorTableCellRenderer;
import fr.ulr.sammoa.ui.swing.util.SammoaUtil;
@@ -35,30 +39,41 @@
import jaxx.runtime.swing.renderer.DecoratorProviderTableCellRenderer;
import org.jdesktop.swingx.JXTable;
import org.nuiton.util.decorator.DecoratorProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import javax.swing.*;
+import javax.swing.AbstractCellEditor;
+import javax.swing.Action;
+import javax.swing.ActionMap;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JTable;
import javax.swing.event.TableModelEvent;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
-import java.awt.*;
+import java.awt.Component;
+import java.beans.IndexedPropertyChangeEvent;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
import java.util.List;
/**
- * Created: 15/06/12
+ * Created: 15/06/12.
+ * <p/>
+ * TODO tchemit-2012-08-14 Remove this object, use a simple JTXTable and put
+ * TODO tchemit-2012-08-14 all the init code in handler.
*
* @author fdesbois <desbois(a)codelutin.com>
*/
public class TransectTable extends JXTable {
- private static final Logger logger = LoggerFactory.getLogger(TransectTable.class);
+ private static final long serialVersionUID = 1L;
+// private static final Logger logger = LoggerFactory.getLogger(TransectTable.class);
+
// protected static final ImageIcon ACTION_ICON = Resource.getIcon("/icons/action-next-transect.png");
-
- protected TransectTableHandler handler;
+// protected TransectTableHandler handler;
+
protected List<JButton> actionButtons;
public TransectTable(TransectTableModel model,
@@ -77,7 +92,7 @@
SammoaColors.NEXT_TRANSECT_ROW_COLOR)
);
- this.handler = new TransectTableHandler(this);
+// this.handler = new TransectTableHandler(this);
setSortable(false);
@@ -111,20 +126,57 @@
addActionButton(i);
}
- handler.init();
+// handler.init();
+
+ PropertyChangeListener propertyChangeListener = new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ String propertyName = evt.getPropertyName();
+
+ if (FlightUIModel.PROPERTY_CURRENT_ROUTE.equals(propertyName)) {
+
+ onCurrentRouteChanged(
+ (Route) evt.getOldValue(), (Route) evt.getNewValue());
+
+ } else if (FlightUIModel.PROPERTY_NEXT_TRANSECT.equals(propertyName)) {
+
+ onNextTransectChanged(
+ (TransectFlight) evt.getOldValue(), (TransectFlight) evt.getNewValue());
+
+// } else if (Flight.PROPERTY_TRANSECT_FLIGHT.equals(propertyName)) {
+//
+// IndexedPropertyChangeEvent indexedEvent = (IndexedPropertyChangeEvent) evt;
+// onFlightTransectsAdded(indexedEvent);
+
+ } else if (Flight.PROPERTY_OBSERVER.equals(propertyName)) {
+
+ IndexedPropertyChangeEvent indexedEvent = (IndexedPropertyChangeEvent) evt;
+ onFlightObserversChanged(indexedEvent);
+ }
+ }
+ };
+
+ Flight flight = getModel().getFlight();
+ if (flight != null) {
+
+ flight.addPropertyChangeListener(Flight.PROPERTY_TRANSECT_FLIGHT, propertyChangeListener);
+ flight.addPropertyChangeListener(Flight.PROPERTY_OBSERVER, propertyChangeListener);
+ }
+
+ SammoaUIContext.getUIContext().getFlightUIHandler().getModel().addPropertyChangeListener(propertyChangeListener);
}
-
- public TransectTableHandler getHandler() {
- return handler;
- }
-
+
+// public TransectTableHandler getHandler() {
+// return handler;
+// }
+
public List<JButton> getActionButtons() {
if (actionButtons == null) {
actionButtons = Lists.newArrayList();
}
return actionButtons;
}
-
+
public int getLastSelectedRow() {
int result;
int nbRows = getSelectedRows().length;
@@ -137,7 +189,7 @@
}
return result;
}
-
+
@Override
public TransectTableModel getModel() {
return (TransectTableModel) super.getModel();
@@ -156,9 +208,9 @@
super.tableChanged(e);
}
-
+
public JButton addActionButton(int index) {
-
+
JButton result = new JButton();
// use client property used in Action to retrieve the correct transect
@@ -208,11 +260,13 @@
TableColumn column = getColumn(TransectTableModel.TransectColumn.POSITION_RIGHT.ordinal());
column.setHeaderRenderer(new ColorTableCellRenderer(defaultRenderer, SammoaColors.POSITION_RIGHT_COLOR));
}
- }
+ }
public class TransectBooleanTableCell extends AbstractCellEditor
implements TableCellRenderer, TableCellEditor {
+ private static final long serialVersionUID = 1L;
+
protected BooleanCellEditor delegateEditor;
public TransectBooleanTableCell(TableCellRenderer cellRenderer) {
@@ -227,25 +281,26 @@
int row,
int column) {
- TransectTableModel.TransectColumn transectColumn =
+ TransectTableModel.TransectColumn transectColumn =
TransectTableModel.TransectColumn.valueOf(column);
+ Component result = null;
switch (transectColumn) {
case DELETED:
JComponent render = (JComponent) delegateEditor.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column);
- return render;
-
+ result = render;
+ break;
case ACTION:
JButton button = getActionButtons().get(row);
button.setEnabled((Boolean) value);
- return button;
+ result = button;
default:
}
- return null;
+ return result;
}
@@ -255,20 +310,21 @@
TransectTableModel.TransectColumn transectColumn =
TransectTableModel.TransectColumn.valueOf(column);
+ Component result = null;
switch (transectColumn) {
case DELETED:
- return delegateEditor.getTableCellEditorComponent(
+ result = delegateEditor.getTableCellEditorComponent(
table, value, isSelected, row, column);
-
+ break;
case ACTION:
JButton button = getActionButtons().get(row);
button.setEnabled((Boolean) value);
- return button;
+ result = button;
default:
}
- return null;
+ return result;
}
@Override
@@ -276,4 +332,57 @@
return delegateEditor.getCellEditorValue();
}
}
+
+ public void onCurrentRouteChanged(Route oldValue, Route newValue) {
+
+ // Change of flight route status : begin, add, cb, end
+
+ if (oldValue != null) {
+ TransectFlight transect = oldValue.getTransectFlight();
+ if (transect != null) {
+ updateTransectRow(transect);
+ }
+ }
+ if (newValue != null) {
+ TransectFlight transect = newValue.getTransectFlight();
+ if (transect != null) {
+ updateTransectRow(transect);
+ }
+ }
+ }
+
+ public void onNextTransectChanged(TransectFlight oldValue, TransectFlight newValue) {
+
+ if (oldValue != null) {
+ updateTransectRow(oldValue);
+ }
+ if (newValue != null) {
+ updateTransectRow(newValue);
+ }
+ }
+
+// public void onFlightTransectsAdded(IndexedPropertyChangeEvent evt) {
+//
+// int index = evt.getIndex();
+//
+// getModel().fireTableRowsInserted(index, index);
+// }
+
+ public void onFlightObserversChanged(IndexedPropertyChangeEvent evt) {
+
+ // Refresh all the table if some observer is removed (index = old collection size)
+ int oldSize = evt.getIndex();
+ int currentSize = getModel().getFlight().sizeObserver();
+
+ if (currentSize < oldSize) {
+ getModel().fireTableDataChanged();
+ }
+ }
+
+ protected void updateTransectRow(TransectFlight transectFlight) {
+
+ int index = getModel().getTransectFlightModel(transectFlight).getIndex();
+
+ getModel().fireTableRowsUpdated(index, index);
+ }
}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectTableHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectTableHandler.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectTableHandler.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -26,7 +26,7 @@
import fr.ulr.sammoa.persistence.Flight;
import fr.ulr.sammoa.persistence.Route;
import fr.ulr.sammoa.persistence.TransectFlight;
-import fr.ulr.sammoa.ui.swing.BaseHandler;
+import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import java.beans.IndexedPropertyChangeEvent;
import java.beans.PropertyChangeEvent;
@@ -34,17 +34,25 @@
/**
* Created: 18/06/12
+ * FIXME tchemit-2012-08-14 Remove this handler
*
* @author fdesbois <desbois(a)codelutin.com>
+ * @deprecated I will remove this before release 0.6
*/
-public class TransectTableHandler extends BaseHandler implements PropertyChangeListener {
-
+@Deprecated
+public class TransectTableHandler implements PropertyChangeListener {
+
protected TransectTable view;
public TransectTableHandler(TransectTable view) {
this.view = view;
}
-
+
+ @Deprecated
+ public FlightUIModel getFlightUIModel() {
+ return SammoaUIContext.getUIContext().getFlightUIHandler().getModel();
+ }
+
public void init() {
getFlightUIModel().addPropertyChangeListener(this);
@@ -54,14 +62,14 @@
flight.addPropertyChangeListener(Flight.PROPERTY_OBSERVER, this);
}
}
-
+
public TransectTableModel getModel() {
return view.getModel();
}
@Override
public void propertyChange(PropertyChangeEvent evt) {
-
+
String propertyName = evt.getPropertyName();
if (FlightUIModel.PROPERTY_CURRENT_ROUTE.equals(propertyName)) {
@@ -96,7 +104,7 @@
//
// getModel().fireTableDataChanged();
// }
-
+
public void onCurrentRouteChanged(Route oldValue, Route newValue) {
// Change of flight route status : begin, add, cb, end
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectTableModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectTableModel.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/TransectTableModel.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -36,19 +36,17 @@
import fr.ulr.sammoa.persistence.TransectFlight;
import fr.ulr.sammoa.ui.swing.util.SammoaUtil;
-import javax.swing.*;
+import javax.swing.SwingUtilities;
import javax.swing.table.AbstractTableModel;
import java.util.List;
import static org.nuiton.i18n.I18n._;
-/**
- * @author sletellier <letellier(a)codelutin.com>
- */
+/** @author sletellier <letellier(a)codelutin.com> */
public class TransectTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
-
+
protected FlightUIModel reference;
public TransectTableModel(FlightUIModel reference) {
@@ -71,16 +69,16 @@
public TransectFlight getNextTransect() {
return reference.getNextTransect();
}
-
+
@Deprecated
public TransectFlightModel getTransectFlightModel(final TransectFlight transectFlight) {
TransectFlightModel result = Iterables.find(getTransectFlights(), new Predicate<TransectFlightModel>() {
-
+
@Override
public boolean apply(TransectFlightModel input) {
return input.getSource().equals(transectFlight);
}
- });
+ });
return result;
}
@@ -91,7 +89,7 @@
public TransectFlightModel getRow(int index) {
return getTransectFlights().get(index);
}
-
+
// public int getRowIndex(TransectFlightModel transectFlight) {
// return Iterables.indexOf(getTransectFlights(), Predicates.equalTo(transectFlight));
// }
@@ -142,6 +140,7 @@
static class UpdateRowRunnable implements Runnable {
protected int rowIndex;
+
protected TransectTableModel model;
UpdateRowRunnable(TransectTableModel model, int rowIndex) {
@@ -163,7 +162,7 @@
Integer.class,
TransectFlightModel.PROPERTY_INDEX
) {
-
+
// @Override
// public Object getValue(int index, TransectFlightModel bean) {
// return index;
@@ -200,7 +199,7 @@
public void setValue(TransectFlightModel bean, Object value, TransectTableModel model) {
bean.setObserverByPosition(Position.NAVIGATOR, (Observer) value);
}
-
+
@Override
public Object getValue(int index, TransectFlightModel bean) {
ObserverPosition position =
@@ -265,7 +264,7 @@
int.class,
TransectFlightModel.PROPERTY_CROSSING_NUMBER
),
-// NB_TIMES(
+ // NB_TIMES(
// _("sammoa.flightPanel.table.column.nbTimes"),
// true,
// Integer.class,
@@ -284,7 +283,6 @@
true,
Boolean.class
) {
-
@Override
public Object getValue(int index, TransectFlightModel bean) {
// Action is available if bean is not deleted
@@ -311,9 +309,9 @@
}
private TransectColumn(String label,
- boolean editable,
- Class<?> type,
- String... beanProperties) {
+ boolean editable,
+ Class<?> type,
+ String... beanProperties) {
this.label = label;
this.editable = editable;
this.type = type;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/layer/BaseGeoPointLayer.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/layer/BaseGeoPointLayer.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/layer/BaseGeoPointLayer.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -2,8 +2,8 @@
/*
* #%L
* SAMMOA :: UI Swing
- * $Id:$
- * $HeadURL:$
+ * $Id$
+ * $HeadURL$
* %%
* Copyright (C) 2012 UMS 3462, Code Lutin
* %%
@@ -39,6 +39,8 @@
*/
public abstract class BaseGeoPointLayer extends OMGraphicHandlerLayer {
+ private static final long serialVersionUID = 1L;
+
protected DrawingAttributes drawingAttributes = DrawingAttributes.getDefaultClone();
public void setGeoPoints(List<GeoPoint> geoPoints) {
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/layer/LineGeoPointLayer.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/layer/LineGeoPointLayer.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/layer/LineGeoPointLayer.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -2,8 +2,8 @@
/*
* #%L
* SAMMOA :: UI Swing
- * $Id:$
- * $HeadURL:$
+ * $Id$
+ * $HeadURL$
* %%
* Copyright (C) 2012 UMS 3462, Code Lutin
* %%
@@ -37,6 +37,8 @@
*/
public class LineGeoPointLayer extends BaseGeoPointLayer {
+ private static final long serialVersionUID = 1L;
+
@Override
protected OMGraphic newGraphic(GeoPoint geoPoint) {
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/layer/SimpleGeoPointLayer.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/layer/SimpleGeoPointLayer.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/layer/SimpleGeoPointLayer.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -2,8 +2,8 @@
/*
* #%L
* SAMMOA :: UI Swing
- * $Id:$
- * $HeadURL:$
+ * $Id$
+ * $HeadURL$
* %%
* Copyright (C) 2012 UMS 3462, Code Lutin
* %%
@@ -33,6 +33,8 @@
*/
public class SimpleGeoPointLayer extends BaseGeoPointLayer {
+ private static final long serialVersionUID = 1L;
+
@Override
protected OMPoint newGraphic(GeoPoint geoPoint) {
OMPoint result = new OMPoint(geoPoint.getLatitude(), geoPoint.getLongitude());
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/layer/TransectLayer.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/layer/TransectLayer.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/layer/TransectLayer.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -36,7 +36,7 @@
import fr.ulr.sammoa.ui.swing.flight.FlightUIModel;
import fr.ulr.sammoa.ui.swing.flight.TransectModel;
-import java.awt.*;
+import java.awt.Color;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
@@ -47,6 +47,8 @@
*/
public class TransectLayer extends PlugInLayer implements PropertyChangeListener {
+ private static final long serialVersionUID = 1L;
+
protected FlightUIModel model;
public void init(FlightUIModel model) {
@@ -89,11 +91,11 @@
}
@Override
- public void propertyChange(PropertyChangeEvent evt) {
-
+ public void propertyChange(PropertyChangeEvent evt) {
+
String propertyName = evt.getPropertyName();
- if (TransectModel.PROPERTY_IN_CURRENT_STRATE.equals(propertyName)
+ if (TransectModel.PROPERTY_IN_CURRENT_STRATE.equals(propertyName)
|| TransectModel.PROPERTY_IN_FLIGHT.equals(propertyName)) {
TransectModel transect = (TransectModel) evt.getSource();
@@ -117,7 +119,7 @@
Integer graphicIndex = transect.getSource().getGraphicIndex();
if (graphicIndex != null) {
-
+
OMGraphic graphic = getEsriGraphicList().get(graphicIndex);
boolean visible = checkVisible(transect, getModel().getFlightState(), graphic);
@@ -137,9 +139,9 @@
graphic.regenerate(getProjection());
repaint();
}
-
- } else if (TransectModel.PROPERTY_SELECTED_IN_FLIGHT.equals(propertyName)) {
+ } else if (TransectModel.PROPERTY_SELECTED_IN_FLIGHT.equals(propertyName)) {
+
TransectModel transect = (TransectModel) evt.getSource();
Integer graphicIndex = transect.getSource().getGraphicIndex();
@@ -154,22 +156,22 @@
graphic.regenerate(getProjection());
repaint();
}
-
+
} else if (FlightUIModel.PROPERTY_FLIGHT_STATE.equals(propertyName)) {
FlightState oldState = (FlightState) evt.getOldValue();
FlightState newState = (FlightState) evt.getNewValue();
-
+
if (oldState == FlightState.WAITING || newState == FlightState.WAITING) {
ensureVisible();
}
-
+
} else if (FlightUIModel.PROPERTY_CURRENT_ROUTE.equals(propertyName)) {
Route oldValue = (Route) evt.getOldValue();
Route newValue = (Route) evt.getNewValue();
-
+
if (oldValue != null && oldValue.getTransectFlight() != null) {
updateLineColor(oldValue.getTransectFlight().getTransect(), null);
}
@@ -192,18 +194,18 @@
repaint();
}
}
-
+
protected boolean checkVisible(TransectModel transect, FlightState flightState, OMGraphic graphic) {
- boolean result = transect.isInFlight()
- || transect.isSelectedInCurrentStrate()
- || (transect.isInCurrentStrate() && flightState == FlightState.WAITING);
-
+ boolean result = transect.isInFlight()
+ || transect.isSelectedInCurrentStrate()
+ || (transect.isInCurrentStrate() && flightState == FlightState.WAITING);
+
graphic.setVisible(result);
-
+
return result;
}
-
+
protected void updateLineColor(Transect transect, Color colorChanged) {
Integer graphicIndex = transect.getGraphicIndex();
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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.css 2012-08-14 13:09:01 UTC (rev 420)
@@ -26,6 +26,7 @@
#campaignLabel {
text: "sammoa.label.campaign";
}
+
#campaignCombobox {
model: {campaignListModel};
renderer: {new DecoratorProviderListCellRenderer(getHandler().getDecoratorProvider())};
@@ -34,6 +35,7 @@
#systemIdLabel {
text: "sammoa.label.systemId";
}
+
#systemIdCombobox {
enabled: {getModel().getCampaign() != null};
model: {systemIdListModel};
@@ -42,6 +44,7 @@
#flightLabel {
text: "sammoa.label.flight";
}
+
#flightCombobox {
enabled: {getModel().getCampaign() != null};
model: {flightListModel};
@@ -52,13 +55,13 @@
enabled: {getModel().getCampaign() != null};
text: "sammoa.action.edit";
}
+
#newCampaignButton {
text: "sammoa.action.new";
}
-#importButton {
- enabled:false;
- text: "sammoa.action.import";
+#importApplicationButton {
+ text: "sammoa.action.importApplication";
}
#exportMapButton {
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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.jaxx 2012-08-14 13:09:01 UTC (rev 420)
@@ -54,14 +54,11 @@
<HomeUIModel id='model'/>
- <GenericListModel id='campaignListModel'
- genericType='Campaign'/>
+ <GenericListModel id='campaignListModel' genericType='Campaign'/>
- <GenericListModel id='systemIdListModel'
- genericType='String'/>
+ <GenericListModel id='systemIdListModel' genericType='String'/>
- <GenericListModel id='flightListModel'
- genericType='Flight'/>
+ <GenericListModel id='flightListModel' genericType='Flight'/>
<Table fill='both' constraints='BorderLayout.CENTER'>
<row>
@@ -102,8 +99,8 @@
<row>
<cell fill='both' columns='3'>
<JPanel layout='{new GridLayout(1,0,0,0)}'>
- <JButton id='importButton'
- onActionPerformed='getHandler().showImport()'/>
+ <JButton id='importApplicationButton'
+ onActionPerformed='getHandler().showImportApplication()'/>
<JButton id='exportMapButton'
onActionPerformed='getHandler().showExportMap()'/>
<JButton id='exportApplicationButton'
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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUIHandler.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -35,6 +35,7 @@
import fr.ulr.sammoa.persistence.Flights;
import fr.ulr.sammoa.persistence.HasTopiaIdPredicate;
import fr.ulr.sammoa.ui.swing.SammoaDecoratorProvider;
+import fr.ulr.sammoa.ui.swing.SammoaScreen;
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import fr.ulr.sammoa.ui.swing.SammoaUIHandler;
import org.slf4j.Logger;
@@ -252,33 +253,26 @@
public void showSelectedCampaign() {
Campaign campaign = getModel().getCampaign();
-
- context.setCampaignScreen(campaign.getTopiaId());
+ context.changeScreen(SammoaScreen.CAMPAIGN, campaign, null);
}
public void showNewCampaign() {
-
- context.setCampaignScreen(null);
+ context.changeScreen(SammoaScreen.CAMPAIGN);
}
- public void showImport() {
-
+ public void showImportApplication() {
+ context.changeScreen(SammoaScreen.IMPORT_APPLICATION);
}
public void showExportMap() {
-
Campaign campaign = getModel().getCampaign();
- String campaignId = campaign == null ? null : campaign.getTopiaId();
- context.setExportMapScreen(campaignId);
+ context.changeScreen(SammoaScreen.EXPORT_MAP, campaign, null);
}
public void showExportApplication() {
-
Campaign campaign = getModel().getCampaign();
- String campaignId = campaign == null ? null : campaign.getTopiaId();
Flight flight = getModel().getFlight();
- String flightId = flight == null ? null : flight.getTopiaId();
- context.setExportApplicationScreen(campaignId, flightId);
+ context.changeScreen(SammoaScreen.EXPORT_APPLICATION, campaign, flight);
}
public void showOnBoard() {
@@ -290,17 +284,18 @@
Flight flight = getModel().getFlight();
- // Create a new Flight for the selected Campaign
if (flight == null) {
+ // Create a new Flight for the selected Campaign
flight = getFlightService().createFlight(campaign);
}
-
- context.setFlightScreen(flight.getTopiaId());
+ context.changeScreen(SammoaScreen.FLIGHT, campaign, flight);
}
public void showValidation() {
-
+ Campaign campaign = getModel().getCampaign();
+ Flight flight = getModel().getFlight();
+ context.changeScreen(SammoaScreen.VALIDATION, campaign, flight);
}
protected Flight getFirstFlight(List<Flight> flights) {
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUIModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUIModel.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUIModel.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -2,8 +2,8 @@
/*
* #%L
* SAMMOA :: UI Swing
- * $Id:$
- * $HeadURL:$
+ * $Id$
+ * $HeadURL$
* %%
* Copyright (C) 2012 UMS 3462, Code Lutin
* %%
@@ -25,15 +25,17 @@
import fr.ulr.sammoa.persistence.Campaign;
import fr.ulr.sammoa.persistence.Flight;
-import fr.ulr.sammoa.ui.swing.BaseModel;
+import org.jdesktop.beans.AbstractSerializableBean;
/**
* Created: 19/07/12
*
* @author fdesbois <desbois(a)codelutin.com>
*/
-public class HomeUIModel extends BaseModel {
-
+public class HomeUIModel extends AbstractSerializableBean {
+
+ private static final long serialVersionUID = 1L;
+
public static final String PROPERTY_CAMPAIGN = "campaign";
public static final String PROPERTY_SYSTEM_ID = "systemId";
@@ -41,13 +43,13 @@
public static final String PROPERTY_FLIGHT = "flight";
public static final String PROPERTY_FLIGHT_ENDED = "flightEnded";
-
+
protected Campaign campaign;
-
+
protected String systemId;
-
+
protected Flight flight;
-
+
protected boolean flightEnded;
public Campaign getCampaign() {
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/UIImporter.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/UIImporter.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/UIImporter.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -54,7 +54,9 @@
this.ui = ui;
}
- public boolean importShape(ShpImporter<?> importer, File file, CampaignStorage storage) {
+ public boolean importShape(ShpImporter<?> importer,
+ CampaignStorage storage,
+ File file) {
boolean result = false;
try {
Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/java-info.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/java-info.java (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/java-info.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -0,0 +1,5 @@
+/**
+ * Base package for all input operations (says all imports).
+ * @since 0.6
+ */
+package fr.ulr.sammoa.ui.swing.io.input;
\ No newline at end of file
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/java-info.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/input/sammoa/ImportApplicationUI.css
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUI.css (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUI.css 2012-08-14 13:09:01 UTC (rev 420)
@@ -0,0 +1,19 @@
+#importFileLbl {
+ text: "sammoa.label.importApplicationFile";
+}
+
+#importFileEditor {
+ title: "sammoa.dialog.title.importSammoaFile";
+ exts: "sammoa";
+ extsDescription: "Sammoa files";
+ directoryEnabled:false;
+ acceptAllFileFilterUsed:false;
+}
+
+#quitButton {
+ text: "sammoa.action.quitImportApplication";
+}
+
+#importButton {
+ text: "sammoa.action.importApplication";
+}
\ No newline at end of file
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUI.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/input/sammoa/ImportApplicationUI.jaxx
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUI.jaxx (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUI.jaxx 2012-08-14 13:09:01 UTC (rev 420)
@@ -0,0 +1,81 @@
+<!--
+ #%L
+ SAMMOA :: UI Swing
+ $Id: ExportApplicationUI.jaxx 414 2012-08-13 22:12:51Z tchemit $
+ $HeadURL: http://svn.forge.codelutin.com/svn/sammoa/trunk/sammoa-ui-swing/src/main/ja… $
+ %%
+ 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%
+ -->
+<JPanel id='importApplicationUI' layout='{new BorderLayout()}'
+ implements='fr.ulr.sammoa.ui.swing.SammoaUI<ImportApplicationUIHandler>'>
+
+ <import>
+ fr.ulr.sammoa.persistence.Campaign
+ fr.ulr.sammoa.persistence.Flight
+ fr.ulr.sammoa.ui.swing.SammoaUIContext
+
+ jaxx.runtime.swing.editor.FileEditor
+
+ java.awt.BorderLayout
+
+ static org.nuiton.i18n.I18n._
+ </import>
+
+ <script><![CDATA[
+
+ public ImportApplicationUI(SammoaUIContext context) {
+ ImportApplicationUIHandler handler =
+ new ImportApplicationUIHandler(context, this);
+ setContextValue(handler);
+ handler.beforeInitUI();
+ }
+
+ protected void $afterCompleteSetup() {
+ getHandler().afterInitUI();
+ }
+ ]]></script>
+
+ <ImportApplicationUIModel id='model'
+ initializer='getContextValue(ImportApplicationUIModel.class)'/>
+
+ <ImportApplicationUIHandler id='handler'
+ initializer='getContextValue(ImportApplicationUIHandler.class)'/>
+
+ <Table fill='both' constraints='BorderLayout.CENTER'>
+ <!-- import file -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='importFileLbl'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0' columns='2'>
+ <FileEditor id='importFileEditor'
+ onActionPerformed='getModel().setImportFile(importFileEditor.getSelectedFile())'/>
+ </cell>
+ </row>
+ <!--import actions-->
+ <row>
+ <cell columns='5' fill="both">
+ <JPanel layout='{new GridLayout(1,2,0,0)}'>
+ <JButton id='quitButton' onActionPerformed='getHandler().close()'/>
+ <JButton id='importButton'
+ onActionPerformed='getHandler().importApplication()'/>
+ </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/input/sammoa/ImportApplicationUIHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUIHandler.java (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUIHandler.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -0,0 +1,113 @@
+package fr.ulr.sammoa.ui.swing.io.input.sammoa;
+
+import fr.ulr.sammoa.application.FlightService;
+import fr.ulr.sammoa.application.ReferentialService;
+import fr.ulr.sammoa.application.SammoaContext;
+import fr.ulr.sammoa.application.io.input.sammoa.ImportApplicationModel;
+import fr.ulr.sammoa.application.io.input.sammoa.ImportApplicationService;
+import fr.ulr.sammoa.ui.swing.SammoaDecoratorProvider;
+import fr.ulr.sammoa.ui.swing.SammoaScreen;
+import fr.ulr.sammoa.ui.swing.SammoaUIContext;
+import fr.ulr.sammoa.ui.swing.SammoaUIHandler;
+import fr.ulr.sammoa.ui.swing.util.SammoaUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.swing.JFrame;
+
+/**
+ * UI Handler fo {@link ImportApplicationUI}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class ImportApplicationUIHandler implements SammoaUIHandler {
+
+ private static final Logger logger =
+ LoggerFactory.getLogger(ImportApplicationUIHandler.class);
+
+ private final ImportApplicationUI ui;
+
+ protected SammoaUIContext context;
+
+ protected final ImportApplicationService importService;
+
+
+ protected final ReferentialService referentialService;
+
+ protected final FlightService flightService;
+
+ protected final SammoaDecoratorProvider decoratorProvider;
+
+ public ImportApplicationUIHandler(SammoaUIContext context,
+ ImportApplicationUI ui) {
+ this.context = context;
+ this.ui = ui;
+ SammoaContext appContext = context.getAppContext();
+
+ this.importService = context.newService(ImportApplicationService.class);
+ this.flightService = appContext.getFlightService();
+ this.referentialService = appContext.getReferentialService();
+ this.decoratorProvider = context.getDecoratorProvider();
+ }
+
+ @Override
+ public void beforeInitUI() {
+
+ //-- create model --//
+
+ ImportApplicationUIModel model = new ImportApplicationUIModel();
+
+ //-- share model and handler in jaxx context --//
+ ui.setContextValue(this);
+ ui.setContextValue(model);
+
+// model.addPropertyChangeListener(new PropertyChangeListener() {
+// @Override
+// public void propertyChange(PropertyChangeEvent evt) {
+//
+// if (ExportApplicationUIModel.PROPERTY_SELECTED_CAMPAIGN.equals(evt.getPropertyName())) {
+// Campaign newValue = (Campaign) evt.getNewValue();
+// onSelectedCampaignChanged(newValue);
+// } else if (ExportApplicationUIModel.PROPERTY_FLIGHTS.equals(evt.getPropertyName())) {
+// Collection<Flight> newValue = (Collection<Flight>) evt.getNewValue();
+// onFlightsChanged(newValue);
+// } else if (ExportApplicationUIModel.PROPERTY_SELECTED_FLIGHT.equals(evt.getPropertyName())) {
+// Flight newValue = (Flight) evt.getNewValue();
+// onSelectedFlightChanged(newValue);
+// }
+// }
+// });
+ }
+
+ @Override
+ public void afterInitUI() {
+ }
+
+ @Override
+ public void onCloseUI() {
+ }
+
+ public void importApplication() {
+
+ JFrame frame = ui.getParentContainer(JFrame.class);
+ SammoaUtil.updateBusyState(frame, true);
+
+ try {
+ ImportApplicationModel dataModel = getModel().toModel();
+ importService.importApplication(dataModel);
+
+ } finally {
+ SammoaUtil.updateBusyState(frame, false);
+ }
+ }
+
+ public void close() {
+ context.changeScreen(SammoaScreen.HOME);
+ }
+
+ protected ImportApplicationUIModel getModel() {
+ return ui.getModel();
+ }
+
+}
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUIHandler.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/input/sammoa/ImportApplicationUIModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUIModel.java (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUIModel.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -0,0 +1,145 @@
+package fr.ulr.sammoa.ui.swing.io.input.sammoa;
+/*
+ * #%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%
+ */
+
+import com.google.common.collect.Lists;
+import fr.ulr.sammoa.application.io.input.sammoa.ImportApplicationModel;
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.Flight;
+import org.jdesktop.beans.AbstractSerializableBean;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * Model for sammoa import.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class ImportApplicationUIModel extends AbstractSerializableBean {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String PROPERTY_EXISTING_CAMPAIGN = "existingCampaign";
+
+ public static final String PROPERTY_EXISTING_FLIGHTS = "existingFlights";
+
+ public static final String PROPERTY_NEW_CAMPAIGN = "newCampaign";
+
+ public static final String PROPERTY_NEW_FLIGHTS = "newFlights";
+
+ public static final String PROPERTY_SELECTED_FLIGHT_IDS = "selectedFlightIds";
+
+ public static final String PROPERTY_IMPORT_FILE = "importFile";
+
+ /** File to import. */
+ protected File importFile;
+
+ /** Existing campaign. */
+ protected Campaign existingCampaign;
+
+ /** existing existingFlights on db. */
+ protected List<Flight> existingFlights;
+
+ /** New campaign to import (read from the import file). */
+ protected Campaign newCampaign;
+
+ /** New existingFlights to import (read from the import file). */
+ protected List<Flight> newFlights;
+
+ /** Selected flight ids to imports. */
+ protected List<String> selectedFlightIds;
+
+ public File getImportFile() {
+ return importFile;
+ }
+
+ public void setImportFile(File importFile) {
+ File oldValue = this.importFile;
+ this.importFile = importFile;
+ firePropertyChange(PROPERTY_IMPORT_FILE, oldValue, importFile);
+ }
+
+ public Campaign getExistingCampaign() {
+ return existingCampaign;
+ }
+
+ public void setExistingCampaign(Campaign existingCampaign) {
+ Campaign oldValue = this.existingCampaign;
+ this.existingCampaign = existingCampaign;
+ firePropertyChange(PROPERTY_EXISTING_CAMPAIGN, oldValue, existingCampaign);
+ }
+
+ public List<Flight> getExistingFlights() {
+ if (existingFlights == null) {
+ existingFlights = Lists.newArrayList();
+ }
+ return existingFlights;
+ }
+
+ public void setExistingFlights(List<Flight> existingFlights) {
+ List<Flight> oldValue = this.existingFlights;
+ this.existingFlights = existingFlights;
+ firePropertyChange(PROPERTY_EXISTING_FLIGHTS, oldValue, existingFlights);
+ }
+
+ public List<Flight> getNewFlights() {
+ return newFlights;
+ }
+
+ public void setNewFlights(List<Flight> newFlights) {
+ List<Flight> oldValue = this.newFlights;
+ this.newFlights = newFlights;
+ firePropertyChange(PROPERTY_NEW_FLIGHTS, oldValue, newFlights);
+ }
+
+ public Campaign getNewCampaign() {
+ return newCampaign;
+ }
+
+ public void setNewCampaign(Campaign newCampaign) {
+ Campaign oldValue = this.newCampaign;
+ this.newCampaign = newCampaign;
+ firePropertyChange(PROPERTY_NEW_CAMPAIGN, oldValue, newCampaign);
+ }
+
+ public List<String> getSelectedFlightIds() {
+ return selectedFlightIds;
+ }
+
+ public void setSelectedFlightIds(List<String> selectedFlightIds) {
+ List<String> oldValue = this.selectedFlightIds;
+ this.selectedFlightIds = selectedFlightIds;
+ firePropertyChange(PROPERTY_SELECTED_FLIGHT_IDS, oldValue, selectedFlightIds);
+ }
+
+ public ImportApplicationModel toModel() {
+ ImportApplicationModel result = ImportApplicationModel.newModel(
+ getImportFile(),
+ getSelectedFlightIds()
+ );
+ return result;
+ }
+}
\ No newline at end of file
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/ImportApplicationUIModel.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/input/sammoa/java-info.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/java-info.java (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/java-info.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -0,0 +1,6 @@
+/**
+ * Base package for sammoa application import.
+ *
+ * @since 0.6
+ */
+package fr.ulr.sammoa.ui.swing.io.input.sammoa;
\ No newline at end of file
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/java-info.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/java-info.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/java-info.java (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/java-info.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -0,0 +1,7 @@
+/**
+ * Base package for all io operations (says all imports ({@code input} package)
+ * and all exports ({@code output} package).
+ *
+ * @since 0.6
+ */
+package fr.ulr.sammoa.ui.swing.io;
\ No newline at end of file
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/java-info.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/io/output/map/ExportMapLauncherUI.jaxx
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapLauncherUI.jaxx 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapLauncherUI.jaxx 2012-08-14 13:09:01 UTC (rev 420)
@@ -24,12 +24,9 @@
<JPanel layout='{new BorderLayout()}'>
<import>
-
java.awt.BorderLayout
java.io.File
- jaxx.runtime.swing.BlockingLayerUI
-
static org.nuiton.i18n.I18n._
</import>
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.css
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.css 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.css 2012-08-14 13:09:01 UTC (rev 420)
@@ -21,6 +21,7 @@
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
+
BeanListHeader {
i18nPrefix: "sammoa.common.";
}
@@ -94,6 +95,7 @@
#exportObservations {
text:"sammoa.action.exportObservationsMap";
}
+
#exportGeoPoints {
text:"sammoa.action.exportGeoPointsMap";
}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.jaxx
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.jaxx 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.jaxx 2012-08-14 13:09:01 UTC (rev 420)
@@ -25,7 +25,6 @@
implements='fr.ulr.sammoa.ui.swing.SammoaUI<ExportMapUIHandler>'>
<import>
- fr.ulr.sammoa.application.flightController.FlightState
fr.ulr.sammoa.persistence.Campaign
fr.ulr.sammoa.persistence.RouteType
fr.ulr.sammoa.persistence.Strate
@@ -39,7 +38,6 @@
java.awt.BorderLayout
java.awt.event.ItemEvent
- java.io.File
static org.nuiton.i18n.I18n._
</import>
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUIHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUIHandler.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUIHandler.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -26,6 +26,7 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import fr.ulr.sammoa.application.ReferentialService;
+import fr.ulr.sammoa.application.SammoaContext;
import fr.ulr.sammoa.application.io.output.map.ExportMapModel;
import fr.ulr.sammoa.application.io.output.map.ExportMapService;
import fr.ulr.sammoa.persistence.Campaign;
@@ -36,6 +37,7 @@
import fr.ulr.sammoa.persistence.StringRef;
import fr.ulr.sammoa.persistence.StringRefs;
import fr.ulr.sammoa.ui.swing.SammoaDecoratorProvider;
+import fr.ulr.sammoa.ui.swing.SammoaScreen;
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import fr.ulr.sammoa.ui.swing.SammoaUIHandler;
import fr.ulr.sammoa.ui.swing.util.SammoaUtil;
@@ -80,22 +82,24 @@
protected SammoaUIContext context;
+ protected final ExportMapService exportService;
+
+ protected final ReferentialService referentialService;
+
+ protected final SammoaDecoratorProvider decoratorProvider;
+
public ExportMapUIHandler(SammoaUIContext context,
ExportMapUI ui) {
this.context = context;
this.ui = ui;
+ SammoaContext appContext = context.getAppContext();
+ this.referentialService = appContext.getReferentialService();
+ this.exportService = context.newService(ExportMapService.class);
+ this.decoratorProvider = context.getDecoratorProvider();
}
- protected ReferentialService getReferentialService() {
- return context.getAppContext().getReferentialService();
- }
-
- protected ExportMapService getExportMapService() {
- return context.getAppContext().getExportMapService();
- }
-
public SammoaDecoratorProvider getDecoratorProvider() {
- return context.getDecoratorProvider();
+ return decoratorProvider;
}
@Override
@@ -105,7 +109,7 @@
ExportMapUIModel model = new ExportMapUIModel();
- List<Campaign> campaigns = getReferentialService().getCampaigns();
+ List<Campaign> campaigns = referentialService.getCampaigns();
//TODO-tchemit-2012-08-03 add an null campaign (for test purpose, should be removed...)
campaigns.add(0, null);
model.setCampaigns(campaigns);
@@ -115,7 +119,7 @@
if (campaignId != null) {
- Campaign campaign = getReferentialService().getCampaign(campaignId);
+ Campaign campaign = referentialService.getCampaign(campaignId);
// selected cam
model.setSelectedCampaign(campaign);
@@ -201,8 +205,10 @@
// reset strates,...
if (logger.isInfoEnabled()) {
- Decorator<Campaign> decorator = getDecoratorProvider().getDecoratorByType(Campaign.class);
- logger.info("New selected campain: {}", decorator.toString(newCampaign));
+ Decorator<Campaign> decorator =
+ decoratorProvider.getDecoratorByType(Campaign.class);
+ logger.info("New selected campain: {}",
+ decorator.toString(newCampaign));
}
ExportMapUIModel model = getModel();
@@ -215,7 +221,7 @@
if (newCampaign == null) {
strates = Collections.emptyList();
} else {
- strates = getReferentialService().getAllStrates(newCampaign);
+ strates = referentialService.getAllStrates(newCampaign);
}
if (logger.isDebugEnabled()) {
logger.debug("New strates: {}", strates.size());
@@ -230,7 +236,7 @@
speciesTypes = Collections.emptyList();
} else {
- species = getReferentialService().getAllSpecies(newCampaign);
+ species = referentialService.getAllSpecies(newCampaign);
speciesTypes = StringRefs.toRefs(Species2.toSpeciesTypes(species));
}
model.setSpecies(species);
@@ -238,7 +244,7 @@
}
public void close() {
- context.setHomeScreen();
+ context.changeScreen(SammoaScreen.HOME);
}
@Override
@@ -281,7 +287,7 @@
model.toModel(model.getExportEffortsFilename());
// launch export
- getExportMapService().exportEffortsMap(dataModel);
+ exportService.exportEffortsMap(dataModel);
} finally {
@@ -325,7 +331,7 @@
model.toModel(model.getExportObservationsFilename());
// launch export
- getExportMapService().exportObservationsMap(dataModel);
+ exportService.exportObservationsMap(dataModel);
} finally {
@@ -345,7 +351,6 @@
public void exportGeoPoints() {
-
Action startAction = new AbstractAction(
_("sammoa.action.startExport"),
SwingUtil.createActionIcon("accept")) {
@@ -372,7 +377,7 @@
model.toModel(model.getExportGeoPointsFilename());
// launch export
- getExportMapService().exportGeoPointsMap(dataModel);
+ exportService.exportGeoPointsMap(dataModel);
} finally {
@@ -441,8 +446,9 @@
OneClicListSelectionModel.installModel(jList);
// init list
- Decorator<E> decorator = getDecoratorProvider().getDecoratorByType(beanType);
- Preconditions.checkNotNull(decorator, "No decorator found for type " + beanType);
+ Decorator<E> decorator = decoratorProvider.getDecoratorByType(beanType);
+ Preconditions.checkNotNull(decorator,
+ "No decorator found for type " + beanType);
if (logger.isDebugEnabled()) {
logger.debug("Will use decorator " + decorator);
}
Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/java-info.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/java-info.java (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/java-info.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -0,0 +1,6 @@
+/**
+ * Base package for map export operations.
+ *
+ * @since 0.6
+ */
+package fr.ulr.sammoa.ui.swing.io.output.map;
\ No newline at end of file
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/java-info.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/io/output/sammoa/ExportApplicationUI.css
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.css 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.css 2012-08-14 13:09:01 UTC (rev 420)
@@ -21,6 +21,7 @@
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
+
#campaignLabel {
text: "sammoa.label.campaign";
}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIHandler.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIHandler.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -25,13 +25,14 @@
import fr.ulr.sammoa.application.FlightService;
import fr.ulr.sammoa.application.ReferentialService;
+import fr.ulr.sammoa.application.SammoaContext;
import fr.ulr.sammoa.application.io.output.sammoa.ExportApplicationCallbackMode;
import fr.ulr.sammoa.application.io.output.sammoa.ExportApplicationModel;
import fr.ulr.sammoa.application.io.output.sammoa.ExportApplicationService;
-import fr.ulr.sammoa.application.io.output.map.ExportMapService;
import fr.ulr.sammoa.persistence.Campaign;
import fr.ulr.sammoa.persistence.Flight;
import fr.ulr.sammoa.ui.swing.SammoaDecoratorProvider;
+import fr.ulr.sammoa.ui.swing.SammoaScreen;
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import fr.ulr.sammoa.ui.swing.SammoaUIHandler;
import fr.ulr.sammoa.ui.swing.util.SammoaUtil;
@@ -42,7 +43,6 @@
import org.slf4j.LoggerFactory;
import javax.swing.JFrame;
-import javax.swing.SwingUtilities;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
@@ -65,28 +65,29 @@
private final ExportApplicationUI ui;
- protected SammoaUIContext context;
+ protected final SammoaUIContext context;
+ protected final ExportApplicationService exportService;
+
+ protected final ReferentialService referentialService;
+
+ protected final FlightService flightService;
+
+ protected final SammoaDecoratorProvider decoratorProvider;
+
public ExportApplicationUIHandler(SammoaUIContext context,
ExportApplicationUI ui) {
this.context = context;
this.ui = ui;
+ SammoaContext appContext = context.getAppContext();
+ this.flightService = appContext.getFlightService();
+ this.referentialService = appContext.getReferentialService();
+ this.exportService = context.newService(ExportApplicationService.class);
+ this.decoratorProvider = context.getDecoratorProvider();
}
- protected ReferentialService getReferentialService() {
- return context.getAppContext().getReferentialService();
- }
-
- protected FlightService getFlightService() {
- return context.getAppContext().getFlightService();
- }
-
- protected ExportMapService getExportMapService() {
- return context.getAppContext().getExportMapService();
- }
-
public SammoaDecoratorProvider getDecoratorProvider() {
- return context.getDecoratorProvider();
+ return decoratorProvider;
}
@Override
@@ -96,7 +97,7 @@
ExportApplicationUIModel model = new ExportApplicationUIModel();
- List<Campaign> campaigns = getReferentialService().getCampaigns();
+ List<Campaign> campaigns = referentialService.getCampaigns();
//TODO-tchemit-2012-08-03 add an null campaign (for test purpose, should be removed...)
campaigns.add(0, null);
model.setCampaigns(campaigns);
@@ -105,7 +106,7 @@
if (campaignId != null) {
- Campaign campaign = getReferentialService().getCampaign(campaignId);
+ Campaign campaign = referentialService.getCampaign(campaignId);
// selected cam
model.setSelectedCampaign(campaign);
@@ -115,7 +116,7 @@
if (flightId != null) {
- Flight flight = getFlightService().getFlight(flightId);
+ Flight flight = flightService.getFlight(flightId);
// selected cam
model.setSelectedFlight(flight);
@@ -168,36 +169,51 @@
onSelectedFlightChanged(selectedFlight);
}
+ @Override
+ public void onCloseUI() {
+ }
+
public void exportApplication() {
JFrame frame = ui.getParentContainer(JFrame.class);
SammoaUtil.updateBusyState(frame, true);
try {
- SwingUtilities.invokeLater(
- new Runnable() {
- @Override
- public void run() {
- ExportApplicationModel dataModel = getModel().toModel();
+ ExportApplicationModel dataModel = getModel().toModel();
+ exportService.exportApplication(dataModel);
- ExportApplicationService service =
- context.getAppContext().newExportApplicationService();
- service.exportApplication(dataModel);
- }
- }
- );
-
} finally {
SammoaUtil.updateBusyState(frame, false);
}
}
+ public void close() {
+ context.changeScreen(SammoaScreen.HOME);
+ }
+
+ public void chooseExportDirectory() {
+ File f = SammoaUtil.chooseDirectory(
+ ui,
+ _("sammoa.title.choose.export.directory"),
+ _("sammoa.action.choose.export.directory"),
+ ui.getModel().getExportDirectory()
+ );
+ ui.getModel().setExportDirectory(f);
+ }
+
+
+ protected ExportApplicationUIModel getModel() {
+ return ui.getModel();
+ }
+
protected void onSelectedCampaignChanged(Campaign newCampaign) {
// reset flights,...
if (logger.isInfoEnabled()) {
- Decorator<Campaign> decorator = getDecoratorProvider().getDecoratorByType(Campaign.class);
- logger.info("New selected campain: {}", decorator.toString(newCampaign));
+ Decorator<Campaign> decorator =
+ decoratorProvider.getDecoratorByType(Campaign.class);
+ logger.info("New selected campain: {}",
+ decorator.toString(newCampaign));
}
ExportApplicationUIModel model = getModel();
@@ -208,7 +224,7 @@
flights = Collections.emptyList();
filename = "";
} else {
- flights = getFlightService().getFlights(newCampaign);
+ flights = flightService.getFlights(newCampaign);
filename = String.format("campaign-%s.sammoa", newCampaign.getCode());
}
if (logger.isDebugEnabled()) {
@@ -236,35 +252,14 @@
// reset flights,...
if (logger.isInfoEnabled()) {
- Decorator<Flight> decorator = getDecoratorProvider().getDecoratorByType(Flight.class);
- logger.info("New selected flight: {}", decorator.toString(newCampaign));
+ Decorator<Flight> decorator =
+ decoratorProvider.getDecoratorByType(Flight.class);
+ logger.info("New selected flight: {}",
+ decorator.toString(newCampaign));
}
ExportApplicationUIModel model = getModel();
}
- public void close() {
- context.setHomeScreen();
- }
- @Override
- public void onCloseUI() {
- }
-
- public void chooseExportDirectory() {
- File f = SammoaUtil.chooseDirectory(
- ui,
- _("sammoa.title.choose.export.directory"),
- _("sammoa.action.choose.export.directory"),
- ui.getModel().getExportDirectory()
- );
- ui.getModel().setExportDirectory(f);
- }
-
-
- public ExportApplicationUIModel getModel() {
- return ui.getModel();
- }
-
-
}
Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/java-info.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/java-info.java (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/java-info.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -0,0 +1,6 @@
+/**
+ * Package for the sammoa application export.
+ *
+ * @since 0.6
+ */
+package fr.ulr.sammoa.ui.swing.io.output.sammoa;
\ No newline at end of file
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/java-info.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/observations/EffortPanel.css
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanel.css 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanel.css 2012-08-14 13:09:01 UTC (rev 420)
@@ -40,7 +40,6 @@
model:{errorTableModel};
}
-
#transecLbl {
text: "sammoa.observation.observationCondition.transec";
}
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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/EffortPanelHandler.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -67,7 +67,15 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.swing.*;
+import javax.swing.AbstractCellEditor;
+import javax.swing.Action;
+import javax.swing.DefaultCellEditor;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.ListSelectionModel;
+import javax.swing.SwingUtilities;
import javax.swing.border.LineBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
@@ -77,7 +85,9 @@
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableModel;
-import java.awt.*;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Rectangle;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/ForceSelectionSelectionModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/ForceSelectionSelectionModel.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/ForceSelectionSelectionModel.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -33,7 +33,7 @@
/**
* Surcharge de modele de selection par default pour empecher la deselection
* de la dernière ligne et pour qu'il y est toujours une ligne selectionnée.
- *
+ *
* @author echatellier
*/
public class ForceSelectionSelectionModel extends DefaultListSelectionModel {
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/ObservationTableModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/ObservationTableModel.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/ObservationTableModel.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -130,7 +130,7 @@
OBSERVATION_NUMBER(false, String.class, Observation.PROPERTY_OBSERVATION_NUMBER),
OBSERVATION_TIME(false, Date.class, Observation.PROPERTY_OBSERVATION_TIME),
- OBSERVER(false,String.class,
+ OBSERVER(false, String.class,
Observation.PROPERTY_OBSERVER_POSITION,
ObserverPosition.PROPERTY_OBSERVER,
Observer.PROPERTY_INITIALS
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/RouteTableModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/RouteTableModel.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/RouteTableModel.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -130,7 +130,7 @@
EFFORT_NUMBER(false, String.class, Route.PROPERTY_EFFORT_NUMBER),
BEGIN_TIME(false, Date.class, Route.PROPERTY_BEGIN_TIME),
ROUTE_TYPE(false, String.class, Route.PROPERTY_ROUTE_TYPE),
- TRANSECT(false,String.class,
+ TRANSECT(false, String.class,
Route.PROPERTY_TRANSECT_FLIGHT,
TransectFlight.PROPERTY_TRANSECT,
Transect.PROPERTY_NAME
@@ -200,7 +200,7 @@
}
public void setValue(Route bean, Object value) {
- if (type.isPrimitive() && value==null) {
+ if (type.isPrimitive() && value == null) {
// can not set a null value to a primitive field
} else {
SammoaUtil.setPropertyValue(bean, value, beanProperties);
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/SpeciesCodeValidator.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/SpeciesCodeValidator.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/SpeciesCodeValidator.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -23,13 +23,12 @@
* #L%
*/
+import com.opensymphony.xwork2.validator.ValidationException;
import fr.ulr.sammoa.application.SammoaContext;
import fr.ulr.sammoa.persistence.Species;
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import org.nuiton.validator.xwork2.field.CollectionFieldExpressionValidator;
-import org.nuiton.validator.xwork2.field.CollectionUniqueKeyValidator;
-import com.opensymphony.xwork2.validator.ValidationException;
import java.util.Collection;
/**
@@ -44,7 +43,7 @@
@Override
protected Collection<?> getCollection(Object object) throws ValidationException {
- if (species==null) {
+ if (species == null) {
SammoaContext appContext = SammoaUIContext.getUIContext().getAppContext();
species = appContext.getReferentialService().getAllValidSpecies();
}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/action/MoveToNextEditableCellAction.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/action/MoveToNextEditableCellAction.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/action/MoveToNextEditableCellAction.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -31,11 +31,11 @@
import java.awt.event.ActionEvent;
/**
-* Action to edit next editable cell from selected cell.
+ * Action to edit next editable cell from selected cell.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 0.5
-*/
+ */
public class MoveToNextEditableCellAction extends AbstractAction {
private static final long serialVersionUID = 1L;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/action/MoveToNextRowEditableAction.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/action/MoveToNextRowEditableAction.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/action/MoveToNextRowEditableAction.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -31,11 +31,11 @@
import java.awt.event.ActionEvent;
/**
-* Action to edit next row only if selected cell is editable.
-*
-* @author tchemit <chemit(a)codelutin.com>
-* @since 0.5
-*/
+ * Action to edit next row only if selected cell is editable.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.5
+ */
public class MoveToNextRowEditableAction extends AbstractAction {
private static final long serialVersionUID = 1L;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/action/MoveToPreviousRowEditableAction.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/action/MoveToPreviousRowEditableAction.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/action/MoveToPreviousRowEditableAction.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -31,11 +31,11 @@
import java.awt.event.ActionEvent;
/**
-* Action to edit previous row only if selected cell is editable.
+ * Action to edit previous row only if selected cell is editable.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 0.5
-*/
+ */
public class MoveToPreviousRowEditableAction extends AbstractAction {
private static final long serialVersionUID = 1L;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUI.css
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUI.css 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUI.css 2012-08-14 13:09:01 UTC (rev 420)
@@ -23,13 +23,10 @@
* #L%
*/
-FileEditor {
- acceptAllFileFilterUsed:false;
-}
-
#regionCodeLabel {
text:"sammoa.label.region.code";
}
+
#regionCodeField {
enabled:{!getModel().isUpdate()};
text:{getModel().getCode()};
@@ -38,6 +35,7 @@
#regionNameLabel {
text:"sammoa.label.region.name";
}
+
#regionNameField {
text:{getModel().getName()};
}
@@ -45,17 +43,20 @@
#regionSpeciesLabel {
text:"sammoa.label.region.species";
}
+
#speciesFileEditor {
title:"sammoa.dialog.title.speciesFile";
exts:"csv";
extsDescription:"CSV files";
- directoryEnabled:{false};
+ directoryEnabled:false;
+ acceptAllFileFilterUsed:false;
}
#saveButton {
text:"sammoa.action.save";
enabled:{validator.isValid()};
}
+
#closeButton {
action:{closeAction};
}
@@ -65,6 +66,7 @@
height:200;
width:500;
}
+
#errorTable {
rowSelectionAllowed:true;
autoCreateRowSorter:true;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUI.jaxx
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUI.jaxx 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUI.jaxx 2012-08-14 13:09:01 UTC (rev 420)
@@ -27,13 +27,11 @@
implements='fr.ulr.sammoa.ui.swing.SammoaUI<RegionUIHandler>'>
<import>
- fr.ulr.sammoa.persistence.Region
fr.ulr.sammoa.ui.swing.action.CloseAction
fr.ulr.sammoa.ui.swing.SammoaUIContext
jaxx.runtime.swing.editor.FileEditor
jaxx.runtime.validator.swing.SwingValidatorUtil
- jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer
jaxx.runtime.validator.swing.SwingValidatorMessageTableModel
static org.nuiton.i18n.I18n._
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUIHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUIHandler.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUIHandler.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -31,8 +31,8 @@
import fr.ulr.sammoa.ui.swing.SammoaUIContext;
import fr.ulr.sammoa.ui.swing.SammoaUIHandler;
import fr.ulr.sammoa.ui.swing.io.input.CsvImporter;
-import fr.ulr.sammoa.ui.swing.util.SammoaUtil;
import fr.ulr.sammoa.ui.swing.io.input.UIImporter;
+import fr.ulr.sammoa.ui.swing.util.SammoaUtil;
import jaxx.runtime.swing.ErrorDialogUI;
import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer;
import jaxx.runtime.validator.swing.SwingValidatorUtil;
@@ -56,35 +56,33 @@
private static final Logger logger =
LoggerFactory.getLogger(RegionUIHandler.class);
- protected SammoaUIContext context;
+// protected SammoaUIContext context;
protected RegionUI ui;
protected final UIImporter uiImporter;
+ private final ImportCsvService importCsvService;
+ private final ReferentialService referentialService;
+
public RegionUIHandler(SammoaUIContext context,
RegionUI ui) {
- this.context = context;
+// this.context = context;
this.ui = ui;
this.uiImporter = new UIImporter(ui);
- }
+ this.importCsvService = context.newService(ImportCsvService.class);
- public SammoaContext getAppContext() {
- return context.getAppContext();
+ referentialService = context.getAppContext().getReferentialService();
}
public RegionUIModel getModel() {
return ui.getModel();
}
- public SammoaDecoratorProvider getDecoratorProvider() {
- return context.getDecoratorProvider();
- }
+// public SammoaDecoratorProvider getDecoratorProvider() {
+// return context.getDecoratorProvider();
+// }
- protected ReferentialService getReferentialService() {
- return getAppContext().getReferentialService();
- }
-
@Override
public void beforeInitUI() {
@@ -128,7 +126,7 @@
SammoaUtil.updateBusyState(ui, true);
// Save the entity
- String regionId = getReferentialService().saveRegion(region);
+ String regionId = referentialService.saveRegion(region);
getModel().setId(regionId);
// Import species if necessary
@@ -156,12 +154,13 @@
}
}
- protected CsvImporter speciesImporter = new CsvImporter() {
+
+ protected final CsvImporter speciesImporter = new CsvImporter() {
+
@Override
public String importCsvFile(File file) throws IOException {
- ImportCsvService service = new ImportCsvService(getAppContext());
- int nbImported = service.importSpecies(getModel().getId(), file);
+ int nbImported = importCsvService.importSpecies(getModel().getId(), file);
return _("sammoa.messageDialog.species.import.success", nbImported);
}
};
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUIModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUIModel.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUIModel.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -2,8 +2,8 @@
/*
* #%L
* SAMMOA :: UI Swing
- * $Id:$
- * $HeadURL:$
+ * $Id$
+ * $HeadURL$
* %%
* Copyright (C) 2012 UMS 3462, Code Lutin
* %%
@@ -26,7 +26,7 @@
import com.google.common.collect.Lists;
import fr.ulr.sammoa.persistence.Region;
import fr.ulr.sammoa.persistence.RegionImpl;
-import fr.ulr.sammoa.ui.swing.BaseModel;
+import org.jdesktop.beans.AbstractSerializableBean;
import java.util.List;
@@ -35,31 +35,33 @@
*
* @author fdesbois <desbois(a)codelutin.com>
*/
-public class RegionUIModel extends BaseModel {
+public class RegionUIModel extends AbstractSerializableBean {
public static final String PROPERTY_REGION_REFERENTIAL = "regionReferential";
public static final String PROPERTY_ID = "id";
-
+
public static final String PROPERTY_CODE = "code";
public static final String PROPERTY_NAME = "name";
public static final String PROPERTY_UPDATE = "update";
+ private static final long serialVersionUID = 1L;
+
protected List<Region> regionReferential;
-
+
protected String id;
-
+
protected String code;
-
+
protected String name;
-
+
protected boolean update;
/**
* Prepare create using {@code regionReferential} to check unicity
- *
+ *
* @param regionReferential List of Region as referential
*/
public void prepareCreate(List<Region> regionReferential) {
@@ -85,7 +87,7 @@
* Instanciate a new {@link Region} bean with values from this model.
* Note that the {@code code} property is mandatory (check in validation)
* otherwise an exception will occurs.
- *
+ *
* @return a new {@link Region} bean
*/
public Region newBean() {
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUI.css
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUI.css 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUI.css 2012-08-14 13:09:01 UTC (rev 420)
@@ -22,9 +22,11 @@
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
+
#transectStrateLabel {
text:"sammoa.label.transect.strate";
}
+
#transectStrateComboBox {
renderer:{new DecoratorProviderListCellRenderer(handler.getDecoratorProvider())}
}
@@ -32,6 +34,7 @@
#transectNameLabel {
text:"sammoa.label.transect.name";
}
+
#transectNameField {
text:{getModel().getName()};
}
@@ -40,6 +43,7 @@
text:"sammoa.action.create";
enabled:{validator.isValid()};
}
+
#closeButton {
action:{closeAction};
}
@@ -49,6 +53,7 @@
height:100;
width:500;
}
+
#errorTable {
rowSelectionAllowed:true;
autoCreateRowSorter:true;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUI.jaxx
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUI.jaxx 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUI.jaxx 2012-08-14 13:09:01 UTC (rev 420)
@@ -28,13 +28,11 @@
<import>
fr.ulr.sammoa.ui.swing.flight.StrateModel
- fr.ulr.sammoa.ui.swing.flight.TransectModel
fr.ulr.sammoa.ui.swing.action.CloseAction
fr.ulr.sammoa.ui.swing.SammoaUIContext
jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer
jaxx.runtime.validator.swing.SwingValidatorUtil
- jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer
jaxx.runtime.validator.swing.SwingValidatorMessageTableModel
static org.nuiton.i18n.I18n._
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUIHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUIHandler.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUIHandler.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -41,7 +41,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.swing.*;
+import javax.swing.JFrame;
import java.util.List;
import static org.nuiton.i18n.I18n._;
@@ -56,11 +56,11 @@
private static final Logger logger =
LoggerFactory.getLogger(TransectUIHandler.class);
-
+
protected SammoaUIContext context;
protected TransectUI ui;
-
+
public TransectUIHandler(SammoaUIContext context,
TransectUI ui) {
this.context = context;
@@ -70,7 +70,7 @@
public SammoaContext getAppContext() {
return context.getAppContext();
}
-
+
public TransectUIModel getModel() {
return ui.getModel();
}
@@ -102,7 +102,7 @@
ui.setVisible(false);
// context.getSwingSession().save();
}
-
+
public void openUI() {
if (logger.isInfoEnabled()) {
@@ -162,7 +162,7 @@
}
public void createTransect() {
-
+
try {
boolean success = true;
@@ -177,7 +177,7 @@
if (success) {
ui.getCloseButton().doClick();
}
-
+
} catch (IllegalArgumentException e) {
ErrorDialogUI.showError(e);
}
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUIModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUIModel.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUIModel.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -26,8 +26,8 @@
import com.google.common.collect.Lists;
import fr.ulr.sammoa.persistence.Transect;
import fr.ulr.sammoa.persistence.TransectImpl;
-import fr.ulr.sammoa.ui.swing.BaseModel;
import fr.ulr.sammoa.ui.swing.flight.StrateModel;
+import org.jdesktop.beans.AbstractSerializableBean;
import java.util.List;
@@ -36,8 +36,10 @@
*
* @author fdesbois <desbois(a)codelutin.com>
*/
-public class TransectUIModel extends BaseModel {
+public class TransectUIModel extends AbstractSerializableBean {
+ private static final long serialVersionUID = 1L;
+
public static final String PROPERTY_TRANSECT_REFERENTIAL = "transectReferential";
public static final String PROPERTY_STRATE_REFERENTIAL = "strateReferential";
@@ -55,14 +57,14 @@
protected String id;
protected StrateModel strate;
-
+
protected String name;
/**
* Prepare create using {@code transectReferential} to check unicity
*
* @param strateReferential List of Strate as referential
- * @param currentStrate Set the current strate
+ * @param currentStrate Set the current strate
*/
public void prepareCreate(List<StrateModel> strateReferential,
StrateModel currentStrate) {
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/AbstractRowHighlightPredicate.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/AbstractRowHighlightPredicate.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/AbstractRowHighlightPredicate.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -2,8 +2,8 @@
/*
* #%L
* SAMMOA :: UI Swing
- * $Id:$
- * $HeadURL:$
+ * $Id$
+ * $HeadURL$
* %%
* Copyright (C) 2012 UMS 3462, Code Lutin
* %%
@@ -39,7 +39,7 @@
* @author fdesbois <desbois(a)codelutin.com>
*/
public abstract class AbstractRowHighlightPredicate implements HighlightPredicate {
-
+
protected Map<Object, Boolean> objects;
public AbstractRowHighlightPredicate() {
@@ -48,7 +48,7 @@
@Override
public boolean isHighlighted(Component renderer, ComponentAdapter adapter) {
-
+
int columnIndex = adapter.column;
int rowIndex = adapter.row;
Object object = getValueAt(rowIndex);
@@ -63,7 +63,7 @@
}
return result;
}
-
+
protected abstract boolean isHighlighted(int rowIndex);
protected abstract Object getValueAt(int rowIndex);
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/ColorTableCellRenderer.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/ColorTableCellRenderer.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/ColorTableCellRenderer.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -34,9 +34,9 @@
* @author fdesbois <desbois(a)codelutin.com>
*/
public class ColorTableCellRenderer implements TableCellRenderer {
-
+
protected TableCellRenderer delegate;
-
+
protected Color backgroundColor;
public ColorTableCellRenderer(TableCellRenderer delegate, Color backgroundColor) {
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/LogFileInitializer.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/LogFileInitializer.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/LogFileInitializer.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -49,9 +49,9 @@
public class LogFileInitializer {
private static final Logger rootLogger = (Logger) LoggerFactory.getLogger("ROOT");
-
+
private static final String LOG_PATTERN = "%date %level [%thread] %logger [:%line] : %msg%n";
-
+
private File file;
public LogFileInitializer(File file) {
@@ -71,21 +71,21 @@
}
protected Encoder<ILoggingEvent> getEncoder() {
-
+
PatternLayoutEncoder result = new PatternLayoutEncoder();
result.setContext(getContext());
result.setPattern(LOG_PATTERN);
-
+
result.start();
return result;
}
-
+
protected RollingPolicy newRollingPolicy() {
TimeBasedRollingPolicy result = new TimeBasedRollingPolicy();
result.setContext(getContext());
result.setMaxHistory(10);
-
+
Pair<String, String> filePathAndExtension = getFilePathAndExtension();
result.setFileNamePattern(filePathAndExtension.getLeft() +
@@ -95,7 +95,7 @@
return result;
}
-
+
protected FileAppender<ILoggingEvent> newFileAppender(String name) {
RollingFileAppender<ILoggingEvent> result = new RollingFileAppender<ILoggingEvent>();
@@ -113,7 +113,7 @@
result.start();
return result;
}
-
+
protected Pair<String, String> getFilePathAndExtension() {
String filePath = file.getAbsolutePath();
@@ -124,7 +124,7 @@
} else {
filePath = filePath.replace("." + ext, "");
}
-
+
Pair<String, String> result = new ImmutablePair<String, String>(filePath, ext);
return result;
}
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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/SammoaUtil.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -36,8 +36,18 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.swing.*;
-import java.awt.*;
+import javax.swing.Action;
+import javax.swing.JComponent;
+import javax.swing.JDialog;
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+import javax.swing.JRootPane;
+import javax.swing.KeyStroke;
+import javax.swing.UIManager;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Cursor;
+import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
@@ -223,7 +233,7 @@
}
}
- public static void showErrorMessage(Component ui, String message) {
+ public static void showErrorMessage(Component ui, String message) {
JOptionPane.showMessageDialog(
ui,
message,
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/TableDataChangeListener.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/TableDataChangeListener.java 2012-08-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/TableDataChangeListener.java 2012-08-14 13:09:01 UTC (rev 420)
@@ -2,8 +2,8 @@
/*
* #%L
* SAMMOA :: UI Swing
- * $Id:$
- * $HeadURL:$
+ * $Id$
+ * $HeadURL$
* %%
* Copyright (C) 2012 UMS 3462, Code Lutin
* %%
@@ -36,11 +36,11 @@
* @author fdesbois <desbois(a)codelutin.com>
*/
public class TableDataChangeListener implements PropertyChangeListener {
-
+
public static final int NO_COLUMN_INDEX_TO_EDIT_ON_INSERT = -1;
-
+
protected JXTable table;
-
+
protected AbstractTableModel tableModel;
public TableDataChangeListener(JXTable table,
@@ -53,7 +53,7 @@
public void propertyChange(PropertyChangeEvent evt) {
if (evt instanceof IndexedPropertyChangeEvent) {
- int rowIndex = ((IndexedPropertyChangeEvent)evt).getIndex();
+ int rowIndex = ((IndexedPropertyChangeEvent) evt).getIndex();
Object oldValue = evt.getOldValue();
Object newValue = evt.getNewValue();
@@ -78,7 +78,7 @@
tableModel.fireTableDataChanged();
}
}
-
+
protected int getFirstEditableColumn(int rowIndex) {
for (int columnIndex = 0; columnIndex < tableModel.getColumnCount(); columnIndex++) {
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-14 13:04:50 UTC (rev 419)
+++ trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 2012-08-14 13:09:01 UTC (rev 420)
@@ -27,6 +27,7 @@
sammoa.action.home=Home
sammoa.action.home.tip=Home
sammoa.action.import=Import
+sammoa.action.importApplication=Import
sammoa.action.left.tip=LEFT \: create a new Observation for the observer on the left side
sammoa.action.locale.fr=fr
sammoa.action.locale.fr.tip=French
@@ -37,6 +38,7 @@
sammoa.action.nextTransect.tip=NEXT TRANSECT \: choose this transect to be the next one
sammoa.action.onBoard=On Board
sammoa.action.quitExportMaps=Quit
+sammoa.action.quitImportApplication=
sammoa.action.reload.actions=Reload actions
sammoa.action.reload.gps=Reload GPS
sammoa.action.reload.ui=Reload sammoa ui
@@ -64,6 +66,7 @@
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.importSammoaFile=
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
@@ -114,6 +117,7 @@
sammoa.label.flight.immatriculation=Plane imma.\:
sammoa.label.flight.period=Time\:
sammoa.label.flight.platformType=Type\:
+sammoa.label.importApplicationFile=
sammoa.label.observers=Observers\:
sammoa.label.region.code=Code\:
sammoa.label.region.name=Name\:
@@ -228,6 +232,7 @@
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.importApplication=
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
1
0
r419 - trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence
by tchemit@users.forge.codelutin.com 14 Aug '12
by tchemit@users.forge.codelutin.com 14 Aug '12
14 Aug '12
Author: tchemit
Date: 2012-08-14 15:04:50 +0200 (Tue, 14 Aug 2012)
New Revision: 419
Url: http://forge.codelutin.com/repositories/revision/sammoa/419
Log:
add serialVersionUID
Modified:
trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/RouteImpl.java
Modified: trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/RouteImpl.java
===================================================================
--- trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/RouteImpl.java 2012-08-14 13:04:08 UTC (rev 418)
+++ trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/RouteImpl.java 2012-08-14 13:04:50 UTC (rev 419)
@@ -31,6 +31,8 @@
public class RouteImpl extends RouteAbstract {
+ private static final long serialVersionUID = 1L;
+
@Override
public Collection<ObserverPosition> getObserverPosition() {
if (observerPosition == null) {
1
0
14 Aug '12
Author: tchemit
Date: 2012-08-14 15:04:08 +0200 (Tue, 14 Aug 2012)
New Revision: 418
Url: http://forge.codelutin.com/repositories/revision/sammoa/418
Log:
use a simple but efficient service layout and much-much more...
Added:
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaService.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaServiceSupport.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/java-info.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/java-info.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationModel.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationService.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/java-info.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/java-info.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/java-info.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/java-info.java
Modified:
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.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/flightController/FlightController.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerDefault.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvService.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ImportMapService.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ShpImporter.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapModel.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapService.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationModel.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationService.java
trunk/sammoa-application/src/main/resources/i18n/sammoa-application_en_GB.properties
trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/FlightServiceTest.java
trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvServiceTest.java
trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/map/ExportMapServiceTest.java
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java 2012-08-13 22:23:13 UTC (rev 417)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -53,7 +53,6 @@
import fr.ulr.sammoa.persistence.RouteDAO;
import fr.ulr.sammoa.persistence.RouteType;
import fr.ulr.sammoa.persistence.SammoaDAOHelper;
-import fr.ulr.sammoa.persistence.SammoaPersistence;
import fr.ulr.sammoa.persistence.Transect;
import fr.ulr.sammoa.persistence.TransectDAO;
import fr.ulr.sammoa.persistence.TransectFlight;
@@ -79,25 +78,17 @@
*
* @author fdesbois <desbois(a)codelutin.com>
*/
-public class FlightService {
+public class FlightService extends SammoaServiceSupport {
- private static final Logger logger = LoggerFactory.getLogger(FlightService.class);
+ private static final Logger logger =
+ LoggerFactory.getLogger(FlightService.class);
- private static final TimeLog timeLog = new TimeLog(FlightService.class, 500, 1000);
+ private static final TimeLog timeLog =
+ new TimeLog(FlightService.class, 500, 1000);
- protected SammoaContext context;
-
- protected SammoaConfig config;
-
- protected SammoaPersistence persistence;
-
- protected ReferentialService referential;
-
- public FlightService(SammoaContext context) {
- this.context = context;
- this.persistence = context.getPersistence();
- this.config = context.getConfig();
- this.referential = context.getReferentialService();
+ @Override
+ public void setSammoaContext(SammoaContext context) {
+ super.setSammoaContext(context);
}
public List<Flight> getFlights(Campaign campaign) {
@@ -195,8 +186,9 @@
FlightDAO dao = SammoaDAOHelper.getFlightDAO(transaction);
result = dao.findByTopiaId(flightId);
- Preconditions.checkArgument(result != null,
- String.format("%s doesn't exist", flightId));
+ Preconditions.checkArgument(
+ result != null,
+ String.format("%s doesn't exist", flightId));
if (logger.isInfoEnabled()) {
logger.info("Loading flight {} [{}]",
@@ -315,7 +307,8 @@
}
- public List<GeoPoint> getFlightGeoPoints(TopiaContext transaction, Flight flight) {
+ public List<GeoPoint> getFlightGeoPoints(TopiaContext transaction,
+ Flight flight) {
List<GeoPoint> result;
@@ -379,7 +372,9 @@
* @param transects The list of transect to add
* @return the resulting TransectFlight added
*/
- public List<TransectFlight> addTransects(Flight flight, int fromIndex, Iterable<Transect> transects) {
+ public List<TransectFlight> addTransects(Flight flight,
+ int fromIndex,
+ Iterable<Transect> transects) {
List<TransectFlight> result = Lists.newArrayList();
@@ -546,7 +541,8 @@
}
}
- public List<Observation> getObservations(TopiaContext transaction, Flight flight) {
+ public List<Observation> getObservations(TopiaContext transaction,
+ Flight flight) {
List<Observation> result;
try {
@@ -566,7 +562,8 @@
Observer observer,
Position position) {
- Collection<ObserverPosition> observerPositions = route.getObserverPosition();
+ Collection<ObserverPosition> observerPositions =
+ route.getObserverPosition();
TopiaContext transaction = persistence.beginTransaction();
try {
@@ -574,7 +571,8 @@
SammoaDAOHelper.getObserverPositionDAO(transaction);
ObserverPosition observerPosition =
- Iterables.find(observerPositions, ObserverPositions.withPosition(position));
+ Iterables.find(observerPositions,
+ ObserverPositions.withPosition(position));
// Apply switch on the other observer position with the observer
if (observer != null) {
@@ -583,7 +581,9 @@
Observer oldObserver = observerPosition.getObserver();
ObserverPosition otherObserverPosition =
- Iterables.find(observerPositions, ObserverPositions.withObserver(observer), null);
+ Iterables.find(observerPositions,
+ ObserverPositions.withObserver(observer),
+ null);
if (otherObserverPosition != null) {
otherObserverPosition.setObserver(oldObserver);
@@ -623,7 +623,8 @@
SammoaDAOHelper.getTransectFlightDAO(transaction);
TransectFlight result =
- transectFlightDAO.create(TransectFlight.PROPERTY_TRANSECT, transect);
+ transectFlightDAO.create(TransectFlight.PROPERTY_TRANSECT,
+ transect);
int crossingNumber = transect.getNbTimes() + 1;
result.setCrossingNumber(crossingNumber);
@@ -632,9 +633,11 @@
// Update transect for nbTimes
TransectDAO transectDAO = SammoaDAOHelper.getTransectDAO(transaction);
transectDAO.update(transect);
- logger.debug("Transect {} saved with nbTimes = {}", transect.getName(), crossingNumber);
+ logger.debug("Transect {} saved with nbTimes = {}",
+ transect.getName(), crossingNumber);
- Collection<ObserverPosition> observerPositions = createObserverPositions(transaction, flight);
+ Collection<ObserverPosition> observerPositions =
+ createObserverPositions(transaction, flight);
result.setObserverPosition(observerPositions);
return result;
@@ -666,7 +669,12 @@
Route previousRoute)
throws TopiaException {
- Route result = createRoute(transaction, flight, beginTime, RouteType.TRANSIT, previousRoute, null);
+ Route result = createRoute(transaction,
+ flight,
+ beginTime,
+ RouteType.TRANSIT,
+ previousRoute,
+ null);
return result;
}
@@ -677,9 +685,16 @@
TransectFlight transectFlight)
throws TopiaException {
- Preconditions.checkArgument(transectFlight != null, "You can't create a leg without any transect");
+ Preconditions.checkArgument(
+ transectFlight != null,
+ "You can't create a leg without any transect");
- Route result = createRoute(transaction, flight, beginTime, RouteType.LEG, previousRoute, transectFlight);
+ Route result = createRoute(transaction,
+ flight,
+ beginTime,
+ RouteType.LEG,
+ previousRoute,
+ transectFlight);
RouteDAO dao = SammoaDAOHelper.getRouteDAO(transaction);
@@ -698,9 +713,17 @@
Observation circleBackCause)
throws TopiaException {
- Preconditions.checkArgument(circleBackCause != null, "You can't create a route without any observation cause");
+ Preconditions.checkArgument(
+ circleBackCause != null,
+ "You can't create a route without any observation cause");
- Route result = createRoute(transaction, flight, beginTime, RouteType.CIRCLE_BACK, previousRoute, null);
+ Route result = createRoute(transaction,
+ flight,
+ beginTime,
+ RouteType.CIRCLE_BACK,
+ previousRoute,
+ null);
+
result.setCircleBackCause(circleBackCause);
return result;
@@ -849,16 +872,17 @@
return result;
}
- protected void debugObserverPositions(String title, Iterable<ObserverPosition> observerPositions) {
+ protected void debugObserverPositions(String title,
+ Iterable<ObserverPosition> observerPositions) {
if (logger.isTraceEnabled()) {
logger.trace("ObserverPosition : " + title);
for (ObserverPosition elmt : observerPositions) {
- logger.trace(String.format(
- "ObserverPosition : %s, %s, %s",
- elmt.getTopiaId(),
- (elmt.getObserver() != null ? elmt.getObserver().getInitials() : "N/A"),
- elmt.getPosition())
+ logger.trace(
+ "ObserverPosition : {}, {}, {}",
+ new Object[]{elmt.getTopiaId(),
+ (elmt.getObserver() != null ? elmt.getObserver().getInitials() : "N/A"),
+ elmt.getPosition()}
);
}
}
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-13 22:23:13 UTC (rev 417)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -34,7 +34,6 @@
import fr.ulr.sammoa.persistence.Region;
import fr.ulr.sammoa.persistence.RegionDAO;
import fr.ulr.sammoa.persistence.SammoaDAOHelper;
-import fr.ulr.sammoa.persistence.SammoaPersistence;
import fr.ulr.sammoa.persistence.Species;
import fr.ulr.sammoa.persistence.SpeciesDAO;
import fr.ulr.sammoa.persistence.Strate;
@@ -55,20 +54,8 @@
*
* @author fdesbois <desbois(a)codelutin.com>
*/
-public class ReferentialService {
+public class ReferentialService extends SammoaServiceSupport {
- protected SammoaContext context;
-
- protected SammoaConfig config;
-
- protected SammoaPersistence persistence;
-
- public ReferentialService(SammoaContext context) {
- this.context = context;
- this.persistence = context.getPersistence();
- this.config = context.getConfig();
- }
-
public List<Region> getRegions() {
List<Region> result;
@@ -137,81 +124,6 @@
return result;
}
-// public int importSpecies(String regionId, File file) throws IOException {
-//
-// Reader reader = Files.newReader(file, Charsets.UTF_8);
-//
-// try {
-// int result = 0;
-//
-// TopiaContext transaction = persistence.beginTransaction();
-// try {
-//
-// Region region = SammoaDAOHelper.getRegionDAO(transaction).findByTopiaId(regionId);
-// Preconditions.checkNotNull(region);
-//
-// SpeciesDAO dao =
-// SammoaDAOHelper.getSpeciesDAO(transaction);
-//
-// SpeciesImportModel model = new SpeciesImportModel(region);
-//
-// Import<Species> importCsv = Import.newImport(model, reader);
-//
-// for (Species species : importCsv) {
-//
-// // while importing a species, it does become valid
-// species.setLocalCreation(false);
-//
-// Species speciesExists =
-// dao.findByNaturalId(species.getCode(),
-// species.getRegion());
-//
-// if (speciesExists == null) {
-//
-// dao.create(species);
-//
-// result++;
-//
-// if (logger.isDebugEnabled()) {
-// logger.debug(String.format("Create new species %1$s " +
-// "for region %2$s",
-// species.getCode(),
-// region.getCode()));
-// }
-//
-// } else {
-//
-// 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()));
-// }
-// }
-// }
-//
-// transaction.commitTransaction();
-//
-// } catch (TopiaException e) {
-// throw new TopiaRuntimeException(e);
-//
-// } finally {
-// persistence.endTransaction(transaction);
-// }
-// reader.close();
-//
-// return result;
-// } finally {
-// IOUtils.closeQuietly(reader);
-// }
-// }
-
public List<Campaign> getCampaigns() {
List<Campaign> result;
@@ -386,101 +298,6 @@
}
}
-// public int importTransects(String campaignId, Iterable<Transect> transects) {
-//
-// int result = 0;
-//
-// TopiaContext transaction = persistence.beginTransaction();
-// try {
-//
-// CampaignDAO campaignDAO =
-// SammoaDAOHelper.getCampaignDAO(transaction);
-//
-// Campaign campaign = campaignDAO.findByTopiaId(campaignId);
-// Preconditions.checkArgument(campaign != null,
-// "The topiaId : " + campaignId + " doesn't match any existing campaign");
-//
-// StrateDAO strateDAO = SammoaDAOHelper.getStrateDAO(transaction);
-// TransectDAO transectDAO = SammoaDAOHelper.getTransectDAO(transaction);
-//
-// // Retrieve directly all strates to avoid multiple select queries to find strates
-// List<Strate> strates = strateDAO.findAllByCampaignOrderedByCode(campaign);
-// Map<String, Strate> strateMap =
-// Maps.uniqueIndex(strates, Strates.toCode());
-//
-// int rowIndex = 0;
-// for (Transect transect : transects) {
-//
-// // This is the link with the source shape file that contains graphic elements
-// int graphicIndex = rowIndex;
-//
-// rowIndex++;
-//
-// String strateCode = Strates.getCode(transect.getStrate());
-//
-// // We check the strate, it must exist
-// // We can't do that in TransectImportModel during parsing because
-// // we need two params : sectorNumber and strateType to create the
-// // strateCode and check the existence. It must be done after parsing
-// Strate existStrate = strateMap.get(strateCode);
-// if (existStrate == null) {
-// throw new ImportRuntimeException(String.format(
-// "Unable to read line %1$d : The strate %2$s doesn't exist",
-// rowIndex,
-// strateCode)
-// );
-// }
-//
-// Transect existTransect = transectDAO.findByNaturalId(transect.getName(), existStrate);
-//
-// // If the existing strate is null, create it otherwise ignore
-// if (existTransect == null) {
-//
-// Transect newTransect = transectDAO.createByNaturalId(transect.getName(), existStrate);
-// newTransect.setLength(transect.getLength());
-// newTransect.setStartX(transect.getStartX());
-// newTransect.setStartY(transect.getStartY());
-// newTransect.setEndX(transect.getEndX());
-// newTransect.setEndY(transect.getEndY());
-// newTransect.setNbTimes(transect.getNbTimes());
-// newTransect.setGraphicIndex(graphicIndex);
-//
-// result++;
-//
-// if (logger.isDebugEnabled()) {
-// logger.debug(String.format("Create new transect %1$s" +
-// "(graphicIndex = %2$d)",
-// newTransect.getName(),
-// graphicIndex)
-// );
-// }
-//
-// } else {
-//
-// existTransect.setGraphicIndex(graphicIndex);
-//
-// if (logger.isWarnEnabled()) {
-// logger.warn(String.format("The transect %1$s already " +
-// "exists and will be ignored " +
-// "(graphicIndex = %2$d)",
-// existTransect.getName(),
-// graphicIndex)
-// );
-// }
-// }
-// }
-//
-// transaction.commitTransaction();
-//
-// } catch (TopiaException e) {
-// throw new TopiaRuntimeException(e);
-//
-// } finally {
-// persistence.endTransaction(transaction);
-// }
-// return result;
-// }
-
public String createTransect(Transect transect) {
Preconditions.checkArgument(transect != null);
@@ -494,10 +311,12 @@
TransectDAO dao = SammoaDAOHelper.getTransectDAO(transaction);
- Transect existTransect = dao.findByNaturalId(transect.getName(), transect.getStrate());
+ Transect existTransect = dao.findByNaturalId(transect.getName(),
+ transect.getStrate());
Preconditions.checkArgument(existTransect == null);
- Transect newTransect = dao.createByNaturalId(transect.getName(), transect.getStrate());
+ Transect newTransect = dao.createByNaturalId(transect.getName(),
+ transect.getStrate());
newTransect.setLocalCreation(true);
result = newTransect.getTopiaId();
@@ -533,88 +352,6 @@
return result;
}
-// public int importStrates(String campaignId, Iterable<Strate> strates) {
-//
-// int result = 0;
-//
-// TopiaContext transaction = persistence.beginTransaction();
-// try {
-//
-// CampaignDAO campaignDAO =
-// SammoaDAOHelper.getCampaignDAO(transaction);
-//
-// Campaign campaign = campaignDAO.findByTopiaId(campaignId);
-// Preconditions.checkArgument(campaign != null,
-// "The topiaId : " + campaignId + " doesn't match any existing campaign");
-//
-// StrateDAO strateDAO = SammoaDAOHelper.getStrateDAO(transaction);
-// SectorDAO sectorDAO = SammoaDAOHelper.getSectorDAO(transaction);
-//
-// // Retrieve directly all sectors to avoid multiple select queries to find sectors
-// List<Sector> sectors = sectorDAO.findAllByCampaign(campaign);
-// Map<Integer, Sector> sectorMap =
-// Maps.newHashMap(Maps.uniqueIndex(sectors, Sectors.toSectorNumber()));
-//
-// for (Strate strate : strates) {
-//
-// StrateType strateType = strate.getStrateType();
-// Sector sector = strate.getSector();
-// int sectorNumber = sector.getSectorNumber();
-//
-// Strate existStrate;
-//
-// // Create sector if necessary
-// Sector existSector = sectorMap.get(sectorNumber);
-// if (existSector == null) {
-//
-// existSector = sectorDAO.createByNaturalId(sectorNumber, campaign);
-// existSector.setName(sector.getName());
-// sectorMap.put(sectorNumber, existSector);
-//
-// existStrate = null;
-//
-// } else {
-//
-// // Find existing strate only if sector is not created
-// existStrate = strateDAO.findByNaturalId(strateType, existSector);
-// }
-//
-// // If the existing strate is null, create it otherwise ignore
-// if (existStrate == null) {
-//
-// Strate newStrate = strateDAO.createByNaturalId(strateType, existSector);
-// newStrate.setCode(Strates.getCode(newStrate));
-// newStrate.setName(strate.getName());
-//
-// result++;
-//
-// if (logger.isDebugEnabled()) {
-// logger.debug(String.format("Create new strate %1$s",
-// newStrate.getCode())
-// );
-// }
-//
-// } else {
-//
-// if (logger.isWarnEnabled()) {
-// logger.warn(String.format("The strate %1$s already " +
-// "exists and will be ignored",
-// existStrate.getCode()));
-// }
-// }
-// }
-//
-// transaction.commitTransaction();
-//
-// } catch (TopiaException e) {
-// throw new TopiaRuntimeException(e);
-//
-// } finally {
-// persistence.endTransaction(transaction);
-// }
-// return result;
-// }
-
public List<Observer> getAllObservers(Campaign campaign) {
List<Observer> result;
@@ -640,76 +377,4 @@
return result;
}
-// public int importObservers(String campaignId, File file) throws IOException {
-//
-// Reader reader = Files.newReader(file, Charsets.UTF_8);
-//
-// try {
-// int result = 0;
-// TopiaContext transaction = persistence.beginTransaction();
-// try {
-//
-// Campaign campaign = SammoaDAOHelper.getCampaignDAO(transaction).findByTopiaId(campaignId);
-// Preconditions.checkNotNull(campaign);
-//
-// ObserverDAO observerDAO =
-// SammoaDAOHelper.getObserverDAO(transaction);
-//
-// ObserverImportModel model = new ObserverImportModel(campaign);
-//
-// Import<Observer> importCsv = Import.newImport(model, reader);
-//
-// for (Observer anImportCsv : importCsv) {
-//
-// Observer observer;
-//
-// observer = anImportCsv;
-//
-// Observer observerExists =
-// observerDAO.findByNaturalId(observer.getInitials(), observer.getCampaign());
-//
-// if (observerExists == null) {
-//
-// observerDAO.create(observer);
-//
-// result++;
-//
-// if (logger.isDebugEnabled()) {
-// logger.debug(String.format("Create new observer %1$s " +
-// "for campaign %2$s",
-// observer.getInitials(),
-// campaign.getCode()));
-// }
-//
-// } else {
-//
-// 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()));
-// }
-// }
-// }
-//
-// transaction.commitTransaction();
-//
-// } catch (TopiaException e) {
-// throw new TopiaRuntimeException(e);
-//
-// } finally {
-// persistence.endTransaction(transaction);
-// }
-// reader.close();
-// return result;
-// } finally {
-// IOUtils.closeQuietly(reader);
-// }
-// }
}
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-13 22:23:13 UTC (rev 417)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaConfig.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -199,11 +199,11 @@
return result;
}
- /** @return {@link SammoaConfigOption#AUDIO_DIRECTORY} value */
- public File getAudioDirectory() {
- File result = getOrCreateDirectory(SammoaConfigOption.AUDIO_DIRECTORY);
- return result;
- }
+// /** @return {@link SammoaConfigOption#AUDIO_DIRECTORY} value */
+// public File getAudioDirectory() {
+// File result = getOrCreateDirectory(SammoaConfigOption.AUDIO_DIRECTORY);
+// return result;
+// }
/** @return {@link SammoaConfigOption#SYSTEM_ID} value */
public String getSystemId() {
@@ -308,7 +308,8 @@
}
public File getCampaignDirectory() {
- return new File(getDataDirectory(), "campaign");
+ File result = getOrCreateDirectory(SammoaConfigOption.CAMPAIGN_DIRECTORY);
+ return result;
}
/**
@@ -325,6 +326,11 @@
"${user.home}/.sammoa",
File.class
),
+ CAMPAIGN_DIRECTORY("campaign.directory",
+ n_("sammoa.config.campaign.directory"),
+ "${data.directory}/campaign",
+ File.class
+ ),
LOG_FILE("log.file",
n_("sammoa.config.log.file"),
"${data.directory}/log/sammoa.log",
@@ -357,12 +363,6 @@
"fdesbois(a)codelutin.com",
String.class
),
- /** Directory where audio files will be stored */
- AUDIO_DIRECTORY("audio.directory",
- n_("sammoa.config.audio.directory"),
- "${data.directory}/audio",
- File.class
- ),
/** The id/name of the current system/computer */
SYSTEM_ID("system.id",
n_("sammoa.config.system.id"),
@@ -381,18 +381,6 @@
"shape/vmap_area_thin.shp",
File.class
),
-// /** The strates shape file */
-// STRATE_SHAPE_FILE("strate.shape.file",
-// n_("sammoa.config.strate.shape.file"),
-// "${data.directory}/map/strates.shp",
-// File.class
-// ),
-// /** The transects shape file */
-// TRANSECT_SHAPE_FILE("transect.shape.file",
-// n_("sammoa.config.transect.shape.file"),
-// "${data.directory}/map/transects.shp",
-// File.class
-// ),
/** The auto commit delay for {@link AutoSaveListener} */
AUTO_COMMIT_DELAY("auto.commit.delay",
n_("sammoa.config.flight.number"),
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-13 22:23:13 UTC (rev 417)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -24,10 +24,11 @@
*/
package fr.ulr.sammoa.application;
-import fr.ulr.sammoa.application.io.output.sammoa.ExportApplicationService;
-import fr.ulr.sammoa.application.io.output.map.ExportMapService;
+import com.google.common.base.Preconditions;
import fr.ulr.sammoa.persistence.SammoaPersistence;
+import java.lang.reflect.Constructor;
+
/**
* Created: 08/06/12
*
@@ -45,8 +46,6 @@
protected ReferentialService referentialService;
- protected ExportMapService exportMapService;
-
public SammoaContext(SammoaConfig config) {
this(config, new SammoaPersistence(
config.getApplicationConfig().getFlatOptions(),
@@ -67,31 +66,34 @@
return persistence;
}
+ public <S extends SammoaService> S newService(Class<S> serviceType) {
+
+ try {
+ Constructor<S> constructor = serviceType.getConstructor();
+ Preconditions.checkNotNull(constructor);
+ S s = constructor.newInstance();
+ s.setSammoaContext(this);
+ return s;
+ } catch (Exception e) {
+ throw new SammoaTechnicalException(
+ "Could not instanciate service " + serviceType, e);
+ }
+ }
+
public FlightService getFlightService() {
if (flightService == null) {
- flightService = new FlightService(this);
+ flightService = newService(FlightService.class);
}
return flightService;
}
public ReferentialService getReferentialService() {
if (referentialService == null) {
- referentialService = new ReferentialService(this);
+ referentialService = newService(ReferentialService.class);
}
return referentialService;
}
- public ExportMapService getExportMapService() {
- if (exportMapService == null) {
- exportMapService = new ExportMapService(this);
- }
- return exportMapService;
- }
-
- public ExportApplicationService newExportApplicationService() {
- return new ExportApplicationService(this);
- }
-
public void open() {
persistence.open(
config.getApplicationConfig().getFlatOptions(),
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaService.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaService.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaService.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -0,0 +1,43 @@
+package fr.ulr.sammoa.application;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+/**
+ * Contract for any saommoa service.
+ * <p/>
+ * This contract just allow to inject the {@link SammoaContext} in your service.
+ * <p/>
+ * A default support implement in given: {@link SammoaServiceSupport}.
+ * <p/>
+ * To use a such service, you should not instanciate it by your self but prefer
+ * use the servie factory method: {@link SammoaContext#newService(Class)}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @see SammoaServiceSupport
+ * @since 0.6
+ */
+public interface SammoaService {
+
+ void setSammoaContext(SammoaContext context);
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaServiceSupport.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaServiceSupport.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaServiceSupport.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -0,0 +1,69 @@
+package fr.ulr.sammoa.application;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+import fr.ulr.sammoa.persistence.SammoaPersistence;
+import org.nuiton.topia.TopiaContext;
+
+/**
+ * Sammoa service support.
+ * <p/>
+ * This simple implementation of {@link SammoaService}, offer to keep the
+ * {@link #context}, {@link #config} and {@link #persistence} obejcts.
+ * <p/>
+ * <strong>Note:</strong> should be used for any service! and never
+ * instanciated by hand but via {@link SammoaContext#newService(Class)} method.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class SammoaServiceSupport implements SammoaService {
+
+ protected SammoaContext context;
+
+ protected SammoaConfig config;
+
+ protected SammoaPersistence persistence;
+
+
+ public <S extends SammoaService> S newService(Class<S> serviceType) {
+ return context.newService(serviceType);
+ }
+
+ protected TopiaContext beginTransaction() {
+ TopiaContext tx = persistence.beginTransaction();
+ return tx;
+ }
+
+ protected void endTransaction(TopiaContext tx) {
+ persistence.endTransaction(tx);
+ }
+
+ @Override
+ public void setSammoaContext(SammoaContext context) {
+ this.context = context;
+ this.persistence = context.getPersistence();
+ this.config = context.getConfig();
+ }
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaServiceSupport.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightController.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightController.java 2012-08-13 22:23:13 UTC (rev 417)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightController.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -188,7 +188,6 @@
* <ul>
* <li>add()</li>
* <li>{@link #circleBack(Observation)}</li>
- * <li>{@link #next()}</li>
* <li>{@link #observation(Position)}</li>
* <li>{@link #end()}</li>
* <li>{@link #stop()}</li>
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerDefault.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerDefault.java 2012-08-13 22:23:13 UTC (rev 417)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerDefault.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -116,7 +116,7 @@
this.flight = flight;
this.persistence = context.getPersistence();
- this.service = context.getFlightService();
+ this.service = context.newService(FlightService.class);
this.currentRoute = service.getLastRoute(flight);
this.lastTransect = service.getLastTransectDone(flight);
@@ -278,7 +278,8 @@
}
if (logger.isInfoEnabled()) {
- logger.info("Initialize the FlightController for flight " + flight.getFlightNumber());
+ logger.info("Initialize the FlightController for flight {}",
+ flight.getFlightNumber());
}
initialized = true;
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java 2012-08-13 22:23:13 UTC (rev 417)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -62,7 +62,6 @@
/** Properties of the campaign. */
protected final Properties properties;
-
public CampaignStorage(File dataDirectory, String campaignId) {
this.directory = new File(dataDirectory, campaignId);
this.campaignId = campaignId;
@@ -81,6 +80,10 @@
return new File(directory, "map");
}
+ public File getMapFile(String mapFilename) {
+ return new File(getMapDirectory(), mapFilename);
+ }
+
public File getFlightDirectory() {
return new File(directory, "flight");
}
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java 2012-08-13 22:23:13 UTC (rev 417)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -70,6 +70,7 @@
public File getAudioFile(String filename) {
return new File(getAudioDirectory(), filename);
}
+
public File getPropertiesFile() {
return new File(directory, "flight.properties");
}
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvService.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvService.java 2012-08-13 22:23:13 UTC (rev 417)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvService.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -25,13 +25,14 @@
import com.google.common.base.Preconditions;
import com.google.common.io.Files;
-import fr.ulr.sammoa.application.SammoaContext;
+import fr.ulr.sammoa.application.SammoaServiceSupport;
import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.CampaignDAO;
import fr.ulr.sammoa.persistence.Observer;
import fr.ulr.sammoa.persistence.ObserverDAO;
import fr.ulr.sammoa.persistence.Region;
+import fr.ulr.sammoa.persistence.RegionDAO;
import fr.ulr.sammoa.persistence.SammoaDAOHelper;
-import fr.ulr.sammoa.persistence.SammoaPersistence;
import fr.ulr.sammoa.persistence.Species;
import fr.ulr.sammoa.persistence.SpeciesDAO;
import org.apache.commons.io.Charsets;
@@ -53,17 +54,11 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.6
*/
-public class ImportCsvService {
+public class ImportCsvService extends SammoaServiceSupport {
private static final Logger logger =
LoggerFactory.getLogger(ImportCsvService.class);
- protected SammoaPersistence persistence;
-
- public ImportCsvService(SammoaContext context) {
- this.persistence = context.getPersistence();
- }
-
public int importSpecies(String regionId, File file) throws IOException {
Reader reader = Files.newReader(file, Charsets.UTF_8);
@@ -74,11 +69,12 @@
TopiaContext transaction = persistence.beginTransaction();
try {
- Region region = SammoaDAOHelper.getRegionDAO(transaction).findByTopiaId(regionId);
+ RegionDAO regionDAO = SammoaDAOHelper.getRegionDAO(transaction);
+ Region region = regionDAO.findByTopiaId(regionId);
Preconditions.checkNotNull(region);
+ String regionCode = region.getCode();
- SpeciesDAO dao =
- SammoaDAOHelper.getSpeciesDAO(transaction);
+ SpeciesDAO dao = SammoaDAOHelper.getSpeciesDAO(transaction);
SpeciesImportModel model = new SpeciesImportModel(region);
@@ -86,40 +82,10 @@
for (Species species : importCsv) {
- // while importing a species, it does become valid
- species.setLocalCreation(false);
+ boolean isNew = importSpecies(dao, species, regionCode);
- Species speciesExists =
- dao.findByNaturalId(species.getCode(),
- species.getRegion());
-
- if (speciesExists == null) {
-
- dao.create(species);
-
+ if (isNew) {
result++;
-
- if (logger.isDebugEnabled()) {
- logger.debug(String.format("Create new species %1$s " +
- "for region %2$s",
- species.getCode(),
- region.getCode()));
- }
-
- } else {
-
- 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()));
- }
}
}
@@ -132,13 +98,54 @@
persistence.endTransaction(transaction);
}
reader.close();
-
return result;
} finally {
IOUtils.closeQuietly(reader);
}
}
+ protected boolean importSpecies(SpeciesDAO dao,
+ Species species,
+ String regionCode) throws TopiaException {
+ // while importing a species, it does become valid
+ species.setLocalCreation(false);
+
+ Species speciesExists =
+ dao.findByNaturalId(species.getCode(),
+ species.getRegion());
+
+ boolean newSpecies = false;
+ if (speciesExists == null) {
+
+ dao.create(species);
+
+ newSpecies = true;
+
+ if (logger.isDebugEnabled()) {
+ logger.debug(
+ "Create new species {} for region {}",
+ species.getCode(), regionCode);
+ }
+
+ } else {
+
+ 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(
+ "The species {} already exists and is updated",
+ species.getCode());
+ }
+ }
+
+ return newSpecies;
+ }
+
public int importObservers(String campaignId, File file) throws IOException {
Reader reader = Files.newReader(file, Charsets.UTF_8);
@@ -148,52 +155,23 @@
TopiaContext transaction = persistence.beginTransaction();
try {
- Campaign campaign = SammoaDAOHelper.getCampaignDAO(transaction).findByTopiaId(campaignId);
+ CampaignDAO campaignDAO = SammoaDAOHelper.getCampaignDAO(transaction);
+ Campaign campaign = campaignDAO.findByTopiaId(campaignId);
Preconditions.checkNotNull(campaign);
+ String campaignCode = campaign.getCode();
- ObserverDAO observerDAO =
- SammoaDAOHelper.getObserverDAO(transaction);
+ ObserverDAO dao = SammoaDAOHelper.getObserverDAO(transaction);
ObserverImportModel model = new ObserverImportModel(campaign);
Import<Observer> importCsv = Import.newImport(model, reader);
- for (Observer anImportCsv : importCsv) {
+ for (Observer observer : importCsv) {
- Observer observer;
+ boolean isNew = importObserver(dao, observer, campaignCode);
- observer = anImportCsv;
-
- Observer observerExists =
- observerDAO.findByNaturalId(observer.getInitials(), observer.getCampaign());
-
- if (observerExists == null) {
-
- observerDAO.create(observer);
-
+ if (isNew) {
result++;
-
- if (logger.isDebugEnabled()) {
- logger.debug(String.format("Create new observer %1$s " +
- "for campaign %2$s",
- observer.getInitials(),
- campaign.getCode()));
- }
-
- } else {
-
- 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()));
- }
}
}
@@ -211,4 +189,43 @@
IOUtils.closeQuietly(reader);
}
}
+
+ protected boolean importObserver(ObserverDAO dao,
+ Observer observer,
+ String campaignCode) throws TopiaException {
+ boolean newEntity = false;
+
+ Observer observerExists = dao.findByNaturalId(observer.getInitials(),
+ observer.getCampaign());
+
+ if (observerExists == null) {
+
+ dao.create(observer);
+
+ newEntity = true;
+
+ if (logger.isDebugEnabled()) {
+
+ logger.debug(
+ "Create new observer {} for campaign {}",
+ observer.getInitials(), campaignCode);
+ }
+
+ } else {
+
+ observerExists.setEmail(observer.getEmail());
+ observerExists.setFirstName(observer.getFirstName());
+ observerExists.setLastName(observer.getLastName());
+ observerExists.setOrganization(observer.getOrganization());
+ observerExists.setPilot(observer.isPilot());
+ dao.update(observerExists);
+
+ if (logger.isInfoEnabled()) {
+ logger.info(
+ "The observer {} already exists and is updated",
+ observer.getInitials());
+ }
+ }
+ return newEntity;
+ }
}
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/java-info.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/java-info.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/java-info.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -0,0 +1,28 @@
+/**
+ * Base package for csv imports.
+ *
+ * @since 0.6
+ */
+package fr.ulr.sammoa.application.io.input.csv;/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/java-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ImportMapService.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ImportMapService.java 2012-08-13 22:23:13 UTC (rev 417)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ImportMapService.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -25,11 +25,10 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Maps;
-import fr.ulr.sammoa.application.SammoaContext;
+import fr.ulr.sammoa.application.SammoaServiceSupport;
import fr.ulr.sammoa.persistence.Campaign;
import fr.ulr.sammoa.persistence.CampaignDAO;
import fr.ulr.sammoa.persistence.SammoaDAOHelper;
-import fr.ulr.sammoa.persistence.SammoaPersistence;
import fr.ulr.sammoa.persistence.Sector;
import fr.ulr.sammoa.persistence.SectorDAO;
import fr.ulr.sammoa.persistence.Sectors;
@@ -55,18 +54,12 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.6
*/
-public class ImportMapService {
+public class ImportMapService extends SammoaServiceSupport {
private static final Logger logger =
LoggerFactory.getLogger(ImportMapService.class);
- protected SammoaPersistence persistence;
-
- public ImportMapService(SammoaContext context) {
- this.persistence = context.getPersistence();
- }
-
public int importTransects(String campaignId, Iterable<Transect> transects) {
int result = 0;
@@ -79,7 +72,8 @@
Campaign campaign = campaignDAO.findByTopiaId(campaignId);
Preconditions.checkArgument(campaign != null,
- "The topiaId : " + campaignId + " doesn't match any existing campaign");
+ "The topiaId : " + campaignId +
+ " doesn't match any existing campaign");
StrateDAO strateDAO = SammoaDAOHelper.getStrateDAO(transaction);
TransectDAO transectDAO = SammoaDAOHelper.getTransectDAO(transaction);
@@ -129,10 +123,10 @@
result++;
if (logger.isDebugEnabled()) {
- logger.debug(String.format("Create new transect %1$s" +
- "(graphicIndex = %2$d)",
- newTransect.getName(),
- graphicIndex)
+ logger.debug("Create new transect {}" +
+ "(graphicIndex = {})",
+ newTransect.getName(),
+ graphicIndex
);
}
@@ -141,11 +135,11 @@
existTransect.setGraphicIndex(graphicIndex);
if (logger.isWarnEnabled()) {
- logger.warn(String.format("The transect %1$s already " +
- "exists and will be ignored " +
- "(graphicIndex = %2$d)",
- existTransect.getName(),
- graphicIndex)
+ logger.warn("The transect {} already " +
+ "exists and will be ignored " +
+ "(graphicIndex = {})",
+ existTransect.getName(),
+ graphicIndex
);
}
}
@@ -174,7 +168,8 @@
Campaign campaign = campaignDAO.findByTopiaId(campaignId);
Preconditions.checkArgument(campaign != null,
- "The topiaId : " + campaignId + " doesn't match any existing campaign");
+ "The topiaId : " + campaignId +
+ " doesn't match any existing campaign");
StrateDAO strateDAO = SammoaDAOHelper.getStrateDAO(transaction);
SectorDAO sectorDAO = SammoaDAOHelper.getSectorDAO(transaction);
@@ -182,7 +177,8 @@
// Retrieve directly all sectors to avoid multiple select queries to find sectors
List<Sector> sectors = sectorDAO.findAllByCampaign(campaign);
Map<Integer, Sector> sectorMap =
- Maps.newHashMap(Maps.uniqueIndex(sectors, Sectors.toSectorNumber()));
+ Maps.newHashMap(Maps.uniqueIndex(sectors,
+ Sectors.toSectorNumber()));
for (Strate strate : strates) {
@@ -218,17 +214,17 @@
result++;
if (logger.isDebugEnabled()) {
- logger.debug(String.format("Create new strate %1$s",
- newStrate.getCode())
+ logger.debug("Create new strate {}",
+ newStrate.getCode()
);
}
} else {
if (logger.isWarnEnabled()) {
- logger.warn(String.format("The strate %1$s already " +
- "exists and will be ignored",
- existStrate.getCode()));
+ logger.warn("The strate {} already " +
+ "exists and will be ignored",
+ existStrate.getCode());
}
}
}
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ShpImporter.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ShpImporter.java 2012-08-13 22:23:13 UTC (rev 417)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ShpImporter.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -47,15 +47,21 @@
private static final Logger logger =
LoggerFactory.getLogger(ShpImporter.class);
+ protected final ImportModel<E> model;
+
+ protected final String copyFileName;
+
+ public ShpImporter(ImportModel<E> model, String copyFileName) {
+ this.model = model;
+ this.copyFileName = copyFileName;
+ }
+
protected abstract String onDbfLoaded(Iterable<E> elements,
CampaignStorage storage);
- protected abstract ImportModel<E> getModel();
+ public String importShape(File file,
+ CampaignStorage storage) throws IOException {
- protected abstract String getCopyFileName();
-
- public String importShape(File file, CampaignStorage storage) throws IOException {
-
File dbfFile;
String fileName = file.getName();
File sourceDirectory = file.getParentFile();
@@ -65,7 +71,8 @@
final String fileNameWithoutExt = fileName.substring(0, extIndex);
if (logger.isDebugEnabled()) {
- logger.debug("Source directory '" + sourceDirectory.getAbsolutePath() + "' and fileName '" + fileNameWithoutExt + "'");
+ logger.debug("Source directory '{}' and fileName '{}'",
+ sourceDirectory.getAbsolutePath(), fileNameWithoutExt);
}
if (!ext.equals("dbf")) {
@@ -73,20 +80,21 @@
fileName = fileNameWithoutExt + "dbf";
if (logger.isDebugEnabled()) {
- logger.debug(String.format("Use dbfFile %s for import", fileName));
+ logger.debug("Use dbfFile {} for import", fileName);
}
dbfFile = new File(sourceDirectory, fileName);
if (!dbfFile.exists()) {
- throw new FileNotFoundException("Can't found dbf file '" + dbfFile.getAbsolutePath() + "' for import");
+ throw new FileNotFoundException(
+ "Can't found dbf file '" + dbfFile + "' for import");
}
} else {
dbfFile = file;
}
- DbfImport<E> importer = new DbfImport<E>(getModel(), dbfFile.toURI().toURL());
+ DbfImport<E> importer = new DbfImport<E>(model, dbfFile.toURI().toURL());
String result = onDbfLoaded(importer, storage);
@@ -98,10 +106,9 @@
int extIndex = fullName.lastIndexOf(extension);
String name = fullName.substring(0, extIndex);
if (logger.isDebugEnabled()) {
- logger.debug(String.format("Read file : %s [ext = %s] -> check equals for %s",
- fullName,
- extension,
- name)
+ logger.debug(
+ "Read file : {} [ext = {}] -> check equals for {}",
+ new Object[]{fullName, extension, name}
);
}
return fileNameWithoutExt.equals(name);
@@ -111,12 +118,12 @@
for (String name : files) {
String extension = Files.getFileExtension(name);
File sourceFile = new File(sourceDirectory, name);
- File targetFile = new File(storage.getMapDirectory(), getCopyFileName() + "." + extension);
+ File targetFile = new File(storage.getMapDirectory(),
+ copyFileName + "." + extension);
if (logger.isInfoEnabled()) {
- logger.info(String.format("Copy file '%1$s' to '%2$s'",
- sourceFile.getAbsolutePath(),
- targetFile.getAbsolutePath())
- );
+ logger.info("Copy file '{}' to '{}'",
+ sourceFile.getAbsolutePath(),
+ targetFile.getAbsolutePath());
}
FileUtils.copyFile(sourceFile, targetFile);
}
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/java-info.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/java-info.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/java-info.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -0,0 +1,30 @@
+/**
+ * Base package for map imports.
+ *
+ * @since 0.6
+ */
+package fr.ulr.sammoa.application.io.input.map;
+
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/java-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationModel.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationModel.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationModel.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -0,0 +1,61 @@
+package fr.ulr.sammoa.application.io.input.sammoa;
+
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+import com.google.common.collect.Lists;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * Model of sammoa import.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class ImportApplicationModel {
+
+ public static ImportApplicationModel newModel(File importFile,
+ List<String> flightIds) {
+ ImportApplicationModel result = new ImportApplicationModel();
+ result.importFile = importFile;
+ result.flightIds = Lists.newArrayList(flightIds);
+ return result;
+ }
+
+ /** Import file that contains all the stuff to import. */
+ protected File importFile;
+
+ /** All flight ids to import from the import file. */
+ protected List<String> flightIds;
+
+ public File getImportFile() {
+ return importFile;
+ }
+
+ public List<String> getFlightIds() {
+ return flightIds;
+ }
+}
\ No newline at end of file
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationService.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationService.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationService.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -0,0 +1,63 @@
+package fr.ulr.sammoa.application.io.input.sammoa;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+import fr.ulr.sammoa.application.SammoaServiceSupport;
+import org.nuiton.util.TimeLog;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Service to import sammoa files.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class ImportApplicationService extends SammoaServiceSupport {
+
+ /** Logger. */
+ private static final Logger logger =
+ LoggerFactory.getLogger(ImportApplicationService.class);
+
+ private static final TimeLog timeLog =
+ new TimeLog(ImportApplicationService.class);
+
+ public void importApplication(ImportApplicationModel model) {
+
+ if (logger.isInfoEnabled()) {
+ logger.info("Start Application import to {} :: {}",
+ model.getImportFile());
+ }
+
+ long startTime = TimeLog.getTime();
+
+ try {
+ Thread.sleep(2000);
+ } catch (InterruptedException e) {
+ //BOUH!
+ }
+
+ timeLog.log(startTime, "importApplication", "after Callback execution");
+ }
+}
\ No newline at end of file
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/java-info.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/java-info.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/java-info.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -0,0 +1,30 @@
+/**
+ * Base package for sammo import.
+ *
+ * @since 0.6
+ */
+package fr.ulr.sammoa.application.io.input.sammoa;
+
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/java-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/java-info.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/java-info.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/java-info.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -0,0 +1,28 @@
+/**
+ * Base package for all import/export operations.
+ *
+ * @since 0.6
+ */
+package fr.ulr.sammoa.application.io;/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/java-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapModel.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapModel.java 2012-08-13 22:23:13 UTC (rev 417)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapModel.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -30,7 +30,6 @@
import fr.ulr.sammoa.persistence.Strate;
import java.io.File;
-import java.io.Serializable;
import java.util.Date;
import java.util.List;
@@ -40,10 +39,8 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.5
*/
-public class ExportMapModel implements Serializable {
+public class ExportMapModel {
- private static final long serialVersionUID = 1L;
-
public static ExportMapModel newModel(File exportDirectory,
String exportFilename,
Campaign campaign,
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapService.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapService.java 2012-08-13 22:23:13 UTC (rev 417)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapService.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -32,8 +32,7 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Maps;
import fr.ulr.sammoa.application.FlightService;
-import fr.ulr.sammoa.application.SammoaConfig;
-import fr.ulr.sammoa.application.SammoaContext;
+import fr.ulr.sammoa.application.SammoaServiceSupport;
import fr.ulr.sammoa.persistence.Campaign;
import fr.ulr.sammoa.persistence.Flight;
import fr.ulr.sammoa.persistence.GeoPoint;
@@ -46,7 +45,6 @@
import fr.ulr.sammoa.persistence.Route;
import fr.ulr.sammoa.persistence.RouteType;
import fr.ulr.sammoa.persistence.Routes;
-import fr.ulr.sammoa.persistence.SammoaPersistence;
import fr.ulr.sammoa.persistence.Species;
import fr.ulr.sammoa.persistence.Strate;
import fr.ulr.sammoa.persistence.Transect;
@@ -71,28 +69,15 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.5
*/
-public class ExportMapService {
+public class ExportMapService extends SammoaServiceSupport {
private static final Logger logger =
LoggerFactory.getLogger(ExportMapService.class);
private static final TimeLog timeLog = new TimeLog(ExportMapService.class);
- protected SammoaContext context;
+ protected final DateFormat timeFormat = new SimpleDateFormat("HHmmss");
- protected SammoaConfig config;
-
- protected SammoaPersistence persistence;
-
- protected DateFormat timeFormat;
-
- public ExportMapService(SammoaContext context) {
- this.context = context;
- this.persistence = context.getPersistence();
- this.config = context.getConfig();
- this.timeFormat = new SimpleDateFormat("HHmmss");
- }
-
public void exportEffortsMap(ExportMapModel dataModel) {
Preconditions.checkNotNull(dataModel.getCampaign());
Preconditions.checkNotNull(dataModel.getBeginDate());
@@ -152,7 +137,7 @@
EsriGraphicList graphicList = new EsriPointList();
- FlightService flightService = context.getFlightService();
+ FlightService flightService = newService(FlightService.class);
Campaign campaign = dataModel.getCampaign();
Region region = campaign.getRegion();
@@ -160,7 +145,7 @@
List<RouteType> routeTypes = dataModel.getRouteTypes();
List<Strate> strates = dataModel.getStrates();
- TopiaContext tx = context.getPersistence().beginTransaction();
+ TopiaContext tx = beginTransaction();
try {
// get flights for campaign (and between begin - end date)
@@ -306,7 +291,7 @@
timeLog.log(startTime, "exportEffortsMap", "after EsriShapeExport execution");
} finally {
- context.getPersistence().endTransaction(tx);
+ endTransaction(tx);
}
}
@@ -373,10 +358,10 @@
List<RouteType> routeTypes = dataModel.getRouteTypes();
List<Strate> strates = dataModel.getStrates();
- TopiaContext tx = context.getPersistence().beginTransaction();
+ TopiaContext tx = beginTransaction();
try {
- FlightService flightService = context.getFlightService();
+ FlightService flightService = newService(FlightService.class);
// get flights for campaign (and between begin - end date)
Iterable<Flight> flights = flightService.getFlights(
@@ -550,7 +535,7 @@
timeLog.log(startTime, "exportObservationsMap", "after EsriShapeExport execution");
} finally {
- context.getPersistence().endTransaction(tx);
+ endTransaction(tx);
}
}
@@ -585,7 +570,7 @@
Campaign campaign = dataModel.getCampaign();
Region region = campaign.getRegion();
- FlightService flightService = context.getFlightService();
+ FlightService flightService = newService(FlightService.class);
// get flights for campaign (and between begin - end date)
Iterable<Flight> flights = flightService.getFlights(campaign,
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/java-info.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/java-info.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/java-info.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -0,0 +1,28 @@
+/**
+ * Base package for map export operations.
+ *
+ * @since 0.6
+ */
+package fr.ulr.sammoa.application.io.output.map;/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/java-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationModel.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationModel.java 2012-08-13 22:23:13 UTC (rev 417)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationModel.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -27,18 +27,15 @@
import fr.ulr.sammoa.persistence.Flight;
import java.io.File;
-import java.io.Serializable;
/**
- * Model of export application.
+ * Model of sammoa export.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 0.6
*/
-public class ExportApplicationModel implements Serializable {
+public class ExportApplicationModel {
- private static final long serialVersionUID = 1L;
-
public static ExportApplicationModel newModel(File exportDirectory,
String exportFilename,
Campaign campaign,
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationService.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationService.java 2012-08-13 22:23:13 UTC (rev 417)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationService.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -23,12 +23,10 @@
* #L%
*/
-import fr.ulr.sammoa.application.SammoaConfig;
-import fr.ulr.sammoa.application.SammoaContext;
+import fr.ulr.sammoa.application.SammoaServiceSupport;
import fr.ulr.sammoa.application.io.CampaignStorage;
import fr.ulr.sammoa.application.io.CampaignStorages;
import fr.ulr.sammoa.persistence.Campaign;
-import fr.ulr.sammoa.persistence.SammoaPersistence;
import org.nuiton.util.TimeLog;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,7 +37,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.6
*/
-public class ExportApplicationService {
+public class ExportApplicationService extends SammoaServiceSupport {
/** Logger. */
private static final Logger logger =
@@ -49,18 +47,6 @@
private static final TimeLog timeLog =
new TimeLog(ExportApplicationService.class);
- protected final SammoaContext context;
-
- protected final SammoaConfig config;
-
- protected final SammoaPersistence persistence;
-
- public ExportApplicationService(SammoaContext context) {
- this.context = context;
- this.persistence = context.getPersistence();
- this.config = context.getConfig();
- }
-
public void exportApplication(ExportApplicationModel model) {
if (logger.isInfoEnabled()) {
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/java-info.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/java-info.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/java-info.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -0,0 +1,28 @@
+/**
+ * Base package for sammoa export operation.
+ *
+ * @since 0.6
+ */
+package fr.ulr.sammoa.application.io.output.sammoa;/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/java-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
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-13 22:23:13 UTC (rev 417)
+++ trunk/sammoa-application/src/main/resources/i18n/sammoa-application_en_GB.properties 2012-08-14 13:04:08 UTC (rev 418)
@@ -9,6 +9,7 @@
sammoa.config.effort.number=
sammoa.config.flight.number=
sammoa.config.fly.mode=
+sammoa.config.campaign.directory=Directory where are stored campaign data (maps, flight audio files,...)
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.device.gps.GpsHandlerGpylon or fr.ulr.sammoa.application.device.gps.FakeGpsHandler
Modified: trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/FlightServiceTest.java
===================================================================
--- trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/FlightServiceTest.java 2012-08-13 22:23:13 UTC (rev 417)
+++ trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/FlightServiceTest.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -66,7 +66,7 @@
SammoaContext context = new SammoaContext(config, database.getPersistence());
- FlightService service = new FlightService(context);
+ FlightService service = context.newService(FlightService.class);
Campaign campaign = database.createCampaign("PACOMM", "FRANCE");
@@ -83,8 +83,7 @@
SammoaContext context = new SammoaContext(config, database.getPersistence());
- FlightService service = new FlightService(context);
- ReferentialService referential = new ReferentialService(context);
+ FlightService service = context.newService(FlightService.class);
Campaign campaign = database.createCampaign("PACOMM", "FRANCE");
Modified: trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvServiceTest.java
===================================================================
--- trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvServiceTest.java 2012-08-13 22:23:13 UTC (rev 417)
+++ trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvServiceTest.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -62,7 +62,7 @@
SammoaContext context = new SammoaContext(config, database.getPersistence());
- ImportCsvService instance = new ImportCsvService(context);
+ ImportCsvService instance = context.newService(ImportCsvService.class);
Campaign campaign = database.createCampaign("PACOMM-2012", "FRANCE");
Modified: trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/map/ExportMapServiceTest.java
===================================================================
--- trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/map/ExportMapServiceTest.java 2012-08-13 22:23:13 UTC (rev 417)
+++ trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/map/ExportMapServiceTest.java 2012-08-14 13:04:08 UTC (rev 418)
@@ -98,7 +98,7 @@
campaign.setBeginDate(DateUtil.createDate(1, 1, 2012));
campaign.setEndDate(DateUtil.createDate(31, 12, 2012));
- FlightService flightService = new FlightService(context);
+ FlightService flightService = context.newService(FlightService.class);
Flight flight = flightService.createFlight(campaign);
flight.setBeginDate(DateUtil.createDate(18, 0, 12, 18, 7, 2012));
@@ -108,7 +108,7 @@
transaction.commitTransaction();
- ExportMapService exportMapService = new ExportMapService(context);
+ ExportMapService exportMapService = context.newService(ExportMapService.class);
File exportDirectory = database.getTestBasedir();
1
0
r417 - trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application
by tchemit@users.forge.codelutin.com 13 Aug '12
by tchemit@users.forge.codelutin.com 13 Aug '12
13 Aug '12
Author: tchemit
Date: 2012-08-14 00:23:13 +0200 (Tue, 14 Aug 2012)
New Revision: 417
Url: http://forge.codelutin.com/repositories/revision/sammoa/417
Log:
remove obsolete packages
Removed:
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/
1
0
r416 - trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application
by tchemit@users.forge.codelutin.com 13 Aug '12
by tchemit@users.forge.codelutin.com 13 Aug '12
13 Aug '12
Author: tchemit
Date: 2012-08-14 00:21:06 +0200 (Tue, 14 Aug 2012)
New Revision: 416
Url: http://forge.codelutin.com/repositories/revision/sammoa/416
Log:
remove obsolete packages
Removed:
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/
1
0
13 Aug '12
Author: tchemit
Date: 2012-08-14 00:19:52 +0200 (Tue, 14 Aug 2012)
New Revision: 415
Url: http://forge.codelutin.com/repositories/revision/sammoa/415
Log:
add missing license header, svn properties + move more classes to io package + remove obsolete packages
Added:
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/CsvImporter.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/UIImporter.java
Removed:
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/CsvImporter.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/UIImporter.java
Modified:
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorages.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorages.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvService.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ImportMapService.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ShpImporter.java
trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvServiceTest.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUIHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUIHandler.java
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java 2012-08-13 22:12:51 UTC (rev 414)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java 2012-08-13 22:19:52 UTC (rev 415)
@@ -1,4 +1,27 @@
package fr.ulr.sammoa.application.io;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
import com.google.common.base.Charsets;
import com.google.common.base.Function;
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java
___________________________________________________________________
Modified: svn:keywords
- Author Date Id Revision
+ Author Date Id Revision HeadURL
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorages.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorages.java 2012-08-13 22:12:51 UTC (rev 414)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorages.java 2012-08-13 22:19:52 UTC (rev 415)
@@ -1,4 +1,27 @@
package fr.ulr.sammoa.application.io;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
import fr.ulr.sammoa.application.SammoaConfig;
import org.apache.commons.io.FileUtils;
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorages.java
___________________________________________________________________
Modified: svn:keywords
- Author Date Id Revision
+ Author Date Id Revision HeadURL
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java 2012-08-13 22:12:51 UTC (rev 414)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java 2012-08-13 22:19:52 UTC (rev 415)
@@ -1,4 +1,27 @@
package fr.ulr.sammoa.application.io;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
import com.google.common.base.Charsets;
import com.google.common.io.Files;
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java
___________________________________________________________________
Modified: svn:keywords
- Author Date Id Revision
+ Author Date Id Revision HeadURL
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorages.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorages.java 2012-08-13 22:12:51 UTC (rev 414)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorages.java 2012-08-13 22:19:52 UTC (rev 415)
@@ -1,4 +1,27 @@
package fr.ulr.sammoa.application.io;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
import org.apache.commons.io.FileUtils;
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorages.java
___________________________________________________________________
Modified: svn:keywords
- Author Date Id Revision
+ Author Date Id Revision HeadURL
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvService.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvService.java 2012-08-13 22:12:51 UTC (rev 414)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvService.java 2012-08-13 22:19:52 UTC (rev 415)
@@ -1,4 +1,27 @@
package fr.ulr.sammoa.application.io.input.csv;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
import com.google.common.base.Preconditions;
import com.google.common.io.Files;
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvService.java
___________________________________________________________________
Modified: svn:keywords
- Author Date Id Revision
+ Author Date Id Revision HeadURL
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ImportMapService.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ImportMapService.java 2012-08-13 22:12:51 UTC (rev 414)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ImportMapService.java 2012-08-13 22:19:52 UTC (rev 415)
@@ -1,4 +1,27 @@
package fr.ulr.sammoa.application.io.input.map;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
import com.google.common.base.Preconditions;
import com.google.common.collect.Maps;
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ImportMapService.java
___________________________________________________________________
Modified: svn:keywords
- Author Date Id Revision
+ Author Date Id Revision HeadURL
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ShpImporter.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ShpImporter.java 2012-08-13 22:12:51 UTC (rev 414)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ShpImporter.java 2012-08-13 22:19:52 UTC (rev 415)
@@ -1,4 +1,27 @@
package fr.ulr.sammoa.application.io.input.map;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
import com.google.common.io.Files;
import fr.ulr.sammoa.application.io.CampaignStorage;
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ShpImporter.java
___________________________________________________________________
Modified: svn:keywords
- Author Date Id Revision
+ Author Date Id Revision HeadURL
Modified: trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvServiceTest.java
===================================================================
--- trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvServiceTest.java 2012-08-13 22:12:51 UTC (rev 414)
+++ trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvServiceTest.java 2012-08-13 22:19:52 UTC (rev 415)
@@ -1,4 +1,27 @@
package fr.ulr.sammoa.application.io.input.csv;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
import fr.ulr.sammoa.application.SammoaConfig;
import fr.ulr.sammoa.application.SammoaContext;
Property changes on: trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvServiceTest.java
___________________________________________________________________
Modified: svn:keywords
- Author Date Id Revision
+ Author Date Id Revision HeadURL
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUIHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUIHandler.java 2012-08-13 22:12:51 UTC (rev 414)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUIHandler.java 2012-08-13 22:19:52 UTC (rev 415)
@@ -40,9 +40,9 @@
import fr.ulr.sammoa.ui.swing.SammoaUIHandler;
import fr.ulr.sammoa.ui.swing.region.RegionUI;
import fr.ulr.sammoa.ui.swing.region.RegionUIModel;
-import fr.ulr.sammoa.ui.swing.util.CsvImporter;
+import fr.ulr.sammoa.ui.swing.io.input.CsvImporter;
import fr.ulr.sammoa.ui.swing.util.SammoaUtil;
-import fr.ulr.sammoa.ui.swing.util.UIImporter;
+import fr.ulr.sammoa.ui.swing.io.input.UIImporter;
import jaxx.runtime.swing.ErrorDialogUI;
import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer;
import jaxx.runtime.validator.swing.SwingValidatorUtil;
Copied: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/CsvImporter.java (from rev 414, trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/CsvImporter.java)
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/CsvImporter.java (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/CsvImporter.java 2012-08-13 22:19:52 UTC (rev 415)
@@ -0,0 +1,38 @@
+package fr.ulr.sammoa.ui.swing.io.input;
+/*
+ * #%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%
+ */
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Created: 17/07/12
+ *
+ * @author fdesbois <desbois(a)codelutin.com>
+ */
+public abstract class CsvImporter {
+
+ public abstract String importCsvFile(File file) throws IOException;
+
+}
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/CsvImporter.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/UIImporter.java (from rev 414, trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/UIImporter.java)
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/UIImporter.java (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/UIImporter.java 2012-08-13 22:19:52 UTC (rev 415)
@@ -0,0 +1,115 @@
+package fr.ulr.sammoa.ui.swing.io.input;
+/*
+ * #%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%
+ */
+
+import fr.ulr.sammoa.application.io.CampaignStorage;
+import fr.ulr.sammoa.application.io.input.map.ShpImporter;
+import fr.ulr.sammoa.ui.swing.util.SammoaUtil;
+import org.nuiton.util.csv.ImportRuntimeException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.swing.JOptionPane;
+import javax.swing.UIManager;
+import java.awt.Component;
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class UIImporter {
+
+ /** Logger. */
+ private static final Logger logger =
+ LoggerFactory.getLogger(UIImporter.class);
+
+ protected final Component ui;
+
+ public UIImporter(Component ui) {
+ this.ui = ui;
+ }
+
+ public boolean importShape(ShpImporter<?> importer, File file, CampaignStorage storage) {
+ boolean result = false;
+
+ try {
+
+ SammoaUtil.updateBusyState(ui, true);
+
+ String successMessage = importer.importShape(file, storage);
+
+ SammoaUtil.updateBusyState(ui, false);
+
+ JOptionPane.showMessageDialog(ui, successMessage);
+
+ result = true;
+
+ } catch (ImportRuntimeException e) {
+ showError(file, e);
+
+ } catch (IOException e) {
+ showError(file, e);
+ }
+ return result;
+ }
+
+ public boolean importCvs(CsvImporter importer, File file) {
+ boolean result = false;
+
+ try {
+
+ SammoaUtil.updateBusyState(ui, true);
+
+ String successMessage = importer.importCsvFile(file);
+
+ SammoaUtil.updateBusyState(ui, false);
+
+ JOptionPane.showMessageDialog(ui, successMessage);
+
+ result = true;
+
+ } catch (ImportRuntimeException e) {
+ showError(file, e);
+
+ } catch (IOException e) {
+ showError(file, e);
+ }
+ return result;
+ }
+
+ protected void showError(File file, Exception e) {
+
+ if (logger.isInfoEnabled()) {
+ logger.info("Import error from file '" + file.getAbsolutePath() + "'", e);
+ }
+ JOptionPane.showMessageDialog(
+ ui, e.getMessage(), "Error",
+ JOptionPane.ERROR_MESSAGE, UIManager.getIcon("error"));
+ }
+
+}
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/UIImporter.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIModel.java 2012-08-13 22:12:51 UTC (rev 414)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIModel.java 2012-08-13 22:19:52 UTC (rev 415)
@@ -3,7 +3,7 @@
* #%L
* SAMMOA :: UI Swing
* $Id$
- * $HeadURL: http://svn.forge.codelutin.com/svn/sammoa/trunk/sammoa-ui-swing/src/main/ja… $
+ * $HeadURL$
* %%
* Copyright (C) 2012 UMS 3462, Code Lutin
* %%
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIModel.java
___________________________________________________________________
Modified: svn:keywords
- Author Date Id Revision
+ Author Date Id Revision HeadURL
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUIHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUIHandler.java 2012-08-13 22:12:51 UTC (rev 414)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUIHandler.java 2012-08-13 22:19:52 UTC (rev 415)
@@ -30,9 +30,9 @@
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.CsvImporter;
+import fr.ulr.sammoa.ui.swing.io.input.CsvImporter;
import fr.ulr.sammoa.ui.swing.util.SammoaUtil;
-import fr.ulr.sammoa.ui.swing.util.UIImporter;
+import fr.ulr.sammoa.ui.swing.io.input.UIImporter;
import jaxx.runtime.swing.ErrorDialogUI;
import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer;
import jaxx.runtime.validator.swing.SwingValidatorUtil;
Deleted: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/CsvImporter.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/CsvImporter.java 2012-08-13 22:12:51 UTC (rev 414)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/CsvImporter.java 2012-08-13 22:19:52 UTC (rev 415)
@@ -1,38 +0,0 @@
-package fr.ulr.sammoa.ui.swing.util;
-/*
- * #%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%
- */
-
-import java.io.File;
-import java.io.IOException;
-
-/**
- * Created: 17/07/12
- *
- * @author fdesbois <desbois(a)codelutin.com>
- */
-public abstract class CsvImporter {
-
- public abstract String importCsvFile(File file) throws IOException;
-
-}
Deleted: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/UIImporter.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/UIImporter.java 2012-08-13 22:12:51 UTC (rev 414)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/UIImporter.java 2012-08-13 22:19:52 UTC (rev 415)
@@ -1,91 +0,0 @@
-package fr.ulr.sammoa.ui.swing.util;
-
-import fr.ulr.sammoa.application.io.CampaignStorage;
-import fr.ulr.sammoa.application.io.input.map.ShpImporter;
-import org.nuiton.util.csv.ImportRuntimeException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.swing.JOptionPane;
-import javax.swing.UIManager;
-import java.awt.Component;
-import java.io.File;
-import java.io.IOException;
-
-/**
- * TODO
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.6
- */
-public class UIImporter {
-
- /** Logger. */
- private static final Logger logger =
- LoggerFactory.getLogger(UIImporter.class);
-
- protected final Component ui;
-
- public UIImporter(Component ui) {
- this.ui = ui;
- }
-
- public boolean importShape(ShpImporter<?> importer, File file, CampaignStorage storage) {
- boolean result = false;
-
- try {
-
- SammoaUtil.updateBusyState(ui, true);
-
- String successMessage = importer.importShape(file, storage);
-
- SammoaUtil.updateBusyState(ui, false);
-
- JOptionPane.showMessageDialog(ui, successMessage);
-
- result = true;
-
- } catch (ImportRuntimeException e) {
- showError(file, e);
-
- } catch (IOException e) {
- showError(file, e);
- }
- return result;
- }
-
- public boolean importCvs(CsvImporter importer, File file) {
- boolean result = false;
-
- try {
-
- SammoaUtil.updateBusyState(ui, true);
-
- String successMessage = importer.importCsvFile(file);
-
- SammoaUtil.updateBusyState(ui, false);
-
- JOptionPane.showMessageDialog(ui, successMessage);
-
- result = true;
-
- } catch (ImportRuntimeException e) {
- showError(file, e);
-
- } catch (IOException e) {
- showError(file, e);
- }
- return result;
- }
-
- protected void showError(File file, Exception e) {
-
- if (logger.isInfoEnabled()) {
- logger.info("Import error from file '" + file.getAbsolutePath() + "'", e);
- }
- JOptionPane.showMessageDialog(
- ui, e.getMessage(), "Error",
- JOptionPane.ERROR_MESSAGE, UIManager.getIcon("error"));
- }
-
-}
1
0
13 Aug '12
Author: tchemit
Date: 2012-08-14 00:12:51 +0200 (Tue, 14 Aug 2012)
New Revision: 414
Url: http://forge.codelutin.com/repositories/revision/sammoa/414
Log:
refs #1201: Export format application
refactor input - output packages
Added:
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorages.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorages.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvService.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ObserverImportModel.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/SpeciesImportModel.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/DoubleToIntegerValueParser.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ImportMapService.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ShpImporter.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/StrateImportModel.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/StrateTypeValueParser.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/TransectImportModel.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfColumnModel.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfImport.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfTableModelBuilder.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfTimestampConverter.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapModel.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapService.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/LegStatus.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationCallbackMode.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationModel.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationService.java
trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/
trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/
trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/csv/
trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvServiceTest.java
trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/
trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/map/
trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/map/DbfTimestampConverterTest.java
trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/map/ExportMapServiceTest.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/sammoa/
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapLauncherUI.css
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapLauncherUI.jaxx
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.css
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.jaxx
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUIHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUIModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.css
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.jaxx
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIModel.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/UIImporter.java
Removed:
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/DoubleToIntegerValueParser.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/ObserverImportModel.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/SpeciesImportModel.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/StrateImportModel.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/StrateTypeValueParser.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/TransectImportModel.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfColumnModel.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfImport.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfTableModelBuilder.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfTimestampConverter.java
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
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/LegStatus.java
trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/ReferentialServiceTest.java
trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/map/
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/importApplication/
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/Importer.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/ShpImporter.java
Modified:
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.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/SammoaTechnicalException.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/DeviceManager.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/DeviceState.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/DeviceTechnicalException.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/AudioRecorder.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/AudioRecorderDefault.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/AudioRecorderMock.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/BaseGpsHandler.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/FakeGpsHandler.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsConfig.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsHandler.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsHandlerGpsylon.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsLocationListener.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightController.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerDefault.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerListener.java
trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/FlightServiceTest.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/campaign/CampaignUIHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUIHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUIHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/CsvImporter.java
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -29,6 +29,9 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
+import fr.ulr.sammoa.application.io.CampaignStorage;
+import fr.ulr.sammoa.application.io.CampaignStorages;
+import fr.ulr.sammoa.application.io.FlightStorages;
import fr.ulr.sammoa.persistence.AutoSaveListener;
import fr.ulr.sammoa.persistence.Campaign;
import fr.ulr.sammoa.persistence.Flight;
@@ -63,6 +66,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
@@ -257,6 +261,18 @@
} finally {
persistence.endTransaction(transaction);
}
+
+ // create flight storage
+ CampaignStorage campaignStorage = CampaignStorages.getStorage(
+ config, campaign.getTopiaId());
+
+ try {
+ FlightStorages.createStorage(campaignStorage, result.getTopiaId());
+ } catch (IOException e) {
+ throw new SammoaTechnicalException(
+ "Could not create flight storage", e);
+ }
+
return result;
}
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-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -25,9 +25,7 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import fr.ulr.sammoa.application.csv.ObserverImportModel;
-import fr.ulr.sammoa.application.csv.SpeciesImportModel;
+import fr.ulr.sammoa.application.io.CampaignStorages;
import fr.ulr.sammoa.persistence.Campaign;
import fr.ulr.sammoa.persistence.CampaignDAO;
import fr.ulr.sammoa.persistence.Observer;
@@ -37,31 +35,20 @@
import fr.ulr.sammoa.persistence.RegionDAO;
import fr.ulr.sammoa.persistence.SammoaDAOHelper;
import fr.ulr.sammoa.persistence.SammoaPersistence;
-import fr.ulr.sammoa.persistence.Sector;
-import fr.ulr.sammoa.persistence.SectorDAO;
-import fr.ulr.sammoa.persistence.Sectors;
import fr.ulr.sammoa.persistence.Species;
import fr.ulr.sammoa.persistence.SpeciesDAO;
import fr.ulr.sammoa.persistence.Strate;
import fr.ulr.sammoa.persistence.StrateDAO;
-import fr.ulr.sammoa.persistence.StrateType;
-import fr.ulr.sammoa.persistence.Strates;
import fr.ulr.sammoa.persistence.Transect;
import fr.ulr.sammoa.persistence.TransectDAO;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.TopiaRuntimeException;
-import org.nuiton.util.csv.Import;
-import org.nuiton.util.csv.ImportRuntimeException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import java.io.Reader;
+import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
-import java.util.Iterator;
import java.util.List;
-import java.util.Map;
/**
* Created: 18/06/12
@@ -70,8 +57,6 @@
*/
public class ReferentialService {
- private static final Logger logger = LoggerFactory.getLogger(ReferentialService.class);
-
protected SammoaContext context;
protected SammoaConfig config;
@@ -152,71 +137,81 @@
return result;
}
- public int importSpecies(String regionId, Reader reader) {
+// public int importSpecies(String regionId, File file) throws IOException {
+//
+// Reader reader = Files.newReader(file, Charsets.UTF_8);
+//
+// try {
+// int result = 0;
+//
+// TopiaContext transaction = persistence.beginTransaction();
+// try {
+//
+// Region region = SammoaDAOHelper.getRegionDAO(transaction).findByTopiaId(regionId);
+// Preconditions.checkNotNull(region);
+//
+// SpeciesDAO dao =
+// SammoaDAOHelper.getSpeciesDAO(transaction);
+//
+// SpeciesImportModel model = new SpeciesImportModel(region);
+//
+// Import<Species> importCsv = Import.newImport(model, reader);
+//
+// for (Species species : importCsv) {
+//
+// // while importing a species, it does become valid
+// species.setLocalCreation(false);
+//
+// Species speciesExists =
+// dao.findByNaturalId(species.getCode(),
+// species.getRegion());
+//
+// if (speciesExists == null) {
+//
+// dao.create(species);
+//
+// result++;
+//
+// if (logger.isDebugEnabled()) {
+// logger.debug(String.format("Create new species %1$s " +
+// "for region %2$s",
+// species.getCode(),
+// region.getCode()));
+// }
+//
+// } else {
+//
+// 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()));
+// }
+// }
+// }
+//
+// transaction.commitTransaction();
+//
+// } catch (TopiaException e) {
+// throw new TopiaRuntimeException(e);
+//
+// } finally {
+// persistence.endTransaction(transaction);
+// }
+// reader.close();
+//
+// return result;
+// } finally {
+// IOUtils.closeQuietly(reader);
+// }
+// }
- TopiaContext transaction = persistence.beginTransaction();
- int result = 0;
- try {
-
- Region region = SammoaDAOHelper.getRegionDAO(transaction).findByTopiaId(regionId);
- Preconditions.checkNotNull(region);
-
- SpeciesDAO dao =
- SammoaDAOHelper.getSpeciesDAO(transaction);
-
- SpeciesImportModel model = new SpeciesImportModel(region);
-
- Import<Species> importCsv = Import.newImport(model, reader);
-
- for (Species species : importCsv) {
-
- // while importing a species, it does become valid
- species.setLocalCreation(false);
-
- Species speciesExists =
- dao.findByNaturalId(species.getCode(), species.getRegion());
-
- if (speciesExists == null) {
-
- dao.create(species);
-
- result++;
-
- if (logger.isDebugEnabled()) {
- logger.debug(String.format("Create new species %1$s " +
- "for region %2$s",
- species.getCode(),
- region.getCode()));
- }
-
- } else {
-
- 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()));
- }
- }
- }
-
- transaction.commitTransaction();
-
- } catch (TopiaException e) {
- throw new TopiaRuntimeException(e);
-
- } finally {
- persistence.endTransaction(transaction);
- }
- return result;
- }
-
public List<Campaign> getCampaigns() {
List<Campaign> result;
@@ -245,6 +240,8 @@
Preconditions.checkArgument(campaign.getCode() != null);
Preconditions.checkArgument(campaign.getRegion() != null);
+ boolean createCampaign = campaign.getTopiaId() == null;
+
String result;
TopiaContext transaction = persistence.beginTransaction();
@@ -252,7 +249,7 @@
CampaignDAO dao = SammoaDAOHelper.getCampaignDAO(transaction);
- if (campaign.getTopiaId() == null) {
+ if (createCampaign) {
Campaign existCampaign = dao.findByNaturalId(campaign.getCode(), campaign.getRegion());
Preconditions.checkArgument(existCampaign == null);
@@ -284,6 +281,18 @@
} finally {
persistence.endTransaction(transaction);
}
+
+ if (createCampaign) {
+
+ // creates the campaign storage
+ try {
+ CampaignStorages.createStorage(config, result);
+ } catch (IOException e) {
+ throw new SammoaTechnicalException(
+ "Could not create campaign storage", e);
+ }
+ }
+
return result;
}
@@ -366,8 +375,7 @@
SpeciesDAO dao = SammoaDAOHelper.getSpeciesDAO(transaction);
- Collection<Species> result =
- dao.findAllByLocalCreation(false);
+ Collection<Species> result = dao.findAllByLocalCreation(false);
return result;
} catch (TopiaException e) {
@@ -378,101 +386,101 @@
}
}
- public int importTransects(String campaignId, Iterable<Transect> transects) {
+// public int importTransects(String campaignId, Iterable<Transect> transects) {
+//
+// int result = 0;
+//
+// TopiaContext transaction = persistence.beginTransaction();
+// try {
+//
+// CampaignDAO campaignDAO =
+// SammoaDAOHelper.getCampaignDAO(transaction);
+//
+// Campaign campaign = campaignDAO.findByTopiaId(campaignId);
+// Preconditions.checkArgument(campaign != null,
+// "The topiaId : " + campaignId + " doesn't match any existing campaign");
+//
+// StrateDAO strateDAO = SammoaDAOHelper.getStrateDAO(transaction);
+// TransectDAO transectDAO = SammoaDAOHelper.getTransectDAO(transaction);
+//
+// // Retrieve directly all strates to avoid multiple select queries to find strates
+// List<Strate> strates = strateDAO.findAllByCampaignOrderedByCode(campaign);
+// Map<String, Strate> strateMap =
+// Maps.uniqueIndex(strates, Strates.toCode());
+//
+// int rowIndex = 0;
+// for (Transect transect : transects) {
+//
+// // This is the link with the source shape file that contains graphic elements
+// int graphicIndex = rowIndex;
+//
+// rowIndex++;
+//
+// String strateCode = Strates.getCode(transect.getStrate());
+//
+// // We check the strate, it must exist
+// // We can't do that in TransectImportModel during parsing because
+// // we need two params : sectorNumber and strateType to create the
+// // strateCode and check the existence. It must be done after parsing
+// Strate existStrate = strateMap.get(strateCode);
+// if (existStrate == null) {
+// throw new ImportRuntimeException(String.format(
+// "Unable to read line %1$d : The strate %2$s doesn't exist",
+// rowIndex,
+// strateCode)
+// );
+// }
+//
+// Transect existTransect = transectDAO.findByNaturalId(transect.getName(), existStrate);
+//
+// // If the existing strate is null, create it otherwise ignore
+// if (existTransect == null) {
+//
+// Transect newTransect = transectDAO.createByNaturalId(transect.getName(), existStrate);
+// newTransect.setLength(transect.getLength());
+// newTransect.setStartX(transect.getStartX());
+// newTransect.setStartY(transect.getStartY());
+// newTransect.setEndX(transect.getEndX());
+// newTransect.setEndY(transect.getEndY());
+// newTransect.setNbTimes(transect.getNbTimes());
+// newTransect.setGraphicIndex(graphicIndex);
+//
+// result++;
+//
+// if (logger.isDebugEnabled()) {
+// logger.debug(String.format("Create new transect %1$s" +
+// "(graphicIndex = %2$d)",
+// newTransect.getName(),
+// graphicIndex)
+// );
+// }
+//
+// } else {
+//
+// existTransect.setGraphicIndex(graphicIndex);
+//
+// if (logger.isWarnEnabled()) {
+// logger.warn(String.format("The transect %1$s already " +
+// "exists and will be ignored " +
+// "(graphicIndex = %2$d)",
+// existTransect.getName(),
+// graphicIndex)
+// );
+// }
+// }
+// }
+//
+// transaction.commitTransaction();
+//
+// } catch (TopiaException e) {
+// throw new TopiaRuntimeException(e);
+//
+// } finally {
+// persistence.endTransaction(transaction);
+// }
+// return result;
+// }
- int result = 0;
-
- TopiaContext transaction = persistence.beginTransaction();
- try {
-
- CampaignDAO campaignDAO =
- SammoaDAOHelper.getCampaignDAO(transaction);
-
- Campaign campaign = campaignDAO.findByTopiaId(campaignId);
- Preconditions.checkArgument(campaign != null,
- "The topiaId : " + campaignId + " doesn't match any existing campaign");
-
- StrateDAO strateDAO = SammoaDAOHelper.getStrateDAO(transaction);
- TransectDAO transectDAO = SammoaDAOHelper.getTransectDAO(transaction);
-
- // Retrieve directly all strates to avoid multiple select queries to find strates
- List<Strate> strates = strateDAO.findAllByCampaignOrderedByCode(campaign);
- Map<String, Strate> strateMap =
- Maps.uniqueIndex(strates, Strates.toCode());
-
- int rowIndex = 0;
- for (Transect transect : transects) {
-
- // This is the link with the source shape file that contains graphic elements
- int graphicIndex = rowIndex;
-
- rowIndex++;
-
- String strateCode = Strates.getCode(transect.getStrate());
-
- // We check the strate, it must exist
- // We can't do that in TransectImportModel during parsing because
- // we need two params : sectorNumber and strateType to create the
- // strateCode and check the existence. It must be done after parsing
- Strate existStrate = strateMap.get(strateCode);
- if (existStrate == null) {
- throw new ImportRuntimeException(String.format(
- "Unable to read line %1$d : The strate %2$s doesn't exist",
- rowIndex,
- strateCode)
- );
- }
-
- Transect existTransect = transectDAO.findByNaturalId(transect.getName(), existStrate);
-
- // If the existing strate is null, create it otherwise ignore
- if (existTransect == null) {
-
- Transect newTransect = transectDAO.createByNaturalId(transect.getName(), existStrate);
- newTransect.setLength(transect.getLength());
- newTransect.setStartX(transect.getStartX());
- newTransect.setStartY(transect.getStartY());
- newTransect.setEndX(transect.getEndX());
- newTransect.setEndY(transect.getEndY());
- newTransect.setNbTimes(transect.getNbTimes());
- newTransect.setGraphicIndex(graphicIndex);
-
- result++;
-
- if (logger.isDebugEnabled()) {
- logger.debug(String.format("Create new transect %1$s" +
- "(graphicIndex = %2$d)",
- newTransect.getName(),
- graphicIndex)
- );
- }
-
- } else {
-
- existTransect.setGraphicIndex(graphicIndex);
-
- if (logger.isWarnEnabled()) {
- logger.warn(String.format("The transect %1$s already " +
- "exists and will be ignored " +
- "(graphicIndex = %2$d)",
- existTransect.getName(),
- graphicIndex)
- );
- }
- }
- }
-
- transaction.commitTransaction();
-
- } catch (TopiaException e) {
- throw new TopiaRuntimeException(e);
-
- } finally {
- persistence.endTransaction(transaction);
- }
- return result;
- }
-
public String createTransect(Transect transect) {
Preconditions.checkArgument(transect != null);
@@ -525,88 +533,88 @@
return result;
}
- public int importStrates(String campaignId, Iterable<Strate> strates) {
+// public int importStrates(String campaignId, Iterable<Strate> strates) {
+//
+// int result = 0;
+//
+// TopiaContext transaction = persistence.beginTransaction();
+// try {
+//
+// CampaignDAO campaignDAO =
+// SammoaDAOHelper.getCampaignDAO(transaction);
+//
+// Campaign campaign = campaignDAO.findByTopiaId(campaignId);
+// Preconditions.checkArgument(campaign != null,
+// "The topiaId : " + campaignId + " doesn't match any existing campaign");
+//
+// StrateDAO strateDAO = SammoaDAOHelper.getStrateDAO(transaction);
+// SectorDAO sectorDAO = SammoaDAOHelper.getSectorDAO(transaction);
+//
+// // Retrieve directly all sectors to avoid multiple select queries to find sectors
+// List<Sector> sectors = sectorDAO.findAllByCampaign(campaign);
+// Map<Integer, Sector> sectorMap =
+// Maps.newHashMap(Maps.uniqueIndex(sectors, Sectors.toSectorNumber()));
+//
+// for (Strate strate : strates) {
+//
+// StrateType strateType = strate.getStrateType();
+// Sector sector = strate.getSector();
+// int sectorNumber = sector.getSectorNumber();
+//
+// Strate existStrate;
+//
+// // Create sector if necessary
+// Sector existSector = sectorMap.get(sectorNumber);
+// if (existSector == null) {
+//
+// existSector = sectorDAO.createByNaturalId(sectorNumber, campaign);
+// existSector.setName(sector.getName());
+// sectorMap.put(sectorNumber, existSector);
+//
+// existStrate = null;
+//
+// } else {
+//
+// // Find existing strate only if sector is not created
+// existStrate = strateDAO.findByNaturalId(strateType, existSector);
+// }
+//
+// // If the existing strate is null, create it otherwise ignore
+// if (existStrate == null) {
+//
+// Strate newStrate = strateDAO.createByNaturalId(strateType, existSector);
+// newStrate.setCode(Strates.getCode(newStrate));
+// newStrate.setName(strate.getName());
+//
+// result++;
+//
+// if (logger.isDebugEnabled()) {
+// logger.debug(String.format("Create new strate %1$s",
+// newStrate.getCode())
+// );
+// }
+//
+// } else {
+//
+// if (logger.isWarnEnabled()) {
+// logger.warn(String.format("The strate %1$s already " +
+// "exists and will be ignored",
+// existStrate.getCode()));
+// }
+// }
+// }
+//
+// transaction.commitTransaction();
+//
+// } catch (TopiaException e) {
+// throw new TopiaRuntimeException(e);
+//
+// } finally {
+// persistence.endTransaction(transaction);
+// }
+// return result;
+// }
- int result = 0;
-
- TopiaContext transaction = persistence.beginTransaction();
- try {
-
- CampaignDAO campaignDAO =
- SammoaDAOHelper.getCampaignDAO(transaction);
-
- Campaign campaign = campaignDAO.findByTopiaId(campaignId);
- Preconditions.checkArgument(campaign != null,
- "The topiaId : " + campaignId + " doesn't match any existing campaign");
-
- StrateDAO strateDAO = SammoaDAOHelper.getStrateDAO(transaction);
- SectorDAO sectorDAO = SammoaDAOHelper.getSectorDAO(transaction);
-
- // Retrieve directly all sectors to avoid multiple select queries to find sectors
- List<Sector> sectors = sectorDAO.findAllByCampaign(campaign);
- Map<Integer, Sector> sectorMap =
- Maps.newHashMap(Maps.uniqueIndex(sectors, Sectors.toSectorNumber()));
-
- for (Strate strate : strates) {
-
- StrateType strateType = strate.getStrateType();
- Sector sector = strate.getSector();
- int sectorNumber = sector.getSectorNumber();
-
- Strate existStrate;
-
- // Create sector if necessary
- Sector existSector = sectorMap.get(sectorNumber);
- if (existSector == null) {
-
- existSector = sectorDAO.createByNaturalId(sectorNumber, campaign);
- existSector.setName(sector.getName());
- sectorMap.put(sectorNumber, existSector);
-
- existStrate = null;
-
- } else {
-
- // Find existing strate only if sector is not created
- existStrate = strateDAO.findByNaturalId(strateType, existSector);
- }
-
- // If the existing strate is null, create it otherwise ignore
- if (existStrate == null) {
-
- Strate newStrate = strateDAO.createByNaturalId(strateType, existSector);
- newStrate.setCode(Strates.getCode(newStrate));
- newStrate.setName(strate.getName());
-
- result++;
-
- if (logger.isDebugEnabled()) {
- logger.debug(String.format("Create new strate %1$s",
- newStrate.getCode())
- );
- }
-
- } else {
-
- if (logger.isWarnEnabled()) {
- logger.warn(String.format("The strate %1$s already " +
- "exists and will be ignored",
- existStrate.getCode()));
- }
- }
- }
-
- transaction.commitTransaction();
-
- } catch (TopiaException e) {
- throw new TopiaRuntimeException(e);
-
- } finally {
- persistence.endTransaction(transaction);
- }
- return result;
- }
-
public List<Observer> getAllObservers(Campaign campaign) {
List<Observer> result;
@@ -632,70 +640,76 @@
return result;
}
- public int importObservers(String campaignId, Reader reader) {
-
- TopiaContext transaction = persistence.beginTransaction();
- int result = 0;
- try {
-
- Campaign campaign = SammoaDAOHelper.getCampaignDAO(transaction).findByTopiaId(campaignId);
- Preconditions.checkNotNull(campaign);
-
- ObserverDAO observerDAO =
- SammoaDAOHelper.getObserverDAO(transaction);
-
- ObserverImportModel model = new ObserverImportModel(campaign);
-
- Import<Observer> importCsv = Import.newImport(model, reader);
-
- Iterator<Observer> it = importCsv.iterator();
- while (it.hasNext()) {
-
- Observer observer;
-
- observer = it.next();
-
- Observer observerExists =
- observerDAO.findByNaturalId(observer.getInitials(), observer.getCampaign());
-
- if (observerExists == null) {
-
- observerDAO.create(observer);
-
- result++;
-
- if (logger.isDebugEnabled()) {
- logger.debug(String.format("Create new observer %1$s " +
- "for campaign %2$s",
- observer.getInitials(),
- campaign.getCode()));
- }
-
- } else {
-
- 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()));
- }
- }
- }
-
- transaction.commitTransaction();
-
- } catch (TopiaException e) {
- throw new TopiaRuntimeException(e);
-
- } finally {
- persistence.endTransaction(transaction);
- }
- return result;
- }
+// public int importObservers(String campaignId, File file) throws IOException {
+//
+// Reader reader = Files.newReader(file, Charsets.UTF_8);
+//
+// try {
+// int result = 0;
+// TopiaContext transaction = persistence.beginTransaction();
+// try {
+//
+// Campaign campaign = SammoaDAOHelper.getCampaignDAO(transaction).findByTopiaId(campaignId);
+// Preconditions.checkNotNull(campaign);
+//
+// ObserverDAO observerDAO =
+// SammoaDAOHelper.getObserverDAO(transaction);
+//
+// ObserverImportModel model = new ObserverImportModel(campaign);
+//
+// Import<Observer> importCsv = Import.newImport(model, reader);
+//
+// for (Observer anImportCsv : importCsv) {
+//
+// Observer observer;
+//
+// observer = anImportCsv;
+//
+// Observer observerExists =
+// observerDAO.findByNaturalId(observer.getInitials(), observer.getCampaign());
+//
+// if (observerExists == null) {
+//
+// observerDAO.create(observer);
+//
+// result++;
+//
+// if (logger.isDebugEnabled()) {
+// logger.debug(String.format("Create new observer %1$s " +
+// "for campaign %2$s",
+// observer.getInitials(),
+// campaign.getCode()));
+// }
+//
+// } else {
+//
+// 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()));
+// }
+// }
+// }
+//
+// transaction.commitTransaction();
+//
+// } catch (TopiaException e) {
+// throw new TopiaRuntimeException(e);
+//
+// } finally {
+// persistence.endTransaction(transaction);
+// }
+// reader.close();
+// return result;
+// } finally {
+// IOUtils.closeQuietly(reader);
+// }
+// }
}
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-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaConfig.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -37,7 +37,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.swing.*;
+import javax.swing.KeyStroke;
import java.io.File;
import java.io.IOException;
import java.net.URL;
@@ -54,9 +54,7 @@
*/
public class SammoaConfig implements Supplier<ApplicationConfig> {
- /**
- * Logger.
- */
+ /** Logger. */
private static final Logger logger = LoggerFactory.getLogger(SammoaConfig.class);
public static final String PROPERTY_START = "start";
@@ -81,9 +79,7 @@
public static final String PROPERTY_GPS_CONFIG = "gpsConfig";
- /**
- * Delegate application config object containing configuration.
- */
+ /** Delegate application config object containing configuration. */
protected final ApplicationConfig applicationConfig;
protected GpsConfig gpsConfig;
@@ -164,37 +160,27 @@
// return url;
// }
- /**
- * @return {@link SammoaConfigOption#LOG_FILE} value
- */
+ /** @return {@link SammoaConfigOption#LOG_FILE} value */
public File getLogFile() {
return applicationConfig.getOptionAsFile(SammoaConfigOption.LOG_FILE.key);
}
- /**
- * @return {@link SammoaConfigOption#UI_CONFIG_FILE} value
- */
+ /** @return {@link SammoaConfigOption#UI_CONFIG_FILE} value */
public File getUIConfigFile() {
return applicationConfig.getOptionAsFile(SammoaConfigOption.UI_CONFIG_FILE.key);
}
- /**
- * @return {@link SammoaConfigOption#VERSION} value
- */
+ /** @return {@link SammoaConfigOption#VERSION} value */
public Version getVersion() {
return applicationConfig.getOptionAsVersion(SammoaConfigOption.VERSION.key);
}
- /**
- * @return {@link SammoaConfigOption#SITE_URL} value
- */
+ /** @return {@link SammoaConfigOption#SITE_URL} value */
public URL getSiteUrl() {
return applicationConfig.getOptionAsURL(SammoaConfigOption.SITE_URL.key);
}
- /**
- * @return {@link SammoaConfigOption#LOCALE} value
- */
+ /** @return {@link SammoaConfigOption#LOCALE} value */
public Locale getLocale() {
return applicationConfig.getOption(Locale.class, SammoaConfigOption.LOCALE.key);
}
@@ -207,41 +193,31 @@
return _("sammoa.copyright.text", getVersion());
}
- /**
- * @return {@link SammoaConfigOption#DATA_DIRECTORY} value
- */
+ /** @return {@link SammoaConfigOption#DATA_DIRECTORY} value */
public File getDataDirectory() {
File result = getOrCreateDirectory(SammoaConfigOption.DATA_DIRECTORY);
return result;
}
- /**
- * @return {@link SammoaConfigOption#AUDIO_DIRECTORY} value
- */
+ /** @return {@link SammoaConfigOption#AUDIO_DIRECTORY} value */
public File getAudioDirectory() {
File result = getOrCreateDirectory(SammoaConfigOption.AUDIO_DIRECTORY);
return result;
}
- /**
- * @return {@link SammoaConfigOption#SYSTEM_ID} value
- */
+ /** @return {@link SammoaConfigOption#SYSTEM_ID} value */
public String getSystemId() {
String result = applicationConfig.getOption(SammoaConfigOption.SYSTEM_ID.key);
return result;
}
- /**
- * @return {@link SammoaConfigOption#FLIGHT_NUMBER} value
- */
+ /** @return {@link SammoaConfigOption#FLIGHT_NUMBER} value */
public Integer getFlightNumber() {
int result = applicationConfig.getOptionAsInt(SammoaConfigOption.FLIGHT_NUMBER.key);
return result;
}
- /**
- * @return {@link SammoaConfigOption#BACKGROUND_SHAPE_FILE} value
- */
+ /** @return {@link SammoaConfigOption#BACKGROUND_SHAPE_FILE} value */
public File getBackgroundShapeFile() {
File result = applicationConfig.getOptionAsFile(SammoaConfigOption.BACKGROUND_SHAPE_FILE.key);
// Preconditions.checkArgument(result.exists(), "File " + result.getAbsolutePath() + " doesn't exist");
@@ -273,17 +249,13 @@
// applicationConfig.setOption(SammoaConfigOption.BACKGROUND_SHAPE_FILE.key, String.valueOf(mapBaseShapeFile));
// }
- /**
- * @return {@link SammoaConfigOption#AUTO_COMMIT_DELAY} value
- */
+ /** @return {@link SammoaConfigOption#AUTO_COMMIT_DELAY} value */
public Long getAutoCommitDelay() {
long result = applicationConfig.getOptionAsLong(SammoaConfigOption.AUTO_COMMIT_DELAY.key);
return result;
}
- /**
- * @return {@link SammoaConfigOption#FLY_MODE} value
- */
+ /** @return {@link SammoaConfigOption#FLY_MODE} value */
public boolean isFlyMode() {
boolean result = applicationConfig.getOptionAsBoolean(SammoaConfigOption.FLY_MODE.key);
return result;
@@ -310,7 +282,7 @@
* Creates a directory given the configuration {@code option}.
*
* @param option the configuration option key which contains the location of
- * the directory to create
+ * the directory to create
* @return the created directory
*/
protected File getOrCreateDirectory(SammoaConfigOption option) {
@@ -335,6 +307,10 @@
return directory;
}
+ public File getCampaignDirectory() {
+ return new File(getDataDirectory(), "campaign");
+ }
+
/**
* All Sammoa configuration options.
*
@@ -401,9 +377,9 @@
),
/** The backgroud shape file to display the world */
BACKGROUND_SHAPE_FILE("background.shape.file",
- n_("sammoa.config.background.shape.file"),
- "shape/vmap_area_thin.shp",
- File.class
+ n_("sammoa.config.background.shape.file"),
+ "shape/vmap_area_thin.shp",
+ File.class
),
// /** The strates shape file */
// STRATE_SHAPE_FILE("strate.shape.file",
@@ -440,11 +416,11 @@
),
KEY_START("ui." + PROPERTY_START,
- _("sammoa.config.ui.start"),
- "ctrl pressed A",
- KeyStroke.class,
- false,
- false),
+ _("sammoa.config.ui.start"),
+ "ctrl pressed A",
+ KeyStroke.class,
+ false,
+ false),
KEY_STOP("ui." + PROPERTY_STOP,
_("sammoa.config.ui.stop"),
@@ -454,18 +430,18 @@
false),
KEY_BEGIN("ui." + PROPERTY_BEGIN,
- _("sammoa.config.ui.begin"),
- "pressed F5",
- KeyStroke.class,
- false,
- false),
+ _("sammoa.config.ui.begin"),
+ "pressed F5",
+ KeyStroke.class,
+ false,
+ false),
KEY_END("ui." + PROPERTY_END,
- _("sammoa.config.ui.end"),
- "pressed F9",
- KeyStroke.class,
- false,
- false),
+ _("sammoa.config.ui.end"),
+ "pressed F9",
+ KeyStroke.class,
+ false,
+ false),
KEY_NEXT("ui." + PROPERTY_NEXT,
_("sammoa.config.ui.next"),
@@ -475,39 +451,39 @@
false),
KEY_ADD("ui." + PROPERTY_ADD,
- _("sammoa.config.ui.add"),
- "pressed F7",
- KeyStroke.class,
- false,
- false),
+ _("sammoa.config.ui.add"),
+ "pressed F7",
+ KeyStroke.class,
+ false,
+ false),
KEY_LEFT_OBSERVATION("ui." + PROPERTY_LEFT_OBSERVATION,
- _("sammoa.config.ui.leftObservation"),
- "pressed F1",
- KeyStroke.class,
- false,
- false),
+ _("sammoa.config.ui.leftObservation"),
+ "pressed F1",
+ KeyStroke.class,
+ false,
+ false),
KEY_CENTER_OBSERVATION("ui." + PROPERTY_CENTER_OBSERVATION,
- _("sammoa.config.ui.centerObservation"),
- "pressed F3",
- KeyStroke.class,
- false,
- false),
+ _("sammoa.config.ui.centerObservation"),
+ "pressed F3",
+ KeyStroke.class,
+ false,
+ false),
KEY_RIGHT_OBSERVATION("ui." + PROPERTY_RIGHT_OBSERVATION,
- _("sammoa.config.ui.rightObservation"),
- "pressed F12",
- KeyStroke.class,
- false,
- false),
+ _("sammoa.config.ui.rightObservation"),
+ "pressed F12",
+ KeyStroke.class,
+ false,
+ false),
KEY_CIRCLE_BACK("ui." + PROPERTY_CIRCLE_BACK,
- _("sammoa.config.ui.circleBack"),
- "pressed F11",
- KeyStroke.class,
- false,
- false);
+ _("sammoa.config.ui.circleBack"),
+ "pressed F11",
+ KeyStroke.class,
+ false,
+ false);
/** Configuration key. */
private final String key;
@@ -547,6 +523,7 @@
Class<?> type) {
this(key, description, defaultValue, type, false, false);
}
+
@Override
public String getKey() {
return key;
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-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -24,8 +24,8 @@
*/
package fr.ulr.sammoa.application;
-import fr.ulr.sammoa.application.io.exportApplication.ExportApplicationService;
-import fr.ulr.sammoa.application.map.ExportMapService;
+import fr.ulr.sammoa.application.io.output.sammoa.ExportApplicationService;
+import fr.ulr.sammoa.application.io.output.map.ExportMapService;
import fr.ulr.sammoa.persistence.SammoaPersistence;
/**
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaTechnicalException.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaTechnicalException.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaTechnicalException.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -24,9 +24,7 @@
*/
package fr.ulr.sammoa.application;
-/**
- * @author sletellier <letellier(a)codelutin.com>
- */
+/** @author sletellier <letellier(a)codelutin.com> */
public class SammoaTechnicalException extends RuntimeException {
private static final long serialVersionUID = 1L;
Deleted: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/DoubleToIntegerValueParser.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/DoubleToIntegerValueParser.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/DoubleToIntegerValueParser.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -1,42 +0,0 @@
-package fr.ulr.sammoa.application.csv;
-/*
- * #%L
- * SAMMOA :: Application
- * $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%
- */
-
-import org.nuiton.util.csv.ValueParser;
-
-import java.text.ParseException;
-
-/**
- * Created: 26/07/12
- *
- * @author fdesbois <desbois(a)codelutin.com>
- */
-public class DoubleToIntegerValueParser implements ValueParser<Integer> {
-
- @Override
- public Integer parse(String s) throws ParseException {
- Double value = Double.parseDouble(s);
- return value.intValue();
- }
-}
Deleted: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/ObserverImportModel.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/ObserverImportModel.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/ObserverImportModel.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -1,92 +0,0 @@
-package fr.ulr.sammoa.application.csv;
-/*
- * #%L
- * SAMMOA :: Application
- * $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%
- */
-
-import fr.ulr.sammoa.persistence.Campaign;
-import fr.ulr.sammoa.persistence.Observer;
-import fr.ulr.sammoa.persistence.ObserverImpl;
-import org.nuiton.util.csv.Common;
-import org.nuiton.util.csv.ImportModel;
-import org.nuiton.util.csv.ImportableColumn;
-import org.nuiton.util.csv.ModelBuilder;
-import org.nuiton.util.csv.ValueParser;
-
-import java.text.ParseException;
-import java.util.List;
-
-/**
- * Created: 09/07/12
- *
- * @author fdesbois <desbois(a)codelutin.com>
- */
-public class ObserverImportModel implements ImportModel<Observer> {
-
- protected Campaign campaign;
-
- public ObserverImportModel(Campaign campaign) {
- this.campaign = campaign;
- }
-
- @Override
- public char getSeparator() {
- return ';';
- }
-
- @Override
- public void pushCsvHeaderNames(List<String> strings) {
- }
-
- @Override
- public Observer newEmptyInstance() {
- return new ObserverImpl();
- }
-
- @Override
- public Iterable<ImportableColumn<Observer, Object>> getColumnsForImport() {
- ModelBuilder builder = new ModelBuilder();
- builder.newMandatoryColumn("CAMPAIGN", Observer.PROPERTY_CAMPAIGN, CAMPAIGN_VALUE_PARSER);
- builder.newMandatoryColumn("INITIALS", Observer.PROPERTY_INITIALS);
- builder.newMandatoryColumn("FIRST_NAME", Observer.PROPERTY_FIRST_NAME);
- builder.newMandatoryColumn("LAST_NAME", Observer.PROPERTY_LAST_NAME);
- builder.newMandatoryColumn("ORGANIZATION", Observer.PROPERTY_ORGANIZATION);
- builder.newMandatoryColumn("EMAIL", Observer.PROPERTY_EMAIL);
- builder.newMandatoryColumn("PILOT", Observer.PROPERTY_PILOT, Common.BOOLEAN);
- return builder.getColumnsForImport();
- }
-
- protected ValueParser<Campaign> CAMPAIGN_VALUE_PARSER = new ValueParser<Campaign>() {
-
- @Override
- public Campaign parse(String s) throws ParseException {
- Campaign result;
- if (s.equals(campaign.getCode())) {
- result = campaign;
- } else {
- throw new IllegalArgumentException(
- String.format("The current campaign is %1$s and not %2$s", campaign.getCode(), s));
- }
- return result;
- }
- };
-}
Deleted: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/SpeciesImportModel.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/SpeciesImportModel.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/SpeciesImportModel.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -1,91 +0,0 @@
-package fr.ulr.sammoa.application.csv;
-/*
- * #%L
- * SAMMOA :: Application
- * $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%
- */
-
-import fr.ulr.sammoa.persistence.Region;
-import fr.ulr.sammoa.persistence.Species;
-import fr.ulr.sammoa.persistence.SpeciesImpl;
-import org.nuiton.util.csv.ImportModel;
-import org.nuiton.util.csv.ImportableColumn;
-import org.nuiton.util.csv.ModelBuilder;
-import org.nuiton.util.csv.ValueParser;
-
-import java.text.ParseException;
-import java.util.List;
-
-/**
- * Created: 17/07/12
- *
- * @author fdesbois <desbois(a)codelutin.com>
- */
-public class SpeciesImportModel implements ImportModel<Species> {
-
- protected Region region;
-
- public SpeciesImportModel(Region region) {
- this.region = region;
- }
-
- @Override
- public char getSeparator() {
- return ';';
- }
-
- @Override
- public void pushCsvHeaderNames(List<String> strings) {
- }
-
- @Override
- public Species newEmptyInstance() {
- return new SpeciesImpl();
- }
-
- @Override
- public Iterable<ImportableColumn<Species, Object>> getColumnsForImport() {
- ModelBuilder builder = new ModelBuilder();
- builder.newMandatoryColumn("REGION", Species.PROPERTY_REGION, REGION_VALUE_PARSER);
- builder.newMandatoryColumn("CODE", Species.PROPERTY_CODE);
- builder.newMandatoryColumn("NOM_COMM", Species.PROPERTY_COMMON_NAME);
- builder.newMandatoryColumn("NOM_LATIN", Species.PROPERTY_LATIN_NAME);
- builder.newMandatoryColumn("TYPE", Species.PROPERTY_TYPE);
- builder.newMandatoryColumn("FAMILLE", Species.PROPERTY_FAMILY);
- builder.newMandatoryColumn("GROUPE", Species.PROPERTY_GROUP_NAME);
- return builder.getColumnsForImport();
- }
-
- protected ValueParser<Region> REGION_VALUE_PARSER = new ValueParser<Region>() {
-
- @Override
- public Region parse(String s) throws ParseException {
- Region result;
- if (s.equals(region.getCode())) {
- result = region;
- } else {
- throw new IllegalArgumentException(
- String.format("The current region is %1$s and not %2$s", region.getCode(), s));
- }
- return result;
- }
- };
-}
Deleted: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/StrateImportModel.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/StrateImportModel.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/StrateImportModel.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -1,91 +0,0 @@
-package fr.ulr.sammoa.application.csv;
-/*
- * #%L
- * SAMMOA :: Application
- * $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%
- */
-
-import fr.ulr.sammoa.persistence.Sector;
-import fr.ulr.sammoa.persistence.SectorImpl;
-import fr.ulr.sammoa.persistence.Strate;
-import fr.ulr.sammoa.persistence.StrateImpl;
-import org.nuiton.util.csv.ImportModel;
-import org.nuiton.util.csv.ImportableColumn;
-import org.nuiton.util.csv.ModelBuilder;
-
-import java.util.List;
-
-/**
- * Created: 25/07/12
- *
- * @author fdesbois <desbois(a)codelutin.com>
- */
-public class StrateImportModel implements ImportModel<Strate> {
-
- // 0 : Nom
- // 1 : Area (not used)
- // 2 : Shape_Leng (not used)
- // 3 : Shape_Area (not used)
- // 4 : Secteur (name)
- // 5 : type_strat (string) for StrateType (code match)
- // 6 : ID_Secteur (double)
-
- @Override
- public char getSeparator() {
- return ' ';
- }
-
- @Override
- public void pushCsvHeaderNames(List<String> strings) {
- }
-
- @Override
- public Strate newEmptyInstance() {
- Strate result = new StrateImpl();
- result.setSector(new SectorImpl());
- return result;
- }
-
- @Override
- public Iterable<ImportableColumn<Strate, Object>> getColumnsForImport() {
- ModelBuilder builder = new ModelBuilder();
- builder.newMandatoryColumn("Nom",
- Strate.PROPERTY_NAME
- );
- builder.newMandatoryColumn("Secteur",
- Strate.PROPERTY_SECTOR
- + "." + Sector.PROPERTY_NAME
- );
- builder.newMandatoryColumn("type_strat",
- Strate.PROPERTY_STRATE_TYPE,
- new StrateTypeValueParser()
- );
- builder.newMandatoryColumn("ID_Secteur",
- Strate.PROPERTY_SECTOR
- + "." + Sector.PROPERTY_SECTOR_NUMBER,
- new DoubleToIntegerValueParser()
- );
- builder.newIgnoredColumn("Area");
- builder.newIgnoredColumn("Shape_Area");
- builder.newIgnoredColumn("Shape_Leng");
- return builder.getColumnsForImport();
- }
-}
Deleted: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/StrateTypeValueParser.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/StrateTypeValueParser.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/StrateTypeValueParser.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -1,44 +0,0 @@
-package fr.ulr.sammoa.application.csv;
-/*
- * #%L
- * SAMMOA :: Application
- * $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%
- */
-
-import fr.ulr.sammoa.persistence.StrateType;
-import org.nuiton.util.csv.ValueParser;
-
-import java.text.ParseException;
-
-/**
- * Created: 26/07/12
- *
- * @author fdesbois <desbois(a)codelutin.com>
- */
-public class StrateTypeValueParser implements ValueParser<StrateType> {
-
- @Override
- public StrateType parse(String s) throws ParseException {
- char strateCode = s.charAt(0);
- StrateType result = StrateType.valueOfCode(strateCode);
- return result;
- }
-}
Deleted: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/TransectImportModel.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/TransectImportModel.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/TransectImportModel.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -1,119 +0,0 @@
-package fr.ulr.sammoa.application.csv;
-/*
- * #%L
- * SAMMOA :: Application
- * $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%
- */
-
-import fr.ulr.sammoa.persistence.Sector;
-import fr.ulr.sammoa.persistence.SectorImpl;
-import fr.ulr.sammoa.persistence.Strate;
-import fr.ulr.sammoa.persistence.StrateImpl;
-import fr.ulr.sammoa.persistence.Transect;
-import fr.ulr.sammoa.persistence.TransectImpl;
-import org.nuiton.util.csv.Common;
-import org.nuiton.util.csv.ImportModel;
-import org.nuiton.util.csv.ImportableColumn;
-import org.nuiton.util.csv.ModelBuilder;
-
-import java.util.List;
-
-/**
- * Created: 25/07/12
- *
- * @author fdesbois <desbois(a)codelutin.com>
- */
-public class TransectImportModel implements ImportModel<Transect> {
-
- // 0 : Length
- // 1 : TR_ID used as name
- // 2 : Xstart
- // 3 : Ystart
- // 4 : Xend
- // 5 : Yend
- // 6 : Passage (double) used for nbTimes
- // 7 : SECTEUR (double) use as sectorNumber
- // 8 : STRATE (string) for StrateType (code match)
- // 9 : Shape_Leng (not used)
-
- @Override
- public char getSeparator() {
- return ' ';
- }
-
- @Override
- public void pushCsvHeaderNames(List<String> strings) {
- }
-
- @Override
- public Transect newEmptyInstance() {
- Transect result = new TransectImpl();
- Strate strate = new StrateImpl();
- result.setStrate(strate);
- strate.setSector(new SectorImpl());
- return result;
- }
-
- @Override
- public Iterable<ImportableColumn<Transect, Object>> getColumnsForImport() {
- ModelBuilder builder = new ModelBuilder();
- builder.newMandatoryColumn("Length",
- Transect.PROPERTY_LENGTH,
- Common.DOUBLE_PRIMITIVE
- );
- builder.newMandatoryColumn("TR_ID",
- Transect.PROPERTY_NAME)
- ;
- builder.newMandatoryColumn("Xstart",
- Transect.PROPERTY_START_X,
- Common.DOUBLE_PRIMITIVE
- );
- builder.newMandatoryColumn("Ystart",
- Transect.PROPERTY_START_Y,
- Common.DOUBLE_PRIMITIVE
- );
- builder.newMandatoryColumn("Xend",
- Transect.PROPERTY_END_X,
- Common.DOUBLE_PRIMITIVE
- );
- builder.newMandatoryColumn("Yend",
- Transect.PROPERTY_END_Y,
- Common.DOUBLE_PRIMITIVE
- );
- builder.newMandatoryColumn("SECTEUR",
- Transect.PROPERTY_STRATE + "."
- + Strate.PROPERTY_SECTOR + "."
- + Sector.PROPERTY_SECTOR_NUMBER,
- new DoubleToIntegerValueParser()
- );
- builder.newMandatoryColumn("STRATE",
- Transect.PROPERTY_STRATE + "."
- + Strate.PROPERTY_STRATE_TYPE,
- new StrateTypeValueParser()
- );
- builder.newMandatoryColumn("Passage",
- Transect.PROPERTY_NB_TIMES,
- new DoubleToIntegerValueParser()
- );
- builder.newIgnoredColumn("Shape_Leng");
- return builder.getColumnsForImport();
- }
-}
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/DeviceManager.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/DeviceManager.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/DeviceManager.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -45,9 +45,7 @@
*/
void start();
- /**
- * Stop the device session
- */
+ /** Stop the device session */
void stop();
/**
@@ -57,24 +55,16 @@
*/
void close() throws DeviceTechnicalException;
- /**
- * @return the DeviceState
- */
+ /** @return the DeviceState */
DeviceState getState();
- /**
- * @param listener DeviceStateListener to add
- */
+ /** @param listener DeviceStateListener to add */
void addDeviceStateListener(DeviceStateListener listener);
- /**
- * @param listener DeviceStateListener to remove
- */
+ /** @param listener DeviceStateListener to remove */
void removeDeviceStateListener(DeviceStateListener listener);
- /**
- * @return all the listeners
- */
+ /** @return all the listeners */
Set<DeviceStateListener> getDeviceStateListeners();
}
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/DeviceState.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/DeviceState.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/DeviceState.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -26,7 +26,7 @@
/**
* Enumeration to represent device (gps, audio) state.
- *
+ *
* @author echatellier
*/
public enum DeviceState {
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/DeviceTechnicalException.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/DeviceTechnicalException.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/DeviceTechnicalException.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -24,9 +24,7 @@
*/
package fr.ulr.sammoa.application.device;
-/**
- * @author fdesbois <fdesbois(a)codelutin.com>
- */
+/** @author fdesbois <fdesbois(a)codelutin.com> */
public class DeviceTechnicalException extends RuntimeException {
private static final long serialVersionUID = 1L;
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/AudioRecorder.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/AudioRecorder.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/AudioRecorder.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -38,9 +38,7 @@
*/
public interface AudioRecorder extends DeviceManager {
- /**
- * @return the {@link AudioFileFormat.Type} used (default is WAV)
- */
+ /** @return the {@link AudioFileFormat.Type} used (default is WAV) */
AudioFileFormat.Type getOutputType();
/**
@@ -48,7 +46,7 @@
* previous recording will be stopped in {@code delaySeconds}. The delay is
* useful to avoid recording lost or too quick between two files.
*
- * @param outputFile File to record
+ * @param outputFile File to record
* @param delaySeconds Delay for previous recording
*/
void record(File outputFile, long delaySeconds);
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/AudioRecorderDefault.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/AudioRecorderDefault.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/AudioRecorderDefault.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -97,9 +97,9 @@
// // For debug purpose
// private int count;
-
+
protected DeviceState state;
-
+
protected Set<DeviceStateListener> listeners;
public AudioRecorderDefault() {
@@ -168,7 +168,7 @@
logger.info("Open the audio line");
}
- DataLine.Info info = new DataLine.Info(TargetDataLine.class, audioFormat);
+ DataLine.Info info = new DataLine.Info(TargetDataLine.class, audioFormat);
try {
dataLine = (TargetDataLine) AudioSystem.getLine(info);
dataLine.open(audioFormat);
@@ -190,7 +190,7 @@
setState(DeviceState.NO_DEVICE, null);
throw new DeviceTechnicalException(this, "Can't open audio device", e);
- } catch (SecurityException e) {
+ } catch (SecurityException e) {
setState(DeviceState.NO_DEVICE, null);
throw new DeviceTechnicalException(this, "Can't open audio device", e);
@@ -253,7 +253,7 @@
currentRecorder = recorder2;
// Stop recorder2 if recording and start recorder1
- } else if (currentRecorder == recorder2) {
+ } else if (currentRecorder == recorder2) {
if (recorder2.isRecording()) {
recorder2.stop(delaySeconds);
@@ -393,7 +393,7 @@
save();
}
}
-
+
protected class StopTask extends TimerTask {
@Override
@@ -512,8 +512,8 @@
} catch (IOException e) {
logger.error("Can't record file {}", outputFilePath, e);
audioRecorder.setState(DeviceState.ERROR,
- new DeviceTechnicalException(audioRecorder,
- "Error on saving file " + outputFilePath, e));
+ new DeviceTechnicalException(audioRecorder,
+ "Error on saving file " + outputFilePath, e));
} finally {
try {
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/AudioRecorderMock.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/AudioRecorderMock.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/audio/AudioRecorderMock.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -40,7 +40,7 @@
* @author fdesbois <desbois(a)codelutin.com>
*/
public class AudioRecorderMock implements AudioRecorder {
-
+
@Override
public DeviceState getState() {
return DeviceState.NO_DEVICE;
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/BaseGpsHandler.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/BaseGpsHandler.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/BaseGpsHandler.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -44,19 +44,20 @@
* will be called on start if state is still {@link DeviceState#NO_DEVICE}.
* The method {@link #getCurrentLocation()} must return null if the location doesn't
* change or the GPS is down.
- *
+ * <p/>
* Created: 02/07/12
*
* @author fdesbois <desbois(a)codelutin.com>
- * @since 0.2
* @see FakeGpsHandler
* @see GpsHandlerGpsylon
+ * @since 0.2
*/
public abstract class BaseGpsHandler implements GpsHandler {
private static final Logger logger = LoggerFactory.getLogger(BaseGpsHandler.class);
protected Set<DeviceStateListener> deviceStateListeners;
+
protected Set<GpsLocationListener> gpsLocationListeners;
/** To test if connection to device is effective. */
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/FakeGpsHandler.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/FakeGpsHandler.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/FakeGpsHandler.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -39,19 +39,19 @@
* à partir du point 0, 0.
*/
public class FakeGpsHandler extends BaseGpsHandler {
-
+
private static final Logger logger = LoggerFactory.getLogger(FakeGpsHandler.class);
-
+
public static final int MAX_POINTS = 100;
-
+
protected GeoPoint startingPoint;
protected GeoPoint currentLocation;
-
+
protected Thread thread;
public FakeGpsHandler(GpsConfig config) {
- this(config, new GeoPointImpl(46.164139,-1.150503));
+ this(config, new GeoPointImpl(46.164139, -1.150503));
}
public FakeGpsHandler(GpsConfig config, GeoPoint origin) {
@@ -118,7 +118,7 @@
@Override
protected void finalize() throws Throwable {
-
+
if (thread != null) {
thread.interrupt();
thread = null;
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsConfig.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsConfig.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsConfig.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -45,13 +45,11 @@
this.applicationConfig.loadDefaultOptions(GpsConfigOption.values());
}
- /**
- * @return {@link GpsConfigOption#GPS_HANDLER} value
- */
+ /** @return {@link GpsConfigOption#GPS_HANDLER} value */
public Class<? extends GpsHandler> getGpsHandlerClass() {
Class<?> result = applicationConfig.getOptionAsClass(GpsConfigOption.GPS_HANDLER.key);
Preconditions.checkArgument(GpsHandler.class.isAssignableFrom(result),
- "The class " + result.getSimpleName() + " is not a GpsHandler implementation");
+ "The class " + result.getSimpleName() + " is not a GpsHandler implementation");
return (Class<? extends GpsHandler>) result;
}
@@ -65,33 +63,25 @@
newValue.getName());
}
- /**
- * @return {@link GpsConfigOption#GPS_CHECK_PERIOD} value
- */
+ /** @return {@link GpsConfigOption#GPS_CHECK_PERIOD} value */
public int getCheckPeriod() {
int result = applicationConfig.getOptionAsInt(GpsConfigOption.GPS_CHECK_PERIOD.key);
return result;
}
- /**
- * @return {@link GpsConfigOption#GPS_TIMEOUT} value
- */
+ /** @return {@link GpsConfigOption#GPS_TIMEOUT} value */
public int getTimeout() {
int result = applicationConfig.getOptionAsInt(GpsConfigOption.GPS_TIMEOUT.key);
return result;
}
- /**
- * @return {@link GpsConfigOption#GPS_DEVICE} value
- */
+ /** @return {@link GpsConfigOption#GPS_DEVICE} value */
public String getDevice() {
String result = applicationConfig.getOption(GpsConfigOption.GPS_DEVICE.key);
return result;
}
- /**
- * @return {@link GpsConfigOption#GPS_SPEED} value
- */
+ /** @return {@link GpsConfigOption#GPS_SPEED} value */
public int getSpeed() {
int result = applicationConfig.getOptionAsInt(GpsConfigOption.GPS_SPEED.key);
return result;
@@ -101,33 +91,33 @@
/** Implementation class for GpsHandler */
GPS_HANDLER("gps.handler",
- n_("sammoa.config.gps.handler"),
- GpsHandlerGpsylon.class.getName(),
- Class.class
+ n_("sammoa.config.gps.handler"),
+ GpsHandlerGpsylon.class.getName(),
+ Class.class
),
/** Period time in seconds for each check of the gps to update location */
GPS_CHECK_PERIOD("gps.check.period",
- n_("sammoa.config.gps.check.period"),
- "2",
- Integer.class
+ n_("sammoa.config.gps.check.period"),
+ "2",
+ Integer.class
),
/** Time in seconds before timeout (ERROR, NO_DEVICE) */
GPS_TIMEOUT("gps.timeout",
- n_("sammoa.config.gps.timeout"),
- "10",
- Integer.class
+ n_("sammoa.config.gps.timeout"),
+ "10",
+ Integer.class
),
/** GPS Device name ex: /dev/ttyUSB0 or /dev/ttyS1 or COM5 */
GPS_DEVICE("gps.device",
- n_("sammoa.config.gps.device"),
- "COM1",
- String.class
+ n_("sammoa.config.gps.device"),
+ "COM1",
+ String.class
),
/** GPS data speed */
GPS_SPEED("gps.speed",
- n_("sammoa.config.gps.speed"),
- "4800",
- Integer.class
+ n_("sammoa.config.gps.speed"),
+ "4800",
+ Integer.class
);
/** Configuration key. */
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsHandler.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsHandler.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsHandler.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -29,31 +29,23 @@
import java.util.Set;
-/**
- * Représente l'accès à un périphérique GPS.
- */
+/** Représente l'accès à un périphérique GPS. */
public interface GpsHandler extends DeviceManager {
/**
* Retourne la position courante du GPS.
- *
+ *
* @return la position courante selon le GPS ou {@code null} si elle ne peut
- * pas être obtenue
+ * pas être obtenue
*/
GeoPoint getCurrentLocation();
- /**
- * @param gpsLocationListener GpsLocationListener to add
- */
+ /** @param gpsLocationListener GpsLocationListener to add */
void addGpsLocationListener(GpsLocationListener gpsLocationListener);
- /**
- * @param gpsLocationListener GpsLocationListener to remove
- */
+ /** @param gpsLocationListener GpsLocationListener to remove */
void removeGpsLocationListener(GpsLocationListener gpsLocationListener);
- /**
- * @return all GpsLocationListener
- */
+ /** @return all GpsLocationListener */
Set<GpsLocationListener> getGpsLocationListeners();
}
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsHandlerGpsylon.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsHandlerGpsylon.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsHandlerGpsylon.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -31,7 +31,11 @@
import fr.ulr.sammoa.persistence.GeoPointImpl;
import fr.ulr.sammoa.persistence.GeoPoints;
import gnu.io.CommPortIdentifier;
-import org.dinopolis.gpstool.gpsinput.*;
+import org.dinopolis.gpstool.gpsinput.GPSDataProcessor;
+import org.dinopolis.gpstool.gpsinput.GPSDevice;
+import org.dinopolis.gpstool.gpsinput.GPSException;
+import org.dinopolis.gpstool.gpsinput.GPSPosition;
+import org.dinopolis.gpstool.gpsinput.GPSSerialDevice;
import org.dinopolis.gpstool.gpsinput.nmea.SafeGPSNmeaDataProcessor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -169,9 +173,9 @@
// }
double latitude = lastPosition != null
- ? lastPosition.getLatitude() : GeoPoints.EMPTY_COORDINATE;
+ ? lastPosition.getLatitude() : GeoPoints.EMPTY_COORDINATE;
double longitude = lastPosition != null
- ? lastPosition.getLongitude() : GeoPoints.EMPTY_COORDINATE;
+ ? lastPosition.getLongitude() : GeoPoints.EMPTY_COORDINATE;
GeoPoint result = new GeoPointImpl(latitude, longitude);
result.setAltitude(lastAltitude);
@@ -211,17 +215,17 @@
if (GeoPoints.isCoordinatesEmpty(location)) {
result = new DeviceTechnicalException(this,
- "GPS is not ready, turn it on or wait for it to find satellites");
+ "GPS is not ready, turn it on or wait for it to find satellites");
} else {
if (lastNumberSatellites == 0) {
result = new DeviceTechnicalException(this,
- "GPS signal lost, there is no available satellite found");
+ "GPS signal lost, there is no available satellite found");
} else {
result = new DeviceTechnicalException(this,
- "GPS signal lost, please check the connection port");
+ "GPS signal lost, please check the connection port");
}
}
}
@@ -255,7 +259,7 @@
* Si l'on recoit des evenements, c'est que le gps fonctionne.
* Il sont envoyé par le traitement des flux NMEA et propagé par le
* {@code GPSDataChangeListener}.
- *
+ * <p/>
* Properties available:
* <ul>
* <li>LOCATION: the value is a GPSPosition object
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsLocationListener.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsLocationListener.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/device/gps/GpsLocationListener.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -24,14 +24,12 @@
*/
package fr.ulr.sammoa.application.device.gps;
-/**
- * DP Observateur.
- */
+/** DP Observateur. */
public interface GpsLocationListener {
/**
* Update GPS location.
- *
+ *
* @param event new event
*/
void locationChanged(GpsLocationEvent event);
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightController.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightController.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightController.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -49,41 +49,32 @@
*/
public interface FlightController {
- /**
- * @return the {@link FlightState}
- */
+ /** @return the {@link FlightState} */
FlightState getState();
- /**
- * @return the {@link AudioRecorderDefault} used to save audio files
- */
+ /** @return the {@link AudioRecorderDefault} used to save audio files */
AudioRecorder getAudioRecorder();
/**
* @return the {@link GpsHandler} used to retrieve GPS {@link GeoPoint} and
- * save them.
+ * save them.
*/
GpsHandler getGpsHandler();
/**
* @param config GpsConfig to initialize the Gps
- * @exception fr.ulr.sammoa.application.device.DeviceTechnicalException if the gps device can't be opened properly
+ * @throws fr.ulr.sammoa.application.device.DeviceTechnicalException
+ * if the gps device can't be opened properly
*/
void openGpsDevice(GpsConfig config) throws DeviceTechnicalException;
- /**
- * @exception DeviceTechnicalException if the audio device can't be opened properly
- */
+ /** @throws DeviceTechnicalException if the audio device can't be opened properly */
void openAudioDevice() throws DeviceTechnicalException;
- /**
- * @return The current {@link Route}
- */
+ /** @return The current {@link Route} */
Route getCurrentRoute();
- /**
- * @return The next {@link TransectFlight}
- */
+ /** @return The next {@link TransectFlight} */
TransectFlight getNextTransect();
/**
@@ -97,18 +88,18 @@
/**
* Start operation. This will set the {@code beginDate} of the flight, then
- * a new {@link RouteType#TRANSIT} route is created. The state is now
- * {@link FlightState#OFF_EFFORT}.
+ * a new {@link RouteType#TRANSIT} route is created. The state is now
+ * {@link FlightState#OFF_EFFORT}.
* <p/>
- * This operation is called when the plane take off, for the moment no
- * observation is done and the audio is not recording. The GPS is enabled
+ * This operation is called when the plane take off, for the moment no
+ * observation is done and the audio is not recording. The GPS is enabled
* and will send data to display the plane tracking.
* <p/>
* After a start(), you can call :
- * <ul>
- * <li>{@link #begin()}</li>
- * <li>{@link #observation(Position)}</li>
- * <li>{@link #stop()}</li>
+ * <ul>
+ * <li>{@link #begin()}</li>
+ * <li>{@link #observation(Position)}</li>
+ * <li>{@link #stop()}</li>
* </ul>
*/
void start();
@@ -116,35 +107,35 @@
/**
* Select a {@code nextTransect} to use for the next {@link RouteType#LEG}
* when {@link #begin()} method is called.
- *
+ *
* @param nextTransect the TransectFlight to use as next one
*/
void setNextTransect(TransectFlight nextTransect);
/**
* Begin operation. A new {@link RouteType#LEG} is created based on GPS
- * current date and next transect that becomes the current one. The state
+ * current date and next transect that becomes the current one. The state
* is now {@link FlightState#ON_EFFORT}.
* <p/>
* This operation is called when the plane arrives on a transect and observation
* need to begin. Conditions could be set on the currentRoute (TRANSIT) and
- * will be copied on the new LEG. This operation is also called when a
+ * will be copied on the new LEG. This operation is also called when a
* CIRCLE_BACK is finished to resume effort on the current transect.
* <p/>
* After a begin(), you can call :
* <ul>
- * <li>{@link #add()}</li>
- * <li>{@link #circleBack(Observation)}</li>
- * <li>{@link #next()}</li>
- * <li>{@link #observation(Position)}</li>
- * <li>{@link #end()}</li>
- * <li>{@link #stop()}</li>
+ * <li>{@link #add()}</li>
+ * <li>{@link #circleBack(Observation)}</li>
+ * <li>{@link #next()}</li>
+ * <li>{@link #observation(Position)}</li>
+ * <li>{@link #end()}</li>
+ * <li>{@link #stop()}</li>
* </ul>
*/
void begin();
/**
- * Circle Back operation. A new {@link RouteType#CIRCLE_BACK} is created
+ * Circle Back operation. A new {@link RouteType#CIRCLE_BACK} is created
* based on GPS current date and attached to the {@code observation}. The
* next transect will be the current one to allow begin() to not change the
* transect. The state is now {@link FlightState#OFF_EFFORT}.
@@ -153,17 +144,17 @@
* the plane will do a circle back. In this case, we are not on effort
* anymore, but we can continue creating observations with the appropriate
* status. The {@code observation} is marked as {@link ObservationStatus#CIRCLE_BACK}.
- * After the circle back, we use {@link #begin()} operation to continue effort
- * with a new LEG.
+ * After the circle back, we use {@link #begin()} operation to continue effort
+ * with a new LEG.
* <p/>
* After a circleBack(), you can call :
* <ul>
- * <li>circleBack(Observation)</li>
- * <li>{@link #begin()}</li>
- * <li>{@link #observation(Position)}</li>
- * <li>{@link #stop()}</li>
+ * <li>circleBack(Observation)</li>
+ * <li>{@link #begin()}</li>
+ * <li>{@link #observation(Position)}</li>
+ * <li>{@link #stop()}</li>
* </ul>
- *
+ *
* @param observation The observation cause of the circle back
* @see ObservationStatus
*/
@@ -173,17 +164,17 @@
* Add operation. A new {@link RouteType#LEG} is created based on GPS current
* date and current transect. The next transect and state doesn't change.
* <p/>
- * This operation is called when the observation conditions has changed,
+ * This operation is called when the observation conditions has changed,
* to mark this, a LEG is created with a GPS point and a new audio file. *
* <p/>
* After a add(), you can call :
* <ul>
- * <li>add()</li>
- * <li>{@link #circleBack(Observation)}</li>
- * <li>{@link #next()}</li>
- * <li>{@link #observation(Position)}</li>
- * <li>{@link #end()}</li>
- * <li>{@link #stop()}</li>
+ * <li>add()</li>
+ * <li>{@link #circleBack(Observation)}</li>
+ * <li>{@link #next()}</li>
+ * <li>{@link #observation(Position)}</li>
+ * <li>{@link #end()}</li>
+ * <li>{@link #stop()}</li>
* </ul>
*/
void add();
@@ -191,42 +182,42 @@
/**
* Next operation. It's a shortcut to end the previous effort and begin the
* next one on the next transect. This will call {@link #end()} if necessary
- * and then {@link #begin()}.
+ * and then {@link #begin()}.
* <p/>
* After a next(), you can call :
* <ul>
- * <li>add()</li>
- * <li>{@link #circleBack(Observation)}</li>
- * <li>{@link #next()}</li>
- * <li>{@link #observation(Position)}</li>
- * <li>{@link #end()}</li>
- * <li>{@link #stop()}</li>
+ * <li>add()</li>
+ * <li>{@link #circleBack(Observation)}</li>
+ * <li>{@link #next()}</li>
+ * <li>{@link #observation(Position)}</li>
+ * <li>{@link #end()}</li>
+ * <li>{@link #stop()}</li>
* </ul>
*/
void next();
/**
* Observation operation. It's the creation of an observation for the
- * given {@code position}. The observer will be retrieved from the
- * current route and the time is synchronized with the GPS or with the
+ * given {@code position}. The observer will be retrieved from the
+ * current route and the time is synchronized with the GPS or with the
* system if not responding.
- *
+ *
* @param position Position of the observer that make the observation
*/
void observation(Position position);
/**
* End operation. This will create a new {@link RouteType#TRANSIT} route and
- * put the next transect depends on the plane list. The audio is still
+ * put the next transect depends on the plane list. The audio is still
* recording for a few minutes and the state becomes {@link FlightState#OFF_EFFORT}
* <p/>
- * This operation is called when an effort/transect is finished.
+ * This operation is called when an effort/transect is finished.
* <p/>
* After a end(), you can call :
- * <ul>
- * <li>{@link #begin()}</li>
- * <li>{@link #observation(Position)}</li>
- * <li>{@link #stop()}</li>
+ * <ul>
+ * <li>{@link #begin()}</li>
+ * <li>{@link #observation(Position)}</li>
+ * <li>{@link #stop()}</li>
* </ul>
*/
void end();
@@ -248,38 +239,24 @@
*/
void close();
- /**
- * @return true if {@link FlightState#WAITING}
- */
+ /** @return true if {@link FlightState#WAITING} */
boolean isWaiting();
- /**
- * @return true if {@link FlightState#ENDED}
- */
+ /** @return true if {@link FlightState#ENDED} */
boolean isEnded();
- /**
- * @return true if {@link FlightState#ON_EFFORT}
- */
+ /** @return true if {@link FlightState#ON_EFFORT} */
boolean isOnEffort();
- /**
- * @return true if {@link FlightState#OFF_EFFORT}
- */
+ /** @return true if {@link FlightState#OFF_EFFORT} */
boolean isOffEffort();
- /**
- * @return true if {@link FlightState#OFF_EFFORT} or {@link FlightState#ON_EFFORT}
- */
+ /** @return true if {@link FlightState#OFF_EFFORT} or {@link FlightState#ON_EFFORT} */
boolean isRunning();
- /**
- * @param listener FlightControllerListener to add
- */
+ /** @param listener FlightControllerListener to add */
void addListener(FlightControllerListener listener);
- /**
- * @param listener FlightControllerListener to remove
- */
+ /** @param listener FlightControllerListener to remove */
void removeListener(FlightControllerListener listener);
}
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerDefault.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerDefault.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerDefault.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -39,6 +39,10 @@
import fr.ulr.sammoa.application.device.gps.GpsHandler;
import fr.ulr.sammoa.application.device.gps.GpsLocationEvent;
import fr.ulr.sammoa.application.device.gps.GpsLocationListener;
+import fr.ulr.sammoa.application.io.CampaignStorage;
+import fr.ulr.sammoa.application.io.CampaignStorages;
+import fr.ulr.sammoa.application.io.FlightStorage;
+import fr.ulr.sammoa.persistence.Campaign;
import fr.ulr.sammoa.persistence.Flight;
import fr.ulr.sammoa.persistence.FlightDAO;
import fr.ulr.sammoa.persistence.GeoPoint;
@@ -54,7 +58,6 @@
import fr.ulr.sammoa.persistence.SammoaDAOHelper;
import fr.ulr.sammoa.persistence.SammoaPersistence;
import fr.ulr.sammoa.persistence.TransectFlight;
-import org.apache.commons.lang3.time.DateUtils;
import org.nuiton.topia.TopiaContext;
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.TopiaRuntimeException;
@@ -103,10 +106,11 @@
protected Set<FlightControllerListener> listeners;
+ protected FlightStorage flightStorage;
+
// protected GeoPoint lastLocation;
- public FlightControllerDefault(SammoaContext context,
- Flight flight) {
+ public FlightControllerDefault(SammoaContext context, Flight flight) {
this.context = context;
this.flight = flight;
@@ -117,6 +121,11 @@
this.currentRoute = service.getLastRoute(flight);
this.lastTransect = service.getLastTransectDone(flight);
this.listeners = Sets.newHashSet();
+
+ Campaign campaign = flight.getCampaign();
+ CampaignStorage campaignStorage = CampaignStorages.getStorage(
+ context.getConfig(), campaign.getTopiaId());
+ flightStorage = campaignStorage.getFlightStorage(flight.getTopiaId());
}
@Override
@@ -256,10 +265,10 @@
public void init() {
Preconditions.checkState(gpsHandler != null,
- "The GpsHandler must be created using #openGpsDevice");
+ "The GpsHandler must be created using #openGpsDevice");
Preconditions.checkState(audioRecorder != null,
- "The AudioRecorder must be created using #openAudioDevice");
+ "The AudioRecorder must be created using #openAudioDevice");
if (initialized) {
if (logger.isWarnEnabled()) {
@@ -277,13 +286,13 @@
// Note that a flight can't finished by a leg, so effort not null
// implies that the flight is started and not ended
if (currentRoute != null
- && currentRoute.getRouteType() == RouteType.LEG) {
+ && currentRoute.getRouteType() == RouteType.LEG) {
state = FlightState.ON_EFFORT;
} else if (currentRoute != null
- && flight.getBeginDate() != null
- && flight.getEndDate() == null) {
+ && flight.getBeginDate() != null
+ && flight.getEndDate() == null) {
state = FlightState.OFF_EFFORT;
@@ -311,7 +320,7 @@
// Restart recording audio if onEffort or circleBack
if (state == FlightState.ON_EFFORT
- || currentRoute.getRouteType() == RouteType.CIRCLE_BACK) {
+ || currentRoute.getRouteType() == RouteType.CIRCLE_BACK) {
saveAudio(0);
}
@@ -324,7 +333,7 @@
long startTime = TimeLog.getTime();
Preconditions.checkState(initialized,
- "The controller must be initialized before calling any action");
+ "The controller must be initialized before calling any action");
Preconditions.checkState(
isWaiting(), "You can call start() only if flight is waiting (not started, not ended)");
@@ -380,13 +389,13 @@
long startTime = TimeLog.getTime();
Preconditions.checkState(initialized,
- "The controller must be initialized before calling any action");
+ "The controller must be initialized before calling any action");
Preconditions.checkState(
nextTransect == null || !nextTransect.isDeleted(), "You can't use a deleted transect as next value");
-
+
this.nextTransect = nextTransect;
-
+
// Fire transect changed
fireNextTransectChanged(nextTransect);
@@ -399,7 +408,7 @@
long startTime = TimeLog.getTime();
Preconditions.checkState(initialized,
- "The controller must be initialized before calling any action");
+ "The controller must be initialized before calling any action");
Preconditions.checkState(
isOffEffort(), "You can call begin() only if flight is running (started, not ended, not on effort)");
@@ -409,13 +418,13 @@
"Call setNextTransect() method first");
TopiaContext transaction = persistence.beginTransaction();
- try {
-
+ try {
+
Date currentDate = saveGPS(transaction, gpsHandler.getCurrentLocation(), flight);
-
+
// The next transect becomes the last one (or current in this case)
lastTransect = nextTransect;
-
+
// Create new LEG route
if (logger.isInfoEnabled()) {
logger.info(String.format("Create LEG [BEGIN] at %1$tH:%1$tM:%1$tS", currentDate));
@@ -440,12 +449,12 @@
fireStateChanged(state);
timeLog.log(startTime, "begin()", "Fired");
-
+
} catch (TopiaException e) {
throw new TopiaRuntimeException(e);
-
+
} finally {
- persistence.endTransaction(transaction);
+ persistence.endTransaction(transaction);
}
}
@@ -455,7 +464,7 @@
long startTime = TimeLog.getTime();
Preconditions.checkState(initialized,
- "The controller must be initialized before calling any action");
+ "The controller must be initialized before calling any action");
Preconditions.checkState(
currentRoute != null
@@ -465,7 +474,7 @@
TopiaContext transaction = persistence.beginTransaction();
try {
-
+
Date currentDate = saveGPS(transaction, gpsHandler.getCurrentLocation(), flight);
setObservationStatus(transaction, observation, ObservationStatus.CIRCLE_BACK);
@@ -494,10 +503,10 @@
fireStateChanged(state);
timeLog.log(startTime, "circleBack()", "Fired");
-
+
} catch (TopiaException e) {
throw new TopiaRuntimeException(e);
-
+
} finally {
persistence.endTransaction(transaction);
}
@@ -509,7 +518,7 @@
long startTime = TimeLog.getTime();
Preconditions.checkState(initialized,
- "The controller must be initialized before calling any action");
+ "The controller must be initialized before calling any action");
Preconditions.checkState(
isOnEffort(), "You can call add() only if flight is on effort (started, not ended, on effort)");
@@ -535,10 +544,10 @@
fireRouteAdded(currentRoute);
timeLog.log(startTime, "add()", "Fired");
-
+
} catch (TopiaException e) {
throw new TopiaRuntimeException(e);
-
+
} finally {
persistence.endTransaction(transaction);
}
@@ -564,7 +573,7 @@
long startTime = TimeLog.getTime();
Preconditions.checkState(initialized,
- "The controller must be initialized before calling any action");
+ "The controller must be initialized before calling any action");
Preconditions.checkState(
isRunning(), "You can call observation() only if flight is running (started, not ended)");
@@ -572,7 +581,7 @@
TopiaContext transaction = persistence.beginTransaction();
try {
GeoPoint location = gpsHandler.getCurrentLocation();
-
+
Date currentDate = saveGPS(transaction, location, flight);
ObserverPosition observer;
@@ -594,7 +603,7 @@
);
}
Observation observation = service.createObservation(transaction, flight, currentDate, observer);
-
+
transaction.commitTransaction();
startTime = timeLog.log(startTime, "observation()", "Commited");
@@ -602,12 +611,12 @@
fireObservationAdded(observation, location);
timeLog.log(startTime, "observation()", "Fired");
-
+
} catch (TopiaException e) {
throw new TopiaRuntimeException(e);
-
+
} finally {
- persistence.endTransaction(transaction);
+ persistence.endTransaction(transaction);
}
}
@@ -628,7 +637,7 @@
long startTime = TimeLog.getTime();
Preconditions.checkState(initialized,
- "The controller must be initialized before calling any action");
+ "The controller must be initialized before calling any action");
Preconditions.checkState(
isOffEffort(), "You can call stop() only if flight is running (started, not ended, not on effort)");
@@ -656,7 +665,7 @@
nextTransect = null;
state = FlightState.ENDED;
-
+
transaction.commitTransaction();
startTime = timeLog.log(startTime, "stop()", "Commited");
@@ -667,15 +676,15 @@
fireStateChanged(state);
timeLog.log(startTime, "stop()", "Fired");
-
+
} catch (TopiaException e) {
throw new TopiaRuntimeException(e);
-
+
} finally {
persistence.endTransaction(transaction);
}
}
-
+
@Override
public void close() {
@@ -691,7 +700,7 @@
protected void doEndWithAudioDelay(long audioDelay) {
Preconditions.checkState(initialized,
- "The controller must be initialized before calling any action");
+ "The controller must be initialized before calling any action");
Preconditions.checkState(
isOnEffort(), "You can call end() only if flight is on effort (started, not ended, on effort)");
@@ -716,7 +725,7 @@
fireRouteAdded(currentRoute);
fireNextTransectChanged(nextTransect);
fireStateChanged(state);
-
+
} catch (TopiaException e) {
throw new TopiaRuntimeException(e);
@@ -775,7 +784,7 @@
observation.setObservationStatus(status);
observationDAO.update(observation);
}
-
+
protected void saveAudio(long delay) {
String fileName = String.format(
@@ -785,16 +794,14 @@
getAudioRecorder().getOutputType().getExtension()
);
- File audioDir = context.getConfig().getAudioDirectory();
+ File audioFile = flightStorage.getAudioFile(fileName);
- File audioFile = new File(audioDir, fileName);
-
getAudioRecorder().record(audioFile, delay);
}
protected Date saveGPS(TopiaContext transaction,
- GeoPoint geoPoint,
- Flight flight)
+ GeoPoint geoPoint,
+ Flight flight)
throws TopiaException {
Date result;
@@ -804,7 +811,7 @@
if (logger.isWarnEnabled()) {
logger.warn("No GPS point at {}", result);
}
-
+
} else {
// lastLocation = geoPoint;
@@ -829,13 +836,13 @@
listener.onObservationAdded(new ObservationEvent(this, observation, location));
}
}
-
+
protected void fireStateChanged(FlightState state) {
for (FlightControllerListener listener : listeners) {
listener.onStateChanged(state);
}
}
-
+
protected void fireRouteAdded(Route route) {
for (FlightControllerListener listener : listeners) {
listener.onRouteAdded(route);
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerListener.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerListener.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/flightController/FlightControllerListener.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -28,7 +28,7 @@
/**
* Listener for all change of data in the {@link FlightController}
- *
+ * <p/>
* Created: 12/07/12
*
* @author fdesbois <desbois(a)codelutin.com>
@@ -47,7 +47,7 @@
* Fired when the next transect has been updated.
*
* @param nextTransect The next transect that will be used on
- * {@link FlightController#begin()} action
+ * {@link FlightController#begin()} action
*/
void onNextTransectChanged(TransectFlight nextTransect);
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,97 @@
+package fr.ulr.sammoa.application.io;
+
+import com.google.common.base.Charsets;
+import com.google.common.base.Function;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.io.Files;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.io.filefilter.DirectoryFileFilter;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
+import java.util.Properties;
+
+/**
+ * Storage for a campaign.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class CampaignStorage {
+
+ public static final Function<File, FlightStorage> FILE_FLIGHT_STORAGE_FUNCTION = new Function<File, FlightStorage>() {
+ @Override
+ public FlightStorage apply(File input) {
+ return new FlightStorage(input.getParentFile(),
+ input.getName());
+ }
+ };
+
+ /** Root directory for this storage. */
+ protected final File directory;
+
+ /** Id of the campaign. */
+ protected final String campaignId;
+
+ /** Properties of the campaign. */
+ protected final Properties properties;
+
+
+ public CampaignStorage(File dataDirectory, String campaignId) {
+ this.directory = new File(dataDirectory, campaignId);
+ this.campaignId = campaignId;
+ this.properties = new Properties();
+ }
+
+ public String getCampaignId() {
+ return campaignId;
+ }
+
+ public File getDirectory() {
+ return directory;
+ }
+
+ public File getMapDirectory() {
+ return new File(directory, "map");
+ }
+
+ public File getFlightDirectory() {
+ return new File(directory, "flight");
+ }
+
+ public File getCsvDirectory() {
+ return new File(directory, "csv");
+ }
+
+ public File getPropertiesFile() {
+ return new File(directory, "campaign.properties");
+ }
+
+ public Properties getProperties() throws IOException {
+ return properties;
+ }
+
+ public void loadProperties() throws IOException {
+ BufferedReader reader =
+ Files.newReader(getPropertiesFile(), Charsets.UTF_8);
+ try {
+ properties.load(reader);
+ reader.close();
+ } finally {
+ IOUtils.closeQuietly(reader);
+ }
+ }
+
+ public FlightStorage getFlightStorage(String flightId) {
+ File flightStorageDirectory = new File(getFlightDirectory(), flightId);
+ return FILE_FLIGHT_STORAGE_FUNCTION.apply(flightStorageDirectory);
+ }
+
+ public Iterable<FlightStorage> getFlightStorages() {
+ File[] files = getFlightDirectory().listFiles((FileFilter) DirectoryFileFilter.DIRECTORY);
+ return Iterables.transform(Lists.newArrayList(files), FILE_FLIGHT_STORAGE_FUNCTION);
+ }
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorage.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorages.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorages.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorages.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,58 @@
+package fr.ulr.sammoa.application.io;
+
+import fr.ulr.sammoa.application.SammoaConfig;
+import org.apache.commons.io.FileUtils;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Useful methods around {@link CampaignStorage}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class CampaignStorages {
+
+
+ public static CampaignStorage getStorage(SammoaConfig config,
+ String campaignId) {
+ File directory = config.getCampaignDirectory();
+ CampaignStorage result = new CampaignStorage(directory, campaignId);
+ return result;
+ }
+
+ public static CampaignStorage createStorage(SammoaConfig config,
+ String campaignId) throws IOException {
+ File directory = config.getCampaignDirectory();
+ CampaignStorage result = new CampaignStorage(directory, campaignId);
+ createEmptyStructure(result);
+ return result;
+ }
+
+ public static CampaignStorage copyStorage(CampaignStorage source,
+ File targetDirectory,
+ String... flightIds) throws IOException {
+
+ CampaignStorage target = new CampaignStorage(targetDirectory, source.getCampaignId());
+
+ createEmptyStructure(target);
+ FileUtils.copyDirectory(source.getMapDirectory(), target.getMapDirectory());
+ if (source.getCsvDirectory().exists()) {
+ FileUtils.forceMkdir(target.getCsvDirectory());
+ FileUtils.copyDirectory(source.getCsvDirectory(), target.getCsvDirectory());
+ }
+ for (String flightId : flightIds) {
+ FlightStorage flightStorage = source.getFlightStorage(flightId);
+ FlightStorages.copyStorage(flightStorage, target);
+ }
+ return target;
+ }
+
+ protected static void createEmptyStructure(CampaignStorage storage) throws IOException {
+ FileUtils.forceMkdir(storage.getDirectory());
+ FileUtils.forceMkdir(storage.getFlightDirectory());
+ FileUtils.forceMkdir(storage.getMapDirectory());
+ }
+
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/CampaignStorages.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,69 @@
+package fr.ulr.sammoa.application.io;
+
+import com.google.common.base.Charsets;
+import com.google.common.io.Files;
+import org.apache.commons.io.IOUtils;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.util.Properties;
+
+/**
+ * Storage for a flight.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class FlightStorage {
+
+ /** Root directory for this storage. */
+ protected final File directory;
+
+ /** Id of the flight. */
+ protected final String flightId;
+
+ /** Properties of the flight. */
+ protected final Properties properties;
+
+ public FlightStorage(File dataDirectory, String flightId) {
+ this.directory = new File(dataDirectory, flightId);
+ this.flightId = flightId;
+ this.properties = new Properties();
+ }
+
+ public String getFlightId() {
+ return flightId;
+ }
+
+ public File getDirectory() {
+ return directory;
+ }
+
+ public File getAudioDirectory() {
+ return new File(directory, "audio");
+ }
+
+ public File getAudioFile(String filename) {
+ return new File(getAudioDirectory(), filename);
+ }
+ public File getPropertiesFile() {
+ return new File(directory, "flight.properties");
+ }
+
+ public Properties getProperties() throws IOException {
+ return properties;
+ }
+
+ public void loadProperties() throws IOException {
+ BufferedReader reader =
+ Files.newReader(getPropertiesFile(), Charsets.UTF_8);
+ try {
+ properties.load(reader);
+ reader.close();
+ } finally {
+ IOUtils.closeQuietly(reader);
+ }
+ }
+
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorage.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorages.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorages.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorages.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,35 @@
+package fr.ulr.sammoa.application.io;
+
+import org.apache.commons.io.FileUtils;
+
+import java.io.IOException;
+
+/**
+ * Useful methods around {@link FlightStorage}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class FlightStorages {
+
+ public static FlightStorage createStorage(CampaignStorage source,
+ String flightId) throws IOException {
+ FlightStorage result = source.getFlightStorage(flightId);
+ createEmptyFlightStructure(result);
+ return result;
+ }
+
+ public static FlightStorage copyStorage(FlightStorage source,
+ CampaignStorage target) throws IOException {
+
+ FlightStorage result = target.getFlightStorage(source.getFlightId());
+ FileUtils.copyDirectory(source.getDirectory(), result.getDirectory());
+ return result;
+ }
+
+ protected static void createEmptyFlightStructure(FlightStorage storage) throws IOException {
+ FileUtils.forceMkdir(storage.getDirectory());
+ FileUtils.forceMkdir(storage.getAudioDirectory());
+ }
+
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/FlightStorages.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvService.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvService.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvService.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,191 @@
+package fr.ulr.sammoa.application.io.input.csv;
+
+import com.google.common.base.Preconditions;
+import com.google.common.io.Files;
+import fr.ulr.sammoa.application.SammoaContext;
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.Observer;
+import fr.ulr.sammoa.persistence.ObserverDAO;
+import fr.ulr.sammoa.persistence.Region;
+import fr.ulr.sammoa.persistence.SammoaDAOHelper;
+import fr.ulr.sammoa.persistence.SammoaPersistence;
+import fr.ulr.sammoa.persistence.Species;
+import fr.ulr.sammoa.persistence.SpeciesDAO;
+import org.apache.commons.io.Charsets;
+import org.apache.commons.io.IOUtils;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.TopiaRuntimeException;
+import org.nuiton.util.csv.Import;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.Reader;
+
+/**
+ * To do csv imports.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class ImportCsvService {
+
+ private static final Logger logger =
+ LoggerFactory.getLogger(ImportCsvService.class);
+
+ protected SammoaPersistence persistence;
+
+ public ImportCsvService(SammoaContext context) {
+ this.persistence = context.getPersistence();
+ }
+
+ public int importSpecies(String regionId, File file) throws IOException {
+
+ Reader reader = Files.newReader(file, Charsets.UTF_8);
+
+ try {
+ int result = 0;
+
+ TopiaContext transaction = persistence.beginTransaction();
+ try {
+
+ Region region = SammoaDAOHelper.getRegionDAO(transaction).findByTopiaId(regionId);
+ Preconditions.checkNotNull(region);
+
+ SpeciesDAO dao =
+ SammoaDAOHelper.getSpeciesDAO(transaction);
+
+ SpeciesImportModel model = new SpeciesImportModel(region);
+
+ Import<Species> importCsv = Import.newImport(model, reader);
+
+ for (Species species : importCsv) {
+
+ // while importing a species, it does become valid
+ species.setLocalCreation(false);
+
+ Species speciesExists =
+ dao.findByNaturalId(species.getCode(),
+ species.getRegion());
+
+ if (speciesExists == null) {
+
+ dao.create(species);
+
+ result++;
+
+ if (logger.isDebugEnabled()) {
+ logger.debug(String.format("Create new species %1$s " +
+ "for region %2$s",
+ species.getCode(),
+ region.getCode()));
+ }
+
+ } else {
+
+ 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()));
+ }
+ }
+ }
+
+ transaction.commitTransaction();
+
+ } catch (TopiaException e) {
+ throw new TopiaRuntimeException(e);
+
+ } finally {
+ persistence.endTransaction(transaction);
+ }
+ reader.close();
+
+ return result;
+ } finally {
+ IOUtils.closeQuietly(reader);
+ }
+ }
+
+ public int importObservers(String campaignId, File file) throws IOException {
+
+ Reader reader = Files.newReader(file, Charsets.UTF_8);
+
+ try {
+ int result = 0;
+ TopiaContext transaction = persistence.beginTransaction();
+ try {
+
+ Campaign campaign = SammoaDAOHelper.getCampaignDAO(transaction).findByTopiaId(campaignId);
+ Preconditions.checkNotNull(campaign);
+
+ ObserverDAO observerDAO =
+ SammoaDAOHelper.getObserverDAO(transaction);
+
+ ObserverImportModel model = new ObserverImportModel(campaign);
+
+ Import<Observer> importCsv = Import.newImport(model, reader);
+
+ for (Observer anImportCsv : importCsv) {
+
+ Observer observer;
+
+ observer = anImportCsv;
+
+ Observer observerExists =
+ observerDAO.findByNaturalId(observer.getInitials(), observer.getCampaign());
+
+ if (observerExists == null) {
+
+ observerDAO.create(observer);
+
+ result++;
+
+ if (logger.isDebugEnabled()) {
+ logger.debug(String.format("Create new observer %1$s " +
+ "for campaign %2$s",
+ observer.getInitials(),
+ campaign.getCode()));
+ }
+
+ } else {
+
+ 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()));
+ }
+ }
+ }
+
+ transaction.commitTransaction();
+
+ } catch (TopiaException e) {
+ throw new TopiaRuntimeException(e);
+
+ } finally {
+ persistence.endTransaction(transaction);
+ }
+ reader.close();
+ return result;
+ } finally {
+ IOUtils.closeQuietly(reader);
+ }
+ }
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ObserverImportModel.java (from rev 413, trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/ObserverImportModel.java)
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ObserverImportModel.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ObserverImportModel.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,92 @@
+package fr.ulr.sammoa.application.io.input.csv;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.Observer;
+import fr.ulr.sammoa.persistence.ObserverImpl;
+import org.nuiton.util.csv.Common;
+import org.nuiton.util.csv.ImportModel;
+import org.nuiton.util.csv.ImportableColumn;
+import org.nuiton.util.csv.ModelBuilder;
+import org.nuiton.util.csv.ValueParser;
+
+import java.text.ParseException;
+import java.util.List;
+
+/**
+ * Created: 09/07/12
+ *
+ * @author fdesbois <desbois(a)codelutin.com>
+ */
+public class ObserverImportModel implements ImportModel<Observer> {
+
+ protected Campaign campaign;
+
+ public ObserverImportModel(Campaign campaign) {
+ this.campaign = campaign;
+ }
+
+ @Override
+ public char getSeparator() {
+ return ';';
+ }
+
+ @Override
+ public void pushCsvHeaderNames(List<String> strings) {
+ }
+
+ @Override
+ public Observer newEmptyInstance() {
+ return new ObserverImpl();
+ }
+
+ @Override
+ public Iterable<ImportableColumn<Observer, Object>> getColumnsForImport() {
+ ModelBuilder builder = new ModelBuilder();
+ builder.newMandatoryColumn("CAMPAIGN", Observer.PROPERTY_CAMPAIGN, CAMPAIGN_VALUE_PARSER);
+ builder.newMandatoryColumn("INITIALS", Observer.PROPERTY_INITIALS);
+ builder.newMandatoryColumn("FIRST_NAME", Observer.PROPERTY_FIRST_NAME);
+ builder.newMandatoryColumn("LAST_NAME", Observer.PROPERTY_LAST_NAME);
+ builder.newMandatoryColumn("ORGANIZATION", Observer.PROPERTY_ORGANIZATION);
+ builder.newMandatoryColumn("EMAIL", Observer.PROPERTY_EMAIL);
+ builder.newMandatoryColumn("PILOT", Observer.PROPERTY_PILOT, Common.BOOLEAN);
+ return builder.getColumnsForImport();
+ }
+
+ protected ValueParser<Campaign> CAMPAIGN_VALUE_PARSER = new ValueParser<Campaign>() {
+
+ @Override
+ public Campaign parse(String s) throws ParseException {
+ Campaign result;
+ if (s.equals(campaign.getCode())) {
+ result = campaign;
+ } else {
+ throw new IllegalArgumentException(
+ String.format("The current campaign is %1$s and not %2$s", campaign.getCode(), s));
+ }
+ return result;
+ }
+ };
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/ObserverImportModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/SpeciesImportModel.java (from rev 413, trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/SpeciesImportModel.java)
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/SpeciesImportModel.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/SpeciesImportModel.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,91 @@
+package fr.ulr.sammoa.application.io.input.csv;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+import fr.ulr.sammoa.persistence.Region;
+import fr.ulr.sammoa.persistence.Species;
+import fr.ulr.sammoa.persistence.SpeciesImpl;
+import org.nuiton.util.csv.ImportModel;
+import org.nuiton.util.csv.ImportableColumn;
+import org.nuiton.util.csv.ModelBuilder;
+import org.nuiton.util.csv.ValueParser;
+
+import java.text.ParseException;
+import java.util.List;
+
+/**
+ * Created: 17/07/12
+ *
+ * @author fdesbois <desbois(a)codelutin.com>
+ */
+public class SpeciesImportModel implements ImportModel<Species> {
+
+ protected Region region;
+
+ public SpeciesImportModel(Region region) {
+ this.region = region;
+ }
+
+ @Override
+ public char getSeparator() {
+ return ';';
+ }
+
+ @Override
+ public void pushCsvHeaderNames(List<String> strings) {
+ }
+
+ @Override
+ public Species newEmptyInstance() {
+ return new SpeciesImpl();
+ }
+
+ @Override
+ public Iterable<ImportableColumn<Species, Object>> getColumnsForImport() {
+ ModelBuilder builder = new ModelBuilder();
+ builder.newMandatoryColumn("REGION", Species.PROPERTY_REGION, REGION_VALUE_PARSER);
+ builder.newMandatoryColumn("CODE", Species.PROPERTY_CODE);
+ builder.newMandatoryColumn("NOM_COMM", Species.PROPERTY_COMMON_NAME);
+ builder.newMandatoryColumn("NOM_LATIN", Species.PROPERTY_LATIN_NAME);
+ builder.newMandatoryColumn("TYPE", Species.PROPERTY_TYPE);
+ builder.newMandatoryColumn("FAMILLE", Species.PROPERTY_FAMILY);
+ builder.newMandatoryColumn("GROUPE", Species.PROPERTY_GROUP_NAME);
+ return builder.getColumnsForImport();
+ }
+
+ protected ValueParser<Region> REGION_VALUE_PARSER = new ValueParser<Region>() {
+
+ @Override
+ public Region parse(String s) throws ParseException {
+ Region result;
+ if (s.equals(region.getCode())) {
+ result = region;
+ } else {
+ throw new IllegalArgumentException(
+ String.format("The current region is %1$s and not %2$s", region.getCode(), s));
+ }
+ return result;
+ }
+ };
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/csv/SpeciesImportModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/DoubleToIntegerValueParser.java (from rev 413, trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/DoubleToIntegerValueParser.java)
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/DoubleToIntegerValueParser.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/DoubleToIntegerValueParser.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,42 @@
+package fr.ulr.sammoa.application.io.input.map;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+import org.nuiton.util.csv.ValueParser;
+
+import java.text.ParseException;
+
+/**
+ * Created: 26/07/12
+ *
+ * @author fdesbois <desbois(a)codelutin.com>
+ */
+public class DoubleToIntegerValueParser implements ValueParser<Integer> {
+
+ @Override
+ public Integer parse(String s) throws ParseException {
+ Double value = Double.parseDouble(s);
+ return value.intValue();
+ }
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/DoubleToIntegerValueParser.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ImportMapService.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ImportMapService.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ImportMapService.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,223 @@
+package fr.ulr.sammoa.application.io.input.map;
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Maps;
+import fr.ulr.sammoa.application.SammoaContext;
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.CampaignDAO;
+import fr.ulr.sammoa.persistence.SammoaDAOHelper;
+import fr.ulr.sammoa.persistence.SammoaPersistence;
+import fr.ulr.sammoa.persistence.Sector;
+import fr.ulr.sammoa.persistence.SectorDAO;
+import fr.ulr.sammoa.persistence.Sectors;
+import fr.ulr.sammoa.persistence.Strate;
+import fr.ulr.sammoa.persistence.StrateDAO;
+import fr.ulr.sammoa.persistence.StrateType;
+import fr.ulr.sammoa.persistence.Strates;
+import fr.ulr.sammoa.persistence.Transect;
+import fr.ulr.sammoa.persistence.TransectDAO;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.TopiaRuntimeException;
+import org.nuiton.util.csv.ImportRuntimeException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * To import map.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class ImportMapService {
+
+
+ private static final Logger logger =
+ LoggerFactory.getLogger(ImportMapService.class);
+
+ protected SammoaPersistence persistence;
+
+ public ImportMapService(SammoaContext context) {
+ this.persistence = context.getPersistence();
+ }
+
+ public int importTransects(String campaignId, Iterable<Transect> transects) {
+
+ int result = 0;
+
+ TopiaContext transaction = persistence.beginTransaction();
+ try {
+
+ CampaignDAO campaignDAO =
+ SammoaDAOHelper.getCampaignDAO(transaction);
+
+ Campaign campaign = campaignDAO.findByTopiaId(campaignId);
+ Preconditions.checkArgument(campaign != null,
+ "The topiaId : " + campaignId + " doesn't match any existing campaign");
+
+ StrateDAO strateDAO = SammoaDAOHelper.getStrateDAO(transaction);
+ TransectDAO transectDAO = SammoaDAOHelper.getTransectDAO(transaction);
+
+ // Retrieve directly all strates to avoid multiple select queries to find strates
+ List<Strate> strates = strateDAO.findAllByCampaignOrderedByCode(campaign);
+ Map<String, Strate> strateMap =
+ Maps.uniqueIndex(strates, Strates.toCode());
+
+ int rowIndex = 0;
+ for (Transect transect : transects) {
+
+ // This is the link with the source shape file that contains graphic elements
+ int graphicIndex = rowIndex;
+
+ rowIndex++;
+
+ String strateCode = Strates.getCode(transect.getStrate());
+
+ // We check the strate, it must exist
+ // We can't do that in TransectImportModel during parsing because
+ // we need two params : sectorNumber and strateType to create the
+ // strateCode and check the existence. It must be done after parsing
+ Strate existStrate = strateMap.get(strateCode);
+ if (existStrate == null) {
+ throw new ImportRuntimeException(String.format(
+ "Unable to read line %1$d : The strate %2$s doesn't exist",
+ rowIndex,
+ strateCode)
+ );
+ }
+
+ Transect existTransect = transectDAO.findByNaturalId(transect.getName(), existStrate);
+
+ // If the existing strate is null, create it otherwise ignore
+ if (existTransect == null) {
+
+ Transect newTransect = transectDAO.createByNaturalId(transect.getName(), existStrate);
+ newTransect.setLength(transect.getLength());
+ newTransect.setStartX(transect.getStartX());
+ newTransect.setStartY(transect.getStartY());
+ newTransect.setEndX(transect.getEndX());
+ newTransect.setEndY(transect.getEndY());
+ newTransect.setNbTimes(transect.getNbTimes());
+ newTransect.setGraphicIndex(graphicIndex);
+
+ result++;
+
+ if (logger.isDebugEnabled()) {
+ logger.debug(String.format("Create new transect %1$s" +
+ "(graphicIndex = %2$d)",
+ newTransect.getName(),
+ graphicIndex)
+ );
+ }
+
+ } else {
+
+ existTransect.setGraphicIndex(graphicIndex);
+
+ if (logger.isWarnEnabled()) {
+ logger.warn(String.format("The transect %1$s already " +
+ "exists and will be ignored " +
+ "(graphicIndex = %2$d)",
+ existTransect.getName(),
+ graphicIndex)
+ );
+ }
+ }
+ }
+
+ transaction.commitTransaction();
+
+ } catch (TopiaException e) {
+ throw new TopiaRuntimeException(e);
+
+ } finally {
+ persistence.endTransaction(transaction);
+ }
+ return result;
+ }
+
+ public int importStrates(String campaignId, Iterable<Strate> strates) {
+
+ int result = 0;
+
+ TopiaContext transaction = persistence.beginTransaction();
+ try {
+
+ CampaignDAO campaignDAO =
+ SammoaDAOHelper.getCampaignDAO(transaction);
+
+ Campaign campaign = campaignDAO.findByTopiaId(campaignId);
+ Preconditions.checkArgument(campaign != null,
+ "The topiaId : " + campaignId + " doesn't match any existing campaign");
+
+ StrateDAO strateDAO = SammoaDAOHelper.getStrateDAO(transaction);
+ SectorDAO sectorDAO = SammoaDAOHelper.getSectorDAO(transaction);
+
+ // Retrieve directly all sectors to avoid multiple select queries to find sectors
+ List<Sector> sectors = sectorDAO.findAllByCampaign(campaign);
+ Map<Integer, Sector> sectorMap =
+ Maps.newHashMap(Maps.uniqueIndex(sectors, Sectors.toSectorNumber()));
+
+ for (Strate strate : strates) {
+
+ StrateType strateType = strate.getStrateType();
+ Sector sector = strate.getSector();
+ int sectorNumber = sector.getSectorNumber();
+
+ Strate existStrate;
+
+ // Create sector if necessary
+ Sector existSector = sectorMap.get(sectorNumber);
+ if (existSector == null) {
+
+ existSector = sectorDAO.createByNaturalId(sectorNumber, campaign);
+ existSector.setName(sector.getName());
+ sectorMap.put(sectorNumber, existSector);
+
+ existStrate = null;
+
+ } else {
+
+ // Find existing strate only if sector is not created
+ existStrate = strateDAO.findByNaturalId(strateType, existSector);
+ }
+
+ // If the existing strate is null, create it otherwise ignore
+ if (existStrate == null) {
+
+ Strate newStrate = strateDAO.createByNaturalId(strateType, existSector);
+ newStrate.setCode(Strates.getCode(newStrate));
+ newStrate.setName(strate.getName());
+
+ result++;
+
+ if (logger.isDebugEnabled()) {
+ logger.debug(String.format("Create new strate %1$s",
+ newStrate.getCode())
+ );
+ }
+
+ } else {
+
+ if (logger.isWarnEnabled()) {
+ logger.warn(String.format("The strate %1$s already " +
+ "exists and will be ignored",
+ existStrate.getCode()));
+ }
+ }
+ }
+
+ transaction.commitTransaction();
+
+ } catch (TopiaException e) {
+ throw new TopiaRuntimeException(e);
+
+ } finally {
+ persistence.endTransaction(transaction);
+ }
+ return result;
+ }
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ImportMapService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ShpImporter.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ShpImporter.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ShpImporter.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,104 @@
+package fr.ulr.sammoa.application.io.input.map;
+
+import com.google.common.io.Files;
+import fr.ulr.sammoa.application.io.CampaignStorage;
+import fr.ulr.sammoa.application.io.output.map.DbfImport;
+import org.apache.commons.io.FileUtils;
+import org.nuiton.util.csv.ImportModel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FilenameFilter;
+import java.io.IOException;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public abstract class ShpImporter<E> {
+
+ private static final Logger logger =
+ LoggerFactory.getLogger(ShpImporter.class);
+
+ protected abstract String onDbfLoaded(Iterable<E> elements,
+ CampaignStorage storage);
+
+ protected abstract ImportModel<E> getModel();
+
+ protected abstract String getCopyFileName();
+
+ public String importShape(File file, CampaignStorage storage) throws IOException {
+
+ File dbfFile;
+ String fileName = file.getName();
+ File sourceDirectory = file.getParentFile();
+
+ String ext = Files.getFileExtension(fileName);
+ int extIndex = fileName.lastIndexOf(ext);
+ final String fileNameWithoutExt = fileName.substring(0, extIndex);
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("Source directory '" + sourceDirectory.getAbsolutePath() + "' and fileName '" + fileNameWithoutExt + "'");
+ }
+
+ if (!ext.equals("dbf")) {
+
+ fileName = fileNameWithoutExt + "dbf";
+
+ if (logger.isDebugEnabled()) {
+ logger.debug(String.format("Use dbfFile %s for import", fileName));
+ }
+
+ dbfFile = new File(sourceDirectory, fileName);
+
+ if (!dbfFile.exists()) {
+ throw new FileNotFoundException("Can't found dbf file '" + dbfFile.getAbsolutePath() + "' for import");
+ }
+
+ } else {
+ dbfFile = file;
+ }
+
+ DbfImport<E> importer = new DbfImport<E>(getModel(), dbfFile.toURI().toURL());
+
+ String result = onDbfLoaded(importer, storage);
+
+ String[] files = sourceDirectory.list(new FilenameFilter() {
+
+ @Override
+ public boolean accept(File dir, String fullName) {
+ String extension = Files.getFileExtension(fullName);
+ int extIndex = fullName.lastIndexOf(extension);
+ String name = fullName.substring(0, extIndex);
+ if (logger.isDebugEnabled()) {
+ logger.debug(String.format("Read file : %s [ext = %s] -> check equals for %s",
+ fullName,
+ extension,
+ name)
+ );
+ }
+ return fileNameWithoutExt.equals(name);
+ }
+ });
+
+ for (String name : files) {
+ String extension = Files.getFileExtension(name);
+ File sourceFile = new File(sourceDirectory, name);
+ File targetFile = new File(storage.getMapDirectory(), getCopyFileName() + "." + extension);
+ if (logger.isInfoEnabled()) {
+ logger.info(String.format("Copy file '%1$s' to '%2$s'",
+ sourceFile.getAbsolutePath(),
+ targetFile.getAbsolutePath())
+ );
+ }
+ FileUtils.copyFile(sourceFile, targetFile);
+ }
+ return result;
+ }
+
+
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ShpImporter.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/StrateImportModel.java (from rev 413, trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/StrateImportModel.java)
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/StrateImportModel.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/StrateImportModel.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,91 @@
+package fr.ulr.sammoa.application.io.input.map;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+import fr.ulr.sammoa.persistence.Sector;
+import fr.ulr.sammoa.persistence.SectorImpl;
+import fr.ulr.sammoa.persistence.Strate;
+import fr.ulr.sammoa.persistence.StrateImpl;
+import org.nuiton.util.csv.ImportModel;
+import org.nuiton.util.csv.ImportableColumn;
+import org.nuiton.util.csv.ModelBuilder;
+
+import java.util.List;
+
+/**
+ * Created: 25/07/12
+ *
+ * @author fdesbois <desbois(a)codelutin.com>
+ */
+public class StrateImportModel implements ImportModel<Strate> {
+
+ // 0 : Nom
+ // 1 : Area (not used)
+ // 2 : Shape_Leng (not used)
+ // 3 : Shape_Area (not used)
+ // 4 : Secteur (name)
+ // 5 : type_strat (string) for StrateType (code match)
+ // 6 : ID_Secteur (double)
+
+ @Override
+ public char getSeparator() {
+ return ' ';
+ }
+
+ @Override
+ public void pushCsvHeaderNames(List<String> strings) {
+ }
+
+ @Override
+ public Strate newEmptyInstance() {
+ Strate result = new StrateImpl();
+ result.setSector(new SectorImpl());
+ return result;
+ }
+
+ @Override
+ public Iterable<ImportableColumn<Strate, Object>> getColumnsForImport() {
+ ModelBuilder builder = new ModelBuilder();
+ builder.newMandatoryColumn("Nom",
+ Strate.PROPERTY_NAME
+ );
+ builder.newMandatoryColumn("Secteur",
+ Strate.PROPERTY_SECTOR
+ + "." + Sector.PROPERTY_NAME
+ );
+ builder.newMandatoryColumn("type_strat",
+ Strate.PROPERTY_STRATE_TYPE,
+ new StrateTypeValueParser()
+ );
+ builder.newMandatoryColumn("ID_Secteur",
+ Strate.PROPERTY_SECTOR
+ + "." + Sector.PROPERTY_SECTOR_NUMBER,
+ new DoubleToIntegerValueParser()
+ );
+ builder.newIgnoredColumn("Area");
+ builder.newIgnoredColumn("Shape_Area");
+ builder.newIgnoredColumn("Shape_Leng");
+ return builder.getColumnsForImport();
+ }
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/StrateImportModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/StrateTypeValueParser.java (from rev 413, trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/StrateTypeValueParser.java)
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/StrateTypeValueParser.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/StrateTypeValueParser.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,44 @@
+package fr.ulr.sammoa.application.io.input.map;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+import fr.ulr.sammoa.persistence.StrateType;
+import org.nuiton.util.csv.ValueParser;
+
+import java.text.ParseException;
+
+/**
+ * Created: 26/07/12
+ *
+ * @author fdesbois <desbois(a)codelutin.com>
+ */
+public class StrateTypeValueParser implements ValueParser<StrateType> {
+
+ @Override
+ public StrateType parse(String s) throws ParseException {
+ char strateCode = s.charAt(0);
+ StrateType result = StrateType.valueOfCode(strateCode);
+ return result;
+ }
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/StrateTypeValueParser.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/TransectImportModel.java (from rev 413, trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/csv/TransectImportModel.java)
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/TransectImportModel.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/TransectImportModel.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,119 @@
+package fr.ulr.sammoa.application.io.input.map;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+import fr.ulr.sammoa.persistence.Sector;
+import fr.ulr.sammoa.persistence.SectorImpl;
+import fr.ulr.sammoa.persistence.Strate;
+import fr.ulr.sammoa.persistence.StrateImpl;
+import fr.ulr.sammoa.persistence.Transect;
+import fr.ulr.sammoa.persistence.TransectImpl;
+import org.nuiton.util.csv.Common;
+import org.nuiton.util.csv.ImportModel;
+import org.nuiton.util.csv.ImportableColumn;
+import org.nuiton.util.csv.ModelBuilder;
+
+import java.util.List;
+
+/**
+ * Created: 25/07/12
+ *
+ * @author fdesbois <desbois(a)codelutin.com>
+ */
+public class TransectImportModel implements ImportModel<Transect> {
+
+ // 0 : Length
+ // 1 : TR_ID used as name
+ // 2 : Xstart
+ // 3 : Ystart
+ // 4 : Xend
+ // 5 : Yend
+ // 6 : Passage (double) used for nbTimes
+ // 7 : SECTEUR (double) use as sectorNumber
+ // 8 : STRATE (string) for StrateType (code match)
+ // 9 : Shape_Leng (not used)
+
+ @Override
+ public char getSeparator() {
+ return ' ';
+ }
+
+ @Override
+ public void pushCsvHeaderNames(List<String> strings) {
+ }
+
+ @Override
+ public Transect newEmptyInstance() {
+ Transect result = new TransectImpl();
+ Strate strate = new StrateImpl();
+ result.setStrate(strate);
+ strate.setSector(new SectorImpl());
+ return result;
+ }
+
+ @Override
+ public Iterable<ImportableColumn<Transect, Object>> getColumnsForImport() {
+ ModelBuilder builder = new ModelBuilder();
+ builder.newMandatoryColumn("Length",
+ Transect.PROPERTY_LENGTH,
+ Common.DOUBLE_PRIMITIVE
+ );
+ builder.newMandatoryColumn("TR_ID",
+ Transect.PROPERTY_NAME)
+ ;
+ builder.newMandatoryColumn("Xstart",
+ Transect.PROPERTY_START_X,
+ Common.DOUBLE_PRIMITIVE
+ );
+ builder.newMandatoryColumn("Ystart",
+ Transect.PROPERTY_START_Y,
+ Common.DOUBLE_PRIMITIVE
+ );
+ builder.newMandatoryColumn("Xend",
+ Transect.PROPERTY_END_X,
+ Common.DOUBLE_PRIMITIVE
+ );
+ builder.newMandatoryColumn("Yend",
+ Transect.PROPERTY_END_Y,
+ Common.DOUBLE_PRIMITIVE
+ );
+ builder.newMandatoryColumn("SECTEUR",
+ Transect.PROPERTY_STRATE + "."
+ + Strate.PROPERTY_SECTOR + "."
+ + Sector.PROPERTY_SECTOR_NUMBER,
+ new DoubleToIntegerValueParser()
+ );
+ builder.newMandatoryColumn("STRATE",
+ Transect.PROPERTY_STRATE + "."
+ + Strate.PROPERTY_STRATE_TYPE,
+ new StrateTypeValueParser()
+ );
+ builder.newMandatoryColumn("Passage",
+ Transect.PROPERTY_NB_TIMES,
+ new DoubleToIntegerValueParser()
+ );
+ builder.newIgnoredColumn("Shape_Leng");
+ return builder.getColumnsForImport();
+ }
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/TransectImportModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfColumnModel.java (from rev 413, trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfColumnModel.java)
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfColumnModel.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfColumnModel.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,83 @@
+package fr.ulr.sammoa.application.io.output.map;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+/**
+ * Note: there is an existing {@link com.bbn.openmap.dataAccess.shape.DbfTableModelFactory.Column}
+ * class.
+ * <p/>
+ * Created: 07/08/12
+ *
+ * @author fdesbois <florian.desbois(a)codelutin.com>
+ */
+public class DbfColumnModel {
+
+ protected String name;
+
+ protected byte type;
+
+ protected int length;
+
+ protected byte decimalCount;
+
+ protected int index;
+
+ public DbfColumnModel(String name, byte type) {
+ this.name = name;
+ this.type = type;
+ this.index = -1;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public byte getType() {
+ return type;
+ }
+
+ public int getLength() {
+ return length;
+ }
+
+ public void setLength(int length) {
+ this.length = length;
+ }
+
+ public int getDecimalCount() {
+ return decimalCount;
+ }
+
+ public void setDecimalCount(int decimalCount) {
+ this.decimalCount = (byte) decimalCount;
+ }
+
+ public int getIndex() {
+ return index;
+ }
+
+ public void setIndex(int index) {
+ this.index = index;
+ }
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfColumnModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfImport.java (from rev 413, trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfImport.java)
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfImport.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfImport.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,129 @@
+package fr.ulr.sammoa.application.io.output.map;
+/*
+ * #%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%
+ */
+
+import com.bbn.openmap.dataAccess.shape.DbfTableModel;
+import com.google.common.base.Throwables;
+import com.google.common.collect.Lists;
+import org.nuiton.util.csv.Import;
+import org.nuiton.util.csv.ImportModel;
+import org.nuiton.util.csv.ImportRuntimeException;
+import org.nuiton.util.csv.ImportableColumn;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.net.URL;
+import java.util.Iterator;
+import java.util.List;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * Created: 25/07/12
+ *
+ * @author fdesbois <desbois(a)codelutin.com>
+ */
+public class DbfImport<E> extends Import<E> {
+
+ private static final Logger logger = LoggerFactory.getLogger(DbfImport.class);
+
+ protected DbfTableModel source;
+
+ protected Iterator<List<Object>> records;
+
+ protected List<Object> record;
+
+ public DbfImport(ImportModel<E> model, URL fileUrl) {
+ // Use dummy reader for superclass Import that manage by default csv files
+ super(model, new Reader() {
+
+ @Override
+ public int read(char[] cbuf, int off, int len) throws IOException {
+ return -1;
+ }
+
+ @Override
+ public void close() throws IOException {
+ }
+ });
+
+ try {
+ // FIXME-fdesbois-2012-07-26 : there is an issue with encoding, don't know how to customize it
+ this.source = DbfTableModel.read(fileUrl);
+
+ } catch (Exception e) {
+ throw Throwables.propagate(e);
+ }
+ this.records = source.getRecords();
+ }
+
+ @Override
+ protected <T> String readValue(ImportableColumn<E, T> field, int lineNumber) {
+ try {
+
+ int columnNumber = source.getColumnIndexForName(field.getHeaderName());
+
+ String value = String.valueOf(record.get(columnNumber));
+
+ return value;
+
+ } catch (Exception e) {
+ throw new ImportRuntimeException(
+ _("csv.import.error.unableToReadField",
+ field.getHeaderName(), lineNumber), e);
+ }
+ }
+
+ @Override
+ public void close() {
+ // nothing to do
+ }
+
+ @Override
+ protected boolean readRow() throws ImportRuntimeException {
+ boolean result;
+ if (records.hasNext()) {
+ record = records.next();
+ if (logger.isTraceEnabled()) {
+ logger.trace("Read record {}", record);
+ }
+ result = true;
+
+ } else {
+ result = false;
+ }
+ return result;
+ }
+
+ @Override
+ protected String[] getHeaders() throws ImportRuntimeException {
+ List<String> list = Lists.newArrayList();
+ for (int index = 0; index < source.getColumnCount(); index++) {
+ list.add(source.getColumnName(index));
+ }
+ return list.toArray(new String[list.size()]);
+ }
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfImport.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfTableModelBuilder.java (from rev 413, trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfTableModelBuilder.java)
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfTableModelBuilder.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfTableModelBuilder.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,229 @@
+package fr.ulr.sammoa.application.io.output.map;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+import com.bbn.openmap.dataAccess.shape.DbfTableModel;
+import com.google.common.base.Function;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created: 07/08/12
+ *
+ * @author fdesbois <florian.desbois(a)codelutin.com>
+ */
+public class DbfTableModelBuilder {
+
+ /** Logger. */
+ private static final Logger logger =
+ LoggerFactory.getLogger(DbfTableModelBuilder.class);
+
+ public static final int DEFAULT_STRING_LENGTH = 64;
+
+ public static final int DEFAULT_INTEGER_LENGTH = 8;
+
+ public static final String DATE_FORMAT_PATTERN = "yyyyMMdd";
+
+ public static final DateFormat DATE_FORMAT = new SimpleDateFormat(DATE_FORMAT_PATTERN);
+
+ protected List<DbfColumnModel> columns;
+
+ protected Map<String, DbfColumnModel> columnMap;
+
+ protected DbfTableModel model;
+
+ public DbfTableModelBuilder() {
+ columns = Lists.newArrayList();
+ }
+
+ public DbfTableModelBuilder dbfColumn(DbfColumnModel column) {
+ if (column.getIndex() != -1) {
+ columns.add(column.getIndex(), column);
+ } else {
+ column.setIndex(columns.size());
+ columns.add(column);
+ }
+ return this;
+ }
+
+ public DbfColumnModel newStringColumn(String name) {
+ DbfColumnModel result = new DbfColumnModel(name, DbfTableModel.TYPE_CHARACTER);
+ result.setLength(DEFAULT_STRING_LENGTH);
+ return result;
+ }
+
+ public DbfColumnModel newIntegerColumn(String name) {
+ DbfColumnModel result = new DbfColumnModel(name, DbfTableModel.TYPE_NUMERIC);
+ result.setLength(DEFAULT_INTEGER_LENGTH);
+ return result;
+ }
+
+ public DbfColumnModel newDoubleColumn(String name, int length, int decimalCount) {
+ DbfColumnModel result = new DbfColumnModel(name, DbfTableModel.TYPE_NUMERIC);
+ result.setLength(length);
+ result.setDecimalCount(decimalCount);
+ return result;
+ }
+
+ public DbfColumnModel newTimestampColumn(String name) {
+ DbfColumnModel result = new DbfColumnModel(name, DbfTableModel.TYPE_TIMESTAMP);
+ return result;
+ }
+
+ public DbfColumnModel newDateColumn(String name) {
+ DbfColumnModel result = new DbfColumnModel(name, DbfTableModel.TYPE_DATE);
+ result.setLength(DATE_FORMAT_PATTERN.length());
+ return result;
+ }
+
+ public DbfColumnModel newBooleanColumn(String name) {
+ DbfColumnModel result = new DbfColumnModel(name, DbfTableModel.TYPE_LOGICAL);
+ result.setLength(1);
+ return result;
+ }
+
+ public DbfTableModelBuilder stringColumn(String name) {
+ return dbfColumn(newStringColumn(name));
+ }
+
+ public DbfTableModelBuilder booleanColumn(String name) {
+ return dbfColumn(newBooleanColumn(name));
+ }
+
+ public DbfTableModelBuilder integerColumn(String name) {
+ return dbfColumn(newIntegerColumn(name));
+ }
+
+ public DbfTableModelBuilder doubleColumn(String name, int length, int decimalCount) {
+ return dbfColumn(newDoubleColumn(name, length, decimalCount));
+ }
+
+ public DbfTableModelBuilder timestampColumn(String name) {
+ return dbfColumn(newTimestampColumn(name));
+ }
+
+ public DbfTableModelBuilder dateColumn(String name) {
+ return dbfColumn(newDateColumn(name));
+ }
+
+ public DbfTableModelBuilder build() {
+ model = new DbfTableModel(columns.size());
+ model.setWritable(true);
+
+ for (int i = 0; i < columns.size(); i++) {
+ DbfColumnModel columnModel = columns.get(i);
+ model.setColumnName(i, columnModel.getName());
+ model.setType(i, columnModel.getType());
+ model.setLength(i, columnModel.getLength());
+ model.setDecimalCount(i, (byte) columnModel.getDecimalCount());
+ }
+ columnMap = Maps.uniqueIndex(columns,
+ new Function<DbfColumnModel, String>() {
+
+ @Override
+ public String apply(DbfColumnModel input) {
+ return input.getName();
+ }
+ });
+ return this;
+ }
+
+ public DbfTableModel getModel() {
+ return model;
+ }
+
+ public void setValue(int rowIndex, String columnName, Object value) {
+ Preconditions.checkState(model != null, "Model must be built before setting values");
+
+ DbfColumnModel column = columnMap.get(columnName);
+
+ int columnIndex = column.getIndex();
+ value = cleanValue(value, column.getType());
+ model.setValueAt(value, rowIndex, columnIndex);
+ }
+
+ public int addValues(Map<String, Object> values) {
+ Preconditions.checkState(model != null, "Model must be built before adding values");
+
+ model.addBlankRecord();
+ int rowIndex = model.getRowCount() - 1;
+ for (Map.Entry<String, Object> entry : values.entrySet()) {
+ setValue(rowIndex, entry.getKey(), entry.getValue());
+ }
+ return rowIndex;
+ }
+
+ protected Object cleanValue(Object value, byte type) {
+
+ Object result = value;
+ if (DbfTableModel.isNumericalType(type)) {
+
+ // FIX for Integer Format error in DbfTableModel#getStringForType
+ if (value instanceof Integer) {
+ result = Double.valueOf(String.valueOf(value));
+ }
+ } else if (DbfTableModel.TYPE_TIMESTAMP == type) {
+
+ // FIX for Date : no format is done
+ if (value instanceof Date) {
+ Date date = (Date) value;
+
+ result = DbfTimestampConverter.toString(date);
+ }
+ } else if (DbfTableModel.TYPE_DATE == type) {
+
+ // FIX for Date : no format is done
+ if (value instanceof Date) {
+ Date date = (Date) value;
+
+ result = DATE_FORMAT.format(date);
+ }
+ } else if (DbfTableModel.TYPE_LOGICAL == type) {
+ result = ((Boolean) value) ? "T" : "F";
+ } else if (value instanceof Enum) {
+ result = ((Enum) value).name();
+ } else if (value instanceof Character) {
+ result = String.valueOf(value);
+ }
+
+ if (result != null &&
+ !(result instanceof String) &&
+ !(result instanceof Double)) {
+ if (logger.isWarnEnabled()) {
+ logger.warn("Incompatible data value {} (type {})", result, type);
+ }
+ }
+ return result;
+ }
+
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfTableModelBuilder.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfTimestampConverter.java (from rev 413, trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfTimestampConverter.java)
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfTimestampConverter.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfTimestampConverter.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,117 @@
+package fr.ulr.sammoa.application.io.output.map;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
+import org.nuiton.util.DateUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+/**
+ * Created: 08/08/12
+ *
+ * @author fdesbois <florian.desbois(a)codelutin.com>
+ */
+public final class DbfTimestampConverter {
+
+ protected static final Long HOUR_MULT = 3600000L;
+
+ protected static final Long MINUTE_MULT = 60000L;
+
+ protected static final Long SECOND_MULT = 1000L;
+
+
+ private static final Logger logger = LoggerFactory.getLogger(DbfTimestampConverter.class);
+
+ private DbfTimestampConverter() {
+ // static class
+ }
+
+ public static String toString(Date date) {
+
+ Calendar calendar = new GregorianCalendar();
+ calendar.setTime(date);
+
+ Calendar refCalendar = getReferenceCalendar();
+
+ long dateValue = DateUtil.getDifferenceInDays(refCalendar.getTime(), date);
+ long timeValue = calendar.get(Calendar.HOUR_OF_DAY) * HOUR_MULT
+ + calendar.get(Calendar.MINUTE) * MINUTE_MULT
+ + calendar.get(Calendar.SECOND) * SECOND_MULT;
+
+ String result = dateValue + " " + timeValue;
+ return result;
+ }
+
+ public static Date toDate(String timestamp) {
+ Preconditions.checkArgument(Strings.nullToEmpty(timestamp).trim().contains(" "),
+ "A space is missing between the date and time values");
+
+ String[] values = timestamp.split(" ");
+
+ Long dateValue = Long.parseLong(values[0]);
+ Long timeValue = Long.parseLong(values[1]);
+
+ Calendar refCalendar = getReferenceCalendar();
+
+ Calendar resultCalendar = new GregorianCalendar();
+ resultCalendar.setTime(refCalendar.getTime());
+
+ resultCalendar.add(Calendar.DATE, dateValue.intValue());
+
+ Long hours = timeValue / HOUR_MULT;
+ Long timeWithoutHours = timeValue - hours * HOUR_MULT;
+ Long minutes = timeWithoutHours / MINUTE_MULT;
+ Long seconds = (timeWithoutHours - minutes * MINUTE_MULT) / SECOND_MULT;
+
+ resultCalendar.set(Calendar.HOUR_OF_DAY, hours.intValue());
+ resultCalendar.set(Calendar.MINUTE, minutes.intValue());
+ resultCalendar.set(Calendar.SECOND, seconds.intValue());
+
+ if (logger.isDebugEnabled()) {
+ logger.debug(String.format("DateValue=%d, TimeValue=%d, Hours=%d, Minutes=%d, Seconds=%d, Result=%s",
+ dateValue,
+ timeValue,
+ hours,
+ minutes,
+ seconds,
+ resultCalendar)
+ );
+ }
+
+ return resultCalendar.getTime();
+ }
+
+ private static Calendar getReferenceCalendar() {
+ Calendar result = new GregorianCalendar(4713, 0, 1);
+ result.set(Calendar.ERA, GregorianCalendar.BC);
+ return result;
+ }
+
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/DbfTimestampConverter.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapModel.java (from rev 413, trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapModel.java)
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapModel.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapModel.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,124 @@
+package fr.ulr.sammoa.application.io.output.map;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+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 java.io.File;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Model of export map.
+ *
+ * @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) {
+ 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;
+ return result;
+ }
+
+ protected Campaign campaign;
+
+ protected Date beginDate;
+
+ protected Date endDate;
+
+ protected List<Strate> strates;
+
+ protected List<RouteType> routeTypes;
+
+ protected List<Species> species;
+
+ 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;
+ }
+
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapService.java (from rev 413, trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapService.java)
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapService.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapService.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,799 @@
+package fr.ulr.sammoa.application.io.output.map;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+import com.bbn.openmap.dataAccess.shape.DbfTableModel;
+import com.bbn.openmap.dataAccess.shape.EsriGraphicList;
+import com.bbn.openmap.dataAccess.shape.EsriPointList;
+import com.bbn.openmap.dataAccess.shape.EsriShapeExport;
+import com.bbn.openmap.omGraphics.OMGraphic;
+import com.bbn.openmap.omGraphics.OMPoint;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Maps;
+import fr.ulr.sammoa.application.FlightService;
+import fr.ulr.sammoa.application.SammoaConfig;
+import fr.ulr.sammoa.application.SammoaContext;
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.Flight;
+import fr.ulr.sammoa.persistence.GeoPoint;
+import fr.ulr.sammoa.persistence.GeoPoints;
+import fr.ulr.sammoa.persistence.Observation;
+import fr.ulr.sammoa.persistence.Observations;
+import fr.ulr.sammoa.persistence.ObserverPosition;
+import fr.ulr.sammoa.persistence.Position;
+import fr.ulr.sammoa.persistence.Region;
+import fr.ulr.sammoa.persistence.Route;
+import fr.ulr.sammoa.persistence.RouteType;
+import fr.ulr.sammoa.persistence.Routes;
+import fr.ulr.sammoa.persistence.SammoaPersistence;
+import fr.ulr.sammoa.persistence.Species;
+import fr.ulr.sammoa.persistence.Strate;
+import fr.ulr.sammoa.persistence.Transect;
+import fr.ulr.sammoa.persistence.TransectFlight;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.util.PeriodDates;
+import org.nuiton.util.TimeLog;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Export map service
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.5
+ */
+public class ExportMapService {
+
+ private static final Logger logger =
+ LoggerFactory.getLogger(ExportMapService.class);
+
+ private static final TimeLog timeLog = new TimeLog(ExportMapService.class);
+
+ protected SammoaContext context;
+
+ protected SammoaConfig config;
+
+ protected SammoaPersistence persistence;
+
+ protected DateFormat timeFormat;
+
+ public ExportMapService(SammoaContext context) {
+ this.context = context;
+ this.persistence = context.getPersistence();
+ this.config = context.getConfig();
+ this.timeFormat = new SimpleDateFormat("HHmmss");
+ }
+
+ public void exportEffortsMap(ExportMapModel dataModel) {
+ Preconditions.checkNotNull(dataModel.getCampaign());
+ Preconditions.checkNotNull(dataModel.getBeginDate());
+ Preconditions.checkNotNull(dataModel.getEndDate());
+
+ if (logger.isInfoEnabled()) {
+ logger.info("Start EffortsMap export to {} :: {}",
+ dataModel.getExportDirectory(),
+ dataModel.getExportFilename());
+ }
+
+ long startTime = TimeLog.getTime();
+
+
+ // * 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
+ DbfTableModelBuilder builder = new DbfTableModelBuilder()
+ .stringColumn("REGION") // (region.code)
+ .stringColumn("CAMPAIGN") // (campaign.code)
+ .integerColumn("SECTOR") // * (route.transectFlight.transect.strate.sector.sectorNumber)
+ .stringColumn("STRATE_TYPE") // * (route.transectFlight.transect.strate.strateType.code)
+ .stringColumn("STRATE") // * (route.transectFlight.transect.strate.code)
+ .stringColumn("TRANSECT") // * (route.transectFlight.transect.name)
+ .integerColumn("PASSAGE") // * (route.transectFlight.crossingNumber)
+ .integerColumn("FLIGHT") // (route.flight.flightNumber)
+ .stringColumn("COMPUTER") // (route.flight.systemId)
+ .stringColumn("ROUTE_TYPE") // (route.routeType.name)
+ .stringColumn("EFFORT_GROUP") // * (voir doc)
+ .stringColumn("EFFORT") // * (voir doc)
+ .stringColumn("STATUS") // * (voir doc)
+ .dateColumn("DATE") // (route.beginTime)
+ .stringColumn("HHMMSS") // (format(route.beginTime, "HHmmss"))
+ .integerColumn("SEA_STATE") // (route.seaState)
+ .integerColumn("SWELL") // (route.swell)
+ .integerColumn("TURBIDITY") // (route.turbidity)
+ .integerColumn("SKY_GLINT") // (route.skyGlint)
+ .stringColumn("GLARE_FROM") // (route.glareFrom)
+ .stringColumn("GLARE_TO") // (route.glareTo)
+ .integerColumn("GLARE_SEVERITY") // (route.glareSeverity)
+ .booleanColumn("GLARE_UNDER") // (route.glareUnder)
+ .integerColumn("CLOUD_COVER") // (route.cloudCover)
+ .stringColumn("SUBJECTIVE") // (route.subjectiveConditions)
+ .stringColumn("UNEXP_LEFT") // (route.unexpectedLeft)
+ .stringColumn("UNEXP_RIGHT") // (route.unexpectedRight)
+ .stringColumn("LEFT_REAR") // (route.observerPosition[FRONT_LEFT].observer.initials)
+ .stringColumn("RIGHT_REAR") // (route.observerPosition[FRONT_RIGHT].observer.initials)
+ .stringColumn("CENTER") // (route.observerPosition[NAVIGATOR].observer.initials)
+ .stringColumn("CB_CAUSE") // ** ()
+ .doubleColumn("LAT", 19, 11) // (geoPoint.latitude)
+ .doubleColumn("LON", 19, 11) // (geoPoint.longitude)
+ .doubleColumn("SPEED", 19, 11) // (geoPoint.speed)
+ .doubleColumn("ALTITUDE", 19, 11) // (geoPoint.altitude)
+ .stringColumn("GPS_TIME") // (format(geoPoint.recordTime, "HHmmss"))
+ .stringColumn("AIRCRAFT") // (route.flight.immatriculation)
+ .stringColumn("COMMENT") // (route.comment)
+ .build();
+
+ EsriGraphicList graphicList = new EsriPointList();
+
+ FlightService flightService = context.getFlightService();
+
+ Campaign campaign = dataModel.getCampaign();
+ Region region = campaign.getRegion();
+
+ List<RouteType> routeTypes = dataModel.getRouteTypes();
+ List<Strate> strates = dataModel.getStrates();
+
+ TopiaContext tx = context.getPersistence().beginTransaction();
+
+ try {
+ // get flights for campaign (and between begin - end date)
+ Iterable<Flight> flights = flightService.getFlights(
+ tx,
+ campaign,
+ dataModel.getBeginDate(),
+ dataModel.getEndDate());
+
+ // Export for each flight
+ for (Flight flight : flights) {
+
+ if (logger.isInfoEnabled()) {
+ logger.info("Export Efforts from flight {} - {} - {} - {}",
+ new Object[]{flight.getFlightNumber(),
+ flight.getSystemId(),
+ campaign.getCode(),
+ region.getCode()}
+ );
+ }
+
+ // common properties for the flight
+ Map<String, Object> commonRecord = Maps.newHashMap();
+ fillFlightRecord(campaign, region, flight, commonRecord);
+
+ // get all routes of this flight
+ List<Route> routes = flightService.getRoutes(tx, flight);
+
+ // get all geo points for this flight
+ List<GeoPoint> geoPoints = flightService.getFlightGeoPoints(tx, flight);
+
+ // get best geo points for each route
+ Iterable<GeoPoint> routeGeoPoints =
+ GeoPoints.getClosestPoints(geoPoints, Routes.toDates(routes));
+
+ // to iterate on geoPoints
+ Iterator<GeoPoint> geoPointIterator = routeGeoPoints.iterator();
+
+ // to keep current effort group identifier
+ String effortGroup = null;
+
+ Route previousRoute = null;
+ for (Route route : routes) {
+
+ if (logger.isTraceEnabled()) {
+ logger.trace("Export Efforts from route {} - {}",
+ new Object[]{route.getBeginTime(),
+ route.getRouteType()}
+ );
+ }
+
+ // get geoPoint associated with this route
+ GeoPoint geoPoint = geoPointIterator.next();
+
+ // is current route a leg ?
+ boolean routeIsLeg = Routes.isRouteLeg(route);
+
+ if (!routeIsLeg) {
+
+ if (effortGroup != null) {
+
+ // previous route was a leg
+ // need to create a end row (to close the group)
+
+ Map<String, Object> record = Maps.newHashMap();
+ record.putAll(commonRecord);
+
+ // add route data
+ fillRouteRecord(flight,
+ previousRoute,
+ effortGroup,
+ LegStatus.END,
+ record);
+
+ // add geoPoint data and flush
+ fillGeoPointRecordAndFlush(geoPoint,
+ record,
+ builder,
+ graphicList);
+ }
+
+ // reset effort group
+ // will be recomputed by first next leg route
+ effortGroup = null;
+ }
+
+ boolean routeIsValid = Routes.isRouteAccepted(route,
+ routeTypes,
+ strates);
+
+ if (routeIsValid) {
+
+ // selected route = one row on dbf
+
+ Map<String, Object> record = Maps.newHashMap();
+ record.putAll(commonRecord);
+
+ LegStatus legStatus = null;
+
+ if (routeIsLeg) {
+
+ if (effortGroup == null) {
+
+ // this is the first route of the leg group
+ legStatus = LegStatus.BEGIN;
+
+ // compute the unique effortGroup for this group
+ effortGroup = computeEffortGroup(flight, route);
+ } else {
+
+ // group already began, just add a route to it
+ legStatus = LegStatus.ADD;
+ }
+
+ }
+
+ // add route data
+ fillRouteRecord(flight,
+ route,
+ effortGroup,
+ legStatus,
+ record);
+
+
+ // add geoPoint data and flush
+ fillGeoPointRecordAndFlush(geoPoint,
+ record,
+ builder,
+ graphicList);
+ }
+
+ // keep current route as previousroute
+ previousRoute = route;
+ }
+ }
+
+ startTime = timeLog.log(
+ startTime,
+ "exportEffortsMap",
+ "after building EsriGraphicList and DbfTableModel");
+
+ flushExport(builder, dataModel, graphicList);
+
+ timeLog.log(startTime, "exportEffortsMap", "after EsriShapeExport execution");
+ } finally {
+ context.getPersistence().endTransaction(tx);
+ }
+ }
+
+ public void exportObservationsMap(ExportMapModel dataModel) {
+ Preconditions.checkNotNull(dataModel.getCampaign());
+ Preconditions.checkNotNull(dataModel.getBeginDate());
+ Preconditions.checkNotNull(dataModel.getEndDate());
+
+ if (logger.isInfoEnabled()) {
+ logger.info("Start ObservationsMap export to {} :: {}",
+ dataModel.getExportDirectory(),
+ dataModel.getExportFilename());
+ }
+ long startTime = TimeLog.getTime();
+
+ // * uniquement pour un parcours de type LEG, sinon la cellule sera vide
+ DbfTableModelBuilder builder = new DbfTableModelBuilder()
+ .stringColumn("REGION") // (campaign.region.code)
+ .stringColumn("CAMPAIGN") // (campaign.code)
+ .integerColumn("SECTOR") // * (route.transectFlight.transect.strate.sector.sectorNumber)
+ .stringColumn("STRATE_TYPE") // * (route.transectFlight.transect.strate.strateType.code)
+ .stringColumn("STRATE") // * (route.transectFlight.transect.strate.code)
+ .stringColumn("TRANSECT") // * (route.transectFlight.transect.name)
+ .integerColumn("PASSAGE") // * (route.transectFlight.crossingNumber)
+ .integerColumn("FLIGHT") // (route.flight.flightNumber)
+ .stringColumn("COMPUTER") // (route.flight.systemId)
+ .stringColumn("ROUTE_TYPE") // (route.routeType.name)
+ .stringColumn("EFFORT_GROUP") // * (voir doc)
+ .stringColumn("EFFORT") // * (voir doc)
+ .stringColumn("OBSERVATION") // (voir doc)
+ .dateColumn("DATE") // (observation.beginTime)
+ .stringColumn("HHMMSS") // (format(observation.beginTime, "HHmmss"))
+ .stringColumn("TAXON") // (observation.species.type)
+ .stringColumn("GROUP") // (observation.species.groupName)
+ .stringColumn("FAMILY") // (observation.species.family)
+ .stringColumn("SPECIES") // (observation.species.code)
+ .stringColumn("SPECIES_NAME") // (observation.species.commonName)
+ .stringColumn("SPECIES_LATIN") // (observation.species.latinName)
+ .integerColumn("POD_SIZE") // (observation.podSize)
+ .stringColumn("AGE") // (observation.age)
+ .integerColumn("DEC_ANGLE") // (observation.decAngle)
+ .stringColumn("CUE") // (observation.cue)
+ .stringColumn("BEHAVIOUR") // (observation.behaviour)
+ .integerColumn("SWIM_DIR") // (observation.swimDir)
+ .stringColumn("CALVES") // (observation.calves)
+ .booleanColumn("PHOTO") // (observation.photo)
+ .stringColumn("OBSERVER") // (observation.observerPosition.observer.initials)
+ .stringColumn("SIDE") // (observation.observerPosition.observer.position.name)
+ .stringColumn("STATUS") // (observation.observationStatus.name)
+ .stringColumn("CB_CAUSE") // ** ()
+ .doubleColumn("LAT", 19, 11) // (geoPoint.latitude)
+ .doubleColumn("LON", 19, 11) // (geoPoint.longitude)
+ .doubleColumn("SPEED", 19, 11) // (geoPoint.speed)
+ .doubleColumn("ALTITUDE", 19, 11) // (geoPoint.altitude)
+ .stringColumn("GPS_TIME") // (format(geoPoint.recordTime, "HHmmss"))
+ .stringColumn("AIRCRAFT") // (flight.immatriculation)
+ .stringColumn("COMMENT") // (observation.comment)
+ .build();
+
+ EsriGraphicList graphicList = new EsriPointList();
+
+ Campaign campaign = dataModel.getCampaign();
+ Region region = campaign.getRegion();
+ List<RouteType> routeTypes = dataModel.getRouteTypes();
+ List<Strate> strates = dataModel.getStrates();
+
+ TopiaContext tx = context.getPersistence().beginTransaction();
+
+ try {
+ FlightService flightService = context.getFlightService();
+
+ // get flights for campaign (and between begin - end date)
+ Iterable<Flight> flights = flightService.getFlights(
+ tx,
+ campaign,
+ dataModel.getBeginDate(),
+ dataModel.getEndDate());
+
+ // Export for each flight
+
+ for (Flight flight : flights) {
+
+ if (logger.isInfoEnabled()) {
+ logger.info("Export Observations from flight {} - {} - {} - {}",
+ new Object[]{flight.getFlightNumber(),
+ flight.getSystemId(),
+ campaign.getCode(),
+ region.getCode()}
+ );
+ }
+
+ // get all observations for this flight
+ List<Observation> observations =
+ flightService.getObservations(tx, flight);
+
+ // apply species filter
+ Observations.removeOtherSpecies(observations,
+ dataModel.getSpecies());
+
+ // get all routes of this flight
+ List<Route> routes = flightService.getRoutes(tx, flight);
+
+ // get all geo points for this flight
+ List<GeoPoint> routeGeoPoints =
+ flightService.getFlightGeoPoints(tx, flight);
+
+ Map<String, Object> flightRecord = Maps.newHashMap();
+ fillFlightRecord(campaign, region, flight, flightRecord);
+
+ int nextRouteIndex = 0;
+ int nbRoutes = routes.size();
+ String effortGroup = null;
+
+ for (Route route : routes) {
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("Export Observations from route {} - {} (flight end time {})",
+ new Object[]{route.getBeginTime(),
+ route.getRouteType(),
+ flight.getEndDate()}
+ );
+ }
+ nextRouteIndex++;
+
+ boolean routeIsLeg = Routes.isRouteLeg(route);
+
+ if (!routeIsLeg) {
+
+ // new group will be computed at next leg route
+ effortGroup = null;
+ }
+
+ // compute route period
+ Date beginTime = route.getBeginTime();
+ Date routeEndTime;
+
+ if (nextRouteIndex < nbRoutes) {
+
+ // use next route begin time
+ Route nextRoute = routes.get(nextRouteIndex);
+ routeEndTime = nextRoute.getBeginTime();
+ } else {
+
+ // use flight end date
+ routeEndTime = flight.getEndDate();
+ }
+ if (routeEndTime != null) {
+ Preconditions.checkState(routeEndTime.after(beginTime),
+ String.format("Route debut de route %s - fin de route %s", beginTime, routeEndTime));
+ }
+
+ PeriodDates routePeriod =
+ new PeriodDates(beginTime, routeEndTime);
+
+ // Get observations for this route
+ List<Observation> routeObservations =
+ Observations.retainsObservations(observations,
+ routePeriod);
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("Export Observations from route {} [{}-{}] nb observations {}",
+ new Object[]{beginTime,
+ routeEndTime,
+ routeObservations.size()}
+ );
+ }
+ if (!Routes.isRouteAccepted(route, routeTypes, strates)) {
+
+ // not selected route
+ continue;
+ }
+
+ Map<String, Object> routeRecord = Maps.newHashMap();
+ routeRecord.putAll(flightRecord);
+
+ if (routeIsLeg && effortGroup == null) {
+
+ // compute effort group id
+ effortGroup = computeEffortGroup(flight, route);
+ }
+
+ fillRouteTypeRecord(flight, route, effortGroup, routeRecord);
+
+ // get best geo points for each observation
+ Iterable<GeoPoint> observationGeoPoints =
+ GeoPoints.getClosestPoints(
+ routeGeoPoints,
+ Observations.toDates(routeObservations));
+
+ // to iterate on geoPoints
+ Iterator<GeoPoint> geoPointIterator =
+ observationGeoPoints.iterator();
+
+ for (Observation observation : routeObservations) {
+
+ Map<String, Object> record = Maps.newHashMap();
+ record.putAll(routeRecord);
+
+ String observationId = computeObservationId(flight, observation);
+ record.put("OBSERVATION", observationId);
+
+ fillDateRecord(observation.getObservationTime(), record);
+
+ Species species = observation.getSpecies();
+ if (species != null) {
+ record.put("TAXON", species.getType());
+ record.put("GROUP", species.getGroupName());
+ record.put("FAMILY", species.getFamily());
+ record.put("SPECIES", species.getCode());
+ record.put("SPECIES_NAME", species.getCommonName());
+ record.put("SPECIES_LATIN", species.getLatinName());
+ }
+ record.put("POD_SIZE", observation.getPodSize());
+ record.put("AGE", observation.getAge());
+ record.put("DEC_ANGLE", observation.getDecAngle());
+ record.put("CUE", observation.getCue());
+ record.put("BEHAVIOUR", observation.getBehaviour());
+ record.put("SWIM_DIR", observation.getSwimDir());
+ record.put("CALVES", observation.getCalves());
+ record.put("PHOTO", observation.isPhoto());
+ record.put("OBSERVER", observation.getObserverPosition().getObserver().getInitials());
+ record.put("SIDE", observation.getObserverPosition().getPosition());
+ record.put("STATUS", observation.getObservationStatus());
+ record.put("COMMENT", observation.getComment());
+
+ GeoPoint geoPoint = geoPointIterator.next();
+
+ // add geoPoint data and flush
+ fillGeoPointRecordAndFlush(geoPoint,
+ record,
+ builder,
+ graphicList);
+
+ }
+ }
+ }
+
+ startTime = timeLog.log(startTime, "exportObservationsMap", "after building EsriGraphicList and DbfTableModel");
+
+ flushExport(builder, dataModel, graphicList);
+
+ timeLog.log(startTime, "exportObservationsMap", "after EsriShapeExport execution");
+ } finally {
+ context.getPersistence().endTransaction(tx);
+ }
+ }
+
+ public void exportGeoPointsMap(ExportMapModel dataModel) {
+
+ Preconditions.checkNotNull(dataModel.getCampaign());
+ Preconditions.checkNotNull(dataModel.getBeginDate());
+ Preconditions.checkNotNull(dataModel.getEndDate());
+
+ if (logger.isInfoEnabled()) {
+ logger.info("Start GeoPointsMap export to {} :: {}",
+ dataModel.getExportDirectory(),
+ dataModel.getExportFilename());
+ }
+
+ long startTime = TimeLog.getTime();
+
+ DbfTableModelBuilder builder = new DbfTableModelBuilder()
+ .stringColumn("REGION")
+ .stringColumn("CAMPAIGN")
+ .integerColumn("FLIGHT")
+ .stringColumn("COMPUTER")
+ .stringColumn("AIRCRAFT")
+ .dateColumn("DATE")
+ .stringColumn("HHMMSS")
+ .doubleColumn("LAT", 19, 11)
+ .doubleColumn("LON", 19, 11)
+ .doubleColumn("SPEED", 19, 11)
+ .doubleColumn("ALTITUDE", 19, 11)
+ .build();
+
+ Campaign campaign = dataModel.getCampaign();
+ Region region = campaign.getRegion();
+
+ FlightService flightService = context.getFlightService();
+
+ // get flights for campaign (and between begin - end date)
+ Iterable<Flight> flights = flightService.getFlights(campaign,
+ dataModel.getBeginDate(),
+ dataModel.getEndDate());
+
+ EsriGraphicList graphicList = new EsriPointList();
+
+ // Export for each flight
+ for (Flight flight : flights) {
+
+ if (logger.isInfoEnabled()) {
+ logger.info("Export GeoPoints from flight {} - {} - {} - {}",
+ new Object[]{flight.getFlightNumber(),
+ flight.getSystemId(),
+ campaign.getCode(),
+ region.getCode()}
+ );
+ }
+
+ List<GeoPoint> geoPoints =
+ flightService.getFlightGeoPoints(flight);
+
+ Map<String, Object> commonRecord = Maps.newHashMap();
+ fillFlightRecord(campaign, region, flight, commonRecord);
+
+ // One record by GeoPoint
+ for (GeoPoint geoPoint : geoPoints) {
+
+ Map<String, Object> record = Maps.newHashMap();
+ record.putAll(commonRecord);
+
+ fillDateRecord(geoPoint.getRecordTime(), record);
+
+ // add geoPoint data and flush
+ fillGeoPointRecordAndFlush(geoPoint,
+ record,
+ builder,
+ graphicList);
+ }
+ }
+
+ startTime = timeLog.log(startTime, "exportGeoPointsMap",
+ "after building EsriGraphicList and DbfTableModel");
+
+ flushExport(builder, dataModel, graphicList);
+
+ timeLog.log(startTime, "exportGeoPointsMap",
+ "after EsriShapeExport execution");
+ }
+
+ protected void flushExport(DbfTableModelBuilder builder,
+ ExportMapModel dataModel,
+ EsriGraphicList graphicList) {
+
+ DbfTableModel tableModel = builder.getModel();
+ String pathFile = new File(dataModel.getExportDirectory(),
+ dataModel.getExportFilename()).getAbsolutePath();
+ EsriShapeExport shapeExport = new EsriShapeExport(graphicList, tableModel, pathFile);
+ shapeExport.export();
+ }
+
+ protected void fillDateRecord(Date date, Map<String, Object> record) {
+ record.put("DATE", date);
+ record.put("HHMMSS", timeFormat.format(date));
+ }
+
+ protected void fillGeoPointRecordAndFlush(GeoPoint geoPoint,
+ Map<String, Object> record,
+ DbfTableModelBuilder builder,
+ EsriGraphicList graphicList) {
+
+ record.put("LAT", geoPoint.getLatitude());
+ record.put("LON", geoPoint.getLongitude());
+ record.put("SPEED", geoPoint.getSpeed());
+ record.put("ALTITUDE", geoPoint.getAltitude());
+
+ builder.addValues(record);
+
+ if (logger.isTraceEnabled()) {
+ logger.trace("Record={}", record);
+ }
+
+ OMGraphic graphic = new OMPoint(geoPoint.getLatitude(),
+ geoPoint.getLongitude());
+ graphicList.add(graphic);
+ }
+
+ protected void fillFlightRecord(Campaign campaign,
+ Region region,
+ Flight flight,
+ Map<String, Object> record) {
+
+ record.put("REGION", region.getCode());
+ record.put("CAMPAIGN", campaign.getCode());
+ record.put("FLIGHT", flight.getFlightNumber());
+ record.put("AIRCRAFT", flight.getImmatriculation());
+ record.put("COMPUTER", flight.getSystemId());
+ }
+
+ protected void fillRouteRecord(Flight flight,
+ Route route,
+ String effortGroup,
+ LegStatus legStatus,
+ Map<String, Object> record) {
+
+ if (logger.isTraceEnabled()) {
+ logger.trace("Create Route record for route {} - {}",
+ new Object[]{route.getBeginTime(),
+ route.getRouteType()}
+ );
+ }
+
+ fillDateRecord(route.getBeginTime(), record);
+ fillRouteTypeRecord(flight, route, effortGroup, record);
+
+ if (legStatus != null) {
+ record.put("STATUS", legStatus);
+ }
+ record.put("COMMENT", route.getComment());
+ record.put("SEA_STATE", route.getSeaState());
+ record.put("SWELL", route.getSwell());
+ record.put("TURBIDITY", route.getTurbidity());
+ record.put("SKY_GLINT", route.getSkyGlint());
+ if (route.getGlareFrom() != null) {
+ record.put("GLARE_FROM", String.valueOf(route.getGlareFrom()));
+ }
+ if (route.getGlareTo() != null) {
+ record.put("GLARE_TO", String.valueOf(route.getGlareTo()));
+ }
+ record.put("GLARE_SEVERITY", route.getGlareSeverity());
+ record.put("GLARE_UNDER", route.isGlareUnder());
+ record.put("CLOUD_COVER", route.getCloudCover());
+ record.put("SUBJECTIVE", route.getSubjectiveConditions());
+ record.put("UNEXP_LEFT", route.getUnexpectedLeft());
+ record.put("UNEXP_RIGHT", route.getUnexpectedRight());
+
+ ObserverPosition observerPositionByPosition =
+ route.getObserverPositionByPosition(Position.FRONT_LEFT);
+ if (observerPositionByPosition != null && observerPositionByPosition.getObserver() != null) {
+ record.put("LEFT_REAR", observerPositionByPosition.getObserver().getInitials());
+ }
+ observerPositionByPosition =
+ route.getObserverPositionByPosition(Position.FRONT_RIGHT);
+ if (observerPositionByPosition != null && observerPositionByPosition.getObserver() != null) {
+ record.put("RIGHT_REAR", observerPositionByPosition.getObserver().getInitials());
+ }
+ observerPositionByPosition =
+ route.getObserverPositionByPosition(Position.NAVIGATOR);
+ if (observerPositionByPosition != null && observerPositionByPosition.getObserver() != null) {
+ record.put("CENTER", observerPositionByPosition.getObserver().getInitials());
+ }
+ }
+
+ protected void fillRouteTypeRecord(Flight flight,
+ Route route,
+ String effortGroup,
+ Map<String, Object> record) {
+
+ record.put("ROUTE_TYPE", route.getRouteType());
+ if (Routes.isRouteLeg(route)) {
+ fillLegRouteRecord(route, effortGroup, record);
+ }
+
+ if (Routes.isRouteCircleBack(route)) {
+
+ // compute circle back cause
+ String circleBackCause = computeObservationId(flight, route.getCircleBackCause());
+ record.put("CB_CAUSE", circleBackCause);
+ }
+ }
+
+ protected void fillLegRouteRecord(Route route,
+ String effortGroup,
+ Map<String, Object> record) {
+
+ TransectFlight transectFlight = route.getTransectFlight();
+ Transect transect = transectFlight.getTransect();
+ Strate strate = transect.getStrate();
+
+ String effort = computeEffort(route);
+
+ record.put("SECTOR", strate.getSector().getSectorNumber());
+ record.put("STRATE_TYPE", strate.getStrateType().getCode());
+ record.put("STRATE", strate.getCode());
+ record.put("TRANSECT", transect.getName());
+ record.put("PASSAGE", transectFlight.getCrossingNumber());
+ record.put("EFFORT_GROUP", effortGroup);
+ record.put("EFFORT", effort);
+ }
+
+ protected String computeEffort(Route route) {
+ String result = "L" + route.getEffortNumber() + "-" +
+ route.getFlight().getFlightNumber() + "-" +
+ route.getFlight().getSystemId();
+ return result;
+ }
+
+ protected String computeEffortGroup(Flight flight, Route route) {
+ String result = "G" + route.getEffortNumber() + "-" +
+ flight.getFlightNumber() + "-" +
+ flight.getSystemId();
+ return result;
+ }
+
+ protected String computeObservationId(Flight flight, Observation observation) {
+ return "O" + observation.getObservationNumber() + "-" +
+ flight.getFlightNumber() + "-" +
+ flight.getSystemId();
+ }
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/ExportMapService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/LegStatus.java (from rev 413, trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/LegStatus.java)
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/LegStatus.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/LegStatus.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,39 @@
+package fr.ulr.sammoa.application.io.output.map;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.5
+ */
+public enum LegStatus {
+ BEGIN,
+ ADD, END;
+
+ public String getName() {
+ return name();
+ }
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/map/LegStatus.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationCallbackMode.java (from rev 413, trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationCallbackMode.java)
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationCallbackMode.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationCallbackMode.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,51 @@
+package fr.ulr.sammoa.application.io.output.sammoa;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+/**
+ * What to do after a application export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public enum ExportApplicationCallbackMode {
+ /**
+ * Do nothing.
+ * <p/>
+ * Says after this every thing stay in place.
+ */
+ NOTHING,
+ /**
+ * Remove flight data.
+ * <p/>
+ * Says after this referential are still there (Region, Campaign, Strate, Observer, Species).
+ */
+ REMOVE_FLIGHTS,
+ /**
+ * Remove campaign data.
+ * <p/>
+ * Says after this, there is no more stuff in db.
+ */
+ REMOVE_ALL
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationCallbackMode.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationModel.java (from rev 413, trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationModel.java)
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationModel.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationModel.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,85 @@
+package fr.ulr.sammoa.application.io.output.sammoa;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.Flight;
+
+import java.io.File;
+import java.io.Serializable;
+
+/**
+ * Model of export application.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class ExportApplicationModel implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ public static ExportApplicationModel newModel(File exportDirectory,
+ String exportFilename,
+ Campaign campaign,
+ Flight flight,
+ ExportApplicationCallbackMode callback) {
+ ExportApplicationModel result = new ExportApplicationModel();
+ result.exportDirectory = exportDirectory;
+ result.exportFilename = exportFilename;
+ result.campaign = campaign;
+ result.flight = flight;
+ result.callback = callback;
+ return result;
+ }
+
+ protected Campaign campaign;
+
+ protected Flight flight;
+
+ protected File exportDirectory;
+
+ protected String exportFilename;
+
+ protected ExportApplicationCallbackMode callback;
+
+ public File getExportDirectory() {
+ return exportDirectory;
+ }
+
+ public String getExportFilename() {
+ return exportFilename;
+ }
+
+ public Campaign getCampaign() {
+ return campaign;
+ }
+
+ public Flight getFlight() {
+ return flight;
+ }
+
+ public ExportApplicationCallbackMode getCallback() {
+ return callback;
+ }
+}
\ No newline at end of file
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationService.java (from rev 413, trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationService.java)
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationService.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationService.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,119 @@
+package fr.ulr.sammoa.application.io.output.sammoa;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+import fr.ulr.sammoa.application.SammoaConfig;
+import fr.ulr.sammoa.application.SammoaContext;
+import fr.ulr.sammoa.application.io.CampaignStorage;
+import fr.ulr.sammoa.application.io.CampaignStorages;
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.SammoaPersistence;
+import org.nuiton.util.TimeLog;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * To export application as a {@code sammoa} file.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class ExportApplicationService {
+
+ /** Logger. */
+ private static final Logger logger =
+ LoggerFactory.getLogger(ExportApplicationService.class);
+
+
+ private static final TimeLog timeLog =
+ new TimeLog(ExportApplicationService.class);
+
+ protected final SammoaContext context;
+
+ protected final SammoaConfig config;
+
+ protected final SammoaPersistence persistence;
+
+ public ExportApplicationService(SammoaContext context) {
+ this.context = context;
+ this.persistence = context.getPersistence();
+ this.config = context.getConfig();
+ }
+
+ public void exportApplication(ExportApplicationModel model) {
+
+ if (logger.isInfoEnabled()) {
+ logger.info("Start Application export to {} :: {}",
+ model.getExportDirectory(),
+ model.getExportFilename());
+ }
+
+ long startTime = TimeLog.getTime();
+
+ try {
+ Thread.sleep(2000);
+ } catch (InterruptedException e) {
+ //BOUH!
+ }
+
+ Campaign campaign = model.getCampaign();
+
+ CampaignStorage storage = CampaignStorages.getStorage(
+ config, campaign.getTopiaId());
+
+ //TODO
+
+ startTime = timeLog.log(startTime, "exportApplication",
+ "after Export execution");
+
+ switch (model.getCallback()) {
+
+ case NOTHING:
+ // nothing to do
+ break;
+ case REMOVE_FLIGHTS:
+ removeFlightData(model);
+ break;
+ case REMOVE_ALL:
+ removeAllData();
+ break;
+ }
+
+ timeLog.log(startTime, "exportApplication", "after Callback execution");
+
+ }
+
+ protected void removeFlightData(ExportApplicationModel model) {
+ if (logger.isInfoEnabled()) {
+ logger.info("Will remove flight data for campaign {}",
+ model.getCampaign().getCode());
+ }
+ }
+
+ protected void removeAllData() {
+ if (logger.isInfoEnabled()) {
+ logger.info("Will remove all data from current db (create a new db...)");
+ }
+ }
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Deleted: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfColumnModel.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfColumnModel.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfColumnModel.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -1,83 +0,0 @@
-package fr.ulr.sammoa.application.map;
-/*
- * #%L
- * SAMMOA :: Application
- * $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%
- */
-
-/**
- * Note: there is an existing {@link com.bbn.openmap.dataAccess.shape.DbfTableModelFactory.Column}
- * class.
- * <p/>
- * Created: 07/08/12
- *
- * @author fdesbois <florian.desbois(a)codelutin.com>
- */
-public class DbfColumnModel {
-
- protected String name;
-
- protected byte type;
-
- protected int length;
-
- protected byte decimalCount;
-
- protected int index;
-
- public DbfColumnModel(String name, byte type) {
- this.name = name;
- this.type = type;
- this.index = -1;
- }
-
- public String getName() {
- return name;
- }
-
- public byte getType() {
- return type;
- }
-
- public int getLength() {
- return length;
- }
-
- public void setLength(int length) {
- this.length = length;
- }
-
- public int getDecimalCount() {
- return decimalCount;
- }
-
- public void setDecimalCount(int decimalCount) {
- this.decimalCount = (byte) decimalCount;
- }
-
- public int getIndex() {
- return index;
- }
-
- public void setIndex(int index) {
- this.index = index;
- }
-}
Deleted: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfImport.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfImport.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfImport.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -1,129 +0,0 @@
-package fr.ulr.sammoa.application.map;
-/*
- * #%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%
- */
-
-import com.bbn.openmap.dataAccess.shape.DbfTableModel;
-import com.google.common.base.Throwables;
-import com.google.common.collect.Lists;
-import org.nuiton.util.csv.Import;
-import org.nuiton.util.csv.ImportModel;
-import org.nuiton.util.csv.ImportRuntimeException;
-import org.nuiton.util.csv.ImportableColumn;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.net.URL;
-import java.util.Iterator;
-import java.util.List;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * Created: 25/07/12
- *
- * @author fdesbois <desbois(a)codelutin.com>
- */
-public class DbfImport<E> extends Import<E> {
-
- private static final Logger logger = LoggerFactory.getLogger(DbfImport.class);
-
- protected DbfTableModel source;
-
- protected Iterator<List<Object>> records;
-
- protected List<Object> record;
-
- public DbfImport(ImportModel<E> model, URL fileUrl) {
- // Use dummy reader for superclass Import that manage by default csv files
- super(model, new Reader() {
-
- @Override
- public int read(char[] cbuf, int off, int len) throws IOException {
- return -1;
- }
-
- @Override
- public void close() throws IOException {
- }
- });
-
- try {
- // FIXME-fdesbois-2012-07-26 : there is an issue with encoding, don't know how to customize it
- this.source = DbfTableModel.read(fileUrl);
-
- } catch (Exception e) {
- throw Throwables.propagate(e);
- }
- this.records = source.getRecords();
- }
-
- @Override
- protected <T> String readValue(ImportableColumn<E, T> field, int lineNumber) {
- try {
-
- int columnNumber = source.getColumnIndexForName(field.getHeaderName());
-
- String value = String.valueOf(record.get(columnNumber));
-
- return value;
-
- } catch (Exception e) {
- throw new ImportRuntimeException(
- _("csv.import.error.unableToReadField",
- field.getHeaderName(), lineNumber), e);
- }
- }
-
- @Override
- public void close() {
- // nothing to do
- }
-
- @Override
- protected boolean readRow() throws ImportRuntimeException {
- boolean result;
- if (records.hasNext()) {
- record = records.next();
- if (logger.isTraceEnabled()) {
- logger.trace("Read record {}", record);
- }
- result = true;
-
- } else {
- result = false;
- }
- return result;
- }
-
- @Override
- protected String[] getHeaders() throws ImportRuntimeException {
- List<String> list = Lists.newArrayList();
- for (int index = 0; index < source.getColumnCount(); index++) {
- list.add(source.getColumnName(index));
- }
- return list.toArray(new String[list.size()]);
- }
-}
Deleted: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfTableModelBuilder.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfTableModelBuilder.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfTableModelBuilder.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -1,229 +0,0 @@
-package fr.ulr.sammoa.application.map;
-/*
- * #%L
- * SAMMOA :: Application
- * $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%
- */
-
-import com.bbn.openmap.dataAccess.shape.DbfTableModel;
-import com.google.common.base.Function;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Created: 07/08/12
- *
- * @author fdesbois <florian.desbois(a)codelutin.com>
- */
-public class DbfTableModelBuilder {
-
- /** Logger. */
- private static final Logger logger =
- LoggerFactory.getLogger(DbfTableModelBuilder.class);
-
- public static final int DEFAULT_STRING_LENGTH = 64;
-
- public static final int DEFAULT_INTEGER_LENGTH = 8;
-
- public static final String DATE_FORMAT_PATTERN = "yyyyMMdd";
-
- public static final DateFormat DATE_FORMAT = new SimpleDateFormat(DATE_FORMAT_PATTERN);
-
- protected List<DbfColumnModel> columns;
-
- protected Map<String, DbfColumnModel> columnMap;
-
- protected DbfTableModel model;
-
- public DbfTableModelBuilder() {
- columns = Lists.newArrayList();
- }
-
- public DbfTableModelBuilder dbfColumn(DbfColumnModel column) {
- if (column.getIndex() != -1) {
- columns.add(column.getIndex(), column);
- } else {
- column.setIndex(columns.size());
- columns.add(column);
- }
- return this;
- }
-
- public DbfColumnModel newStringColumn(String name) {
- DbfColumnModel result = new DbfColumnModel(name, DbfTableModel.TYPE_CHARACTER);
- result.setLength(DEFAULT_STRING_LENGTH);
- return result;
- }
-
- public DbfColumnModel newIntegerColumn(String name) {
- DbfColumnModel result = new DbfColumnModel(name, DbfTableModel.TYPE_NUMERIC);
- result.setLength(DEFAULT_INTEGER_LENGTH);
- return result;
- }
-
- public DbfColumnModel newDoubleColumn(String name, int length, int decimalCount) {
- DbfColumnModel result = new DbfColumnModel(name, DbfTableModel.TYPE_NUMERIC);
- result.setLength(length);
- result.setDecimalCount(decimalCount);
- return result;
- }
-
- public DbfColumnModel newTimestampColumn(String name) {
- DbfColumnModel result = new DbfColumnModel(name, DbfTableModel.TYPE_TIMESTAMP);
- return result;
- }
-
- public DbfColumnModel newDateColumn(String name) {
- DbfColumnModel result = new DbfColumnModel(name, DbfTableModel.TYPE_DATE);
- result.setLength(DATE_FORMAT_PATTERN.length());
- return result;
- }
-
- public DbfColumnModel newBooleanColumn(String name) {
- DbfColumnModel result = new DbfColumnModel(name, DbfTableModel.TYPE_LOGICAL);
- result.setLength(1);
- return result;
- }
-
- public DbfTableModelBuilder stringColumn(String name) {
- return dbfColumn(newStringColumn(name));
- }
-
- public DbfTableModelBuilder booleanColumn(String name) {
- return dbfColumn(newBooleanColumn(name));
- }
-
- public DbfTableModelBuilder integerColumn(String name) {
- return dbfColumn(newIntegerColumn(name));
- }
-
- public DbfTableModelBuilder doubleColumn(String name, int length, int decimalCount) {
- return dbfColumn(newDoubleColumn(name, length, decimalCount));
- }
-
- public DbfTableModelBuilder timestampColumn(String name) {
- return dbfColumn(newTimestampColumn(name));
- }
-
- public DbfTableModelBuilder dateColumn(String name) {
- return dbfColumn(newDateColumn(name));
- }
-
- public DbfTableModelBuilder build() {
- model = new DbfTableModel(columns.size());
- model.setWritable(true);
-
- for (int i = 0; i < columns.size(); i++) {
- DbfColumnModel columnModel = columns.get(i);
- model.setColumnName(i, columnModel.getName());
- model.setType(i, columnModel.getType());
- model.setLength(i, columnModel.getLength());
- model.setDecimalCount(i, (byte) columnModel.getDecimalCount());
- }
- columnMap = Maps.uniqueIndex(columns,
- new Function<DbfColumnModel, String>() {
-
- @Override
- public String apply(DbfColumnModel input) {
- return input.getName();
- }
- });
- return this;
- }
-
- public DbfTableModel getModel() {
- return model;
- }
-
- public void setValue(int rowIndex, String columnName, Object value) {
- Preconditions.checkState(model != null, "Model must be built before setting values");
-
- DbfColumnModel column = columnMap.get(columnName);
-
- int columnIndex = column.getIndex();
- value = cleanValue(value, column.getType());
- model.setValueAt(value, rowIndex, columnIndex);
- }
-
- public int addValues(Map<String, Object> values) {
- Preconditions.checkState(model != null, "Model must be built before adding values");
-
- model.addBlankRecord();
- int rowIndex = model.getRowCount() - 1;
- for (Map.Entry<String, Object> entry : values.entrySet()) {
- setValue(rowIndex, entry.getKey(), entry.getValue());
- }
- return rowIndex;
- }
-
- protected Object cleanValue(Object value, byte type) {
-
- Object result = value;
- if (DbfTableModel.isNumericalType(type)) {
-
- // FIX for Integer Format error in DbfTableModel#getStringForType
- if (value instanceof Integer) {
- result = Double.valueOf(String.valueOf(value));
- }
- } else if (DbfTableModel.TYPE_TIMESTAMP == type) {
-
- // FIX for Date : no format is done
- if (value instanceof Date) {
- Date date = (Date) value;
-
- result = DbfTimestampConverter.toString(date);
- }
- } else if (DbfTableModel.TYPE_DATE == type) {
-
- // FIX for Date : no format is done
- if (value instanceof Date) {
- Date date = (Date) value;
-
- result = DATE_FORMAT.format(date);
- }
- } else if (DbfTableModel.TYPE_LOGICAL == type) {
- result = ((Boolean) value) ? "T" : "F";
- } else if (value instanceof Enum) {
- result = ((Enum) value).name();
- } else if (value instanceof Character) {
- result = String.valueOf(value);
- }
-
- if (result != null &&
- !(result instanceof String) &&
- !(result instanceof Double)) {
- if (logger.isWarnEnabled()) {
- logger.warn("Incompatible data value {} (type {})", result, type);
- }
- }
- return result;
- }
-
-}
Deleted: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfTimestampConverter.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfTimestampConverter.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/DbfTimestampConverter.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -1,115 +0,0 @@
-package fr.ulr.sammoa.application.map;
-/*
- * #%L
- * SAMMOA :: Application
- * $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%
- */
-
-import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
-import org.nuiton.util.DateUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-
-/**
- * Created: 08/08/12
- *
- * @author fdesbois <florian.desbois(a)codelutin.com>
- */
-public final class DbfTimestampConverter {
-
- protected static final Long HOUR_MULT = 3600000L;
- protected static final Long MINUTE_MULT = 60000L;
- protected static final Long SECOND_MULT = 1000L;
-
-
- private static final Logger logger = LoggerFactory.getLogger(DbfTimestampConverter.class);
-
- private DbfTimestampConverter() {
- // static class
- }
-
- public static String toString(Date date) {
-
- Calendar calendar = new GregorianCalendar();
- calendar.setTime(date);
-
- Calendar refCalendar = getReferenceCalendar();
-
- long dateValue = DateUtil.getDifferenceInDays(refCalendar.getTime(), date);
- long timeValue = calendar.get(Calendar.HOUR_OF_DAY) * HOUR_MULT
- + calendar.get(Calendar.MINUTE) * MINUTE_MULT
- + calendar.get(Calendar.SECOND) * SECOND_MULT;
-
- String result = dateValue + " " + timeValue;
- return result;
- }
-
- public static Date toDate(String timestamp) {
- Preconditions.checkArgument(Strings.nullToEmpty(timestamp).trim().contains(" "),
- "A space is missing between the date and time values");
-
- String[] values = timestamp.split(" ");
-
- Long dateValue = Long.parseLong(values[0]);
- Long timeValue = Long.parseLong(values[1]);
-
- Calendar refCalendar = getReferenceCalendar();
-
- Calendar resultCalendar = new GregorianCalendar();
- resultCalendar.setTime(refCalendar.getTime());
-
- resultCalendar.add(Calendar.DATE, dateValue.intValue());
-
- Long hours = timeValue / HOUR_MULT;
- Long timeWithoutHours = timeValue - hours * HOUR_MULT;
- Long minutes = timeWithoutHours / MINUTE_MULT;
- Long seconds = (timeWithoutHours - minutes * MINUTE_MULT) / SECOND_MULT;
-
- resultCalendar.set(Calendar.HOUR_OF_DAY, hours.intValue());
- resultCalendar.set(Calendar.MINUTE, minutes.intValue());
- resultCalendar.set(Calendar.SECOND, seconds.intValue());
-
- if (logger.isDebugEnabled()) {
- logger.debug(String.format("DateValue=%d, TimeValue=%d, Hours=%d, Minutes=%d, Seconds=%d, Result=%s",
- dateValue,
- timeValue,
- hours,
- minutes,
- seconds,
- resultCalendar)
- );
- }
-
- return resultCalendar.getTime();
- }
-
- private static Calendar getReferenceCalendar() {
- Calendar result = new GregorianCalendar(4713, 0, 1);
- result.set(Calendar.ERA, GregorianCalendar.BC);
- return result;
- }
-
-}
Deleted: 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-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapModel.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -1,124 +0,0 @@
-package fr.ulr.sammoa.application.map;
-/*
- * #%L
- * SAMMOA :: Application
- * $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%
- */
-
-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 java.io.File;
-import java.io.Serializable;
-import java.util.Date;
-import java.util.List;
-
-/**
- * Model of export map.
- *
- * @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) {
- 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;
- return result;
- }
-
- protected Campaign campaign;
-
- protected Date beginDate;
-
- protected Date endDate;
-
- protected List<Strate> strates;
-
- protected List<RouteType> routeTypes;
-
- protected List<Species> species;
-
- 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;
- }
-
-}
Deleted: 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-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapService.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -1,799 +0,0 @@
-package fr.ulr.sammoa.application.map;
-/*
- * #%L
- * SAMMOA :: Application
- * $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%
- */
-
-import com.bbn.openmap.dataAccess.shape.DbfTableModel;
-import com.bbn.openmap.dataAccess.shape.EsriGraphicList;
-import com.bbn.openmap.dataAccess.shape.EsriPointList;
-import com.bbn.openmap.dataAccess.shape.EsriShapeExport;
-import com.bbn.openmap.omGraphics.OMGraphic;
-import com.bbn.openmap.omGraphics.OMPoint;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Maps;
-import fr.ulr.sammoa.application.FlightService;
-import fr.ulr.sammoa.application.SammoaConfig;
-import fr.ulr.sammoa.application.SammoaContext;
-import fr.ulr.sammoa.persistence.Campaign;
-import fr.ulr.sammoa.persistence.Flight;
-import fr.ulr.sammoa.persistence.GeoPoint;
-import fr.ulr.sammoa.persistence.GeoPoints;
-import fr.ulr.sammoa.persistence.Observation;
-import fr.ulr.sammoa.persistence.Observations;
-import fr.ulr.sammoa.persistence.ObserverPosition;
-import fr.ulr.sammoa.persistence.Position;
-import fr.ulr.sammoa.persistence.Region;
-import fr.ulr.sammoa.persistence.Route;
-import fr.ulr.sammoa.persistence.RouteType;
-import fr.ulr.sammoa.persistence.Routes;
-import fr.ulr.sammoa.persistence.SammoaPersistence;
-import fr.ulr.sammoa.persistence.Species;
-import fr.ulr.sammoa.persistence.Strate;
-import fr.ulr.sammoa.persistence.Transect;
-import fr.ulr.sammoa.persistence.TransectFlight;
-import org.nuiton.topia.TopiaContext;
-import org.nuiton.util.PeriodDates;
-import org.nuiton.util.TimeLog;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Export map service
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.5
- */
-public class ExportMapService {
-
- private static final Logger logger =
- LoggerFactory.getLogger(ExportMapService.class);
-
- private static final TimeLog timeLog = new TimeLog(ExportMapService.class);
-
- protected SammoaContext context;
-
- protected SammoaConfig config;
-
- protected SammoaPersistence persistence;
-
- protected DateFormat timeFormat;
-
- public ExportMapService(SammoaContext context) {
- this.context = context;
- this.persistence = context.getPersistence();
- this.config = context.getConfig();
- this.timeFormat = new SimpleDateFormat("HHmmss");
- }
-
- public void exportEffortsMap(ExportMapModel dataModel) {
- Preconditions.checkNotNull(dataModel.getCampaign());
- Preconditions.checkNotNull(dataModel.getBeginDate());
- Preconditions.checkNotNull(dataModel.getEndDate());
-
- if (logger.isInfoEnabled()) {
- logger.info("Start EffortsMap export to {} :: {}",
- dataModel.getExportDirectory(),
- dataModel.getExportFilename());
- }
-
- long startTime = TimeLog.getTime();
-
-
- // * 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
- DbfTableModelBuilder builder = new DbfTableModelBuilder()
- .stringColumn("REGION") // (region.code)
- .stringColumn("CAMPAIGN") // (campaign.code)
- .integerColumn("SECTOR") // * (route.transectFlight.transect.strate.sector.sectorNumber)
- .stringColumn("STRATE_TYPE") // * (route.transectFlight.transect.strate.strateType.code)
- .stringColumn("STRATE") // * (route.transectFlight.transect.strate.code)
- .stringColumn("TRANSECT") // * (route.transectFlight.transect.name)
- .integerColumn("PASSAGE") // * (route.transectFlight.crossingNumber)
- .integerColumn("FLIGHT") // (route.flight.flightNumber)
- .stringColumn("COMPUTER") // (route.flight.systemId)
- .stringColumn("ROUTE_TYPE") // (route.routeType.name)
- .stringColumn("EFFORT_GROUP") // * (voir doc)
- .stringColumn("EFFORT") // * (voir doc)
- .stringColumn("STATUS") // * (voir doc)
- .dateColumn("DATE") // (route.beginTime)
- .stringColumn("HHMMSS") // (format(route.beginTime, "HHmmss"))
- .integerColumn("SEA_STATE") // (route.seaState)
- .integerColumn("SWELL") // (route.swell)
- .integerColumn("TURBIDITY") // (route.turbidity)
- .integerColumn("SKY_GLINT") // (route.skyGlint)
- .stringColumn("GLARE_FROM") // (route.glareFrom)
- .stringColumn("GLARE_TO") // (route.glareTo)
- .integerColumn("GLARE_SEVERITY") // (route.glareSeverity)
- .booleanColumn("GLARE_UNDER") // (route.glareUnder)
- .integerColumn("CLOUD_COVER") // (route.cloudCover)
- .stringColumn("SUBJECTIVE") // (route.subjectiveConditions)
- .stringColumn("UNEXP_LEFT") // (route.unexpectedLeft)
- .stringColumn("UNEXP_RIGHT") // (route.unexpectedRight)
- .stringColumn("LEFT_REAR") // (route.observerPosition[FRONT_LEFT].observer.initials)
- .stringColumn("RIGHT_REAR") // (route.observerPosition[FRONT_RIGHT].observer.initials)
- .stringColumn("CENTER") // (route.observerPosition[NAVIGATOR].observer.initials)
- .stringColumn("CB_CAUSE") // ** ()
- .doubleColumn("LAT", 19, 11) // (geoPoint.latitude)
- .doubleColumn("LON", 19, 11) // (geoPoint.longitude)
- .doubleColumn("SPEED", 19, 11) // (geoPoint.speed)
- .doubleColumn("ALTITUDE", 19, 11) // (geoPoint.altitude)
- .stringColumn("GPS_TIME") // (format(geoPoint.recordTime, "HHmmss"))
- .stringColumn("AIRCRAFT") // (route.flight.immatriculation)
- .stringColumn("COMMENT") // (route.comment)
- .build();
-
- EsriGraphicList graphicList = new EsriPointList();
-
- FlightService flightService = context.getFlightService();
-
- Campaign campaign = dataModel.getCampaign();
- Region region = campaign.getRegion();
-
- List<RouteType> routeTypes = dataModel.getRouteTypes();
- List<Strate> strates = dataModel.getStrates();
-
- TopiaContext tx = context.getPersistence().beginTransaction();
-
- try {
- // get flights for campaign (and between begin - end date)
- Iterable<Flight> flights = flightService.getFlights(
- tx,
- campaign,
- dataModel.getBeginDate(),
- dataModel.getEndDate());
-
- // Export for each flight
- for (Flight flight : flights) {
-
- if (logger.isInfoEnabled()) {
- logger.info("Export Efforts from flight {} - {} - {} - {}",
- new Object[]{flight.getFlightNumber(),
- flight.getSystemId(),
- campaign.getCode(),
- region.getCode()}
- );
- }
-
- // common properties for the flight
- Map<String, Object> commonRecord = Maps.newHashMap();
- fillFlightRecord(campaign, region, flight, commonRecord);
-
- // get all routes of this flight
- List<Route> routes = flightService.getRoutes(tx, flight);
-
- // get all geo points for this flight
- List<GeoPoint> geoPoints = flightService.getFlightGeoPoints(tx, flight);
-
- // get best geo points for each route
- Iterable<GeoPoint> routeGeoPoints =
- GeoPoints.getClosestPoints(geoPoints, Routes.toDates(routes));
-
- // to iterate on geoPoints
- Iterator<GeoPoint> geoPointIterator = routeGeoPoints.iterator();
-
- // to keep current effort group identifier
- String effortGroup = null;
-
- Route previousRoute = null;
- for (Route route : routes) {
-
- if (logger.isTraceEnabled()) {
- logger.trace("Export Efforts from route {} - {}",
- new Object[]{route.getBeginTime(),
- route.getRouteType()}
- );
- }
-
- // get geoPoint associated with this route
- GeoPoint geoPoint = geoPointIterator.next();
-
- // is current route a leg ?
- boolean routeIsLeg = Routes.isRouteLeg(route);
-
- if (!routeIsLeg) {
-
- if (effortGroup != null) {
-
- // previous route was a leg
- // need to create a end row (to close the group)
-
- Map<String, Object> record = Maps.newHashMap();
- record.putAll(commonRecord);
-
- // add route data
- fillRouteRecord(flight,
- previousRoute,
- effortGroup,
- LegStatus.END,
- record);
-
- // add geoPoint data and flush
- fillGeoPointRecordAndFlush(geoPoint,
- record,
- builder,
- graphicList);
- }
-
- // reset effort group
- // will be recomputed by first next leg route
- effortGroup = null;
- }
-
- boolean routeIsValid = Routes.isRouteAccepted(route,
- routeTypes,
- strates);
-
- if (routeIsValid) {
-
- // selected route = one row on dbf
-
- Map<String, Object> record = Maps.newHashMap();
- record.putAll(commonRecord);
-
- LegStatus legStatus = null;
-
- if (routeIsLeg) {
-
- if (effortGroup == null) {
-
- // this is the first route of the leg group
- legStatus = LegStatus.BEGIN;
-
- // compute the unique effortGroup for this group
- effortGroup = computeEffortGroup(flight, route);
- } else {
-
- // group already began, just add a route to it
- legStatus = LegStatus.ADD;
- }
-
- }
-
- // add route data
- fillRouteRecord(flight,
- route,
- effortGroup,
- legStatus,
- record);
-
-
- // add geoPoint data and flush
- fillGeoPointRecordAndFlush(geoPoint,
- record,
- builder,
- graphicList);
- }
-
- // keep current route as previousroute
- previousRoute = route;
- }
- }
-
- startTime = timeLog.log(
- startTime,
- "exportEffortsMap",
- "after building EsriGraphicList and DbfTableModel");
-
- flushExport(builder, dataModel, graphicList);
-
- timeLog.log(startTime, "exportEffortsMap", "after EsriShapeExport execution");
- } finally {
- context.getPersistence().endTransaction(tx);
- }
- }
-
- public void exportObservationsMap(ExportMapModel dataModel) {
- Preconditions.checkNotNull(dataModel.getCampaign());
- Preconditions.checkNotNull(dataModel.getBeginDate());
- Preconditions.checkNotNull(dataModel.getEndDate());
-
- if (logger.isInfoEnabled()) {
- logger.info("Start ObservationsMap export to {} :: {}",
- dataModel.getExportDirectory(),
- dataModel.getExportFilename());
- }
- long startTime = TimeLog.getTime();
-
- // * uniquement pour un parcours de type LEG, sinon la cellule sera vide
- DbfTableModelBuilder builder = new DbfTableModelBuilder()
- .stringColumn("REGION") // (campaign.region.code)
- .stringColumn("CAMPAIGN") // (campaign.code)
- .integerColumn("SECTOR") // * (route.transectFlight.transect.strate.sector.sectorNumber)
- .stringColumn("STRATE_TYPE") // * (route.transectFlight.transect.strate.strateType.code)
- .stringColumn("STRATE") // * (route.transectFlight.transect.strate.code)
- .stringColumn("TRANSECT") // * (route.transectFlight.transect.name)
- .integerColumn("PASSAGE") // * (route.transectFlight.crossingNumber)
- .integerColumn("FLIGHT") // (route.flight.flightNumber)
- .stringColumn("COMPUTER") // (route.flight.systemId)
- .stringColumn("ROUTE_TYPE") // (route.routeType.name)
- .stringColumn("EFFORT_GROUP") // * (voir doc)
- .stringColumn("EFFORT") // * (voir doc)
- .stringColumn("OBSERVATION") // (voir doc)
- .dateColumn("DATE") // (observation.beginTime)
- .stringColumn("HHMMSS") // (format(observation.beginTime, "HHmmss"))
- .stringColumn("TAXON") // (observation.species.type)
- .stringColumn("GROUP") // (observation.species.groupName)
- .stringColumn("FAMILY") // (observation.species.family)
- .stringColumn("SPECIES") // (observation.species.code)
- .stringColumn("SPECIES_NAME") // (observation.species.commonName)
- .stringColumn("SPECIES_LATIN") // (observation.species.latinName)
- .integerColumn("POD_SIZE") // (observation.podSize)
- .stringColumn("AGE") // (observation.age)
- .integerColumn("DEC_ANGLE") // (observation.decAngle)
- .stringColumn("CUE") // (observation.cue)
- .stringColumn("BEHAVIOUR") // (observation.behaviour)
- .integerColumn("SWIM_DIR") // (observation.swimDir)
- .stringColumn("CALVES") // (observation.calves)
- .booleanColumn("PHOTO") // (observation.photo)
- .stringColumn("OBSERVER") // (observation.observerPosition.observer.initials)
- .stringColumn("SIDE") // (observation.observerPosition.observer.position.name)
- .stringColumn("STATUS") // (observation.observationStatus.name)
- .stringColumn("CB_CAUSE") // ** ()
- .doubleColumn("LAT", 19, 11) // (geoPoint.latitude)
- .doubleColumn("LON", 19, 11) // (geoPoint.longitude)
- .doubleColumn("SPEED", 19, 11) // (geoPoint.speed)
- .doubleColumn("ALTITUDE", 19, 11) // (geoPoint.altitude)
- .stringColumn("GPS_TIME") // (format(geoPoint.recordTime, "HHmmss"))
- .stringColumn("AIRCRAFT") // (flight.immatriculation)
- .stringColumn("COMMENT") // (observation.comment)
- .build();
-
- EsriGraphicList graphicList = new EsriPointList();
-
- Campaign campaign = dataModel.getCampaign();
- Region region = campaign.getRegion();
- List<RouteType> routeTypes = dataModel.getRouteTypes();
- List<Strate> strates = dataModel.getStrates();
-
- TopiaContext tx = context.getPersistence().beginTransaction();
-
- try {
- FlightService flightService = context.getFlightService();
-
- // get flights for campaign (and between begin - end date)
- Iterable<Flight> flights = flightService.getFlights(
- tx,
- campaign,
- dataModel.getBeginDate(),
- dataModel.getEndDate());
-
- // Export for each flight
-
- for (Flight flight : flights) {
-
- if (logger.isInfoEnabled()) {
- logger.info("Export Observations from flight {} - {} - {} - {}",
- new Object[]{flight.getFlightNumber(),
- flight.getSystemId(),
- campaign.getCode(),
- region.getCode()}
- );
- }
-
- // get all observations for this flight
- List<Observation> observations =
- flightService.getObservations(tx, flight);
-
- // apply species filter
- Observations.removeOtherSpecies(observations,
- dataModel.getSpecies());
-
- // get all routes of this flight
- List<Route> routes = flightService.getRoutes(tx, flight);
-
- // get all geo points for this flight
- List<GeoPoint> routeGeoPoints =
- flightService.getFlightGeoPoints(tx, flight);
-
- Map<String, Object> flightRecord = Maps.newHashMap();
- fillFlightRecord(campaign, region, flight, flightRecord);
-
- int nextRouteIndex = 0;
- int nbRoutes = routes.size();
- String effortGroup = null;
-
- for (Route route : routes) {
-
- if (logger.isDebugEnabled()) {
- logger.debug("Export Observations from route {} - {} (flight end time {})",
- new Object[]{route.getBeginTime(),
- route.getRouteType(),
- flight.getEndDate()}
- );
- }
- nextRouteIndex++;
-
- boolean routeIsLeg = Routes.isRouteLeg(route);
-
- if (!routeIsLeg) {
-
- // new group will be computed at next leg route
- effortGroup = null;
- }
-
- // compute route period
- Date beginTime = route.getBeginTime();
- Date routeEndTime;
-
- if (nextRouteIndex < nbRoutes) {
-
- // use next route begin time
- Route nextRoute = routes.get(nextRouteIndex);
- routeEndTime = nextRoute.getBeginTime();
- } else {
-
- // use flight end date
- routeEndTime = flight.getEndDate();
- }
- if (routeEndTime != null) {
- Preconditions.checkState(routeEndTime.after(beginTime),
- String.format("Route debut de route %s - fin de route %s", beginTime, routeEndTime));
- }
-
- PeriodDates routePeriod =
- new PeriodDates(beginTime, routeEndTime);
-
- // Get observations for this route
- List<Observation> routeObservations =
- Observations.retainsObservations(observations,
- routePeriod);
-
- if (logger.isDebugEnabled()) {
- logger.debug("Export Observations from route {} [{}-{}] nb observations {}",
- new Object[]{beginTime,
- routeEndTime,
- routeObservations.size()}
- );
- }
- if (!Routes.isRouteAccepted(route, routeTypes, strates)) {
-
- // not selected route
- continue;
- }
-
- Map<String, Object> routeRecord = Maps.newHashMap();
- routeRecord.putAll(flightRecord);
-
- if (routeIsLeg && effortGroup == null) {
-
- // compute effort group id
- effortGroup = computeEffortGroup(flight, route);
- }
-
- fillRouteTypeRecord(flight, route, effortGroup, routeRecord);
-
- // get best geo points for each observation
- Iterable<GeoPoint> observationGeoPoints =
- GeoPoints.getClosestPoints(
- routeGeoPoints,
- Observations.toDates(routeObservations));
-
- // to iterate on geoPoints
- Iterator<GeoPoint> geoPointIterator =
- observationGeoPoints.iterator();
-
- for (Observation observation : routeObservations) {
-
- Map<String, Object> record = Maps.newHashMap();
- record.putAll(routeRecord);
-
- String observationId = computeObservationId(flight, observation);
- record.put("OBSERVATION", observationId);
-
- fillDateRecord(observation.getObservationTime(), record);
-
- Species species = observation.getSpecies();
- if (species != null) {
- record.put("TAXON", species.getType());
- record.put("GROUP", species.getGroupName());
- record.put("FAMILY", species.getFamily());
- record.put("SPECIES", species.getCode());
- record.put("SPECIES_NAME", species.getCommonName());
- record.put("SPECIES_LATIN", species.getLatinName());
- }
- record.put("POD_SIZE", observation.getPodSize());
- record.put("AGE", observation.getAge());
- record.put("DEC_ANGLE", observation.getDecAngle());
- record.put("CUE", observation.getCue());
- record.put("BEHAVIOUR", observation.getBehaviour());
- record.put("SWIM_DIR", observation.getSwimDir());
- record.put("CALVES", observation.getCalves());
- record.put("PHOTO", observation.isPhoto());
- record.put("OBSERVER", observation.getObserverPosition().getObserver().getInitials());
- record.put("SIDE", observation.getObserverPosition().getPosition());
- record.put("STATUS", observation.getObservationStatus());
- record.put("COMMENT", observation.getComment());
-
- GeoPoint geoPoint = geoPointIterator.next();
-
- // add geoPoint data and flush
- fillGeoPointRecordAndFlush(geoPoint,
- record,
- builder,
- graphicList);
-
- }
- }
- }
-
- startTime = timeLog.log(startTime, "exportObservationsMap", "after building EsriGraphicList and DbfTableModel");
-
- flushExport(builder, dataModel, graphicList);
-
- timeLog.log(startTime, "exportObservationsMap", "after EsriShapeExport execution");
- } finally {
- context.getPersistence().endTransaction(tx);
- }
- }
-
- public void exportGeoPointsMap(ExportMapModel dataModel) {
-
- Preconditions.checkNotNull(dataModel.getCampaign());
- Preconditions.checkNotNull(dataModel.getBeginDate());
- Preconditions.checkNotNull(dataModel.getEndDate());
-
- if (logger.isInfoEnabled()) {
- logger.info("Start GeoPointsMap export to {} :: {}",
- dataModel.getExportDirectory(),
- dataModel.getExportFilename());
- }
-
- long startTime = TimeLog.getTime();
-
- DbfTableModelBuilder builder = new DbfTableModelBuilder()
- .stringColumn("REGION")
- .stringColumn("CAMPAIGN")
- .integerColumn("FLIGHT")
- .stringColumn("COMPUTER")
- .stringColumn("AIRCRAFT")
- .dateColumn("DATE")
- .stringColumn("HHMMSS")
- .doubleColumn("LAT", 19, 11)
- .doubleColumn("LON", 19, 11)
- .doubleColumn("SPEED", 19, 11)
- .doubleColumn("ALTITUDE", 19, 11)
- .build();
-
- Campaign campaign = dataModel.getCampaign();
- Region region = campaign.getRegion();
-
- FlightService flightService = context.getFlightService();
-
- // get flights for campaign (and between begin - end date)
- Iterable<Flight> flights = flightService.getFlights(campaign,
- dataModel.getBeginDate(),
- dataModel.getEndDate());
-
- EsriGraphicList graphicList = new EsriPointList();
-
- // Export for each flight
- for (Flight flight : flights) {
-
- if (logger.isInfoEnabled()) {
- logger.info("Export GeoPoints from flight {} - {} - {} - {}",
- new Object[]{flight.getFlightNumber(),
- flight.getSystemId(),
- campaign.getCode(),
- region.getCode()}
- );
- }
-
- List<GeoPoint> geoPoints =
- flightService.getFlightGeoPoints(flight);
-
- Map<String, Object> commonRecord = Maps.newHashMap();
- fillFlightRecord(campaign, region, flight, commonRecord);
-
- // One record by GeoPoint
- for (GeoPoint geoPoint : geoPoints) {
-
- Map<String, Object> record = Maps.newHashMap();
- record.putAll(commonRecord);
-
- fillDateRecord(geoPoint.getRecordTime(), record);
-
- // add geoPoint data and flush
- fillGeoPointRecordAndFlush(geoPoint,
- record,
- builder,
- graphicList);
- }
- }
-
- startTime = timeLog.log(startTime, "exportGeoPointsMap",
- "after building EsriGraphicList and DbfTableModel");
-
- flushExport(builder, dataModel, graphicList);
-
- timeLog.log(startTime, "exportGeoPointsMap",
- "after EsriShapeExport execution");
- }
-
- protected void flushExport(DbfTableModelBuilder builder,
- ExportMapModel dataModel,
- EsriGraphicList graphicList) {
-
- DbfTableModel tableModel = builder.getModel();
- String pathFile = new File(dataModel.getExportDirectory(),
- dataModel.getExportFilename()).getAbsolutePath();
- EsriShapeExport shapeExport = new EsriShapeExport(graphicList, tableModel, pathFile);
- shapeExport.export();
- }
-
- protected void fillDateRecord(Date date, Map<String, Object> record) {
- record.put("DATE", date);
- record.put("HHMMSS", timeFormat.format(date));
- }
-
- protected void fillGeoPointRecordAndFlush(GeoPoint geoPoint,
- Map<String, Object> record,
- DbfTableModelBuilder builder,
- EsriGraphicList graphicList) {
-
- record.put("LAT", geoPoint.getLatitude());
- record.put("LON", geoPoint.getLongitude());
- record.put("SPEED", geoPoint.getSpeed());
- record.put("ALTITUDE", geoPoint.getAltitude());
-
- builder.addValues(record);
-
- if (logger.isTraceEnabled()) {
- logger.trace("Record={}", record);
- }
-
- OMGraphic graphic = new OMPoint(geoPoint.getLatitude(),
- geoPoint.getLongitude());
- graphicList.add(graphic);
- }
-
- protected void fillFlightRecord(Campaign campaign,
- Region region,
- Flight flight,
- Map<String, Object> record) {
-
- record.put("REGION", region.getCode());
- record.put("CAMPAIGN", campaign.getCode());
- record.put("FLIGHT", flight.getFlightNumber());
- record.put("AIRCRAFT", flight.getImmatriculation());
- record.put("COMPUTER", flight.getSystemId());
- }
-
- protected void fillRouteRecord(Flight flight,
- Route route,
- String effortGroup,
- LegStatus legStatus,
- Map<String, Object> record) {
-
- if (logger.isTraceEnabled()) {
- logger.trace("Create Route record for route {} - {}",
- new Object[]{route.getBeginTime(),
- route.getRouteType()}
- );
- }
-
- fillDateRecord(route.getBeginTime(), record);
- fillRouteTypeRecord(flight, route, effortGroup, record);
-
- if (legStatus != null) {
- record.put("STATUS", legStatus);
- }
- record.put("COMMENT", route.getComment());
- record.put("SEA_STATE", route.getSeaState());
- record.put("SWELL", route.getSwell());
- record.put("TURBIDITY", route.getTurbidity());
- record.put("SKY_GLINT", route.getSkyGlint());
- if (route.getGlareFrom() != null) {
- record.put("GLARE_FROM", String.valueOf(route.getGlareFrom()));
- }
- if (route.getGlareTo() != null) {
- record.put("GLARE_TO", String.valueOf(route.getGlareTo()));
- }
- record.put("GLARE_SEVERITY", route.getGlareSeverity());
- record.put("GLARE_UNDER", route.isGlareUnder());
- record.put("CLOUD_COVER", route.getCloudCover());
- record.put("SUBJECTIVE", route.getSubjectiveConditions());
- record.put("UNEXP_LEFT", route.getUnexpectedLeft());
- record.put("UNEXP_RIGHT", route.getUnexpectedRight());
-
- ObserverPosition observerPositionByPosition =
- route.getObserverPositionByPosition(Position.FRONT_LEFT);
- if (observerPositionByPosition != null && observerPositionByPosition.getObserver() != null) {
- record.put("LEFT_REAR", observerPositionByPosition.getObserver().getInitials());
- }
- observerPositionByPosition =
- route.getObserverPositionByPosition(Position.FRONT_RIGHT);
- if (observerPositionByPosition != null && observerPositionByPosition.getObserver() != null) {
- record.put("RIGHT_REAR", observerPositionByPosition.getObserver().getInitials());
- }
- observerPositionByPosition =
- route.getObserverPositionByPosition(Position.NAVIGATOR);
- if (observerPositionByPosition != null && observerPositionByPosition.getObserver() != null) {
- record.put("CENTER", observerPositionByPosition.getObserver().getInitials());
- }
- }
-
- protected void fillRouteTypeRecord(Flight flight,
- Route route,
- String effortGroup,
- Map<String, Object> record) {
-
- record.put("ROUTE_TYPE", route.getRouteType());
- if (Routes.isRouteLeg(route)) {
- fillLegRouteRecord(route, effortGroup, record);
- }
-
- if (Routes.isRouteCircleBack(route)) {
-
- // compute circle back cause
- String circleBackCause = computeObservationId(flight, route.getCircleBackCause());
- record.put("CB_CAUSE", circleBackCause);
- }
- }
-
- protected void fillLegRouteRecord(Route route,
- String effortGroup,
- Map<String, Object> record) {
-
- TransectFlight transectFlight = route.getTransectFlight();
- Transect transect = transectFlight.getTransect();
- Strate strate = transect.getStrate();
-
- String effort = computeEffort(route);
-
- record.put("SECTOR", strate.getSector().getSectorNumber());
- record.put("STRATE_TYPE", strate.getStrateType().getCode());
- record.put("STRATE", strate.getCode());
- record.put("TRANSECT", transect.getName());
- record.put("PASSAGE", transectFlight.getCrossingNumber());
- record.put("EFFORT_GROUP", effortGroup);
- record.put("EFFORT", effort);
- }
-
- protected String computeEffort(Route route) {
- String result = "L" + route.getEffortNumber() + "-" +
- route.getFlight().getFlightNumber() + "-" +
- route.getFlight().getSystemId();
- return result;
- }
-
- protected String computeEffortGroup(Flight flight, Route route) {
- String result = "G" + route.getEffortNumber() + "-" +
- flight.getFlightNumber() + "-" +
- flight.getSystemId();
- return result;
- }
-
- protected String computeObservationId(Flight flight, Observation observation) {
- return "O" + observation.getObservationNumber() + "-" +
- flight.getFlightNumber() + "-" +
- flight.getSystemId();
- }
-}
Deleted: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/LegStatus.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/LegStatus.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/LegStatus.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -1,39 +0,0 @@
-package fr.ulr.sammoa.application.map;
-/*
- * #%L
- * SAMMOA :: Application
- * $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%
- */
-
-/**
- * TODO
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.5
- */
-public enum LegStatus {
- BEGIN,
- ADD, END;
-
- public String getName() {
- return name();
- }
-}
Modified: trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/FlightServiceTest.java
===================================================================
--- trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/FlightServiceTest.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/FlightServiceTest.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -25,7 +25,20 @@
package fr.ulr.sammoa.application;
import com.google.common.collect.Lists;
-import fr.ulr.sammoa.persistence.*;
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.Flight;
+import fr.ulr.sammoa.persistence.Observer;
+import fr.ulr.sammoa.persistence.ObserverDAO;
+import fr.ulr.sammoa.persistence.SammoaDAOHelper;
+import fr.ulr.sammoa.persistence.SammoaDatabase;
+import fr.ulr.sammoa.persistence.Sector;
+import fr.ulr.sammoa.persistence.SectorDAO;
+import fr.ulr.sammoa.persistence.Strate;
+import fr.ulr.sammoa.persistence.StrateDAO;
+import fr.ulr.sammoa.persistence.StrateType;
+import fr.ulr.sammoa.persistence.Transect;
+import fr.ulr.sammoa.persistence.TransectDAO;
+import fr.ulr.sammoa.persistence.TransectFlight;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
@@ -34,23 +47,23 @@
/**
* Created: 08/06/12
- *
+ * <p/>
* FIXME-fdesbois-2012-07-03 : This test is ignored, waiting for a more stable AutoCommitSaver
*
* @author fdesbois <desbois(a)codelutin.com>
*/
public class FlightServiceTest {
-
+
public SammoaConfig config =
new SammoaConfig("sammoa-test.properties");
-
+
@Rule
public SammoaDatabase database = new SammoaDatabase("/" +
- config.getApplicationConfig().getConfigFileName(), config.getAutoCommitDelay());
+ config.getApplicationConfig().getConfigFileName(), config.getAutoCommitDelay());
@Test
public void testCreateFlight() throws Exception {
-
+
SammoaContext context = new SammoaContext(config, database.getPersistence());
FlightService service = new FlightService(context);
@@ -64,12 +77,12 @@
Assert.assertEquals(18, flight1.getFlightNumber());
}
-
+
@Test
public void testAddTransects() throws Exception {
SammoaContext context = new SammoaContext(config, database.getPersistence());
-
+
FlightService service = new FlightService(context);
ReferentialService referential = new ReferentialService(context);
@@ -77,7 +90,7 @@
// Create the strate
Strate strate = createStrate(campaign, 1, StrateType.COAST);
-
+
Flight flight = service.createFlight(campaign);
// add 4 observers in flight
@@ -93,7 +106,7 @@
Iterable<Transect> transects = Lists.newArrayList(transect1, transect2);
service.addTransects(flight, 0, transects);
-
+
Assert.assertEquals(2, flight.getTransectFlight().size());
TransectFlight transectFlight1 = flight.getTransectFlight().get(0);
Assert.assertEquals(transect1, transectFlight1.getTransect());
Deleted: trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/ReferentialServiceTest.java
===================================================================
--- trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/ReferentialServiceTest.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/ReferentialServiceTest.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -1,76 +0,0 @@
-package fr.ulr.sammoa.application;
-/*
- * #%L
- * SAMMOA :: Application
- * $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%
- */
-
-import fr.ulr.sammoa.persistence.Campaign;
-import fr.ulr.sammoa.persistence.Observer;
-import fr.ulr.sammoa.persistence.ObserverDAO;
-import fr.ulr.sammoa.persistence.SammoaDAOHelper;
-import fr.ulr.sammoa.persistence.SammoaDatabase;
-import org.junit.Rule;
-import org.junit.Test;
-import org.nuiton.topia.TopiaContext;
-
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.Collection;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * Created: 09/07/12
- *
- * @author fdesbois <desbois(a)codelutin.com>
- */
-public class ReferentialServiceTest {
-
- public SammoaConfig config =
- new SammoaConfig("sammoa-test.properties");
-
- @Rule
- public SammoaDatabase database = new SammoaDatabase("/" +
- config.getApplicationConfig().getConfigFileName(), config.getAutoCommitDelay());
-
- @Test
- public void testImportObservers() throws Exception {
-
- SammoaContext context = new SammoaContext(config, database.getPersistence());
-
- ReferentialService instance = new ReferentialService(context);
-
- Campaign campaign = database.createCampaign("PACOMM-2012", "FRANCE");
-
- InputStream stream = getClass().getResourceAsStream("/observers.csv");
-
- int result = instance.importObservers(campaign.getTopiaId(), new InputStreamReader(stream));
-
- TopiaContext transaction = database.beginTransaction();
- ObserverDAO dao = SammoaDAOHelper.getObserverDAO(transaction);
- Collection<Observer> observers = dao.findAll();
- database.endTransaction(transaction);
-
- assertEquals(7, result);
- assertEquals(result, observers.size());
- }
-}
Added: trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvServiceTest.java
===================================================================
--- trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvServiceTest.java (rev 0)
+++ trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvServiceTest.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,59 @@
+package fr.ulr.sammoa.application.io.input.csv;
+
+import fr.ulr.sammoa.application.SammoaConfig;
+import fr.ulr.sammoa.application.SammoaContext;
+import fr.ulr.sammoa.application.io.input.csv.ImportCsvService;
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.Observer;
+import fr.ulr.sammoa.persistence.ObserverDAO;
+import fr.ulr.sammoa.persistence.SammoaDAOHelper;
+import fr.ulr.sammoa.persistence.SammoaDatabase;
+import org.junit.Rule;
+import org.junit.Test;
+import org.nuiton.topia.TopiaContext;
+
+import java.io.File;
+import java.net.URL;
+import java.util.Collection;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * To test {@link ImportCsvService}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class ImportCsvServiceTest {
+
+ public SammoaConfig config =
+ new SammoaConfig("sammoa-test.properties");
+
+ @Rule
+ public SammoaDatabase database = new SammoaDatabase(
+ "/" + config.getApplicationConfig().getConfigFileName(),
+ config.getAutoCommitDelay());
+
+ @Test
+ public void importObservers() throws Exception {
+
+ SammoaContext context = new SammoaContext(config, database.getPersistence());
+
+ ImportCsvService instance = new ImportCsvService(context);
+
+ Campaign campaign = database.createCampaign("PACOMM-2012", "FRANCE");
+
+ URL stream = getClass().getResource("/observers.csv");
+
+ int result = instance.importObservers(campaign.getTopiaId(),
+ new File(stream.toURI()));
+
+ TopiaContext transaction = database.beginTransaction();
+ ObserverDAO dao = SammoaDAOHelper.getObserverDAO(transaction);
+ Collection<Observer> observers = dao.findAll();
+ database.endTransaction(transaction);
+
+ assertEquals(7, result);
+ assertEquals(result, observers.size());
+ }
+}
Property changes on: trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/io/input/csv/ImportCsvServiceTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/map/DbfTimestampConverterTest.java (from rev 413, trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/map/DbfTimestampConverterTest.java)
===================================================================
--- trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/map/DbfTimestampConverterTest.java (rev 0)
+++ trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/map/DbfTimestampConverterTest.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,56 @@
+package fr.ulr.sammoa.application.output.map;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+import fr.ulr.sammoa.application.io.output.map.DbfTimestampConverter;
+import junit.framework.Assert;
+import org.junit.Test;
+import org.nuiton.util.DateUtil;
+
+import java.util.Date;
+
+/**
+ * Created: 08/08/12
+ *
+ * @author fdesbois <florian.desbois(a)codelutin.com>
+ */
+public class DbfTimestampConverterTest {
+
+ @Test
+ public void testToString() throws Exception {
+
+ Date date = DateUtil.createDate(52, 2, 19, 5, 3, 2007);
+ String result = DbfTimestampConverter.toString(date);
+// Assert.assertEquals(result, "2454488 68572000");
+ Assert.assertEquals(result, "2454165 68572000");
+ }
+
+ @Test
+ public void testToDate() throws Exception {
+
+ Date expected = DateUtil.createDate(52, 2, 19, 5, 3, 2007);
+ Date result = DbfTimestampConverter.toDate("2454165 68572000");
+ Assert.assertEquals(expected, result);
+ }
+}
Property changes on: trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/map/DbfTimestampConverterTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/map/ExportMapServiceTest.java (from rev 413, trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/map/ExportMapServiceTest.java)
===================================================================
--- trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/map/ExportMapServiceTest.java (rev 0)
+++ trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/map/ExportMapServiceTest.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,250 @@
+package fr.ulr.sammoa.application.output.map;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+import com.google.common.collect.Lists;
+import fr.ulr.sammoa.application.FlightService;
+import fr.ulr.sammoa.application.SammoaConfig;
+import fr.ulr.sammoa.application.SammoaContext;
+import fr.ulr.sammoa.application.io.input.map.DoubleToIntegerValueParser;
+import fr.ulr.sammoa.application.io.output.map.DbfImport;
+import fr.ulr.sammoa.application.io.output.map.DbfTableModelBuilder;
+import fr.ulr.sammoa.application.io.output.map.ExportMapModel;
+import fr.ulr.sammoa.application.io.output.map.ExportMapService;
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.CampaignImpl;
+import fr.ulr.sammoa.persistence.Flight;
+import fr.ulr.sammoa.persistence.FlightImpl;
+import fr.ulr.sammoa.persistence.GeoPoint;
+import fr.ulr.sammoa.persistence.GeoPointDAO;
+import fr.ulr.sammoa.persistence.GeoPointImpl;
+import fr.ulr.sammoa.persistence.Region;
+import fr.ulr.sammoa.persistence.RegionImpl;
+import fr.ulr.sammoa.persistence.SammoaDAOHelper;
+import fr.ulr.sammoa.persistence.SammoaDatabase;
+import junit.framework.Assert;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.util.DateUtil;
+import org.nuiton.util.csv.Common;
+import org.nuiton.util.csv.ImportModel;
+import org.nuiton.util.csv.ImportableColumn;
+import org.nuiton.util.csv.ModelBuilder;
+import org.nuiton.util.csv.ValueSetter;
+
+import java.io.File;
+import java.net.URL;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Created: 08/08/12
+ *
+ * @author fdesbois <florian.desbois(a)codelutin.com>
+ */
+public class ExportMapServiceTest {
+
+ public SammoaConfig config =
+ new SammoaConfig("sammoa-test.properties");
+
+ @Rule
+ public SammoaDatabase database = new SammoaDatabase("/" +
+ config.getApplicationConfig().getConfigFileName(), config.getAutoCommitDelay());
+
+ protected TopiaContext transaction;
+
+ @Before
+ public void setUp() throws TopiaException {
+ transaction = database.beginTransaction();
+ }
+
+ @After
+ public void tearDown() throws TopiaException {
+ database.endTransaction(transaction);
+ }
+
+ @Test
+ public void testExportGeoPointsMap() throws Exception {
+
+ SammoaContext context = new SammoaContext(config, database.getPersistence());
+
+ Campaign campaign = database.createCampaign("PACOMM", "FRANCE");
+ campaign.setBeginDate(DateUtil.createDate(1, 1, 2012));
+ campaign.setEndDate(DateUtil.createDate(31, 12, 2012));
+
+ FlightService flightService = new FlightService(context);
+ Flight flight = flightService.createFlight(campaign);
+
+ flight.setBeginDate(DateUtil.createDate(18, 0, 12, 18, 7, 2012));
+
+ createGeoPoint(DateUtil.createDate(30, 15, 12, 18, 7, 2012), 1, 2, flight);
+ createGeoPoint(DateUtil.createDate(39, 18, 12, 18, 7, 2012), 3, 4, flight);
+
+ transaction.commitTransaction();
+
+ ExportMapService exportMapService = new ExportMapService(context);
+
+ File exportDirectory = database.getTestBasedir();
+
+ ExportMapModel exportMapModel = ExportMapModel.newModel(
+ exportDirectory,
+ "export-geoPoints.shp",
+ campaign,
+ campaign.getBeginDate(),
+ campaign.getEndDate(),
+ null,
+ null,
+ null
+ );
+
+ exportMapService.exportGeoPointsMap(exportMapModel);
+
+ Assert.assertTrue(new File(exportDirectory, "export-geoPoints.shp").exists());
+ Assert.assertTrue(new File(exportDirectory, "export-geoPoints.dbf").exists());
+ Assert.assertTrue(new File(exportDirectory, "export-geoPoints.shx").exists());
+
+ URL fileUrl = new File(exportDirectory, "export-geoPoints.dbf").toURI().toURL();
+ DbfImport<GeoPoint> dbfImport = new DbfImport<GeoPoint>(new GeoPointImportModel(), fileUrl);
+
+ List<GeoPoint> results = Lists.newArrayList(dbfImport);
+
+ Assert.assertEquals(2, results.size());
+ {
+ GeoPoint result = results.get(0);
+ Flight resultFlight = result.getFlight();
+ Campaign resultCampaign = resultFlight.getCampaign();
+ Region resultRegion = resultCampaign.getRegion();
+ Assert.assertEquals("FRANCE", resultRegion.getCode());
+ Assert.assertEquals("PACOMM", resultCampaign.getCode());
+ Assert.assertEquals(1, resultFlight.getFlightNumber());
+ Assert.assertEquals("A", resultFlight.getSystemId());
+ Assert.assertEquals(DateUtil.createDate(30, 15, 12, 18, 7, 2012), result.getRecordTime());
+ Assert.assertEquals(1., result.getLatitude());
+ Assert.assertEquals(2., result.getLongitude());
+ Assert.assertEquals(0., result.getAltitude());
+ Assert.assertEquals(0., result.getSpeed());
+ }
+ {
+ GeoPoint result = results.get(1);
+ Flight resultFlight = result.getFlight();
+ Campaign resultCampaign = resultFlight.getCampaign();
+ Region resultRegion = resultCampaign.getRegion();
+ Assert.assertEquals("FRANCE", resultRegion.getCode());
+ Assert.assertEquals("PACOMM", resultCampaign.getCode());
+ Assert.assertEquals(1, resultFlight.getFlightNumber());
+ Assert.assertEquals("A", resultFlight.getSystemId());
+ Assert.assertEquals(DateUtil.createDate(39, 18, 12, 18, 7, 2012), result.getRecordTime());
+ Assert.assertEquals(3., result.getLatitude());
+ Assert.assertEquals(4., result.getLongitude());
+ Assert.assertEquals(0., result.getAltitude());
+ Assert.assertEquals(0., result.getSpeed());
+ }
+ }
+
+ protected GeoPoint createGeoPoint(Date date,
+ double latitude,
+ double longitude,
+ Flight flight)
+ throws TopiaException {
+
+ GeoPointDAO transectDAO = SammoaDAOHelper.getGeoPointDAO(transaction);
+ GeoPoint result = transectDAO.create();
+ result.setRecordTime(date);
+ result.setLatitude(latitude);
+ result.setLongitude(longitude);
+ result.setFlight(flight);
+
+ return result;
+ }
+
+ protected class GeoPointImportModel implements ImportModel<GeoPoint> {
+
+ @Override
+ public char getSeparator() {
+ return ' ';
+ }
+
+ @Override
+ public void pushCsvHeaderNames(List<String> headerNames) {
+ }
+
+ @Override
+ public GeoPoint newEmptyInstance() {
+ Region region = new RegionImpl();
+ Campaign campaign = new CampaignImpl();
+ campaign.setRegion(region);
+ Flight flight = new FlightImpl();
+ flight.setCampaign(campaign);
+ GeoPoint result = new GeoPointImpl();
+ result.setFlight(flight);
+ return result;
+ }
+
+ @Override
+ public Iterable<ImportableColumn<GeoPoint, Object>> getColumnsForImport() {
+ ModelBuilder builder = new ModelBuilder();
+ builder.newMandatoryColumn("REGION", "flight.campaign.region.code");
+ builder.newMandatoryColumn("AIRCRAFT", "flight.immatriculation");
+ builder.newMandatoryColumn("CAMPAIGN", "flight.campaign.code");
+ builder.newMandatoryColumn("FLIGHT", "flight.flightNumber", new DoubleToIntegerValueParser());
+ builder.newMandatoryColumn("COMPUTER", "flight.systemId");
+ builder.newMandatoryColumn("DATE", "recordTime", new Common.DateValue(DbfTableModelBuilder.DATE_FORMAT_PATTERN));
+ builder.newMandatoryColumn("HHMMSS", new Common.DateValue("HHmmss"), new GeoPointTimeValueSetter());
+ builder.newMandatoryColumn("LAT", "latitude", Common.DOUBLE_PRIMITIVE);
+ builder.newMandatoryColumn("LON", "longitude", Common.DOUBLE_PRIMITIVE);
+ builder.newMandatoryColumn("SPEED", "speed", Common.DOUBLE_PRIMITIVE);
+ builder.newMandatoryColumn("ALTITUDE", "altitude", Common.DOUBLE_PRIMITIVE);
+ return builder.getColumnsForImport();
+ }
+ }
+
+ protected class GeoPointTimeValueSetter implements ValueSetter<GeoPoint, Date> {
+
+ @Override
+ public void set(GeoPoint object, Date value) throws Exception {
+ Date recordTime = object.getRecordTime();
+// if (recordTime != null) {
+ Calendar resultCalendar = Calendar.getInstance();
+ resultCalendar.setTime(recordTime);
+
+ Calendar valueCalendar = Calendar.getInstance();
+ valueCalendar.setTime(value);
+ resultCalendar.set(Calendar.HOUR_OF_DAY, valueCalendar.get(Calendar.HOUR_OF_DAY));
+ resultCalendar.set(Calendar.MINUTE, valueCalendar.get(Calendar.MINUTE));
+ resultCalendar.set(Calendar.SECOND, valueCalendar.get(Calendar.SECOND));
+
+ object.setRecordTime(resultCalendar.getTime());
+
+// } else {
+// object.setRecordTime(value);
+// }
+ }
+
+ }
+}
Property changes on: trunk/sammoa-application/src/test/java/fr/ulr/sammoa/application/output/map/ExportMapServiceTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
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-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -35,8 +35,8 @@
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.exportApplication.ExportApplicationUI;
-import fr.ulr.sammoa.ui.swing.io.exportMap.ExportMapUI;
+import fr.ulr.sammoa.ui.swing.io.output.sammoa.ExportApplicationUI;
+import fr.ulr.sammoa.ui.swing.io.output.map.ExportMapUI;
import fr.ulr.sammoa.ui.swing.util.SammoaUtil;
import jaxx.runtime.SwingUtil;
import jaxx.runtime.swing.AboutPanel;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUIHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUIHandler.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/campaign/CampaignUIHandler.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -24,8 +24,13 @@
package fr.ulr.sammoa.ui.swing.campaign;
import fr.ulr.sammoa.application.ReferentialService;
-import fr.ulr.sammoa.application.csv.StrateImportModel;
-import fr.ulr.sammoa.application.csv.TransectImportModel;
+import fr.ulr.sammoa.application.io.CampaignStorage;
+import fr.ulr.sammoa.application.io.CampaignStorages;
+import fr.ulr.sammoa.application.io.input.csv.ImportCsvService;
+import fr.ulr.sammoa.application.io.input.map.ImportMapService;
+import fr.ulr.sammoa.application.io.input.map.ShpImporter;
+import fr.ulr.sammoa.application.io.input.map.StrateImportModel;
+import fr.ulr.sammoa.application.io.input.map.TransectImportModel;
import fr.ulr.sammoa.persistence.Campaign;
import fr.ulr.sammoa.persistence.Region;
import fr.ulr.sammoa.persistence.Strate;
@@ -36,9 +41,8 @@
import fr.ulr.sammoa.ui.swing.region.RegionUI;
import fr.ulr.sammoa.ui.swing.region.RegionUIModel;
import fr.ulr.sammoa.ui.swing.util.CsvImporter;
-import fr.ulr.sammoa.ui.swing.util.Importer;
import fr.ulr.sammoa.ui.swing.util.SammoaUtil;
-import fr.ulr.sammoa.ui.swing.util.ShpImporter;
+import fr.ulr.sammoa.ui.swing.util.UIImporter;
import jaxx.runtime.swing.ErrorDialogUI;
import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer;
import jaxx.runtime.validator.swing.SwingValidatorUtil;
@@ -49,7 +53,7 @@
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.io.File;
-import java.io.Reader;
+import java.io.IOException;
import java.util.List;
import static org.nuiton.i18n.I18n._;
@@ -63,27 +67,30 @@
public class CampaignUIHandler implements SammoaUIHandler {
private static final Logger logger = LoggerFactory.getLogger(CampaignUIHandler.class);
-
+
protected SammoaUIContext context;
protected CampaignUI ui;
-
+
protected RegionUI regionUi;
-
+
+ protected final UIImporter uiImporter;
+
public CampaignUIHandler(SammoaUIContext context,
CampaignUI ui) {
this.context = context;
this.ui = ui;
+ this.uiImporter = new UIImporter(this.ui);
}
public SammoaUIContext getContext() {
return context;
}
-
+
public CampaignUIModel getModel() {
return ui.getModel();
}
-
+
public RegionUI getRegionUI() {
return regionUi;
}
@@ -96,14 +103,15 @@
return context.getAppContext().getReferentialService();
}
+
@Override
public void beforeInitUI() {
-
+
CampaignUIModel model = new CampaignUIModel();
List<Region> regions = getReferentialService().getRegions();
model.setRegionReferential(regions);
-
+
String campaignId = context.getCampaignId();
if (campaignId == null) {
@@ -114,7 +122,7 @@
Campaign campaign = getReferentialService().getCampaign(campaignId);
model.prepareUpdate(campaign);
}
-
+
ui.setContextValue(model);
}
@@ -163,17 +171,20 @@
}
public void saveCampaign() {
-
+
try {
boolean success = true;
-
+
Campaign campaign = getModel().newBean();
SammoaUtil.updateBusyState(ui, true);
String campaignId = getReferentialService().saveCampaign(campaign);
getModel().setId(campaignId);
-
+
+ CampaignStorage campaignStorage = CampaignStorages.getStorage(
+ getContext().getConfig(), campaignId);
+
File strateFile = ui.getStrateFileEditor().getSelectedFile();
if (strateFile != null && strateFile.exists()) {
@@ -183,7 +194,7 @@
);
}
- success &= strateImporter.readFile(ui, strateFile);
+ success &= uiImporter.importShape(strateImporter, strateFile, campaignStorage);
}
File transectFile = ui.getTransectFileEditor().getSelectedFile();
@@ -195,10 +206,12 @@
);
}
- success &= transectImporter.readFile(ui, transectFile);
+ success &= uiImporter.importShape(transectImporter,
+ transectFile,
+ campaignStorage);
}
- File observerFile = ui.getObserverFileEditor().getSelectedFile();
+ final File observerFile = ui.getObserverFileEditor().getSelectedFile();
if (observerFile != null && observerFile.exists()) {
if (logger.isInfoEnabled()) {
@@ -207,7 +220,7 @@
);
}
- success &= observerImporter.readFile(ui, observerFile);
+ success &= uiImporter.importCvs(observerImporter, observerFile);
}
SammoaUtil.updateBusyState(ui, false);
@@ -216,7 +229,7 @@
context.setCampaignId(campaignId);
close();
}
-
+
} catch (Exception e) {
ErrorDialogUI.showError(e);
}
@@ -225,7 +238,7 @@
public void close() {
context.setHomeScreen();
}
-
+
protected ComponentListener regionUIListener = new ComponentListener() {
@Override
@@ -260,9 +273,9 @@
}
List<Region> regions = getModel().getRegionReferential();
-
+
Region regionSaved = getRegionUI().getModel().newBean();
-
+
if (regions.contains(regionSaved)) {
// nothing to do, the element exist in the list
@@ -275,11 +288,21 @@
}
};
- protected Importer strateImporter = new ShpImporter<Strate>() {
+ protected CsvImporter observerImporter = new CsvImporter() {
@Override
- protected String onActionPerformed(Iterable<Strate> elements) {
- int nbImported = getReferentialService().importStrates(getCampaignId(), elements);
+ public String importCsvFile(File file) throws IOException {
+ ImportCsvService service = new ImportCsvService(context.getAppContext());
+ int nbImported = service.importObservers(getModel().getId(), file);
+ return _("sammoa.messageDialog.observers.import.success", nbImported);
+ }
+ };
+
+ protected ShpImporter<Strate> strateImporter = new ShpImporter<Strate>() {
+
+ protected String onDbfLoaded(Iterable<Strate> elements, CampaignStorage storage) {
+ ImportMapService service = new ImportMapService(context.getAppContext());
+ int nbImported = service.importStrates(storage.getCampaignId(), elements);
return _("sammoa.messageDialog.strates.import.success", nbImported);
}
@@ -293,22 +316,14 @@
return "strates";
}
- @Override
- protected File getCopyDirectory() {
- File dataDirectory = context.getConfig().getDataDirectory();
- return new File(new File(new File(dataDirectory, "campaign"), getCampaignId()), "map");
- }
-
- protected String getCampaignId() {
- return CampaignUIHandler.this.getModel().getId();
- }
};
- protected Importer transectImporter = new ShpImporter<Transect>() {
+ protected ShpImporter<Transect> transectImporter = new ShpImporter<Transect>() {
@Override
- protected String onActionPerformed(Iterable<Transect> elements) {
- int nbImported = getReferentialService().importTransects(getCampaignId(), elements);
+ protected String onDbfLoaded(Iterable<Transect> elements, CampaignStorage storage) {
+ ImportMapService service = new ImportMapService(context.getAppContext());
+ int nbImported = service.importTransects(storage.getCampaignId(), elements);
return _("sammoa.messageDialog.transects.import.success", nbImported);
}
@@ -322,23 +337,6 @@
return "transects";
}
- @Override
- protected File getCopyDirectory() {
- File dataDirectory = context.getConfig().getDataDirectory();
- return new File(new File(new File(dataDirectory, "campaign"), getCampaignId()), "map");
- }
-
- protected String getCampaignId() {
- return CampaignUIHandler.this.getModel().getId();
- }
};
- protected Importer observerImporter = new CsvImporter() {
-
- @Override
- protected String onActionPerformed(Reader reader) {
- int nbImported = getReferentialService().importObservers(getModel().getId(), reader);
- return _("sammoa.messageDialog.observers.import.success", nbImported);
- }
- };
}
Copied: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapLauncherUI.css (from rev 413, trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapLauncherUI.css)
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapLauncherUI.css (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapLauncherUI.css 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,43 @@
+/*
+ * #%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%
+ */
+#exportMapDirectoryFileChooseAction {
+ actionIcon:"fileChooser";
+}
+
+#exportMapDirectoryLbl {
+ text:"sammoa.label.exportMapDirectory";
+}
+
+#exportMapDirectory {
+ text:{model.getExportDirectory().getAbsolutePath()};
+}
+
+#exportMapFilenameLbl {
+ text:"sammoa.label.exportMapFilename";
+}
+
+#exportMapFilename {
+ text:{model.getExportFilename()};
+}
+
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapLauncherUI.css
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapLauncherUI.jaxx (from rev 413, trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapLauncherUI.jaxx)
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapLauncherUI.jaxx (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapLauncherUI.jaxx 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,83 @@
+<!--
+ #%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%
+ -->
+<JPanel layout='{new BorderLayout()}'>
+
+ <import>
+
+ java.awt.BorderLayout
+ java.io.File
+
+ jaxx.runtime.swing.BlockingLayerUI
+
+ static org.nuiton.i18n.I18n._
+ </import>
+
+ <script><![CDATA[
+
+ public ExportMapLauncherUI(ExportMapUIHandler handler) {
+ setContextValue(handler);
+ setContextValue(handler.getModel());
+ }
+ ]]></script>
+
+ <ExportMapUIModel id='model'
+ initializer='getContextValue(ExportMapUIModel.class)'/>
+
+ <ExportMapUIHandler id='handler'
+ initializer='getContextValue(ExportMapUIHandler.class)'/>
+
+ <Table id='body' fill='both' constraints='BorderLayout.CENTER' decorator='boxed'>
+ <!-- export directory-->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='exportMapDirectoryLbl'/>
+ </cell>
+ <cell weightx='1' fill="horizontal">
+ <JTextField id='exportMapDirectory'
+ onKeyReleased='getModel().setExportDirectory(new File(((JTextField)event.getSource()).getText()))'/>
+ </cell>
+ <cell anchor="east">
+ <JButton id="exportMapDirectoryFileChooseAction"
+ onActionPerformed="getHandler().chooseEffortDirectory()"/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor='west'>
+ <JLabel id='exportMapFilenameLbl'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0' columns='2'>
+ <JTextField id='exportMapFilename'
+ onKeyReleased='model.setExportFilename(((JTextField)event.getSource()).getText())'/>
+ </cell>
+ </row>
+ <row>
+ <cell columns='3' fill="both">
+ <JPanel layout='{new GridLayout(1,2,0,0)}'>
+ <JButton id='cancel'/>
+ <JButton id='start'/>
+ </JPanel>
+ </cell>
+ </row>
+ </Table>
+</JPanel>
\ No newline at end of file
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapLauncherUI.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.css (from rev 413, 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/output/map/ExportMapUI.css (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.css 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,107 @@
+/*
+ * #%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%
+ */
+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";
+}
+#exportGeoPoints {
+ text:"sammoa.action.exportGeoPointsMap";
+}
+
+#exportDirectoryFileChooseAction {
+ actionIcon:"fileChooser";
+}
+
+#exportDirectoryLbl {
+ text:"sammoa.label.exportDirectory";
+}
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.css
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.jaxx (from rev 413, 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/output/map/ExportMapUI.jaxx (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.jaxx 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,152 @@
+<!--
+ #%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%
+ -->
+<JPanel id='exportMapUI' layout='{new BorderLayout()}'
+ implements='fr.ulr.sammoa.ui.swing.SammoaUI<ExportMapUIHandler>'>
+
+ <import>
+ fr.ulr.sammoa.application.flightController.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'>
+ <!-- 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 / geoPoints -->
+ <row>
+ <cell columns='5' fill="both">
+ <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>
+ </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 -->
+ <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
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUI.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUIHandler.java (from rev 413, 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/output/map/ExportMapUIHandler.java (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUIHandler.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,469 @@
+package fr.ulr.sammoa.ui.swing.io.output.map;
+/*
+ * #%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%
+ */
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import fr.ulr.sammoa.application.ReferentialService;
+import fr.ulr.sammoa.application.io.output.map.ExportMapModel;
+import fr.ulr.sammoa.application.io.output.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.Species2;
+import fr.ulr.sammoa.persistence.Strate;
+import fr.ulr.sammoa.persistence.StringRef;
+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.AbstractAction;
+import javax.swing.Action;
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JFrame;
+import javax.swing.JList;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+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();
+ //TODO-tchemit-2012-08-03 add an null campaign (for test purpose, should be removed...)
+ campaigns.add(0, null);
+ model.setCampaigns(campaigns);
+ 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);
+ } else if (ExportMapUIModel.PROPERTY_SPECIES.equals(evt.getPropertyName())) {
+ List<Species> newValue = (List<Species>) evt.getNewValue();
+ onSpeciesChanged(newValue);
+ } else if (ExportMapUIModel.PROPERTY_SPECIES_TYPES.equals(evt.getPropertyName())) {
+ List<StringRef> newValue = (List<StringRef>) evt.getNewValue();
+ onSpeciesTypesChanged(newValue);
+ }
+ }
+ });
+ }
+
+ @Override
+ public void afterInitUI() {
+ ExportMapUIModel model = getModel();
+
+ model.setExportEffortsFilename("Efforts");
+ model.setExportObservationsFilename("Observations");
+ model.setExportGeoPointsFilename("GeoPoints");
+
+ File currentDirectory = FileUtil.getCurrentDirectory();
+ String absolutePath = currentDirectory.getAbsolutePath();
+ if (absolutePath.endsWith(File.separator + ".")) {
+ currentDirectory = new File(absolutePath.substring(0, absolutePath.length() - 2));
+ }
+ if (logger.isInfoEnabled()) {
+ logger.info("Current directory to use: {}", currentDirectory);
+ }
+ model.setExportDirectory(currentDirectory);
+
+ 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 onSpeciesChanged(List<Species> newValue) {
+ if (logger.isInfoEnabled()) {
+ logger.info("New species to use: {}", newValue.size());
+ }
+ ui.getSpeciesFilterListHeader().setData(newValue);
+ }
+
+ protected void onSpeciesTypesChanged(List<StringRef> newValue) {
+ if (logger.isInfoEnabled()) {
+ logger.info("New species types to use: {}", newValue.size());
+ }
+ ui.getSpeciesTypeFilterListHeader().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 = getModel();
+
+ model.setSelectedStrates(Collections.<Strate>emptyList());
+ model.setSelectedSpecies(Collections.<Species>emptyList());
+ model.setSelectedSpeciesTypes(Collections.<StringRef>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);
+
+ List<Species> species;
+ List<StringRef> speciesTypes;
+
+ if (newCampaign == null) {
+ species = Collections.emptyList();
+ speciesTypes = Collections.emptyList();
+
+ } else {
+ species = getReferentialService().getAllSpecies(newCampaign);
+ speciesTypes = StringRefs.toRefs(Species2.toSpeciesTypes(species));
+ }
+ model.setSpecies(species);
+ model.setSpeciesTypes(speciesTypes);
+ }
+
+ 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() {
+
+ Action startAction = new AbstractAction(
+ _("sammoa.action.startExport"),
+ SwingUtil.createActionIcon("accept")) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ JButton source = (JButton) e.getSource();
+ ExportMapLauncherUI fileChooserUI = SwingUtil.getParentContainer(
+ source, ExportMapLauncherUI.class);
+
+ SammoaUtil.updateBusyState(fileChooserUI, true);
+ try {
+ ExportMapUIModel model = ui.getModel();
+
+ // persist the file name
+ model.setExportEffortsFilename(model.getExportFilename());
+
+ // create export service model
+ ExportMapModel dataModel =
+ model.toModel(model.getExportEffortsFilename());
+
+ // launch export
+ getExportMapService().exportEffortsMap(dataModel);
+
+ } finally {
+
+ SwingUtil.getParentContainer(
+ source, JDialog.class).setVisible(false);
+ }
+ }
+ };
+
+ ExportMapUIModel model = getModel();
+ displayExportLauncher(_("sammoa.title.export.exportEfforts"),
+ model.getExportEffortsFilename(),
+ model,
+ startAction);
+ }
+
+ public void exportObservations() {
+
+ Action startAction = new AbstractAction(
+ _("sammoa.action.startExport"),
+ SwingUtil.createActionIcon("accept")) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+
+ JButton source = (JButton) e.getSource();
+ ExportMapLauncherUI fileChooserUI = SwingUtil.getParentContainer(
+ source, ExportMapLauncherUI.class);
+
+ try {
+ SammoaUtil.updateBusyState(fileChooserUI, true);
+ ExportMapUIModel model = ui.getModel();
+
+ // persist the file name
+ model.setExportObservationsFilename(model.getExportFilename());
+
+ // create export service model
+ ExportMapModel dataModel =
+ model.toModel(model.getExportObservationsFilename());
+
+ // launch export
+ getExportMapService().exportObservationsMap(dataModel);
+
+ } finally {
+
+ SwingUtil.getParentContainer(
+ source, JDialog.class).setVisible(false);
+ }
+ }
+ };
+
+ ExportMapUIModel model = getModel();
+ displayExportLauncher(_("sammoa.title.export.exportObservations"),
+ model.getExportObservationsFilename(),
+ model,
+ startAction);
+ }
+
+ public void exportGeoPoints() {
+
+
+
+ Action startAction = new AbstractAction(
+ _("sammoa.action.startExport"),
+ SwingUtil.createActionIcon("accept")) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+
+ JButton source = (JButton) e.getSource();
+
+ ExportMapLauncherUI fileChooserUI = SwingUtil.getParentContainer(
+ source, ExportMapLauncherUI.class);
+ SammoaUtil.updateBusyState(fileChooserUI, true);
+ try {
+
+ ExportMapUIModel model = getModel();
+
+ // persist the file name
+ model.setExportGeoPointsFilename(model.getExportFilename());
+
+ // create export service model
+ ExportMapModel dataModel =
+ model.toModel(model.getExportGeoPointsFilename());
+
+ // launch export
+ getExportMapService().exportGeoPointsMap(dataModel);
+
+ } finally {
+
+ SwingUtil.getParentContainer(
+ source, JDialog.class).setVisible(false);
+ }
+ }
+ };
+
+ ExportMapUIModel model = getModel();
+ displayExportLauncher(_("sammoa.title.export.exportGeoPoints"),
+ model.getExportGeoPointsFilename(),
+ model,
+ startAction);
+ }
+
+ public ExportMapUIModel getModel() {
+ return ui.getModel();
+ }
+
+ protected void displayExportLauncher(String effortTitle,
+ String defaultFilename,
+ ExportMapUIModel model,
+ Action startAction) {
+
+ model.setExportFilename(defaultFilename);
+ final ExportMapLauncherUI ui = new ExportMapLauncherUI(this);
+
+ JFrame frame = this.ui.getParentContainer(JFrame.class);
+ Action closeAction = new AbstractAction(
+ _("sammoa.action.cancelExport"),
+ SwingUtil.createActionIcon("cancel")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ ui.getParentContainer(JDialog.class).setVisible(false);
+ }
+ };
+
+ ui.getStart().setAction(startAction);
+ ui.getCancel().setAction(closeAction);
+
+ SammoaUtil.openInDialog(ui,
+ frame,
+ effortTitle,
+ closeAction,
+ new Dimension(550, 150));
+ }
+
+ /**
+ * 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
+ */
+ protected <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/output/map/ExportMapUIHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUIModel.java (from rev 413, 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/output/map/ExportMapUIModel.java (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUIModel.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,344 @@
+package fr.ulr.sammoa.ui.swing.io.output.map;
+/*
+ * #%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%
+ */
+
+import com.google.common.collect.Lists;
+import fr.ulr.sammoa.application.io.output.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.Species2;
+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_FILENAME = "exportFilename";
+
+ public static final String PROPERTY_EXPORT_EFFORTS_FILENAME = "exportEffortsFilename";
+
+ 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;
+
+ 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 exportFilename;
+
+ protected String exportEffortsFilename;
+
+ protected String exportObservationsFilename;
+
+ protected String exportGeoPointsFilename;
+
+ 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 getExportFilename() {
+ return exportFilename;
+ }
+
+ public void setExportFilename(String exportFilename) {
+ String oldValue = this.exportFilename;
+ this.exportFilename = exportFilename;
+ firePropertyChange(PROPERTY_EXPORT_FILENAME, oldValue, exportFilename);
+ }
+
+ 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 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();
+ }
+ 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) {
+
+ List<Species> speciesToUse = Species2.getSelectedSpecies(
+ getSpecies(), getSelectedSpecies(), getSelectedSpeciesTypes());
+
+ // Ensure bounds for beginDate and enDate
+ Date beginDate = getBeginDate();
+ Date campaignBeginDate = getSelectedCampaign().getBeginDate();
+ if (beginDate == null || beginDate.before(campaignBeginDate)) {
+ beginDate = campaignBeginDate;
+ }
+ Date endDate = getEndDate();
+ Date campaignEndDate = getSelectedCampaign().getEndDate();
+ if (endDate == null || endDate.after(campaignEndDate)) {
+ endDate = campaignEndDate;
+ }
+
+ ExportMapModel result = ExportMapModel.newModel(
+ getExportDirectory(),
+ filename,
+ getSelectedCampaign(),
+ beginDate,
+ endDate,
+ getSelectedStrates(),
+ getSelectedRouteTypes(),
+ speciesToUse
+ );
+ return result;
+ }
+}
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUIModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.css (from rev 413, trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.css)
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.css (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.css 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,91 @@
+/*
+ * #%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%
+ */
+#campaignLabel {
+ text: "sammoa.label.campaign";
+}
+
+#campaignCombobox {
+ renderer: {new DecoratorProviderListCellRenderer(getHandler().getDecoratorProvider())};
+}
+
+#flightLabel {
+ text: "sammoa.label.flight";
+}
+
+#flightCombobox {
+ renderer: {new DecoratorProviderListCellRenderer(getHandler().getDecoratorProvider())};
+}
+
+#quitButton {
+ text:"sammoa.action.quitExportMaps";
+}
+
+#exportButton {
+ text:"sammoa.action.exportApplication";
+}
+
+#exportDirectoryFileChooseAction {
+ actionIcon:"fileChooser";
+}
+
+#exportDirectoryLbl {
+ text:"sammoa.label.exportApplicationDirectory";
+}
+
+#exportDirectory {
+ text:{model.getExportDirectory().getAbsolutePath()};
+}
+
+#exportFilenameLbl {
+ text:"sammoa.label.exportApplicationFilename";
+}
+
+#exportFilename {
+ text:{model.getExportFilename()};
+}
+
+#callbackLbl {
+ text:"sammoa.label.exportApplication.callbacks";
+}
+
+#callbackNothing {
+ text:"sammoa.label.exportApplication.callbackNothing";
+ selected:{ExportApplicationCallbackMode.NOTHING == model.getCallback()};
+ buttonGroup:"callbacks";
+ value:{ExportApplicationCallbackMode.NOTHING};
+}
+
+#callbackRemoveData {
+ text:"sammoa.label.exportApplication.callbackRemoveData";
+ buttonGroup:"callbacks";
+ selected:{ExportApplicationCallbackMode.REMOVE_FLIGHTS == model.getCallback()};
+ value:{ExportApplicationCallbackMode.REMOVE_FLIGHTS};
+}
+
+#callbackRemoveAll {
+ text:"sammoa.label.exportApplication.callbackRemoveAll";
+ buttonGroup:"callbacks";
+ selected:{ExportApplicationCallbackMode.REMOVE_ALL == model.getCallback()};
+ value:{ExportApplicationCallbackMode.REMOVE_ALL};
+}
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.css
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.jaxx (from rev 413, trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.jaxx)
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.jaxx (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.jaxx 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,130 @@
+<!--
+ #%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%
+ -->
+<JPanel id='exportApplicationUI' layout='{new BorderLayout()}'
+ implements='fr.ulr.sammoa.ui.swing.SammoaUI<ExportApplicationUIHandler>'>
+
+ <import>
+ fr.ulr.sammoa.persistence.Campaign
+ fr.ulr.sammoa.persistence.Flight
+ fr.ulr.sammoa.ui.swing.SammoaUIContext
+ fr.ulr.sammoa.application.io.output.sammoa.ExportApplicationCallbackMode
+
+ jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer
+
+ java.awt.BorderLayout
+ java.awt.event.ItemEvent
+ java.io.File
+
+ static org.nuiton.i18n.I18n._
+ </import>
+
+ <script><![CDATA[
+
+ public ExportApplicationUI(SammoaUIContext context) {
+ ExportApplicationUIHandler handler =
+ new ExportApplicationUIHandler(context, this);
+ setContextValue(handler);
+ handler.beforeInitUI();
+ }
+
+ protected void $afterCompleteSetup() {
+ getHandler().afterInitUI();
+ }
+ ]]></script>
+
+ <ExportApplicationUIModel id='model'
+ initializer='getContextValue(ExportApplicationUIModel.class)'/>
+
+ <ExportApplicationUIHandler id='handler'
+ initializer='getContextValue(ExportApplicationUIHandler.class)'/>
+
+ <Table fill='both' constraints='BorderLayout.CENTER'>
+ <!-- Campaign filter -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='campaignLabel'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0' columns='2'>
+ <JComboBox id='campaignCombobox'
+ onItemStateChanged='if (ItemEvent.SELECTED == event.getStateChange()) { getModel().setSelectedCampaign((Campaign)event.getItem()); } else { getModel().setSelectedCampaign(null); }'/>
+ </cell>
+ </row>
+ <!-- Flight filter -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='flightLabel'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0' columns='2'>
+ <JComboBox id='flightCombobox'
+ onItemStateChanged='if (ItemEvent.SELECTED == event.getStateChange()) { getModel().setSelectedFlight((Flight)event.getItem()); } else { getModel().setSelectedFlight(null); }'/>
+ </cell>
+ </row>
+ <!-- export directory-->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='exportDirectoryLbl'/>
+ </cell>
+ <cell weightx='1' fill="horizontal">
+ <JTextField id='exportDirectory'
+ onKeyReleased='getModel().setExportDirectory(new File(((JTextField)event.getSource()).getText()))'/>
+ </cell>
+ <cell anchor="east">
+ <JButton id="exportDirectoryFileChooseAction"
+ onActionPerformed="getHandler().chooseExportDirectory()"/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor='west'>
+ <JLabel id='exportFilenameLbl'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0' columns='2'>
+ <JTextField id='exportFilename'
+ onKeyReleased='model.setExportFilename(((JTextField)event.getSource()).getText())'/>
+ </cell>
+ </row>
+ <!-- callBack -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='callbackLbl'/>
+ </cell>
+ <cell weightx='1' fill="horizontal" columns='2'>
+ <JPanel layout='{new GridLayout(0,1)}'>
+ <JRadioButton id='callbackNothing'/>
+ <JRadioButton id='callbackRemoveData'/>
+ <JRadioButton id='callbackRemoveAll'/>
+ </JPanel>
+ </cell>
+ </row>
+ <!--export actions-->
+ <row>
+ <cell columns='5' fill="both">
+ <JPanel layout='{new GridLayout(1,2,0,0)}'>
+ <JButton id='quitButton' onActionPerformed='getHandler().close()'/>
+ <JButton id='exportButton'
+ onActionPerformed='getHandler().exportApplication()'/>
+ </JPanel>
+ </cell>
+ </row>
+ </Table>
+</JPanel>
\ No newline at end of file
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUI.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIHandler.java (from rev 413, trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIHandler.java)
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIHandler.java (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIHandler.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,270 @@
+package fr.ulr.sammoa.ui.swing.io.output.sammoa;
+/*
+ * #%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%
+ */
+
+import fr.ulr.sammoa.application.FlightService;
+import fr.ulr.sammoa.application.ReferentialService;
+import fr.ulr.sammoa.application.io.output.sammoa.ExportApplicationCallbackMode;
+import fr.ulr.sammoa.application.io.output.sammoa.ExportApplicationModel;
+import fr.ulr.sammoa.application.io.output.sammoa.ExportApplicationService;
+import fr.ulr.sammoa.application.io.output.map.ExportMapService;
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.Flight;
+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 org.nuiton.util.FileUtil;
+import org.nuiton.util.decorator.Decorator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.swing.JFrame;
+import javax.swing.SwingUtilities;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.File;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * Handelr of {@link ExportApplicationUI}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class ExportApplicationUIHandler implements SammoaUIHandler {
+
+ private static final Logger logger =
+ LoggerFactory.getLogger(ExportApplicationUIHandler.class);
+
+ private final ExportApplicationUI ui;
+
+ protected SammoaUIContext context;
+
+ public ExportApplicationUIHandler(SammoaUIContext context,
+ ExportApplicationUI ui) {
+ this.context = context;
+ this.ui = ui;
+ }
+
+ protected ReferentialService getReferentialService() {
+ return context.getAppContext().getReferentialService();
+ }
+
+ protected FlightService getFlightService() {
+ return context.getAppContext().getFlightService();
+ }
+
+ protected ExportMapService getExportMapService() {
+ return context.getAppContext().getExportMapService();
+ }
+
+ public SammoaDecoratorProvider getDecoratorProvider() {
+ return context.getDecoratorProvider();
+ }
+
+ @Override
+ public void beforeInitUI() {
+
+ //-- create model --//
+
+ ExportApplicationUIModel model = new ExportApplicationUIModel();
+
+ List<Campaign> campaigns = getReferentialService().getCampaigns();
+ //TODO-tchemit-2012-08-03 add an null campaign (for test purpose, should be removed...)
+ campaigns.add(0, null);
+ model.setCampaigns(campaigns);
+
+ String campaignId = context.getCampaignId();
+
+ if (campaignId != null) {
+
+ Campaign campaign = getReferentialService().getCampaign(campaignId);
+
+ // selected cam
+ model.setSelectedCampaign(campaign);
+ }
+
+ String flightId = context.getFlightId();
+
+ if (flightId != null) {
+
+ Flight flight = getFlightService().getFlight(flightId);
+
+ // selected cam
+ model.setSelectedFlight(flight);
+ }
+
+ //-- share model and handler in jaxx context --//
+ ui.setContextValue(this);
+ ui.setContextValue(model);
+
+ model.addPropertyChangeListener(new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+
+ if (ExportApplicationUIModel.PROPERTY_SELECTED_CAMPAIGN.equals(evt.getPropertyName())) {
+ Campaign newValue = (Campaign) evt.getNewValue();
+ onSelectedCampaignChanged(newValue);
+ } else if (ExportApplicationUIModel.PROPERTY_FLIGHTS.equals(evt.getPropertyName())) {
+ Collection<Flight> newValue = (Collection<Flight>) evt.getNewValue();
+ onFlightsChanged(newValue);
+ } else if (ExportApplicationUIModel.PROPERTY_SELECTED_FLIGHT.equals(evt.getPropertyName())) {
+ Flight newValue = (Flight) evt.getNewValue();
+ onSelectedFlightChanged(newValue);
+ }
+ }
+ });
+ }
+
+ @Override
+ public void afterInitUI() {
+ ExportApplicationUIModel model = getModel();
+
+ File currentDirectory = FileUtil.getCurrentDirectory();
+ String absolutePath = currentDirectory.getAbsolutePath();
+ if (absolutePath.endsWith(File.separator + ".")) {
+ currentDirectory = new File(absolutePath.substring(0, absolutePath.length() - 2));
+ }
+ if (logger.isInfoEnabled()) {
+ logger.info("Current directory to use: {}", currentDirectory);
+ }
+ model.setExportDirectory(currentDirectory);
+ model.setCallback(ExportApplicationCallbackMode.NOTHING);
+
+ SwingUtil.fillComboBox(ui.getCampaignCombobox(),
+ model.getCampaigns(),
+ model.getSelectedCampaign());
+
+ Flight selectedFlight = model.getSelectedFlight();
+
+ onSelectedCampaignChanged(model.getSelectedCampaign());
+ onSelectedFlightChanged(selectedFlight);
+ }
+
+ public void exportApplication() {
+
+ JFrame frame = ui.getParentContainer(JFrame.class);
+ SammoaUtil.updateBusyState(frame, true);
+
+ try {
+ SwingUtilities.invokeLater(
+ new Runnable() {
+ @Override
+ public void run() {
+ ExportApplicationModel dataModel = getModel().toModel();
+
+ ExportApplicationService service =
+ context.getAppContext().newExportApplicationService();
+ service.exportApplication(dataModel);
+ }
+ }
+ );
+
+ } finally {
+ SammoaUtil.updateBusyState(frame, false);
+ }
+ }
+
+ protected void onSelectedCampaignChanged(Campaign newCampaign) {
+
+ // reset flights,...
+ if (logger.isInfoEnabled()) {
+ Decorator<Campaign> decorator = getDecoratorProvider().getDecoratorByType(Campaign.class);
+ logger.info("New selected campain: {}", decorator.toString(newCampaign));
+ }
+
+ ExportApplicationUIModel model = getModel();
+
+ List<Flight> flights;
+ String filename;
+ if (newCampaign == null) {
+ flights = Collections.emptyList();
+ filename = "";
+ } else {
+ flights = getFlightService().getFlights(newCampaign);
+ filename = String.format("campaign-%s.sammoa", newCampaign.getCode());
+ }
+ if (logger.isDebugEnabled()) {
+ logger.debug("New flights: {}", flights.size());
+ logger.debug("New filename: {}", filename);
+ }
+ model.setFlights(flights);
+ model.setExportFilename(filename);
+ }
+
+ protected void onFlightsChanged(Collection<Flight> flights) {
+
+ ExportApplicationUIModel model = getModel();
+ Flight selectedFlight = model.getSelectedFlight();
+ if (flights.contains(selectedFlight)) {
+ model.setSelectedFlight(null);
+ }
+
+ SwingUtil.fillComboBox(ui.getFlightCombobox(),
+ flights,
+ selectedFlight);
+ }
+
+ protected void onSelectedFlightChanged(Flight newCampaign) {
+
+ // reset flights,...
+ if (logger.isInfoEnabled()) {
+ Decorator<Flight> decorator = getDecoratorProvider().getDecoratorByType(Flight.class);
+ logger.info("New selected flight: {}", decorator.toString(newCampaign));
+ }
+
+ ExportApplicationUIModel model = getModel();
+ }
+
+ public void close() {
+ context.setHomeScreen();
+ }
+
+ @Override
+ public void onCloseUI() {
+ }
+
+ public void chooseExportDirectory() {
+ File f = SammoaUtil.chooseDirectory(
+ ui,
+ _("sammoa.title.choose.export.directory"),
+ _("sammoa.action.choose.export.directory"),
+ ui.getModel().getExportDirectory()
+ );
+ ui.getModel().setExportDirectory(f);
+ }
+
+
+ public ExportApplicationUIModel getModel() {
+ return ui.getModel();
+ }
+
+
+}
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIModel.java (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIModel.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,161 @@
+package fr.ulr.sammoa.ui.swing.io.output.sammoa;
+/*
+ * #%L
+ * SAMMOA :: UI Swing
+ * $Id$
+ * $HeadURL: http://svn.forge.codelutin.com/svn/sammoa/trunk/sammoa-ui-swing/src/main/ja… $
+ * %%
+ * 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%
+ */
+
+import com.google.common.collect.Lists;
+import fr.ulr.sammoa.application.io.output.sammoa.ExportApplicationCallbackMode;
+import fr.ulr.sammoa.application.io.output.sammoa.ExportApplicationModel;
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.Flight;
+import org.jdesktop.beans.AbstractSerializableBean;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * Model of export application UI.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class ExportApplicationUIModel 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_FLIGHTS = "flights";
+
+ public static final String PROPERTY_SELECTED_FLIGHT = "selectedFlight";
+
+ public static final String PROPERTY_EXPORT_DIRECTORY = "exportDirectory";
+
+ public static final String PROPERTY_EXPORT_FILENAME = "exportFilename";
+
+ public static final String PROPERTY_CALLBACK = "callback";
+
+ protected List<Campaign> campaigns;
+
+ protected Campaign selectedCampaign;
+
+ protected List<Flight> flights;
+
+ protected Flight selectedFlight;
+
+ protected File exportDirectory;
+
+ protected String exportFilename;
+
+ protected ExportApplicationCallbackMode callback;
+
+ 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 getExportFilename() {
+ return exportFilename;
+ }
+
+ public void setExportFilename(String exportFilename) {
+ String oldValue = this.exportFilename;
+ this.exportFilename = exportFilename;
+ firePropertyChange(PROPERTY_EXPORT_FILENAME, oldValue, exportFilename);
+ }
+
+ 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 List<Flight> getFlights() {
+ if (flights == null) {
+ flights = Lists.newArrayList();
+ }
+ return flights;
+ }
+
+ public void setFlights(List<Flight> flights) {
+ List<Flight> oldValue = this.flights;
+ this.flights = flights;
+ firePropertyChange(PROPERTY_FLIGHTS, oldValue, flights);
+ }
+
+ public Flight getSelectedFlight() {
+ return selectedFlight;
+ }
+
+ public void setSelectedFlight(Flight selectedFlight) {
+ Flight oldValue = this.selectedFlight;
+ this.selectedFlight = selectedFlight;
+ firePropertyChange(PROPERTY_SELECTED_FLIGHT, oldValue, selectedFlight);
+ }
+
+ public ExportApplicationCallbackMode getCallback() {
+ return callback;
+ }
+
+ public void setCallback(ExportApplicationCallbackMode callback) {
+ ExportApplicationCallbackMode oldValue = this.callback;
+ this.callback = callback;
+ firePropertyChange(PROPERTY_CALLBACK, oldValue, callback);
+ }
+
+ public ExportApplicationModel toModel() {
+
+ ExportApplicationModel result = ExportApplicationModel.newModel(
+ getExportDirectory(),
+ getExportFilename(),
+ getSelectedCampaign(),
+ getSelectedFlight(),
+ getCallback()
+ );
+ return result;
+ }
+}
\ No newline at end of file
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationUIModel.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/region/RegionUIHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUIHandler.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/region/RegionUIHandler.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -25,22 +25,23 @@
import fr.ulr.sammoa.application.ReferentialService;
import fr.ulr.sammoa.application.SammoaContext;
+import fr.ulr.sammoa.application.io.input.csv.ImportCsvService;
import fr.ulr.sammoa.persistence.Region;
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.CsvImporter;
-import fr.ulr.sammoa.ui.swing.util.Importer;
import fr.ulr.sammoa.ui.swing.util.SammoaUtil;
+import fr.ulr.sammoa.ui.swing.util.UIImporter;
import jaxx.runtime.swing.ErrorDialogUI;
import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer;
import jaxx.runtime.validator.swing.SwingValidatorUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.swing.*;
+import javax.swing.JFrame;
import java.io.File;
-import java.io.Reader;
+import java.io.IOException;
import static org.nuiton.i18n.I18n._;
@@ -52,22 +53,26 @@
*/
public class RegionUIHandler implements SammoaUIHandler {
- private static final Logger logger = LoggerFactory.getLogger(RegionUIHandler.class);
-
+ private static final Logger logger =
+ LoggerFactory.getLogger(RegionUIHandler.class);
+
protected SammoaUIContext context;
protected RegionUI ui;
-
+
+ protected final UIImporter uiImporter;
+
public RegionUIHandler(SammoaUIContext context,
RegionUI ui) {
this.context = context;
this.ui = ui;
+ this.uiImporter = new UIImporter(ui);
}
public SammoaContext getAppContext() {
return context.getAppContext();
}
-
+
public RegionUIModel getModel() {
return ui.getModel();
}
@@ -98,7 +103,7 @@
public void onCloseUI() {
ui.setVisible(false);
}
-
+
public void openUI() {
if (logger.isInfoEnabled()) {
@@ -113,7 +118,7 @@
}
public void saveRegion() {
-
+
try {
boolean success = true;
@@ -136,7 +141,7 @@
);
}
- success = speciesImporter.readFile(ui, speciesFile);
+ success = uiImporter.importCvs(speciesImporter, speciesFile);
}
SammoaUtil.updateBusyState(ui, false);
@@ -145,17 +150,18 @@
if (success) {
ui.getCloseButton().doClick();
}
-
+
} catch (Exception e) {
ErrorDialogUI.showError(e);
}
}
-
- protected Importer speciesImporter = new CsvImporter() {
+ protected CsvImporter speciesImporter = new CsvImporter() {
+
@Override
- protected String onActionPerformed(Reader reader) {
- int nbImported = getReferentialService().importSpecies(getModel().getId(), reader);
+ public String importCsvFile(File file) throws IOException {
+ ImportCsvService service = new ImportCsvService(getAppContext());
+ int nbImported = service.importSpecies(getModel().getId(), file);
return _("sammoa.messageDialog.species.import.success", nbImported);
}
};
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUIHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUIHandler.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/transect/TransectUIHandler.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -54,7 +54,8 @@
*/
public class TransectUIHandler implements SammoaUIHandler {
- private static final Logger logger = LoggerFactory.getLogger(TransectUIHandler.class);
+ private static final Logger logger =
+ LoggerFactory.getLogger(TransectUIHandler.class);
protected SammoaUIContext context;
Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/CsvImporter.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/CsvImporter.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/CsvImporter.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -2,8 +2,8 @@
/*
* #%L
* SAMMOA :: UI Swing
- * $Id:$
- * $HeadURL:$
+ * $Id$
+ * $HeadURL$
* %%
* Copyright (C) 2012 UMS 3462, Code Lutin
* %%
@@ -23,54 +23,16 @@
* #L%
*/
-import org.apache.commons.io.Charsets;
-import org.apache.commons.io.IOUtils;
-
-import javax.swing.JFileChooser;
-import javax.swing.filechooser.FileNameExtensionFilter;
-import java.awt.Component;
import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.Reader;
/**
* Created: 17/07/12
*
* @author fdesbois <desbois(a)codelutin.com>
*/
-public abstract class CsvImporter extends Importer {
+public abstract class CsvImporter {
- public void openFileChooser(Component ui) {
+ public abstract String importCsvFile(File file) throws IOException;
- JFileChooser fileChooser = new JFileChooser();
- fileChooser.setFileFilter(new FileNameExtensionFilter("CSV", "csv"));
-
- int response = fileChooser.showOpenDialog(ui);
- if (response == JFileChooser.APPROVE_OPTION) {
-
- File selectedFile = fileChooser.getSelectedFile();
- readFile(ui, selectedFile);
- }
- }
-
- @Override
- protected String onActionPerformed(File file) throws IOException {
-
- String result;
-
- InputStreamReader reader = null;
- try {
- reader = new InputStreamReader(new FileInputStream(file), Charsets.UTF_8);
-
- result = onActionPerformed(reader);
-
- } finally {
- IOUtils.closeQuietly(reader);
- }
- return result;
- }
-
- protected abstract String onActionPerformed(Reader reader);
}
Deleted: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/Importer.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/Importer.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/Importer.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -1,79 +0,0 @@
-package fr.ulr.sammoa.ui.swing.util;
-/*
- * #%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%
- */
-
-import org.nuiton.util.csv.ImportRuntimeException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.swing.*;
-import java.awt.*;
-import java.io.File;
-import java.io.IOException;
-
-/**
- * Created: 17/07/12
- *
- * @author fdesbois <desbois(a)codelutin.com>
- */
-public abstract class Importer {
-
- private static final Logger logger = LoggerFactory.getLogger(Importer.class);
-
- public boolean readFile(Component ui, File file) {
-
- boolean result = false;
-
- try {
-
- SammoaUtil.updateBusyState(ui, true);
-
- String successMessage = onActionPerformed(file);
-
- SammoaUtil.updateBusyState(ui, false);
-
- JOptionPane.showMessageDialog(ui, successMessage);
-
- result = true;
-
- } catch (ImportRuntimeException e) {
- showError(ui, file, e);
-
- } catch (IOException e) {
- showError(ui, file, e);
- }
- return result;
- }
-
- protected void showError(Component ui, File file, Exception e) {
-
- if (logger.isInfoEnabled()) {
- logger.info("Import error from file '" + file.getAbsolutePath() + "'", e);
- }
- JOptionPane.showMessageDialog(
- ui, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE, UIManager.getIcon("error"));
- }
-
- protected abstract String onActionPerformed(File file) throws IOException;
-}
Deleted: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/ShpImporter.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/ShpImporter.java 2012-08-12 10:34:09 UTC (rev 413)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/ShpImporter.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -1,124 +0,0 @@
-package fr.ulr.sammoa.ui.swing.util;
-/*
- * #%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%
- */
-
-import com.google.common.io.Files;
-import fr.ulr.sammoa.application.map.DbfImport;
-import org.apache.commons.io.FileUtils;
-import org.nuiton.util.csv.ImportModel;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FilenameFilter;
-import java.io.IOException;
-
-/**
- * Created: 25/07/12
- *
- * @author fdesbois <desbois(a)codelutin.com>
- */
-public abstract class ShpImporter<E> extends Importer {
-
- private static final Logger logger = LoggerFactory.getLogger(Importer.class);
-
- @Override
- protected String onActionPerformed(File file) throws IOException {
-
- File dbfFile;
- String fileName = file.getName();
- File sourceDirectory = file.getParentFile();
-
- String ext = Files.getFileExtension(fileName);
- int extIndex = fileName.lastIndexOf(ext);
- final String fileNameWithoutExt = fileName.substring(0, extIndex);
-
- if (logger.isDebugEnabled()) {
- logger.debug("Source directory '" + sourceDirectory.getAbsolutePath() + "' and fileName '" + fileNameWithoutExt + "'");
- }
-
- if (!ext.equals("dbf")) {
-
- fileName = fileNameWithoutExt + "dbf";
-
- if (logger.isDebugEnabled()) {
- logger.debug(String.format("Use dbfFile %s for import", fileName));
- }
-
- dbfFile = new File(sourceDirectory, fileName);
-
- if (!dbfFile.exists()) {
- throw new FileNotFoundException("Can't found dbf file '" + dbfFile.getAbsolutePath() + "' for import");
- }
-
- } else {
- dbfFile = file;
- }
-
- DbfImport<E> importer = new DbfImport<E>(getModel(), dbfFile.toURI().toURL());
-
- String result = onActionPerformed(importer);
-
- String[] files = sourceDirectory.list(new FilenameFilter() {
-
- @Override
- public boolean accept(File dir, String fullName) {
- String extension = Files.getFileExtension(fullName);
- int extIndex = fullName.lastIndexOf(extension);
- String name = fullName.substring(0, extIndex);
- if (logger.isDebugEnabled()) {
- logger.debug(String.format("Read file : %s [ext = %s] -> check equals for %s",
- fullName,
- extension,
- name)
- );
- }
- return fileNameWithoutExt.equals(name);
- }
- });
-
- for (String name : files) {
- String extension = Files.getFileExtension(name);
- File sourceFile = new File(sourceDirectory, name);
- File targetFile = new File(getCopyDirectory(), getCopyFileName() + "." + extension);
- if (logger.isInfoEnabled()) {
- logger.info(String.format("Copy file '%1$s' to '%2$s'",
- sourceFile.getAbsolutePath(),
- targetFile.getAbsolutePath())
- );
- }
- FileUtils.copyFile(sourceFile, targetFile);
- }
- return result;
- }
-
- protected abstract String onActionPerformed(Iterable<E> elements);
-
- protected abstract ImportModel<E> getModel();
-
- protected abstract String getCopyFileName();
-
- protected abstract File getCopyDirectory();
-}
Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/UIImporter.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/UIImporter.java (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/UIImporter.java 2012-08-13 22:12:51 UTC (rev 414)
@@ -0,0 +1,91 @@
+package fr.ulr.sammoa.ui.swing.util;
+
+import fr.ulr.sammoa.application.io.CampaignStorage;
+import fr.ulr.sammoa.application.io.input.map.ShpImporter;
+import org.nuiton.util.csv.ImportRuntimeException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.swing.JOptionPane;
+import javax.swing.UIManager;
+import java.awt.Component;
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class UIImporter {
+
+ /** Logger. */
+ private static final Logger logger =
+ LoggerFactory.getLogger(UIImporter.class);
+
+ protected final Component ui;
+
+ public UIImporter(Component ui) {
+ this.ui = ui;
+ }
+
+ public boolean importShape(ShpImporter<?> importer, File file, CampaignStorage storage) {
+ boolean result = false;
+
+ try {
+
+ SammoaUtil.updateBusyState(ui, true);
+
+ String successMessage = importer.importShape(file, storage);
+
+ SammoaUtil.updateBusyState(ui, false);
+
+ JOptionPane.showMessageDialog(ui, successMessage);
+
+ result = true;
+
+ } catch (ImportRuntimeException e) {
+ showError(file, e);
+
+ } catch (IOException e) {
+ showError(file, e);
+ }
+ return result;
+ }
+
+ public boolean importCvs(CsvImporter importer, File file) {
+ boolean result = false;
+
+ try {
+
+ SammoaUtil.updateBusyState(ui, true);
+
+ String successMessage = importer.importCsvFile(file);
+
+ SammoaUtil.updateBusyState(ui, false);
+
+ JOptionPane.showMessageDialog(ui, successMessage);
+
+ result = true;
+
+ } catch (ImportRuntimeException e) {
+ showError(file, e);
+
+ } catch (IOException e) {
+ showError(file, e);
+ }
+ return result;
+ }
+
+ protected void showError(File file, Exception e) {
+
+ if (logger.isInfoEnabled()) {
+ logger.info("Import error from file '" + file.getAbsolutePath() + "'", e);
+ }
+ JOptionPane.showMessageDialog(
+ ui, e.getMessage(), "Error",
+ JOptionPane.ERROR_MESSAGE, UIManager.getIcon("error"));
+ }
+
+}
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/UIImporter.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
1
0
12 Aug '12
Author: tchemit
Date: 2012-08-12 12:34:09 +0200 (Sun, 12 Aug 2012)
New Revision: 413
Url: http://forge.codelutin.com/repositories/revision/sammoa/413
Log:
refs #1201: Export format application (interface graphique done, mise en place du service, reste ?\195?\160 coder le service + les storages)
Added:
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationCallbackMode.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationModel.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationService.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.css
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.jaxx
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIHandler.java
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIModel.java
Modified:
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapModel.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/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/resources/i18n/sammoa-ui-swing_en_GB.properties
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-11 09:17:30 UTC (rev 412)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/SammoaContext.java 2012-08-12 10:34:09 UTC (rev 413)
@@ -24,6 +24,7 @@
*/
package fr.ulr.sammoa.application;
+import fr.ulr.sammoa.application.io.exportApplication.ExportApplicationService;
import fr.ulr.sammoa.application.map.ExportMapService;
import fr.ulr.sammoa.persistence.SammoaPersistence;
@@ -87,6 +88,10 @@
return exportMapService;
}
+ public ExportApplicationService newExportApplicationService() {
+ return new ExportApplicationService(this);
+ }
+
public void open() {
persistence.open(
config.getApplicationConfig().getFlatOptions(),
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationCallbackMode.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationCallbackMode.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationCallbackMode.java 2012-08-12 10:34:09 UTC (rev 413)
@@ -0,0 +1,51 @@
+package fr.ulr.sammoa.application.io.exportApplication;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+/**
+ * What to do after a application export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public enum ExportApplicationCallbackMode {
+ /**
+ * Do nothing.
+ * <p/>
+ * Says after this every thing stay in place.
+ */
+ NOTHING,
+ /**
+ * Remove flight data.
+ * <p/>
+ * Says after this referential are still there (Region, Campaign, Strate, Observer, Species).
+ */
+ REMOVE_FLIGHTS,
+ /**
+ * Remove campaign data.
+ * <p/>
+ * Says after this, there is no more stuff in db.
+ */
+ REMOVE_ALL
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationCallbackMode.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationModel.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationModel.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationModel.java 2012-08-12 10:34:09 UTC (rev 413)
@@ -0,0 +1,85 @@
+package fr.ulr.sammoa.application.io.exportApplication;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.Flight;
+
+import java.io.File;
+import java.io.Serializable;
+
+/**
+ * Model of export application.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class ExportApplicationModel implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ public static ExportApplicationModel newModel(File exportDirectory,
+ String exportFilename,
+ Campaign campaign,
+ Flight flight,
+ ExportApplicationCallbackMode callback) {
+ ExportApplicationModel result = new ExportApplicationModel();
+ result.exportDirectory = exportDirectory;
+ result.exportFilename = exportFilename;
+ result.campaign = campaign;
+ result.flight = flight;
+ result.callback = callback;
+ return result;
+ }
+
+ protected Campaign campaign;
+
+ protected Flight flight;
+
+ protected File exportDirectory;
+
+ protected String exportFilename;
+
+ protected ExportApplicationCallbackMode callback;
+
+ public File getExportDirectory() {
+ return exportDirectory;
+ }
+
+ public String getExportFilename() {
+ return exportFilename;
+ }
+
+ public Campaign getCampaign() {
+ return campaign;
+ }
+
+ public Flight getFlight() {
+ return flight;
+ }
+
+ public ExportApplicationCallbackMode getCallback() {
+ return callback;
+ }
+}
\ No newline at end of file
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationService.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationService.java (rev 0)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationService.java 2012-08-12 10:34:09 UTC (rev 413)
@@ -0,0 +1,111 @@
+package fr.ulr.sammoa.application.io.exportApplication;
+/*
+ * #%L
+ * SAMMOA :: Application
+ * $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%
+ */
+
+import fr.ulr.sammoa.application.SammoaConfig;
+import fr.ulr.sammoa.application.SammoaContext;
+import fr.ulr.sammoa.persistence.SammoaPersistence;
+import org.nuiton.util.TimeLog;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * To export application as a {@code sammoa} file.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class ExportApplicationService {
+
+ /** Logger. */
+ private static final Logger logger =
+ LoggerFactory.getLogger(ExportApplicationService.class);
+
+
+ private static final TimeLog timeLog =
+ new TimeLog(ExportApplicationService.class);
+
+ protected final SammoaContext context;
+
+ protected final SammoaConfig config;
+
+ protected final SammoaPersistence persistence;
+
+ public ExportApplicationService(SammoaContext context) {
+ this.context = context;
+ this.persistence = context.getPersistence();
+ this.config = context.getConfig();
+ }
+
+ public void exportApplication(ExportApplicationModel model) {
+
+ if (logger.isInfoEnabled()) {
+ logger.info("Start Application export to {} :: {}",
+ model.getExportDirectory(),
+ model.getExportFilename());
+ }
+
+ long startTime = TimeLog.getTime();
+
+ try {
+ Thread.sleep(2000);
+ } catch (InterruptedException e) {
+ //BOUH!
+ }
+
+ //TODO
+
+ startTime = timeLog.log(startTime, "exportApplication",
+ "after Export execution");
+
+ switch (model.getCallback()) {
+
+ case NOTHING:
+ // nothing to do
+ break;
+ case REMOVE_FLIGHTS:
+ removeFlightData(model);
+ break;
+ case REMOVE_ALL:
+ removeAllData();
+ break;
+ }
+
+ timeLog.log(startTime, "exportApplication", "after Callback execution");
+
+ }
+
+ protected void removeFlightData(ExportApplicationModel model) {
+ if (logger.isInfoEnabled()) {
+ logger.info("Will remove flight data for campaign {}",
+ model.getCampaign().getCode());
+ }
+ }
+
+ protected void removeAllData() {
+ if (logger.isInfoEnabled()) {
+ logger.info("Will remove all data from current db (create a new db...)");
+ }
+ }
+}
Property changes on: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/exportApplication/ExportApplicationService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
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-11 09:17:30 UTC (rev 412)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapModel.java 2012-08-12 10:34:09 UTC (rev 413)
@@ -35,7 +35,7 @@
import java.util.List;
/**
- * Model of export map UI.
+ * Model of export map.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 0.5
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-11 09:17:30 UTC (rev 412)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java 2012-08-12 10:34:09 UTC (rev 413)
@@ -35,6 +35,7 @@
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.exportApplication.ExportApplicationUI;
import fr.ulr.sammoa.ui.swing.io.exportMap.ExportMapUI;
import fr.ulr.sammoa.ui.swing.util.SammoaUtil;
import jaxx.runtime.SwingUtil;
@@ -165,16 +166,17 @@
campaign.getCode(),
campaign.getRegion().getCode(),
flight.getFlightNumber()));
- ui.getBody().add(currentBody);
+ ui.getBody().add(currentBody, BorderLayout.CENTER);
break;
case CAMPAIGN:
currentBody = new CampaignUI(context);
context.getSwingSession().add(currentBody);
ui.getBody().setTitle(_("sammoa.title.campaign"));
- ui.getBody().add(currentBody);
+ ui.getBody().add(currentBody, BorderLayout.CENTER);
break;
+
case EXPORT_MAP:
currentBody = new ExportMapUI(context);
context.getSwingSession().add(currentBody);
@@ -182,6 +184,12 @@
ui.getBody().add(currentBody);
break;
+ case EXPORT_APPLICATION:
+ currentBody = new ExportApplicationUI(context);
+ context.getSwingSession().add(currentBody);
+ ui.getBody().setTitle(_("sammoa.title.exportApplication"));
+ ui.getBody().add(currentBody);
+ break;
}
ui.setScreen(screen);
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-11 09:17:30 UTC (rev 412)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaScreen.java 2012-08-12 10:34:09 UTC (rev 413)
@@ -36,5 +36,7 @@
FLIGHT,
+ EXPORT_APPLICATION,
+
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-11 09:17:30 UTC (rev 412)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/SammoaUIContext.java 2012-08-12 10:34:09 UTC (rev 413)
@@ -32,9 +32,7 @@
import fr.ulr.sammoa.ui.swing.flight.FlightUIModel;
import org.nuiton.widget.SwingSession;
-/**
- * @author sletellier <letellier(a)codelutin.com>
- */
+/** @author sletellier <letellier(a)codelutin.com> */
public class SammoaUIContext {
private static SammoaUIContext uiContext;
@@ -50,13 +48,11 @@
@Deprecated
protected FlightController flightController;
-
+
protected SwingSession swingSession;
-
+
protected SammoaDecoratorProvider decoratorProvider;
-
-// protected SammoaScreen screen;
-
+
protected String campaignId;
protected String flightId;
@@ -68,15 +64,15 @@
public static SammoaUIContext getUIContext() {
Preconditions.checkNotNull(uiContext,
- "You must create the context with the method " +
- "#newUIContext(SammoaContext) before retrieving it");
+ "You must create the context with the method " +
+ "#newUIContext(SammoaContext) before retrieving it");
return uiContext;
}
protected SammoaUIContext(SammoaContext context) {
this.context = context;
}
-
+
public SammoaContext getAppContext() {
return context;
}
@@ -108,7 +104,7 @@
public void setSwingSession(SwingSession swingSession) {
this.swingSession = swingSession;
}
-
+
public SammoaDecoratorProvider getDecoratorProvider() {
if (decoratorProvider == null) {
decoratorProvider = new SammoaDecoratorProvider();
@@ -132,19 +128,6 @@
return flightId;
}
-// public void setFlightId(String flightId) {
-// this.flightId = flightId;
-// }
-
-// public SammoaScreen getScreen() {
-// return screen;
-// }
-
-// public void setScreen(SammoaScreen screen) {
-// this.screen = screen;
-// mainUIHandler.setScreen(screen);
-// }
-
public void setFlightScreen(String flightId) {
this.flightId = flightId;
mainUIHandler.setScreen(SammoaScreen.FLIGHT);
@@ -164,6 +147,12 @@
mainUIHandler.setScreen(SammoaScreen.EXPORT_MAP);
}
+ public void setExportApplicationScreen(String campaignId, String flightId) {
+ this.campaignId = campaignId;
+ this.flightId = flightId;
+ mainUIHandler.setScreen(SammoaScreen.EXPORT_APPLICATION);
+ }
+
public void setStatusMessage(String message) {
mainUIHandler.getUI().getStatus().setStatus(message);
}
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-11 09:17:30 UTC (rev 412)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.css 2012-08-12 10:34:09 UTC (rev 413)
@@ -65,9 +65,8 @@
text: "sammoa.action.exportMap";
}
-#exportButton {
- enabled:false;
- text: "sammoa.action.export";
+#exportApplicationButton {
+ text: "sammoa.action.exportApplication";
}
#onBoardButton {
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-11 09:17:30 UTC (rev 412)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUI.jaxx 2012-08-12 10:34:09 UTC (rev 413)
@@ -106,8 +106,8 @@
onActionPerformed='getHandler().showImport()'/>
<JButton id='exportMapButton'
onActionPerformed='getHandler().showExportMap()'/>
- <JButton id='exportButton'
- onActionPerformed='getHandler().showExport()'/>
+ <JButton id='exportApplicationButton'
+ onActionPerformed='getHandler().showExportApplication()'/>
<JButton id='onBoardButton'
onActionPerformed='getHandler().showOnBoard()'/>
<JButton id='validationButton'
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-11 09:17:30 UTC (rev 412)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/home/HomeUIHandler.java 2012-08-12 10:34:09 UTC (rev 413)
@@ -51,7 +51,9 @@
*/
public class HomeUIHandler implements SammoaUIHandler {
- private static final Logger logger = LoggerFactory.getLogger(HomeUIHandler.class);
+ /** Logger. */
+ private static final Logger logger =
+ LoggerFactory.getLogger(HomeUIHandler.class);
// XXX-fdesbois-2012-07-23 : used to avoid set unexpected set null during
// selections, this is a strange behavior of setElements that clear with
@@ -59,7 +61,7 @@
protected boolean comboIsAdjusting;
protected SammoaUIContext context;
-
+
protected HomeUI ui;
public HomeUIHandler(SammoaUIContext context, HomeUI ui) {
@@ -74,7 +76,7 @@
protected FlightService getFlightService() {
return context.getAppContext().getFlightService();
}
-
+
protected ReferentialService getReferentialService() {
return context.getAppContext().getReferentialService();
}
@@ -103,7 +105,7 @@
} else {
Campaign selectedCampaign = null;
-
+
// Get campaign from context, then from config
String campaignId = context.getCampaignId();
if (campaignId == null) {
@@ -138,17 +140,13 @@
Campaign campaign = ui.getCampaignListModel().getSelectedItem();
if (logger.isDebugEnabled()) {
- logger.debug(String.format("Select the campaign %s",
- campaign.getCode())
- );
+ logger.debug("Select the campaign {}", campaign.getCode());
}
getModel().setCampaign(campaign);
if (logger.isDebugEnabled()) {
- logger.debug(String.format("Get flights from campaign %s",
- campaign.getCode())
- );
+ logger.debug("Get flights from campaign {}", campaign.getCode());
}
List<Flight> flights = getFlightService().getFlights(campaign);
@@ -161,26 +159,22 @@
if (logger.isDebugEnabled()) {
- String flightsString = "[" + Joiner.on(";").join(
+ String flightsString = "[" + Joiner.on(";").join(
Iterables.transform(flights, Flights.toFlightNumber())
) + "]";
- logger.debug(String.format("Init flights combobox = %s",
- flightsString)
- );
+ logger.debug("Init flights combobox = {}", flightsString);
}
ui.getFlightListModel().setElements(flights);
if (logger.isDebugEnabled()) {
- String systemsIdString = "[" + Joiner.on(";").join(
+ String systemsIdString = "[" + Joiner.on(";").join(
systemIds
) + "]";
- logger.debug(String.format("Init systemId combobox = %s",
- systemsIdString)
- );
+ logger.debug("Init systemId combobox = {}", systemsIdString);
}
ui.getSystemIdListModel().setElements(systemIds);
@@ -198,19 +192,17 @@
selectSystemId();
}
}
-
+
public void selectSystemId() {
if (!comboIsAdjusting) {
comboIsAdjusting = true;
-
+
String systemId = ui.getSystemIdListModel().getSelectedItem();
if (logger.isDebugEnabled()) {
- logger.debug(String.format("Select the systemId %s",
- systemId)
- );
+ logger.debug("Select the systemId {}", systemId);
}
getModel().setSystemId(systemId);
@@ -222,14 +214,12 @@
if (logger.isDebugEnabled()) {
- String flightString = "[" + Joiner.on(";").join(
+ String flightString = "[" + Joiner.on(";").join(
Iterables.transform(filteredFlights, Flights.toFlightNumber())
) + "]";
- logger.debug(String.format("Init flights combobox filtered by %s = %s",
- systemId,
- flightString)
- );
+ logger.debug("Init flights combobox filtered by {} = {}",
+ systemId, flightString);
}
ui.getFlightListModel().setElements(filteredFlights);
@@ -243,24 +233,24 @@
selectFlight();
}
}
-
+
public void selectFlight() {
if (!comboIsAdjusting) {
-
+
Flight flight = ui.getFlightListModel().getSelectedItem();
if (logger.isDebugEnabled()) {
- logger.debug(String.format("Select the flight %s",
- flight != null ? "" + flight.getFlightNumber() : "null")
+ logger.debug("Select the flight {}",
+ flight != null ? "" + flight.getFlightNumber() : "null"
);
}
getModel().setFlight(flight);
}
}
-
+
public void showSelectedCampaign() {
-
+
Campaign campaign = getModel().getCampaign();
context.setCampaignScreen(campaign.getTopiaId());
@@ -270,29 +260,34 @@
context.setCampaignScreen(null);
}
-
+
public void showImport() {
-
+
}
-
+
public void showExportMap() {
Campaign campaign = getModel().getCampaign();
- String campaignId = campaign==null?null:campaign.getTopiaId();
+ String campaignId = campaign == null ? null : campaign.getTopiaId();
context.setExportMapScreen(campaignId);
}
- public void showExport() {
+ public void showExportApplication() {
+ Campaign campaign = getModel().getCampaign();
+ String campaignId = campaign == null ? null : campaign.getTopiaId();
+ Flight flight = getModel().getFlight();
+ String flightId = flight == null ? null : flight.getTopiaId();
+ context.setExportApplicationScreen(campaignId, flightId);
}
-
+
public void showOnBoard() {
// Save the campaignId in the config for next loading
Campaign campaign = getModel().getCampaign();
getConfig().setCampaignId(campaign.getTopiaId());
getConfig().save();
-
+
Flight flight = getModel().getFlight();
// Create a new Flight for the selected Campaign
@@ -303,11 +298,11 @@
context.setFlightScreen(flight.getTopiaId());
}
-
+
public void showValidation() {
-
+
}
-
+
protected Flight getFirstFlight(List<Flight> flights) {
return flights.size() > 1 ? flights.get(1) : null;
}
Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.css
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.css (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.css 2012-08-12 10:34:09 UTC (rev 413)
@@ -0,0 +1,91 @@
+/*
+ * #%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%
+ */
+#campaignLabel {
+ text: "sammoa.label.campaign";
+}
+
+#campaignCombobox {
+ renderer: {new DecoratorProviderListCellRenderer(getHandler().getDecoratorProvider())};
+}
+
+#flightLabel {
+ text: "sammoa.label.flight";
+}
+
+#flightCombobox {
+ renderer: {new DecoratorProviderListCellRenderer(getHandler().getDecoratorProvider())};
+}
+
+#quitButton {
+ text:"sammoa.action.quitExportMaps";
+}
+
+#exportButton {
+ text:"sammoa.action.exportApplication";
+}
+
+#exportDirectoryFileChooseAction {
+ actionIcon:"fileChooser";
+}
+
+#exportDirectoryLbl {
+ text:"sammoa.label.exportApplicationDirectory";
+}
+
+#exportDirectory {
+ text:{model.getExportDirectory().getAbsolutePath()};
+}
+
+#exportFilenameLbl {
+ text:"sammoa.label.exportApplicationFilename";
+}
+
+#exportFilename {
+ text:{model.getExportFilename()};
+}
+
+#callbackLbl {
+ text:"sammoa.label.exportApplication.callbacks";
+}
+
+#callbackNothing {
+ text:"sammoa.label.exportApplication.callbackNothing";
+ selected:{ExportApplicationCallbackMode.NOTHING == model.getCallback()};
+ buttonGroup:"callbacks";
+ value:{ExportApplicationCallbackMode.NOTHING};
+}
+
+#callbackRemoveData {
+ text:"sammoa.label.exportApplication.callbackRemoveData";
+ buttonGroup:"callbacks";
+ selected:{ExportApplicationCallbackMode.REMOVE_FLIGHTS == model.getCallback()};
+ value:{ExportApplicationCallbackMode.REMOVE_FLIGHTS};
+}
+
+#callbackRemoveAll {
+ text:"sammoa.label.exportApplication.callbackRemoveAll";
+ buttonGroup:"callbacks";
+ selected:{ExportApplicationCallbackMode.REMOVE_ALL == model.getCallback()};
+ value:{ExportApplicationCallbackMode.REMOVE_ALL};
+}
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.css
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.jaxx
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.jaxx (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.jaxx 2012-08-12 10:34:09 UTC (rev 413)
@@ -0,0 +1,130 @@
+<!--
+ #%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%
+ -->
+<JPanel id='exportApplicationUI' layout='{new BorderLayout()}'
+ implements='fr.ulr.sammoa.ui.swing.SammoaUI<ExportApplicationUIHandler>'>
+
+ <import>
+ fr.ulr.sammoa.persistence.Campaign
+ fr.ulr.sammoa.persistence.Flight
+ fr.ulr.sammoa.ui.swing.SammoaUIContext
+ fr.ulr.sammoa.application.io.exportApplication.ExportApplicationCallbackMode
+
+ jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer
+
+ java.awt.BorderLayout
+ java.awt.event.ItemEvent
+ java.io.File
+
+ static org.nuiton.i18n.I18n._
+ </import>
+
+ <script><![CDATA[
+
+ public ExportApplicationUI(SammoaUIContext context) {
+ ExportApplicationUIHandler handler =
+ new ExportApplicationUIHandler(context, this);
+ setContextValue(handler);
+ handler.beforeInitUI();
+ }
+
+ protected void $afterCompleteSetup() {
+ getHandler().afterInitUI();
+ }
+ ]]></script>
+
+ <ExportApplicationUIModel id='model'
+ initializer='getContextValue(ExportApplicationUIModel.class)'/>
+
+ <ExportApplicationUIHandler id='handler'
+ initializer='getContextValue(ExportApplicationUIHandler.class)'/>
+
+ <Table fill='both' constraints='BorderLayout.CENTER'>
+ <!-- Campaign filter -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='campaignLabel'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0' columns='2'>
+ <JComboBox id='campaignCombobox'
+ onItemStateChanged='if (ItemEvent.SELECTED == event.getStateChange()) { getModel().setSelectedCampaign((Campaign)event.getItem()); } else { getModel().setSelectedCampaign(null); }'/>
+ </cell>
+ </row>
+ <!-- Flight filter -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='flightLabel'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0' columns='2'>
+ <JComboBox id='flightCombobox'
+ onItemStateChanged='if (ItemEvent.SELECTED == event.getStateChange()) { getModel().setSelectedFlight((Flight)event.getItem()); } else { getModel().setSelectedFlight(null); }'/>
+ </cell>
+ </row>
+ <!-- export directory-->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='exportDirectoryLbl'/>
+ </cell>
+ <cell weightx='1' fill="horizontal">
+ <JTextField id='exportDirectory'
+ onKeyReleased='getModel().setExportDirectory(new File(((JTextField)event.getSource()).getText()))'/>
+ </cell>
+ <cell anchor="east">
+ <JButton id="exportDirectoryFileChooseAction"
+ onActionPerformed="getHandler().chooseExportDirectory()"/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor='west'>
+ <JLabel id='exportFilenameLbl'/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0' columns='2'>
+ <JTextField id='exportFilename'
+ onKeyReleased='model.setExportFilename(((JTextField)event.getSource()).getText())'/>
+ </cell>
+ </row>
+ <!-- callBack -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='callbackLbl'/>
+ </cell>
+ <cell weightx='1' fill="horizontal" columns='2'>
+ <JPanel layout='{new GridLayout(0,1)}'>
+ <JRadioButton id='callbackNothing'/>
+ <JRadioButton id='callbackRemoveData'/>
+ <JRadioButton id='callbackRemoveAll'/>
+ </JPanel>
+ </cell>
+ </row>
+ <!--export actions-->
+ <row>
+ <cell columns='5' fill="both">
+ <JPanel layout='{new GridLayout(1,2,0,0)}'>
+ <JButton id='quitButton' onActionPerformed='getHandler().close()'/>
+ <JButton id='exportButton'
+ onActionPerformed='getHandler().exportApplication()'/>
+ </JPanel>
+ </cell>
+ </row>
+ </Table>
+</JPanel>
\ No newline at end of file
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUI.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIHandler.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIHandler.java (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIHandler.java 2012-08-12 10:34:09 UTC (rev 413)
@@ -0,0 +1,270 @@
+package fr.ulr.sammoa.ui.swing.io.exportApplication;
+/*
+ * #%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%
+ */
+
+import fr.ulr.sammoa.application.FlightService;
+import fr.ulr.sammoa.application.ReferentialService;
+import fr.ulr.sammoa.application.io.exportApplication.ExportApplicationCallbackMode;
+import fr.ulr.sammoa.application.io.exportApplication.ExportApplicationModel;
+import fr.ulr.sammoa.application.io.exportApplication.ExportApplicationService;
+import fr.ulr.sammoa.application.map.ExportMapService;
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.Flight;
+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 org.nuiton.util.FileUtil;
+import org.nuiton.util.decorator.Decorator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.swing.JFrame;
+import javax.swing.SwingUtilities;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.File;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * Handelr of {@link ExportApplicationUI}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class ExportApplicationUIHandler implements SammoaUIHandler {
+
+ private static final Logger logger =
+ LoggerFactory.getLogger(ExportApplicationUIHandler.class);
+
+ private final ExportApplicationUI ui;
+
+ protected SammoaUIContext context;
+
+ public ExportApplicationUIHandler(SammoaUIContext context,
+ ExportApplicationUI ui) {
+ this.context = context;
+ this.ui = ui;
+ }
+
+ protected ReferentialService getReferentialService() {
+ return context.getAppContext().getReferentialService();
+ }
+
+ protected FlightService getFlightService() {
+ return context.getAppContext().getFlightService();
+ }
+
+ protected ExportMapService getExportMapService() {
+ return context.getAppContext().getExportMapService();
+ }
+
+ public SammoaDecoratorProvider getDecoratorProvider() {
+ return context.getDecoratorProvider();
+ }
+
+ @Override
+ public void beforeInitUI() {
+
+ //-- create model --//
+
+ ExportApplicationUIModel model = new ExportApplicationUIModel();
+
+ List<Campaign> campaigns = getReferentialService().getCampaigns();
+ //TODO-tchemit-2012-08-03 add an null campaign (for test purpose, should be removed...)
+ campaigns.add(0, null);
+ model.setCampaigns(campaigns);
+
+ String campaignId = context.getCampaignId();
+
+ if (campaignId != null) {
+
+ Campaign campaign = getReferentialService().getCampaign(campaignId);
+
+ // selected cam
+ model.setSelectedCampaign(campaign);
+ }
+
+ String flightId = context.getFlightId();
+
+ if (flightId != null) {
+
+ Flight flight = getFlightService().getFlight(flightId);
+
+ // selected cam
+ model.setSelectedFlight(flight);
+ }
+
+ //-- share model and handler in jaxx context --//
+ ui.setContextValue(this);
+ ui.setContextValue(model);
+
+ model.addPropertyChangeListener(new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+
+ if (ExportApplicationUIModel.PROPERTY_SELECTED_CAMPAIGN.equals(evt.getPropertyName())) {
+ Campaign newValue = (Campaign) evt.getNewValue();
+ onSelectedCampaignChanged(newValue);
+ } else if (ExportApplicationUIModel.PROPERTY_FLIGHTS.equals(evt.getPropertyName())) {
+ Collection<Flight> newValue = (Collection<Flight>) evt.getNewValue();
+ onFlightsChanged(newValue);
+ } else if (ExportApplicationUIModel.PROPERTY_SELECTED_FLIGHT.equals(evt.getPropertyName())) {
+ Flight newValue = (Flight) evt.getNewValue();
+ onSelectedFlightChanged(newValue);
+ }
+ }
+ });
+ }
+
+ @Override
+ public void afterInitUI() {
+ ExportApplicationUIModel model = getModel();
+
+ File currentDirectory = FileUtil.getCurrentDirectory();
+ String absolutePath = currentDirectory.getAbsolutePath();
+ if (absolutePath.endsWith(File.separator + ".")) {
+ currentDirectory = new File(absolutePath.substring(0, absolutePath.length() - 2));
+ }
+ if (logger.isInfoEnabled()) {
+ logger.info("Current directory to use: {}", currentDirectory);
+ }
+ model.setExportDirectory(currentDirectory);
+ model.setCallback(ExportApplicationCallbackMode.NOTHING);
+
+ SwingUtil.fillComboBox(ui.getCampaignCombobox(),
+ model.getCampaigns(),
+ model.getSelectedCampaign());
+
+ Flight selectedFlight = model.getSelectedFlight();
+
+ onSelectedCampaignChanged(model.getSelectedCampaign());
+ onSelectedFlightChanged(selectedFlight);
+ }
+
+ public void exportApplication() {
+
+ JFrame frame = ui.getParentContainer(JFrame.class);
+ SammoaUtil.updateBusyState(frame, true);
+
+ try {
+ SwingUtilities.invokeLater(
+ new Runnable() {
+ @Override
+ public void run() {
+ ExportApplicationModel dataModel = getModel().toModel();
+
+ ExportApplicationService service =
+ context.getAppContext().newExportApplicationService();
+ service.exportApplication(dataModel);
+ }
+ }
+ );
+
+ } finally {
+ SammoaUtil.updateBusyState(frame, false);
+ }
+ }
+
+ protected void onSelectedCampaignChanged(Campaign newCampaign) {
+
+ // reset flights,...
+ if (logger.isInfoEnabled()) {
+ Decorator<Campaign> decorator = getDecoratorProvider().getDecoratorByType(Campaign.class);
+ logger.info("New selected campain: {}", decorator.toString(newCampaign));
+ }
+
+ ExportApplicationUIModel model = getModel();
+
+ List<Flight> flights;
+ String filename;
+ if (newCampaign == null) {
+ flights = Collections.emptyList();
+ filename = "";
+ } else {
+ flights = getFlightService().getFlights(newCampaign);
+ filename = String.format("campaign-%s.sammoa", newCampaign.getCode());
+ }
+ if (logger.isDebugEnabled()) {
+ logger.debug("New flights: {}", flights.size());
+ logger.debug("New filename: {}", filename);
+ }
+ model.setFlights(flights);
+ model.setExportFilename(filename);
+ }
+
+ protected void onFlightsChanged(Collection<Flight> flights) {
+
+ ExportApplicationUIModel model = getModel();
+ Flight selectedFlight = model.getSelectedFlight();
+ if (flights.contains(selectedFlight)) {
+ model.setSelectedFlight(null);
+ }
+
+ SwingUtil.fillComboBox(ui.getFlightCombobox(),
+ flights,
+ selectedFlight);
+ }
+
+ protected void onSelectedFlightChanged(Flight newCampaign) {
+
+ // reset flights,...
+ if (logger.isInfoEnabled()) {
+ Decorator<Flight> decorator = getDecoratorProvider().getDecoratorByType(Flight.class);
+ logger.info("New selected flight: {}", decorator.toString(newCampaign));
+ }
+
+ ExportApplicationUIModel model = getModel();
+ }
+
+ public void close() {
+ context.setHomeScreen();
+ }
+
+ @Override
+ public void onCloseUI() {
+ }
+
+ public void chooseExportDirectory() {
+ File f = SammoaUtil.chooseDirectory(
+ ui,
+ _("sammoa.title.choose.export.directory"),
+ _("sammoa.action.choose.export.directory"),
+ ui.getModel().getExportDirectory()
+ );
+ ui.getModel().setExportDirectory(f);
+ }
+
+
+ public ExportApplicationUIModel getModel() {
+ return ui.getModel();
+ }
+
+
+}
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIModel.java
===================================================================
--- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIModel.java (rev 0)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIModel.java 2012-08-12 10:34:09 UTC (rev 413)
@@ -0,0 +1,161 @@
+package fr.ulr.sammoa.ui.swing.io.exportApplication;
+/*
+ * #%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%
+ */
+
+import com.google.common.collect.Lists;
+import fr.ulr.sammoa.application.io.exportApplication.ExportApplicationCallbackMode;
+import fr.ulr.sammoa.application.io.exportApplication.ExportApplicationModel;
+import fr.ulr.sammoa.persistence.Campaign;
+import fr.ulr.sammoa.persistence.Flight;
+import org.jdesktop.beans.AbstractSerializableBean;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * Model of export application UI.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.6
+ */
+public class ExportApplicationUIModel 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_FLIGHTS = "flights";
+
+ public static final String PROPERTY_SELECTED_FLIGHT = "selectedFlight";
+
+ public static final String PROPERTY_EXPORT_DIRECTORY = "exportDirectory";
+
+ public static final String PROPERTY_EXPORT_FILENAME = "exportFilename";
+
+ public static final String PROPERTY_CALLBACK = "callback";
+
+ protected List<Campaign> campaigns;
+
+ protected Campaign selectedCampaign;
+
+ protected List<Flight> flights;
+
+ protected Flight selectedFlight;
+
+ protected File exportDirectory;
+
+ protected String exportFilename;
+
+ protected ExportApplicationCallbackMode callback;
+
+ 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 getExportFilename() {
+ return exportFilename;
+ }
+
+ public void setExportFilename(String exportFilename) {
+ String oldValue = this.exportFilename;
+ this.exportFilename = exportFilename;
+ firePropertyChange(PROPERTY_EXPORT_FILENAME, oldValue, exportFilename);
+ }
+
+ 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 List<Flight> getFlights() {
+ if (flights == null) {
+ flights = Lists.newArrayList();
+ }
+ return flights;
+ }
+
+ public void setFlights(List<Flight> flights) {
+ List<Flight> oldValue = this.flights;
+ this.flights = flights;
+ firePropertyChange(PROPERTY_FLIGHTS, oldValue, flights);
+ }
+
+ public Flight getSelectedFlight() {
+ return selectedFlight;
+ }
+
+ public void setSelectedFlight(Flight selectedFlight) {
+ Flight oldValue = this.selectedFlight;
+ this.selectedFlight = selectedFlight;
+ firePropertyChange(PROPERTY_SELECTED_FLIGHT, oldValue, selectedFlight);
+ }
+
+ public ExportApplicationCallbackMode getCallback() {
+ return callback;
+ }
+
+ public void setCallback(ExportApplicationCallbackMode callback) {
+ ExportApplicationCallbackMode oldValue = this.callback;
+ this.callback = callback;
+ firePropertyChange(PROPERTY_CALLBACK, oldValue, callback);
+ }
+
+ public ExportApplicationModel toModel() {
+
+ ExportApplicationModel result = ExportApplicationModel.newModel(
+ getExportDirectory(),
+ getExportFilename(),
+ getSelectedCampaign(),
+ getSelectedFlight(),
+ getCallback()
+ );
+ return result;
+ }
+}
\ No newline at end of file
Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportApplication/ExportApplicationUIModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
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-11 09:17:30 UTC (rev 412)
+++ trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 2012-08-12 10:34:09 UTC (rev 413)
@@ -19,6 +19,7 @@
sammoa.action.edit=Edit
sammoa.action.end.tip=END \: end effort and create a new TRANSIT route
sammoa.action.export=Export
+sammoa.action.exportApplication=Export
sammoa.action.exportEffortsMap=Export Efforts
sammoa.action.exportGeoPointsMap=Export GPS Points
sammoa.action.exportMap=Export Maps
@@ -95,7 +96,12 @@
sammoa.label.campaign.region=Region\:
sammoa.label.campaign.strate=Strates\:
sammoa.label.campaign.transect=Transects\:
-sammoa.label.exportDirectory=Export directory
+sammoa.label.exportApplication.callbackNothing=Do nothing
+sammoa.label.exportApplication.callbackRemoveAll=Remove all data
+sammoa.label.exportApplication.callbackRemoveData=Remove flights data
+sammoa.label.exportApplication.callbacks=Call back after export\:
+sammoa.label.exportApplicationDirectory=Export directory\:
+sammoa.label.exportApplicationFilename=Export filename\:
sammoa.label.exportEffortsFilename=Export filename (Efforts)
sammoa.label.exportGeoPointsFilename=Export filename (GeoPoints)
sammoa.label.exportMapDirectory=Export directory
@@ -218,6 +224,7 @@
sammoa.title.export.exportEfforts=Efforts Export
sammoa.title.export.exportGeoPoints=GPS Points ExportGPS
sammoa.title.export.exportObservations=Observations Export
+sammoa.title.exportApplication=Application Export
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
1
0
r412 - trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application
by tchemit@users.forge.codelutin.com 11 Aug '12
by tchemit@users.forge.codelutin.com 11 Aug '12
11 Aug '12
Author: tchemit
Date: 2012-08-11 11:17:30 +0200 (Sat, 11 Aug 2012)
New Revision: 412
Url: http://forge.codelutin.com/repositories/revision/sammoa/412
Log:
remove sun class in import
Modified:
trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java
Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java
===================================================================
--- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java 2012-08-11 08:56:03 UTC (rev 411)
+++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java 2012-08-11 09:17:30 UTC (rev 412)
@@ -62,7 +62,6 @@
import org.nuiton.util.TimeLog;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import sun.misc.URLClassPath;
import java.util.Collection;
import java.util.Collections;
1
0
r411 - trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap
by tchemit@users.forge.codelutin.com 11 Aug '12
by tchemit@users.forge.codelutin.com 11 Aug '12
11 Aug '12
Author: tchemit
Date: 2012-08-11 10:56:03 +0200 (Sat, 11 Aug 2012)
New Revision: 411
Url: http://forge.codelutin.com/repositories/revision/sammoa/411
Log:
clean code
Modified:
trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIHandler.java
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-11 08:54:13 UTC (rev 410)
+++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/exportMap/ExportMapUIHandler.java 2012-08-11 08:56:03 UTC (rev 411)
@@ -148,7 +148,7 @@
@Override
public void afterInitUI() {
- ExportMapUIModel model = ui.getModel();
+ ExportMapUIModel model = getModel();
model.setExportEffortsFilename("Efforts");
model.setExportObservationsFilename("Observations");
@@ -205,7 +205,7 @@
logger.info("New selected campain: {}", decorator.toString(newCampaign));
}
- ExportMapUIModel model = ui.getModel();
+ ExportMapUIModel model = getModel();
model.setSelectedStrates(Collections.<Strate>emptyList());
model.setSelectedSpecies(Collections.<Species>emptyList());
@@ -257,8 +257,6 @@
public void exportEfforts() {
- ExportMapUIModel model = ui.getModel();
-
Action startAction = new AbstractAction(
_("sammoa.action.startExport"),
SwingUtil.createActionIcon("accept")) {
@@ -293,6 +291,7 @@
}
};
+ ExportMapUIModel model = getModel();
displayExportLauncher(_("sammoa.title.export.exportEfforts"),
model.getExportEffortsFilename(),
model,
@@ -301,8 +300,6 @@
public void exportObservations() {
- ExportMapUIModel model = ui.getModel();
-
Action startAction = new AbstractAction(
_("sammoa.action.startExport"),
SwingUtil.createActionIcon("accept")) {
@@ -337,6 +334,8 @@
}
}
};
+
+ ExportMapUIModel model = getModel();
displayExportLauncher(_("sammoa.title.export.exportObservations"),
model.getExportObservationsFilename(),
model,
@@ -345,8 +344,8 @@
public void exportGeoPoints() {
- ExportMapUIModel model = ui.getModel();
+
Action startAction = new AbstractAction(
_("sammoa.action.startExport"),
SwingUtil.createActionIcon("accept")) {
@@ -363,7 +362,7 @@
SammoaUtil.updateBusyState(fileChooserUI, true);
try {
- ExportMapUIModel model = ui.getModel();
+ ExportMapUIModel model = getModel();
// persist the file name
model.setExportGeoPointsFilename(model.getExportFilename());
@@ -382,6 +381,8 @@
}
}
};
+
+ ExportMapUIModel model = getModel();
displayExportLauncher(_("sammoa.title.export.exportGeoPoints"),
model.getExportGeoPointsFilename(),
model,
1
0