Author: tchemit Date: 2012-08-22 20:17:49 +0200 (Wed, 22 Aug 2012) New Revision: 458 Url: http://forge.codelutin.com/repositories/revision/sammoa/458 Log: add busy blocker in ui + fix application import (just need now to fix the association import) Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/SammoaStorage.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/SammoaImportModelFactory.java trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/strategy/DataImportStrategy.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/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/ExportMapUIHandler.java Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/SammoaStorage.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/SammoaStorage.java 2012-08-22 16:20:46 UTC (rev 457) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/SammoaStorage.java 2012-08-22 18:17:49 UTC (rev 458) @@ -45,7 +45,7 @@ * @see FlightStorage * @since 0.6 */ -abstract class SammoaStorage<E> implements Serializable { +public abstract class SammoaStorage<E> implements Serializable { private static final long serialVersionUID = 1L; 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/application/ImportApplicationService.java 2012-08-22 16:20:46 UTC (rev 457) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/ImportApplicationService.java 2012-08-22 18:17:49 UTC (rev 458) @@ -32,6 +32,8 @@ import fr.ulr.sammoa.application.SammoaServiceSupport; import fr.ulr.sammoa.application.SammoaTechnicalException; import fr.ulr.sammoa.application.io.CampaignStorage; +import fr.ulr.sammoa.application.io.FlightStorage; +import fr.ulr.sammoa.application.io.SammoaStorage; import fr.ulr.sammoa.application.io.SammoaStorages; import fr.ulr.sammoa.application.io.input.application.strategy.DataImportStrategy; import fr.ulr.sammoa.application.io.input.application.strategy.ReferentialImportStrategy; @@ -177,27 +179,26 @@ dbMetas); try { - importReferentials(tx, modelFactory, tableMap); + importReferentials(tx, modelFactory, tableMap); - tx.commitTransaction(); + tx.commitTransaction(); - startTime = timeLog.log(startTime, "importDb", - "after referential import"); + startTime = timeLog.log(startTime, "importDb", + "after referential import"); - tableMap = getEntries(dbMetas.getDataTables(), storage); - associationMap = getEntries(dbMetas.getDataAssociations(), storage); + DataImportStrategy strategy = new DataImportStrategy( + modelFactory, tx, persistence.getPersistenceHelper() + ); + for (String flightId : model.getFlightIds()) { - DataImportStrategy strategy = new DataImportStrategy( - modelFactory, tx, persistence.getPersistenceHelper() - ); - for (String flightId : model.getFlightIds()) { - - importFlight(tx, - strategy, - tableMap, - associationMap, - flightId); - } + FlightStorage flightStorage = storage.getFlightStorage(flightId); + importFlight(tx, + dbMetas, + strategy, + tableMap, + associationMap, + flightStorage); + } } finally { modelFactory.close(); } @@ -216,11 +217,16 @@ } private void importFlight(TopiaContext tx, + SammoaDbMeta dbMetas, DataImportStrategy strategy, Map<TableMeta<SammoaEntityEnum>, File> tableMap, Map<AssociationMeta<SammoaEntityEnum>, File> associationMap, - String flightId) throws IOException, TopiaException { + FlightStorage storage) throws IOException, TopiaException { + tableMap = getEntries(dbMetas.getDataTables(), storage); + associationMap = getEntries(dbMetas.getDataAssociations(), storage); + + for (Map.Entry<TableMeta<SammoaEntityEnum>, File> entry : tableMap.entrySet()) { TableMeta<SammoaEntityEnum> meta = entry.getKey(); File file = entry.getValue(); @@ -278,7 +284,7 @@ } protected <M extends MetaFilenameAware<SammoaEntityEnum>> Map<M, File> getEntries( - List<M> metas, CampaignStorage storage) { + List<M> metas, SammoaStorage storage) { List<String> missingEntries = Lists.newArrayList(); Map<M, File> result = TopiaCsvImports.discoverEntries( Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/SammoaImportModelFactory.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/SammoaImportModelFactory.java 2012-08-22 16:20:46 UTC (rev 457) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/SammoaImportModelFactory.java 2012-08-22 18:17:49 UTC (rev 458) @@ -130,7 +130,13 @@ @Override public boolean isNMAssociationMeta(AssociationMeta<SammoaEntityEnum> meta) { - return false; + SammoaEntityEnum source = meta.getSource(); + SammoaEntityEnum target = meta.getTarget(); + boolean result = false; + if (source == SammoaEntityEnum.Flight && target == SammoaEntityEnum.Observer) { + result = true; + } + return result; } public void close() { Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/strategy/DataImportStrategy.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/strategy/DataImportStrategy.java 2012-08-22 16:20:46 UTC (rev 457) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/strategy/DataImportStrategy.java 2012-08-22 18:17:49 UTC (rev 458) @@ -69,12 +69,20 @@ public void importAssociation(AssociationMeta<SammoaEntityEnum> meta, ImportToMap importer, CsvImportResult<SammoaEntityEnum> csvResult) throws TopiaException { - TopiaCsvImports.importAssociation(getTx(), - meta, - importer, - csvResult, - 1000); + + if (getModelFactory().isNMAssociationMeta(meta)) { + TopiaCsvImports.importNMAssociation(getTx(), + meta, + importer, + csvResult, + 1000); + } else { + TopiaCsvImports.importAssociation(getTx(), + meta, + importer, + csvResult, + 1000); + } } - } Modified: 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.css 2012-08-22 16:20:46 UTC (rev 457) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/ExportApplicationUI.css 2012-08-22 18:17:49 UTC (rev 458) @@ -103,3 +103,8 @@ text:"sammoa.label.exportApplication.callbackRemoveAllData"; value:{ExportApplicationCallbackMode.REMOVE_ALL}; } + +#busyBlockLayerUI { + useIcon:false; + blockingColor:{UIManager.getColor("BlockingLayerUI.blockingColor")}; +} Modified: 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/ExportApplicationUI.jaxx 2012-08-22 16:20:46 UTC (rev 457) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/ExportApplicationUI.jaxx 2012-08-22 18:17:49 UTC (rev 458) @@ -32,6 +32,7 @@ java.awt.BorderLayout java.awt.event.ItemEvent java.io.File + javax.swing.UIManager static org.nuiton.i18n.I18n._ </import> @@ -58,7 +59,9 @@ <JAXXButtonGroup id='callbacks'/> - <Table fill='both' constraints='BorderLayout.CENTER'> + <BlockingLayerUI id='busyBlockLayerUI'/> + + <Table id='body' fill='both' constraints='BorderLayout.CENTER' decorator='boxed'> <!-- Campaign filter --> <row> <cell anchor='west'> Modified: 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/ExportApplicationUIHandler.java 2012-08-22 16:20:46 UTC (rev 457) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/application/ExportApplicationUIHandler.java 2012-08-22 18:17:49 UTC (rev 458) @@ -146,6 +146,7 @@ @Override public void afterInitUI() { + SwingUtil.setLayerUI(ui.getBody(), ui.getBusyBlockLayerUI()); ui.getCampaignCombobox().setRenderer(new DecoratorListCellRenderer( decoratorService.getDecoratorByType(Campaign.class))); @@ -182,6 +183,7 @@ JFrame frame = ui.getParentContainer(JFrame.class); + try { ExportApplicationModel dataModel = getModel().toModel(); @@ -189,6 +191,8 @@ if (doExport) { + ui.getBusyBlockLayerUI().setBlock(true); + SammoaUtil.updateBusyState(frame.getRootPane(), true); exportService.exportApplication(dataModel); @@ -235,6 +239,7 @@ } catch (Exception e) { ErrorDialogUI.showError(e); } finally { + ui.getBusyBlockLayerUI().setBlock(false); SammoaUtil.updateBusyState(frame.getRootPane(), false); } } Modified: 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.css 2012-08-22 16:20:46 UTC (rev 457) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapLauncherUI.css 2012-08-22 18:17:49 UTC (rev 458) @@ -41,3 +41,8 @@ text:{model.getExportFilename()}; } +#busyBlockLayerUI { + useIcon:false; + blockingColor:{UIManager.getColor("BlockingLayerUI.blockingColor")}; +} + 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-22 16:20:46 UTC (rev 457) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapLauncherUI.jaxx 2012-08-22 18:17:49 UTC (rev 458) @@ -26,6 +26,7 @@ <import> java.awt.BorderLayout java.io.File + javax.swing.UIManager static org.nuiton.i18n.I18n._ </import> @@ -44,6 +45,8 @@ <ExportMapUIHandler id='handler' initializer='getContextValue(ExportMapUIHandler.class)'/> + <BlockingLayerUI id='busyBlockLayerUI'/> + <Table id='body' fill='both' constraints='BorderLayout.CENTER' decorator='boxed'> <!-- export directory--> <row> 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-22 16:20:46 UTC (rev 457) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/output/map/ExportMapUIHandler.java 2012-08-22 18:17:49 UTC (rev 458) @@ -262,52 +262,32 @@ public void exportEfforts() { - Action startAction = new AbstractAction( + Action startAction = new AbstractStartAction( _("sammoa.action.startExport"), - SwingUtil.createActionIcon("accept")) { + ui) { private static final long serialVersionUID = 1L; @Override - public void actionPerformed(ActionEvent e) { - JButton source = (JButton) e.getSource(); + protected String getSuccessMessage(int nbRow, ExportMapModel dataModel) { + return _("sammoa.messageDialog.map.export.success", + nbRow, dataModel.getExportDirectory()); + } + @Override + protected int doImport(ExportMapModel dataModel) { + return exportService.exportEffortsMap(dataModel); + } - try { - ExportMapUIModel model = ui.getModel(); + @Override + protected ExportMapModel prepareModel(ExportMapUIModel model) { + // persist the file name + model.setExportEffortsFilename(model.getExportFilename()); - // persist the file name - model.setExportEffortsFilename(model.getExportFilename()); - - // create export service model - ExportMapModel dataModel = - model.toModel(model.getExportEffortsFilename()); - - boolean doExport = checkFileToExport(dataModel); - - if (doExport) { - - ExportMapLauncherUI fileChooserUI = SwingUtil.getParentContainer( - source, ExportMapLauncherUI.class); - - SammoaUtil.updateBusyState(fileChooserUI, true); - - // launch export - int nbRow = exportService.exportEffortsMap(dataModel); - - SammoaUtil.showSuccessMessage( - fileChooserUI, - _("sammoa.messageDialog.map.export.success", - nbRow, dataModel.getExportDirectory())); - } - - } catch (Exception eee) { - ErrorDialogUI.showError(eee); - } finally { - - SwingUtil.getParentContainer( - source, JDialog.class).setVisible(false); - } + // create export service model + ExportMapModel dataModel = + model.toModel(model.getExportEffortsFilename()); + return dataModel; } }; @@ -318,69 +298,35 @@ startAction); } - private boolean checkFileToExport(ExportMapModel dataModel) { - boolean doExport = true; - File dbf = dataModel.getExportFileWithoutExtension(".dbf"); - File shp = dataModel.getExportFileWithoutExtension(".shp"); - if (dbf.exists() || - shp.exists()) { - doExport = SammoaUtil.askQuestion( - ui, - _("sammoa.messageDialog.mapOrDbf.exportFile.alreadyExists", - dbf, shp)); - } - return doExport; - } public void exportObservations() { - Action startAction = new AbstractAction( + Action startAction = new AbstractStartAction( _("sammoa.action.startExport"), - SwingUtil.createActionIcon("accept")) { + ui) { private static final long serialVersionUID = 1L; @Override - public void actionPerformed(ActionEvent e) { + protected String getSuccessMessage(int nbRow, ExportMapModel dataModel) { + return _("sammoa.messageDialog.map.export.success", + nbRow, dataModel.getExportDirectory()); + } - JButton source = (JButton) e.getSource(); + @Override + protected int doImport(ExportMapModel dataModel) { + return exportService.exportObservationsMap(dataModel); + } - try { + @Override + protected ExportMapModel prepareModel(ExportMapUIModel model) { + // persist the file name + model.setExportObservationsFilename(model.getExportFilename()); - ExportMapUIModel model = ui.getModel(); - - // persist the file name - model.setExportObservationsFilename(model.getExportFilename()); - - // create export service model - ExportMapModel dataModel = - model.toModel(model.getExportObservationsFilename()); - - boolean doExport = checkFileToExport(dataModel); - - if (doExport) { - - ExportMapLauncherUI fileChooserUI = SwingUtil.getParentContainer( - source, ExportMapLauncherUI.class); - - SammoaUtil.updateBusyState(fileChooserUI, true); - - // launch export - int nbRow = exportService.exportObservationsMap(dataModel); - - SammoaUtil.showSuccessMessage( - fileChooserUI, - _("sammoa.messageDialog.map.export.success", - nbRow, dataModel.getExportDirectory())); - } - - } catch (Exception eee) { - ErrorDialogUI.showError(eee); - } finally { - - SwingUtil.getParentContainer( - source, JDialog.class).setVisible(false); - } + // create export service model + ExportMapModel dataModel = + model.toModel(model.getExportObservationsFilename()); + return dataModel; } }; @@ -393,54 +339,32 @@ public void exportGeoPoints() { - - Action startAction = new AbstractAction( + Action startAction = new AbstractStartAction( _("sammoa.action.startExport"), - SwingUtil.createActionIcon("accept")) { + ui) { private static final long serialVersionUID = 1L; @Override - public void actionPerformed(ActionEvent e) { + protected String getSuccessMessage(int nbRow, ExportMapModel dataModel) { + return _("sammoa.messageDialog.map.export.success", + nbRow, dataModel.getExportDirectory()); + } - JButton source = (JButton) e.getSource(); + @Override + protected int doImport(ExportMapModel dataModel) { + return exportService.exportGeoPointsMap(dataModel); + } - try { + @Override + protected ExportMapModel prepareModel(ExportMapUIModel model) { + // persist the file name + model.setExportGeoPointsFilename(model.getExportFilename()); - ExportMapUIModel model = getModel(); - - // persist the file name - model.setExportGeoPointsFilename(model.getExportFilename()); - - // create export service model - ExportMapModel dataModel = - model.toModel(model.getExportGeoPointsFilename()); - - boolean doExport = checkFileToExport(dataModel); - - if (doExport) { - - ExportMapLauncherUI fileChooserUI = SwingUtil.getParentContainer( - source, ExportMapLauncherUI.class); - - SammoaUtil.updateBusyState(fileChooserUI, true); - - // launch export - int nbRow = exportService.exportGeoPointsMap(dataModel); - - SammoaUtil.showSuccessMessage( - fileChooserUI, - _("sammoa.messageDialog.map.export.success", - nbRow, dataModel.getExportDirectory())); - } - - } catch (Exception eee) { - ErrorDialogUI.showError(eee); - } finally { - - SwingUtil.getParentContainer( - source, JDialog.class).setVisible(false); - } + // create export service model + ExportMapModel dataModel = + model.toModel(model.getExportGeoPointsFilename()); + return dataModel; } }; @@ -463,6 +387,9 @@ model.setExportFilename(defaultFilename); final ExportMapLauncherUI exportUI = new ExportMapLauncherUI(this); + SwingUtil.setLayerUI(exportUI.getBody(), + exportUI.getBusyBlockLayerUI()); + JFrame frame = ui.getParentContainer(JFrame.class); Action closeAction = new AbstractAction( _("sammoa.action.cancelExport"), @@ -522,4 +449,78 @@ list.putClientProperty("data", data); } + protected static abstract class AbstractStartAction extends AbstractAction { + + private static final long serialVersionUID = 1L; + + private final ExportMapUI ui; + + protected AbstractStartAction(String name, ExportMapUI ui) { + super(name, SwingUtil.createActionIcon("accept")); + this.ui = ui; + } + + @Override + public final void actionPerformed(ActionEvent e) { + + JButton source = (JButton) e.getSource(); + try { + + ExportMapUIModel model = ui.getModel(); + + ExportMapModel dataModel = prepareModel(model); + + boolean doExport = checkFileToExport(dataModel); + + if (doExport) { + + ExportMapLauncherUI fileChooserUI = SwingUtil.getParentContainer( + source, ExportMapLauncherUI.class); + + fileChooserUI.getBusyBlockLayerUI().setBlock(true); + SammoaUtil.updateBusyState(fileChooserUI, true); + + int nbRow = doImport(dataModel); + + String successMessage = getSuccessMessage(nbRow, dataModel); + + SammoaUtil.showSuccessMessage(fileChooserUI, successMessage); + } + + } catch (Exception eee) { + ErrorDialogUI.showError(eee); + } finally { + + ExportMapLauncherUI fileChooserUI = SwingUtil.getParentContainer( + source, ExportMapLauncherUI.class); + + fileChooserUI.getBusyBlockLayerUI().setBlock(false); + + SwingUtil.getParentContainer( + source, JDialog.class).setVisible(false); + } + } + + protected abstract String getSuccessMessage(int nbRow, ExportMapModel dataModel); + + protected abstract int doImport(ExportMapModel dataModel); + + protected abstract ExportMapModel prepareModel(ExportMapUIModel model); + + private boolean checkFileToExport(ExportMapModel dataModel) { + boolean doExport = true; + File dbf = dataModel.getExportFileWithoutExtension(".dbf"); + File shp = dataModel.getExportFileWithoutExtension(".shp"); + if (dbf.exists() || + shp.exists()) { + doExport = SammoaUtil.askQuestion( + ui, + _("sammoa.messageDialog.mapOrDbf.exportFile.alreadyExists", + dbf, shp)); + } + return doExport; + } + + } + }