Author: tchemit Date: 2012-08-23 00:02:42 +0200 (Thu, 23 Aug 2012) New Revision: 459 Url: http://forge.codelutin.com/repositories/revision/sammoa/459 Log: fix import/export Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.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-application/src/main/java/fr/ulr/sammoa/application/io/output/application/ExportApplicationService.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/application/ImportApplicationUIHandler.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/FlightService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java 2012-08-22 18:17:49 UTC (rev 458) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/FlightService.java 2012-08-22 22:02:42 UTC (rev 459) @@ -322,6 +322,9 @@ */ public void deleteFlightInDb(TopiaContext tx, String flightId) { + if (logger.isInfoEnabled()) { + logger.info("Delete flight {}", flightId); + } try { FlightDAO dao = SammoaDAOHelper.getFlightDAO(tx); 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 18:17:49 UTC (rev 458) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/ImportApplicationService.java 2012-08-22 22:02:42 UTC (rev 459) @@ -181,7 +181,7 @@ try { importReferentials(tx, modelFactory, tableMap); - tx.commitTransaction(); +// tx.commitTransaction(); startTime = timeLog.log(startTime, "importDb", "after referential import"); @@ -195,8 +195,6 @@ importFlight(tx, dbMetas, strategy, - tableMap, - associationMap, flightStorage); } } finally { @@ -219,14 +217,13 @@ private void importFlight(TopiaContext tx, SammoaDbMeta dbMetas, DataImportStrategy strategy, - Map<TableMeta<SammoaEntityEnum>, File> tableMap, - Map<AssociationMeta<SammoaEntityEnum>, File> associationMap, FlightStorage storage) throws IOException, TopiaException { - tableMap = getEntries(dbMetas.getDataTables(), storage); - associationMap = getEntries(dbMetas.getDataAssociations(), storage); + Map<TableMeta<SammoaEntityEnum>, File> tableMap = + getEntries(dbMetas.getDataTables(), storage); + Map<AssociationMeta<SammoaEntityEnum>, File> associationMap = + getEntries(dbMetas.getDataAssociations(), storage); - for (Map.Entry<TableMeta<SammoaEntityEnum>, File> entry : tableMap.entrySet()) { TableMeta<SammoaEntityEnum> meta = entry.getKey(); File file = entry.getValue(); @@ -242,6 +239,8 @@ } } + persistence.flushTransaction(tx); + for (Map.Entry<AssociationMeta<SammoaEntityEnum>, File> entry : associationMap.entrySet()) { AssociationMeta<SammoaEntityEnum> meta = entry.getKey(); File file = entry.getValue(); @@ -255,7 +254,6 @@ reader.close(); } } - } private void importReferentials(TopiaContext tx, 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 18:17:49 UTC (rev 458) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/SammoaImportModelFactory.java 2012-08-22 22:02:42 UTC (rev 459) @@ -31,6 +31,7 @@ import org.nuiton.topia.TopiaRuntimeException; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.csv.EntityCsvModel; +import org.nuiton.topia.persistence.csv.TopiaCsvCommons; import org.nuiton.topia.persistence.csv.in.EntityAssociationImportModel; import org.nuiton.topia.persistence.csv.in.ImportModelFactory; import org.nuiton.topia.persistence.metadata.AssociationMeta; @@ -40,6 +41,7 @@ import org.nuiton.util.csv.ImportModel; import java.io.Reader; +import java.util.Date; import java.util.List; import java.util.Map; @@ -91,7 +93,13 @@ String propertyName = columnMeta.getName(); Class<?> type = columnMeta.getType(); if (!columnMeta.isFK()) { - model.addDefaultColumn(propertyName, type); + if (Date.class.equals(type)) { + model.newColumnForImportExport( + propertyName, + TopiaCsvCommons.DAY_TIME_SECOND_MILI_WITH_TIMESTAMP); + } else { + model.addDefaultColumn(propertyName, type); + } } else { Class<TopiaEntity> entityType = (Class<TopiaEntity>) type; @@ -135,11 +143,20 @@ boolean result = false; if (source == SammoaEntityEnum.Flight && target == SammoaEntityEnum.Observer) { result = true; + } else if (source == SammoaEntityEnum.TransectFlight && target == SammoaEntityEnum.ObserverPosition) { + result = true; } +// else if (source == SammoaEntityEnum.Route && target == SammoaEntityEnum.ObserverPosition) { +// result = true; +// } return result; } public void close() { universe.clear(); } + + public SammoaDbMeta getDbMetas() { + return dbMetas; + } } 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 18:17:49 UTC (rev 458) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/input/application/strategy/DataImportStrategy.java 2012-08-22 22:02:42 UTC (rev 459) @@ -38,6 +38,7 @@ import org.nuiton.util.csv.ImportToMap; import java.io.Reader; +import java.util.Map; /** * Strategy to import data (create all entites, no update possible). @@ -70,18 +71,47 @@ ImportToMap importer, CsvImportResult<SammoaEntityEnum> csvResult) throws TopiaException { - if (getModelFactory().isNMAssociationMeta(meta)) { - TopiaCsvImports.importNMAssociation(getTx(), - meta, - importer, - csvResult, - 1000); + + SammoaEntityEnum target = meta.getTarget(); + boolean nmAssociationMeta = getModelFactory().isNMAssociationMeta(meta); + + if (getModelFactory().getDbMetas().isReferential(target)) { + + // must switch topia of target to the one in universe + Map<String, TopiaEntity> targetUniverse = + getModelFactory().getUniverse().get(target); + + if (nmAssociationMeta) { + TopiaCsvImports.importNMAssociation(getTx(), + meta, + targetUniverse, + importer, + csvResult, + 1000); + } else { + TopiaCsvImports.importAssociation(getTx(), + meta, + targetUniverse, + importer, + csvResult, + 1000); + } + + } else { - TopiaCsvImports.importAssociation(getTx(), - meta, - importer, - csvResult, - 1000); + if (nmAssociationMeta) { + TopiaCsvImports.importNMAssociation(getTx(), + meta, + importer, + csvResult, + 1000); + }else { + TopiaCsvImports.importAssociation(getTx(), + meta, + importer, + csvResult, + 1000); + } } } Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/application/ExportApplicationService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/application/ExportApplicationService.java 2012-08-22 18:17:49 UTC (rev 458) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/io/output/application/ExportApplicationService.java 2012-08-22 22:02:42 UTC (rev 459) @@ -47,6 +47,7 @@ import org.nuiton.topia.TopiaException; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.csv.EntityCsvModel; +import org.nuiton.topia.persistence.csv.TopiaCsvCommons; import org.nuiton.topia.persistence.csv.out.EntityAssociationExportModel; import org.nuiton.topia.persistence.csv.out.ExportEntityVisitor; import org.nuiton.topia.persistence.csv.out.ExportModelFactory; @@ -62,6 +63,7 @@ import java.io.File; import java.io.IOException; +import java.util.Date; import java.util.List; import java.util.Map; @@ -100,7 +102,13 @@ model.addForeignKeyForExport(propertyName, entityType); } else { - model.addDefaultColumn(propertyName, type); + if (Date.class.equals(type)) { + model.newColumnForImportExport( + propertyName, + TopiaCsvCommons.DAY_TIME_SECOND_MILI_WITH_TIMESTAMP); + } else { + model.addDefaultColumn(propertyName, type); + } } } return model; Modified: 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/ImportApplicationUIHandler.java 2012-08-22 18:17:49 UTC (rev 458) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/io/input/application/ImportApplicationUIHandler.java 2012-08-22 22:02:42 UTC (rev 459) @@ -38,6 +38,7 @@ 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.editor.FileEditor; import org.nuiton.util.FileUtil; import org.slf4j.Logger; @@ -176,8 +177,16 @@ try { importService.importApplication(dataModel); + SammoaUtil.showSuccessMessage( + frame, + _("sammoa.messageDialog.aplication.import.success", + getModel().getImportFile())); + + } catch (Exception e) { + ErrorDialogUI.showError(e); } finally { SammoaUtil.updateBusyState(frame, false); + close(); } } 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-22 18:17:49 UTC (rev 458) +++ trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 2012-08-22 22:02:42 UTC (rev 459) @@ -76,10 +76,10 @@ sammoa.flightPanel.table.column.position.left=Left sammoa.flightPanel.table.column.position.navigator=Nav sammoa.flightPanel.table.column.position.right=Right -sammoa.importApplication.flightTable.column.flightName= -sammoa.importApplication.flightTable.column.flightName.tip= -sammoa.importApplication.flightTable.column.toTreat= -sammoa.importApplication.flightTable.column.toTreat.tip= +sammoa.importApplication.flightTable.column.flightName=Flight name +sammoa.importApplication.flightTable.column.flightName.tip=Flight name +sammoa.importApplication.flightTable.column.toTreat=Select +sammoa.importApplication.flightTable.column.toTreat.tip=Select the flight to import it sammoa.info.importApplication.importfile.loaded.on.existingCampaign=Import an existing campaign %s, please choose which flights of the following list to import sammoa.info.importApplication.importfile.loaded.on.newCampaign=Import a new campaign %s, all the flights of the following list will be imported sammoa.info.importApplication.no.importfile.loaded=No import file loaded, choose an file to import then press the 'load import file' button @@ -131,6 +131,7 @@ sammoa.menu.showLogs=Display logs sammoa.menu.showLogs.tip=Display logs sammoa.message.goto.site=Opening %1$s on navigator +sammoa.messageDialog.aplication.import.success=Import of sammoa file %s done with success sammoa.messageDialog.map.export.success=Map (with %s rows in dbf) was successfully exported in directory\n\n%s sammoa.messageDialog.mapOrDbf.exportFile.alreadyExists=Export Shape file (%s)\nor dbf file (%s) already exists.\n\nConfirm to override it? sammoa.messageDialog.observers.import.success=%1$d observers are successfully imported