r449 - in trunk: sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/application sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io
Author: tchemit Date: 2012-08-20 16:27:46 +0200 (Mon, 20 Aug 2012) New Revision: 449 Url: http://forge.codelutin.com/repositories/revision/sammoa/449 Log: rename io.input.sammoa in io.input.application and io.output.sammoa into io.output.application Added: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/application/ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/application/ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/application/ImportApplicationUI.css trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/application/ImportApplicationUI.jaxx trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/application/ImportApplicationUIHandler.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/application/ImportApplicationUIModel.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/application/java-info.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/ExportApplicationCallbackMode.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/ExportApplicationUI.css trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/ExportApplicationUI.jaxx trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/ExportApplicationUIHandler.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/ExportApplicationUIModel.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/java-info.java Removed: 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/sammoa/ 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/sammoa/ Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/ImportApplicationModel.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/ImportApplicationService.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/java-info.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/output/application/ExportApplicationModel.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/application/ExportApplicationService.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/application/java-info.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/ImportApplicationModel.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationModel.java 2012-08-20 14:10:50 UTC (rev 446) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/ImportApplicationModel.java 2012-08-20 14:27:46 UTC (rev 449) @@ -1,4 +1,4 @@ -package fr.ulr.sammoa.application.io.input.sammoa; +package fr.ulr.sammoa.application.io.input.application; /* * #%L Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/ImportApplicationService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/ImportApplicationService.java 2012-08-20 14:10:50 UTC (rev 446) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/ImportApplicationService.java 2012-08-20 14:27:46 UTC (rev 449) @@ -1,4 +1,4 @@ -package fr.ulr.sammoa.application.io.input.sammoa; +package fr.ulr.sammoa.application.io.input.application; /* * #%L * SAMMOA :: Application Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/java-info.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/sammoa/java-info.java 2012-08-20 14:10:50 UTC (rev 446) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/java-info.java 2012-08-20 14:27:46 UTC (rev 449) @@ -1,9 +1,9 @@ /** - * Base package for sammo import. + * Base package for application import from a {@code sammoa} file. * * @since 0.6 */ -package fr.ulr.sammoa.application.io.input.sammoa; +package fr.ulr.sammoa.application.io.input.application; /* * #%L 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-20 14:18:24 UTC (rev 448) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/map/ImportMapService.java 2012-08-20 14:27:46 UTC (rev 449) @@ -191,9 +191,9 @@ if (logger.isDebugEnabled()) { logger.debug("Create new transect {}" + - "(graphicIndex = {})", - newTransect.getName(), - graphicIndex + "(graphicIndex = {})", + newTransect.getName(), + graphicIndex ); } @@ -203,10 +203,10 @@ if (logger.isWarnEnabled()) { logger.warn("The transect {} already " + - "exists and will be ignored " + - "(graphicIndex = {})", - existTransect.getName(), - graphicIndex + "exists and will be ignored " + + "(graphicIndex = {})", + existTransect.getName(), + graphicIndex ); } } @@ -254,7 +254,7 @@ if (logger.isDebugEnabled()) { logger.debug("Create new strate {}", - newStrate.getCode() + newStrate.getCode() ); } @@ -262,8 +262,8 @@ if (logger.isWarnEnabled()) { logger.warn("The strate {} already " + - "exists and will be ignored", - existStrate.getCode()); + "exists and will be ignored", + existStrate.getCode()); } } return result; Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/application/ExportApplicationModel.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationModel.java 2012-08-20 14:10:50 UTC (rev 446) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/application/ExportApplicationModel.java 2012-08-20 14:27:46 UTC (rev 449) @@ -1,4 +1,4 @@ -package fr.ulr.sammoa.application.io.output.sammoa; +package fr.ulr.sammoa.application.io.output.application; /* * #%L * SAMMOA :: Application Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/application/ExportApplicationService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/ExportApplicationService.java 2012-08-20 14:10:50 UTC (rev 446) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/application/ExportApplicationService.java 2012-08-20 14:27:46 UTC (rev 449) @@ -1,4 +1,4 @@ -package fr.ulr.sammoa.application.io.output.sammoa; +package fr.ulr.sammoa.application.io.output.application; /* * #%L * SAMMOA :: Application Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/application/java-info.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/sammoa/java-info.java 2012-08-20 14:10:50 UTC (rev 446) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/application/java-info.java 2012-08-20 14:27:46 UTC (rev 449) @@ -1,9 +1,11 @@ /** - * Base package for sammoa export operation. + * Base package for application export to a {@code sammoa} file. * * @since 0.6 */ -package fr.ulr.sammoa.application.io.output.sammoa;/* +package fr.ulr.sammoa.application.io.output.application; + +/* * #%L * SAMMOA :: Application * $Id$ 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-20 14:18:24 UTC (rev 448) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java 2012-08-20 14:27:46 UTC (rev 449) @@ -35,9 +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.input.application.ImportApplicationUI; +import fr.ulr.sammoa.ui.swing.io.output.application.ExportApplicationUI; 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.util.SammoaUtil; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.AboutPanel; Copied: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/application/ImportApplicationUI.css (from rev 446, 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/application/ImportApplicationUI.css (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/application/ImportApplicationUI.css 2012-08-20 14:27:46 UTC (rev 449) @@ -0,0 +1,42 @@ +/* + * #%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% + */ +#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/application/ImportApplicationUI.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/input/application/ImportApplicationUI.jaxx (from rev 446, 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/application/ImportApplicationUI.jaxx (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/application/ImportApplicationUI.jaxx 2012-08-20 14:27:46 UTC (rev 449) @@ -0,0 +1,81 @@ +<!-- + #%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='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 Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/application/ImportApplicationUI.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/input/application/ImportApplicationUIHandler.java (from rev 446, 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/application/ImportApplicationUIHandler.java (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/application/ImportApplicationUIHandler.java 2012-08-20 14:27:46 UTC (rev 449) @@ -0,0 +1,172 @@ +package fr.ulr.sammoa.ui.swing.io.input.application; +/* + * #%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.CampaignStorage; +import fr.ulr.sammoa.application.io.input.application.ImportApplicationModel; +import fr.ulr.sammoa.application.io.input.application.ImportApplicationService; +import fr.ulr.sammoa.persistence.Campaign; +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.UIDecoratorService; +import fr.ulr.sammoa.ui.swing.util.SammoaUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.swing.JFrame; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.io.File; + +/** + * UI Handler fo {@link ImportApplicationUI}. + * + * @author tchemit <chemit@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 UIDecoratorService decoratorService; + + public ImportApplicationUIHandler(SammoaUIContext context, + ImportApplicationUI ui) { + this.context = context; + this.ui = ui; + this.importService = context.getService(ImportApplicationService.class); + this.flightService = context.getService(FlightService.class); + this.referentialService = context.getService(ReferentialService.class); + this.decoratorService = context.getService(UIDecoratorService.class); + } + + @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 (ImportApplicationUIModel.PROPERTY_STORAGE.equals(evt.getPropertyName())) { + CampaignStorage newValue = (CampaignStorage) evt.getNewValue(); + onCampaignStorageChanged(newValue); + } +// else if (ImportApplicationUIModel.PROPERTY_FLIGHTS.equals(evt.getPropertyName())) { +// Collection<Flight> newValue = (Collection<Flight>) evt.getNewValue(); +// onFlightsChanged(newValue); +// } else if (ImportApplicationUIModel.PROPERTY_SELECTED_FLIGHT.equals(evt.getPropertyName())) { +// Flight newValue = (Flight) evt.getNewValue(); +// onSelectedFlightChanged(newValue); +// } + } + }); + } + + @Override + public void afterInitUI() { + } + + @Override + public void onCloseUI() { + } + + public void loadStorage(File file) { + + // reset any previous loaded storage + getModel().setStorage(null); + + // load storage + CampaignStorage storage = importService.loadCampaignStorage(file); + + // save it in model + getModel().setStorage(storage); + + } + + 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(); + } + + protected void onCampaignStorageChanged(CampaignStorage storage) { + String campaignId = storage.getId(); + + if (logger.isInfoEnabled()) { + logger.info("Will load campaing {}", campaignId); + } + Campaign campaign = referentialService.getCampaign(campaignId); + ImportApplicationUIModel model = getModel(); + + + if (campaign == null) { + + // new campaign + model.setNewCampaign(campaign); + } else { + + // existing campaign + model.setExistingCampaign(campaign); + } + } + +} Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/application/ImportApplicationUIHandler.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/application/ImportApplicationUIModel.java (from rev 446, 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/application/ImportApplicationUIModel.java (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/application/ImportApplicationUIModel.java 2012-08-20 14:27:46 UTC (rev 449) @@ -0,0 +1,161 @@ +package fr.ulr.sammoa.ui.swing.io.input.application; +/* + * #%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.CampaignStorage; +import fr.ulr.sammoa.application.io.input.application.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@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"; + + public static final String PROPERTY_STORAGE = "storage"; + + /** File to import. */ + protected File importFile; + + /** Loaded campaign storage. */ + protected CampaignStorage storage; + + /** 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 CampaignStorage getStorage() { + return storage; + } + + public void setStorage(CampaignStorage storage) { + CampaignStorage oldValue = this.storage; + this.storage = storage; + firePropertyChange(PROPERTY_STORAGE, oldValue, storage); + } + + 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/application/ImportApplicationUIModel.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/input/application/java-info.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/application/java-info.java (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/application/java-info.java 2012-08-20 14:27:46 UTC (rev 449) @@ -0,0 +1,6 @@ +/** + * Package for import application from a {@code sammoa} file. + * + * @since 0.6 + */ +package fr.ulr.sammoa.ui.swing.io.input.application; Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/application/java-info.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Copied: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/ExportApplicationCallbackMode.java (from rev 446, trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/sammoa/ExportApplicationCallbackMode.java) =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/ExportApplicationCallbackMode.java (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/ExportApplicationCallbackMode.java 2012-08-20 14:27:46 UTC (rev 449) @@ -0,0 +1,56 @@ +package fr.ulr.sammoa.ui.swing.io.output.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% + */ + +/** + * What to do after a application export. + * + * @author tchemit <chemit@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 campaing data. + * <p/> + * Says after this referential are still there (Region, Species). + */ + REMOVE_CAMPAIGN, /** + * Remove campaign data. + * <p/> + * Says after this, there is no more stuff in db. + */ + REMOVE_ALL +} Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/ExportApplicationCallbackMode.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/application/ExportApplicationUI.css (from rev 446, 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/application/ExportApplicationUI.css (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/ExportApplicationUI.css 2012-08-20 14:27:46 UTC (rev 449) @@ -0,0 +1,105 @@ +/* + * #%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% + */ + +JRadioButton { + buttonGroup:"callbacks"; +} + +#model { + callback: {(ExportApplicationCallbackMode) callbacks.getSelectedValue()}; +} + +#callbacks { + selectedValue:{model.getCallback()}; +} + +#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"; + enabled:{model.isValid()}; +} + +#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:true; + value:{ExportApplicationCallbackMode.NOTHING}; +} + +#callbackRemoveFlightData { + text:"sammoa.label.exportApplication.callbackRemoveFlightData"; + value:{ExportApplicationCallbackMode.REMOVE_FLIGHTS}; +} + +#callbackRemoveCampaignData { + text:"sammoa.label.exportApplication.callbackRemoveCampaignData"; + value:{ExportApplicationCallbackMode.REMOVE_CAMPAIGN}; +} + +#callbackRemoveAllData { + text:"sammoa.label.exportApplication.callbackRemoveAllData"; + value:{ExportApplicationCallbackMode.REMOVE_ALL}; +} Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/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/application/ExportApplicationUI.jaxx (from rev 446, 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/application/ExportApplicationUI.jaxx (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/ExportApplicationUI.jaxx 2012-08-20 14:27:46 UTC (rev 449) @@ -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 + + 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)'/> + + <JAXXButtonGroup id='callbacks'/> + + <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='callbackRemoveFlightData'/> + <JRadioButton id='callbackRemoveCampaignData'/> + <JRadioButton id='callbackRemoveAllData'/> + </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/application/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/application/ExportApplicationUIHandler.java (from rev 446, 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/application/ExportApplicationUIHandler.java (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/ExportApplicationUIHandler.java 2012-08-20 14:27:46 UTC (rev 449) @@ -0,0 +1,382 @@ +package fr.ulr.sammoa.ui.swing.io.output.application; +/* + * #%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.application.ExportApplicationModel; +import fr.ulr.sammoa.application.io.output.application.ExportApplicationService; +import fr.ulr.sammoa.persistence.Campaign; +import fr.ulr.sammoa.persistence.Flight; +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.UIDecoratorService; +import fr.ulr.sammoa.ui.swing.util.SammoaUtil; +import jaxx.runtime.SwingUtil; +import jaxx.runtime.swing.ErrorDialogUI; +import jaxx.runtime.swing.renderer.DecoratorListCellRenderer; +import org.nuiton.util.FileUtil; +import org.nuiton.util.decorator.Decorator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.swing.JFrame; +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@codelutin.com> + * @since 0.6 + */ +public class ExportApplicationUIHandler implements SammoaUIHandler { + + private static final Logger logger = + LoggerFactory.getLogger(ExportApplicationUIHandler.class); + + private final ExportApplicationUI ui; + + protected final SammoaUIContext context; + + protected final ExportApplicationService exportService; + + protected final ReferentialService referentialService; + + protected final FlightService flightService; + + protected final UIDecoratorService decoratorService; + + public ExportApplicationUIHandler(SammoaUIContext context, + ExportApplicationUI ui) { + this.context = context; + this.ui = ui; + this.flightService = context.getService(FlightService.class); + this.referentialService = context.getService(ReferentialService.class); + this.exportService = context.getService(ExportApplicationService.class); + this.decoratorService = context.getService(UIDecoratorService.class); + } + + @Override + public void beforeInitUI() { + + //-- create model --// + + ExportApplicationUIModel model = new ExportApplicationUIModel(); + + 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); + + String campaignId = context.getCampaignId(); + + if (campaignId != null) { + + Campaign campaign = referentialService.getCampaign(campaignId); + model.setSelectedCampaign(campaign); + } + + String flightId = context.getFlightId(); + + if (flightId != null) { + + Flight flight = flightService.getFlight(flightId); + 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) { + + String propertyName = evt.getPropertyName(); + + if (ExportApplicationUIModel.PROPERTY_SELECTED_CAMPAIGN.equals(propertyName)) { + Campaign newValue = (Campaign) evt.getNewValue(); + onSelectedCampaignChanged(newValue); + } else if (ExportApplicationUIModel.PROPERTY_FLIGHTS.equals(propertyName)) { + Collection<Flight> newValue = (Collection<Flight>) evt.getNewValue(); + onFlightsChanged(newValue); + } else if (ExportApplicationUIModel.PROPERTY_SELECTED_FLIGHT.equals(propertyName)) { + Flight newValue = (Flight) evt.getNewValue(); + onSelectedFlightChanged(newValue); + } + + if (!ExportApplicationUIModel.PROPERTY_VALID.equals(propertyName)) { + + // validate model + validateModel(); + } + } + }); + } + + @Override + public void afterInitUI() { + + + ui.getCampaignCombobox().setRenderer(new DecoratorListCellRenderer( + decoratorService.getDecoratorByType(Campaign.class))); + ui.getFlightCombobox().setRenderer(new DecoratorListCellRenderer( + decoratorService.getDecoratorByType(Flight.class))); + + 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); + + SwingUtil.fillComboBox(ui.getCampaignCombobox(), + model.getCampaigns(), + model.getSelectedCampaign()); + + Flight selectedFlight = model.getSelectedFlight(); + + onSelectedCampaignChanged(model.getSelectedCampaign()); + onSelectedFlightChanged(selectedFlight); + } + + @Override + public void onCloseUI() { + } + + public void exportApplication() { + + JFrame frame = ui.getParentContainer(JFrame.class); + + try { + ExportApplicationModel dataModel = getModel().toModel(); + + boolean doExport = checkFileToExport(dataModel); + + if (doExport) { + + SammoaUtil.updateBusyState(frame.getRootPane(), true); + + exportService.exportApplication(dataModel); + + SammoaUtil.showSuccessMessage( + frame, + _("sammoa.messageDialog.sammoa.export.success", + dataModel.getExportFile())); + + boolean removeFlightId = false; + boolean removeCampaingId = false; + + switch (getModel().getCallback()) { + + case NOTHING: + // nothing to do + break; + case REMOVE_FLIGHTS: + removeFlights(dataModel); + removeFlightId = true; + break; + case REMOVE_CAMPAIGN: + removeCampaign(dataModel); + removeCampaingId = true; + break; + case REMOVE_ALL: + removeAllData(); + removeCampaingId = true; + break; + + } + + if (removeCampaingId) { + context.setCampaignId(null); + removeFlightId = true; + } + + if (removeFlightId) { + context.setFlightId(null); + } + close(); + } + + } catch (Exception e) { + ErrorDialogUI.showError(e); + } finally { + SammoaUtil.updateBusyState(frame.getRootPane(), false); + } + } + + protected void removeFlights(ExportApplicationModel model) { + String campaignId = model.getCampaignId(); + Iterable<String> flightIds = model.getFlightIds(); + if (logger.isInfoEnabled()) { + logger.info("Will remove selected flights for campaign {}: {}", + campaignId, flightIds); + } + + for (String flightId : flightIds) { + flightService.deleteFlight(campaignId, flightId); + } + } + + protected void removeCampaign(ExportApplicationModel model) { + if (logger.isInfoEnabled()) { + logger.info("Will remove campaign data {}", model.getCampaignId()); + } + + referentialService.deleteCampaign(model.getCampaignId()); + } + + protected void removeAllData() { + if (logger.isInfoEnabled()) { + logger.info("Will remove all data from current db (create a new db...)"); + } + + referentialService.deleteAllData(); + } + + protected void validateModel() { + boolean valid = true; + + ExportApplicationUIModel model = getModel(); + + if (model.getSelectedCampaign() == null) { + + // no campaign selected + valid = false; + } else { + + if (model.getExportDirectory() == null || + !model.getExportDirectory().exists()) { + + // export directory does not exists + valid = false; + } + } + + model.setValid(valid); + } + + protected boolean checkFileToExport(ExportApplicationModel dataModel) { + boolean doExport = true; + + if (dataModel.getExportFile().exists()) { + doExport = SammoaUtil.askQuestion( + ui, + _("sammoa.messageDialog.sammoa.exportFile.alreadyExists", + dataModel.getExportFile())); + } + return doExport; + } + + 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 = + decoratorService.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 = flightService.getFlights(newCampaign); + // add a null value to unselect flights + flights.add(0, null); + 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 = + decoratorService.getDecoratorByType(Flight.class); + logger.info("New selected flight: {}", + decorator.toString(newCampaign)); + } + + ExportApplicationUIModel model = getModel(); + } + + +} Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/ExportApplicationUIHandler.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/application/ExportApplicationUIModel.java (from rev 446, 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/application/ExportApplicationUIModel.java (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/ExportApplicationUIModel.java 2012-08-20 14:27:46 UTC (rev 449) @@ -0,0 +1,189 @@ +package fr.ulr.sammoa.ui.swing.io.output.application; +/* + * #%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.Iterables; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import fr.ulr.sammoa.application.io.output.application.ExportApplicationModel; +import fr.ulr.sammoa.persistence.Campaign; +import fr.ulr.sammoa.persistence.Flight; +import org.jdesktop.beans.AbstractSerializableBean; +import org.nuiton.topia.persistence.TopiaId; + +import java.io.File; +import java.util.List; +import java.util.Set; + +/** + * Model of export application UI. + * + * @author tchemit <chemit@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"; + + public static final String PROPERTY_VALID = "valid"; + + protected List<Campaign> campaigns; + + protected Campaign selectedCampaign; + + protected List<Flight> flights; + + protected Flight selectedFlight; + + protected File exportDirectory; + + protected String exportFilename; + + protected ExportApplicationCallbackMode callback; + + protected boolean valid; + + 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 boolean isValid() { + return valid; + } + + public void setValid(boolean valid) { + boolean oldValue = this.valid; + this.valid = valid; + firePropertyChange(PROPERTY_VALID, oldValue, valid); + } + + public ExportApplicationModel toModel() { + + Set<Flight> flightsToExport; + + if (getSelectedFlight() == null) { + + // all flights of this campaign + flightsToExport = Sets.newHashSet(getFlights()); + // remove the null value + flightsToExport.remove(null); + } else { + + // only one flight to export + flightsToExport = Sets.newHashSet(getSelectedFlight()); + } + ExportApplicationModel result = ExportApplicationModel.newModel( + new File(getExportDirectory(), getExportFilename()), + getSelectedCampaign().getTopiaId(), + Iterables.transform(flightsToExport, TopiaId.GET_TOPIA_ID) + ); + 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/application/ExportApplicationUIModel.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/application/java-info.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/java-info.java (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/java-info.java 2012-08-20 14:27:46 UTC (rev 449) @@ -0,0 +1,6 @@ +/** + * Package for export application to a {@code sammoa} file. + * + * @since 0.6 + */ +package fr.ulr.sammoa.ui.swing.io.output.application; Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/java-info.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native
participants (1)
-
tchemit@users.forge.codelutin.com