branch feature/5954 updated (f3570e7 -> 3347a47)
This is an automated email from the git hooks/post-receive script. New change to branch feature/5954 in repository tutti. See http://git.codelutin.com/tutti.git from f3570e7 utilisation d'une exception si colonne non trouvee dans le header new 3347a47 fix imports The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 3347a47dc99a99fd069dedb4998930fe7d24cc5d Author: Kevin Morin <morin@codelutin.com> Date: Thu Dec 11 16:01:05 2014 +0100 fix imports Summary of changes: .../protocol/ProtocolImportExportService.java | 58 ++++++++++----- ...perationCaracteristicsFromColumnFileAction.java | 86 +++++++++------------- 2 files changed, 75 insertions(+), 69 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/5954 in repository tutti. See http://git.codelutin.com/tutti.git commit 3347a47dc99a99fd069dedb4998930fe7d24cc5d Author: Kevin Morin <morin@codelutin.com> Date: Thu Dec 11 16:01:05 2014 +0100 fix imports --- .../protocol/ProtocolImportExportService.java | 58 ++++++++++----- ...perationCaracteristicsFromColumnFileAction.java | 86 +++++++++------------- 2 files changed, 75 insertions(+), 69 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolImportExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolImportExportService.java index 442f8e9..f9a3a79 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolImportExportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolImportExportService.java @@ -31,6 +31,7 @@ import com.google.common.collect.Multimap; import com.google.common.collect.TreeMultimap; import com.google.common.io.Files; import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRow; +import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRowBean; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocols; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; @@ -129,22 +130,27 @@ public class ProtocolImportExportService extends AbstractTuttiService { ids.get(CaracteristicType.LENGTH_STEP)) ); - //FIXME -// protocol.setVesselUseFeaturePmfmId( -// mergeIds(protocol.getVesselUseFeaturePmfmId(), -// ids.get(CaracteristicType.VESSEL_USE_FEATURE)) -// ); -// -// protocol.setGearUseFeaturePmfmId( -// mergeIds(protocol.getGearUseFeaturePmfmId(), -// ids.get(CaracteristicType.GEAR_USE_FEATURE)) -// ); - protocol.setIndividualObservationPmfmId( mergeIds(protocol.getIndividualObservationPmfmId(), ids.get(CaracteristicType.INDIVIDUAL_OBSERVATION)) ); + List<CaracteristicMappingRow> caracteristicMapping = protocol.getCaracteristicMapping(); + if (caracteristicMapping == null) { + caracteristicMapping = new ArrayList<CaracteristicMappingRow>(); + } + Map<String, CaracteristicMappingRow> rowsByCaracteristicId = + Maps.uniqueIndex(caracteristicMapping, + new Function<CaracteristicMappingRow, String>() { + @Override + public String apply(CaracteristicMappingRow caracteristicMappingRow) { + return caracteristicMappingRow.getPmfmId(); + } + }); + + mergeCaracteristicMappingRows(ids, rowsByCaracteristicId, CaracteristicType.GEAR_USE_FEATURE); + mergeCaracteristicMappingRows(ids, rowsByCaracteristicId, CaracteristicType.VESSEL_USE_FEATURE); + } public void exportAllCaracteristic(File file, @@ -196,14 +202,14 @@ public class ProtocolImportExportService extends AbstractTuttiService { rows.addAll(Lists.transform(protocol.getLengthClassesPmfmId(), function)); } - //FIXME - if (!protocol.isCaracteristicMappingEmpty()) { - function.setType(CaracteristicType.VESSEL_USE_FEATURE); - for (CaracteristicMappingRow mappingRow : protocol.getCaracteristicMapping()) { - function.setType(CaracteristicType.valueOf(mappingRow.getTab())); - rows.add(function.apply(mappingRow.getPmfmId())); - } - } + //FIXME kmorin do export +// if (!protocol.isCaracteristicMappingEmpty()) { +// function.setType(CaracteristicType.VESSEL_USE_FEATURE); +// for (CaracteristicMappingRow mappingRow : protocol.getCaracteristicMapping()) { +// function.setType(CaracteristicType.valueOf(mappingRow.getTab())); +// rows.add(function.apply(mappingRow.getPmfmId())); +// } +// } if (!protocol.isIndividualObservationPmfmIdEmpty()) { @@ -514,6 +520,20 @@ public class ProtocolImportExportService extends AbstractTuttiService { return result; } + + protected void mergeCaracteristicMappingRows(Multimap<CaracteristicType, String> ids, + Map<String, CaracteristicMappingRow> rowsByCaracteristicId, + CaracteristicType type) { + for (String id : ids.get(type)) { + CaracteristicMappingRow row = rowsByCaracteristicId.get(id); + if (row == null) { + row = new CaracteristicMappingRowBean(); + row.setPmfmId(id); + } + row.setTab(type.name()); + } + } + private static class PmfmIdToCaracteristicRowFunction implements Function<String, CaracteristicRow> { private CaracteristicType type; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportFishingOperationCaracteristicsFromColumnFileAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportFishingOperationCaracteristicsFromColumnFileAction.java index b1eadc7..d5dd486 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportFishingOperationCaracteristicsFromColumnFileAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportFishingOperationCaracteristicsFromColumnFileAction.java @@ -1,6 +1,7 @@ package fr.ifremer.tutti.ui.swing.action; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.FishingOperations; import fr.ifremer.tutti.service.operationimport.FishingOperationImportService; import fr.ifremer.tutti.service.operationimport.ImportFromColumnFileFishingOperationNotFoundException; import fr.ifremer.tutti.service.operationimport.ImportFromColumnFileInvalidRowException; @@ -12,6 +13,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.csv.AbstractImportErrorInfo; import org.nuiton.jaxx.application.ApplicationBusinessException; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderFactory; import java.io.File; @@ -61,16 +64,42 @@ public class ImportFishingOperationCaracteristicsFromColumnFileAction extends Ab // Create a copy of the ui model to use in the import // this bean will be merged back after import into ui model - fishingOperationToMerge = model.toEntity(); - - //FIXME Check we don't need this ? -// fishingOperationToMerge = FishingOperations.newFishingOperation(); -// Binder<EditFishingOperationUIModel, FishingOperation> toBeanBinder = BinderFactory.newBinder(EditFishingOperationUIModel.class, FishingOperation.class); -// toBeanBinder.copy(model, fishingOperationToMerge); + // use the binder, cause EditFishingOperationUIModel.newEntity() returns always the same instance + fishingOperationToMerge = FishingOperations.newFishingOperation(); + Binder<EditFishingOperationUIModel, FishingOperation> toBeanBinder = + BinderFactory.newBinder(EditFishingOperationUIModel.class, FishingOperation.class); + toBeanBinder.copy(model, fishingOperationToMerge); FishingOperationImportService importService = getContext().getFishingOperationImportService(); - importService.importCaracteristicsFromColumnFile(importFile, fishingOperationToMerge); + String errorMessage = null; + try { + importService.importCaracteristicsFromColumnFile(importFile, fishingOperationToMerge); + + } catch (ImportFromColumnFileInvalidRowException error) { + // matching row is not valid + ImportFromColumnFileInvalidRowException importFromColumnFileInvalidRowException = (ImportFromColumnFileInvalidRowException) error; + + errorMessage = ""; + for (AbstractImportErrorInfo<FishingOperation> errorInfo : importFromColumnFileInvalidRowException.getErrors()) { + if (log.isErrorEnabled()) { + log.error(errorInfo.getCause().getLocalizedMessage()); + } + errorMessage += "<li>" + errorInfo.getCause().getLocalizedMessage().replaceAll("\\s+", " ") + "</li>"; + } + + } catch (ImportFromColumnFileFishingOperationNotFoundException error) { + // no matching fishing operation + errorMessage = "<li>" + t("tutti.editFishingOperation.action.importColumns.operationNotFound") + "</li>"; + + } catch (ImportFromColumnFileMissingHeaderException error) { + ImportFromColumnFileMissingHeaderException importFromColumnFileMissingHeaderException = (ImportFromColumnFileMissingHeaderException) error; + errorMessage = t("tutti.editFishingOperation.action.importColumns.missingHeader", importFromColumnFileMissingHeaderException.getImportColumn()); + } + + if (errorMessage != null) { + throw new ApplicationBusinessException(t("tutti.editFishingOperation.action.importColumns.error", errorMessage)); + } } @Override @@ -96,47 +125,4 @@ public class ImportFishingOperationCaracteristicsFromColumnFileAction extends Ab } - @Override - public void postFailedAction(Throwable error) { - - String errorMessage = null; - - if (error instanceof ImportFromColumnFileMissingHeaderException) { - ImportFromColumnFileMissingHeaderException importFromColumnFileMissingHeaderException = (ImportFromColumnFileMissingHeaderException) error; - - errorMessage = t("tutti.editFishingOperation.action.importColumns.missingHeader", importFromColumnFileMissingHeaderException.getImportColumn()); - - } else if (error instanceof ImportFromColumnFileFishingOperationNotFoundException) { - - // no matching fishing operation - errorMessage = "<li>" + t("tutti.editFishingOperation.action.importColumns.operationNotFound") + "</li>"; - - } else if (error instanceof ImportFromColumnFileInvalidRowException) { - - // matching row is not valid - ImportFromColumnFileInvalidRowException importFromColumnFileInvalidRowException = (ImportFromColumnFileInvalidRowException) error; - - errorMessage = ""; - for (AbstractImportErrorInfo<FishingOperation> errorInfo : importFromColumnFileInvalidRowException.getErrors()) { - if (log.isErrorEnabled()) { - log.error(errorInfo.getCause().getLocalizedMessage()); - } - errorMessage += "<li>" + errorInfo.getCause().getLocalizedMessage().replaceAll("\\s+", " ") + "</li>"; - } - - } - - //TODO Check this is ok, otherwise use below code - throw new ApplicationBusinessException(t("tutti.editFishingOperation.action.importColumns.error", errorMessage)); - -// if (errorMessage != null) { -// -// displayErrorMessage(t("tutti.editFishingOperation.action.importColumns.error.title"), -// "<html><body>" + -// t("tutti.editFishingOperation.action.importColumns.error", errorMessage) -// + "</body></html>"); -// -// } - - } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm