This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 490685cf85e9b1e2989419a82b7926153bc5df67 Author: Kevin Morin <morin@codelutin.com> Date: Tue Dec 9 18:23:03 2014 +0100 import --- .../entities/protocol/TuttiProtocols.java | 10 ++- .../src/main/xmi/tutti-persistence.zargo | Bin 57963 -> 57983 bytes .../src/main/xmi/tutti-persistence.zargo~ | Bin 57440 -> 57983 bytes .../swing/action/ImportFromColumnFileAction.java | 89 ++++++++++++++++++++- .../fishing/AbstractCaracteristicTabUIHandler.java | 25 +++++- .../util/table/AbstractTuttiTableUIHandler.java | 1 - 6 files changed, 113 insertions(+), 12 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java index bad4ce2..8d3baeb 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java @@ -158,7 +158,9 @@ public class TuttiProtocols extends AbstractTuttiProtocols { // try to load a v1 TuttiProtocol1 tuttiProtocol1 = fromFileV1(file); - TuttiProtocol result = fromTuttiProtocol1(tuttiProtocol1); + TuttiProtocol2 tuttiProtocol2 = fromTuttiProtocol1(tuttiProtocol1); + + TuttiProtocol result = fromTuttiProtocol2(tuttiProtocol2); return result; } } @@ -290,9 +292,9 @@ public class TuttiProtocols extends AbstractTuttiProtocols { return message; } - protected static TuttiProtocol fromTuttiProtocol1(TuttiProtocol1 tuttiProtocol1) { - TuttiProtocol result = newTuttiProtocol(); - Binder<TuttiProtocol1, TuttiProtocol> binder = BinderFactory.newBinder(TuttiProtocol1.class, TuttiProtocol.class); + protected static TuttiProtocol2 fromTuttiProtocol1(TuttiProtocol1 tuttiProtocol1) { + TuttiProtocol2 result = new TuttiProtocolBean2(); + Binder<TuttiProtocol1, TuttiProtocol2> binder = BinderFactory.newBinder(TuttiProtocol1.class, TuttiProtocol2.class); binder.copy(tuttiProtocol1, result); if (!tuttiProtocol1.isSpeciesEmpty()) { result.setSpecies(Lists.<SpeciesProtocol>newArrayList()); diff --git a/tutti-persistence/src/main/xmi/tutti-persistence.zargo b/tutti-persistence/src/main/xmi/tutti-persistence.zargo index 4f0e671..86f4fb3 100644 Binary files a/tutti-persistence/src/main/xmi/tutti-persistence.zargo and b/tutti-persistence/src/main/xmi/tutti-persistence.zargo differ diff --git a/tutti-persistence/src/main/xmi/tutti-persistence.zargo~ b/tutti-persistence/src/main/xmi/tutti-persistence.zargo~ index b3c7107..69721e7 100644 Binary files a/tutti-persistence/src/main/xmi/tutti-persistence.zargo~ and b/tutti-persistence/src/main/xmi/tutti-persistence.zargo~ differ diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportFromColumnFileAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportFromColumnFileAction.java index aaa73f6..53fe596 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportFromColumnFileAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportFromColumnFileAction.java @@ -4,11 +4,16 @@ import com.google.common.base.Function; import com.google.common.base.Predicate; import com.google.common.collect.Maps; import com.google.common.collect.Sets; +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.FishingOperations; +import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRow; +import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicType; import fr.ifremer.tutti.persistence.entities.protocol.OperationFieldMappingRow; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Vessel; @@ -23,10 +28,14 @@ import org.nuiton.csv.Import2; import org.nuiton.csv.ImportConf; import org.nuiton.csv.ImportRow; import org.nuiton.csv.ValueParser; +import org.nuiton.csv.ValueSetter; import org.nuiton.csv.ext.CsvReaders; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderFactory; import java.io.File; import java.io.FileInputStream; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; @@ -78,6 +87,7 @@ public class ImportFromColumnFileAction extends AbstractTuttiAction<EditFishingO ImportConf conf = new ImportConf(); conf.setStrictMode(false); // conf.setIgnoreUnknownHeader(true); + Import2<FishingOperation> operationUIModelImport = Import2.newImport(conf, importModel, new FileInputStream(columnsFile)); @@ -95,9 +105,13 @@ public class ImportFromColumnFileAction extends AbstractTuttiAction<EditFishingO @Override public boolean apply(FishingOperation fishingOperation) { - String operationNumberColumn = mappingRowsByField.get(FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER).getImportColumn(); - String stationColumn = mappingRowsByField.get(FishingOperation.PROPERTY_STATION_NUMBER).getImportColumn(); - String startDateColumn = mappingRowsByField.get(FishingOperation.PROPERTY_GEAR_SHOOTING_START_DATE).getImportColumn(); + OperationFieldMappingRow operationNumberRow = mappingRowsByField.get(FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER); + OperationFieldMappingRow stationNumberRow = mappingRowsByField.get(FishingOperation.PROPERTY_STATION_NUMBER); + OperationFieldMappingRow startDateRow = mappingRowsByField.get(FishingOperation.PROPERTY_GEAR_SHOOTING_START_DATE); + + String operationNumberColumn = operationNumberRow != null ? operationNumberRow.getImportColumn() : null; + String stationColumn = stationNumberRow != null ? stationNumberRow.getImportColumn() : null; + String startDateColumn = startDateRow != null ? startDateRow.getImportColumn() : null; EditFishingOperationUIModel model = getModel(); boolean sameStationNumber = Objects.equals(fishingOperation.getStationNumber(), model.getStationNumber()); @@ -119,6 +133,8 @@ public class ImportFromColumnFileAction extends AbstractTuttiAction<EditFishingO if (predicate.apply(fishingOperation)) { if (next.isValid()) { getModel().fromEntity(fishingOperation); + getUI().getGearUseFeatureTabContent().getHandler().mergeCaracteristics(fishingOperation); + getUI().getVesselUseFeatureTabContent().getHandler().mergeCaracteristics(fishingOperation); } else { if (log.isErrorEnabled()) { @@ -148,6 +164,10 @@ public class ImportFromColumnFileAction extends AbstractTuttiAction<EditFishingO protected class ImportFromColumnFileModel extends TuttiCsvUtil.AbstractTuttiImportModel<FishingOperation> { + protected Binder<EditFishingOperationUIModel, FishingOperation> toBeanBinder = + BinderFactory.newBinder(EditFishingOperationUIModel.class, + FishingOperation.class); + public ImportFromColumnFileModel(char separator, Set<String> headers) { super(separator); @@ -219,6 +239,65 @@ public class ImportFromColumnFileAction extends AbstractTuttiAction<EditFishingO newMandatoryColumn(importColumn, field, valueParser); } } + + Collection<CaracteristicMappingRow> caracteristicMappingRows = protocol.getCaracteristicMapping(); + for (final CaracteristicMappingRow mappingRow : caracteristicMappingRows) { + String importColumn = mappingRow.getImportColumn(); + if (StringUtils.isNotBlank(importColumn) && headers.remove(importColumn)) { + + int pmfmId = Integer.parseInt(mappingRow.getPmfmId()); + final Caracteristic caracteristic = getContext().getPersistenceService().getCaracteristic(pmfmId); + + ValueSetter<FishingOperation, String> setter = new ValueSetter<FishingOperation, String>() { + @Override + public void set(FishingOperation fishingOperation, String value) throws Exception { + + Serializable realValue = null; + if (StringUtils.isNotBlank(value)) { + switch (caracteristic.getCaracteristicType()) { + case QUALITATIVE: + for (CaracteristicQualitativeValue cqv : caracteristic.getQualitativeValue()) { + if (value.equals(cqv.getId())) { + realValue = cqv; + break; + } + } + break; + + case NUMBER: + realValue = Float.parseFloat(value); + break; + + default: + realValue = value; + } + } + + CaracteristicMap caracteristicMap; + if (CaracteristicType.GEAR_USE_FEATURE.toString().equals(mappingRow.getTab())) { + caracteristicMap = fishingOperation.getGearUseFeatures(); + if (caracteristicMap == null) { + caracteristicMap = new CaracteristicMap(); + fishingOperation.setGearUseFeatures(caracteristicMap); + } + + } else { + caracteristicMap = fishingOperation.getVesselUseFeatures(); + if (caracteristicMap == null) { + caracteristicMap = new CaracteristicMap(); + fishingOperation.setVesselUseFeatures(caracteristicMap); + } + } + caracteristicMap.put(caracteristic, realValue); + + } + }; + newMandatoryColumn(importColumn, setter); + + } + } + + for (String header : headers) { newIgnoredColumn(header); } @@ -226,7 +305,9 @@ public class ImportFromColumnFileAction extends AbstractTuttiAction<EditFishingO @Override public FishingOperation newEmptyInstance() { - return FishingOperations.newFishingOperation(); + FishingOperation fishingOperation = FishingOperations.newFishingOperation(); + toBeanBinder.copy(getModel(), fishingOperation); + return fishingOperation; } } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/AbstractCaracteristicTabUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/AbstractCaracteristicTabUIHandler.java index 7c6e71c..c8a8317 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/AbstractCaracteristicTabUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/AbstractCaracteristicTabUIHandler.java @@ -193,7 +193,6 @@ public abstract class AbstractCaracteristicTabUIHandler /** Resets the table with the data from the database */ public void reset(FishingOperation fishingOperation) { - TM tableModel = getTableModel(); M model = getModel(); CaracteristicMap caracteristicMap = getCaracteristics(fishingOperation); @@ -202,8 +201,28 @@ public abstract class AbstractCaracteristicTabUIHandler } model.setCaracteristicMap(caracteristicMap); -// TuttiProtocol protocol = getDataContext().getProtocol(); + updateRows(); + model.setModify(false); + } + + /** Resets the table with the data from the database */ + public void mergeCaracteristics(FishingOperation fishingOperation) { + CaracteristicMap caracteristicMap = getCaracteristics(fishingOperation); + if (caracteristicMap != null) { + CaracteristicMap thisCaracteristicMap = getModel().getCaracteristicMap(); + for (Caracteristic caracteristic : caracteristicMap.keySet()) { + thisCaracteristicMap.put(caracteristic, caracteristicMap.get(caracteristic)); + } + + updateRows(); + } + } + + protected void updateRows() { + TM tableModel = getTableModel(); + M model = getModel(); List<String> pmfmIds = Lists.newArrayList(); + if (getDataContext().isProtocolFilled()) { List<String> protocolPmfmId = getProtocolPmfmIds(); if (protocolPmfmId != null) { @@ -211,6 +230,7 @@ public abstract class AbstractCaracteristicTabUIHandler } } + CaracteristicMap caracteristicMap = model.getCaracteristicMap(); List<RM> rows = Lists.newArrayList(); List<Caracteristic> caracteristics = Lists.newArrayList(caracteristicMap.keySet()); @@ -243,7 +263,6 @@ public abstract class AbstractCaracteristicTabUIHandler keyCombo.setData(caracteristicList); // selectFirstInCombo(keyCombo); keyCombo.getHandler().reset(); - model.setModify(false); } public void removeCaracteristic() { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java index 335d832..ab99b41 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java @@ -264,7 +264,6 @@ public abstract class AbstractTuttiTableUIHandler<R extends AbstractTuttiBeanUIM getModel().addPropertyChangeListener(AbstractTuttiTableUIModel.PROPERTY_ROWS, new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { - log.info("row schanged"); onModelRowsChanged((List<R>) evt.getNewValue()); } }); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.