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 ed561aeae73f9e55ea74ce3fcc772d5b472f139d Author: Kevin Morin <morin@codelutin.com> Date: Mon Dec 1 14:47:06 2014 +0100 refs #6129 import du fichier avec les colonnes --- .../entities/protocol/TuttiProtocols.java | 69 +++++++++++++++++++-- .../src/main/xmi/tutti-persistence.zargo | Bin 57378 -> 57440 bytes .../src/main/xmi/tutti-persistence.zargo~ | Bin 57382 -> 57378 bytes .../resources/i18n/tutti-service_fr_FR.properties | 1 + .../filtered-resources/tutti-help-fr.properties | 3 +- .../action/LoadProtocolImportColumnsAction.java | 65 +++++++++++++++++++ .../protocol/CaracteristicMappingUIHandler.java | 38 ++++++++++++ .../protocol/CaracteristicMappingUIModel.java | 16 +++++ .../ui/swing/content/protocol/EditProtocolUI.css | 9 +++ .../ui/swing/content/protocol/EditProtocolUI.jaxx | 3 + .../content/protocol/EditProtocolUIModel.java | 62 ++++++++++++++++++ .../resources/i18n/tutti-ui-swing_en_GB.properties | 6 ++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 6 ++ 13 files changed, 273 insertions(+), 5 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 ab5eb2a..acfb9b9 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 @@ -40,6 +40,8 @@ import fr.ifremer.tutti.persistence.entities.protocol.v1.SpeciesProtocol1; import fr.ifremer.tutti.persistence.entities.protocol.v1.SpeciesProtocolBean1; import fr.ifremer.tutti.persistence.entities.protocol.v1.TuttiProtocol1; import fr.ifremer.tutti.persistence.entities.protocol.v1.TuttiProtocolBean1; +import fr.ifremer.tutti.persistence.entities.protocol.v2.TuttiProtocol2; +import fr.ifremer.tutti.persistence.entities.protocol.v2.TuttiProtocolBean2; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; import org.apache.commons.collections4.CollectionUtils; @@ -130,12 +132,23 @@ public class TuttiProtocols extends AbstractTuttiProtocols { } } return result; + } catch (Exception e) { - // try to load a v1 - TuttiProtocol1 tuttiProtocol1 = fromFileV1(file); + //try to load a v2 + try { + // try to load a v1 + TuttiProtocol2 tuttiProtocol2 = fromFileV2(file); - TuttiProtocol result = fromTuttiProtocol1(tuttiProtocol1); - return result; + TuttiProtocol result = fromTuttiProtocol2(tuttiProtocol2); + return result; + + } catch (Exception ee) { + // try to load a v1 + TuttiProtocol1 tuttiProtocol1 = fromFileV1(file); + + TuttiProtocol result = fromTuttiProtocol1(tuttiProtocol1); + return result; + } } finally { IOUtils.closeQuietly(fileReader); @@ -158,6 +171,22 @@ public class TuttiProtocols extends AbstractTuttiProtocols { } } + public static TuttiProtocol2 fromFileV2(File file) { + + Reader fileReader = null; + try { + fileReader = Files.newReader(file, Charsets.UTF_8); + YamlReader reader = new YamlReader(fileReader, createConfigV2()); + TuttiProtocol2 result = reader.read(TuttiProtocolBean2.class); + fileReader.close(); + return result; + } catch (Exception e) { + throw new ApplicationTechnicalException(t("tutti.persistence.protocol.fromFile.error", file), e); + } finally { + IOUtils.closeQuietly(fileReader); + } + } + public static void checkSampleCategories(SampleCategoryModel sampleCategoryModel, TuttiProtocol protocol, Set<Integer> badCategories) { @@ -304,6 +333,29 @@ public class TuttiProtocols extends AbstractTuttiProtocols { return result; } + protected static TuttiProtocol fromTuttiProtocol2(TuttiProtocol2 tuttiProtocol2) { + TuttiProtocol result = newTuttiProtocol(); + Binder<TuttiProtocol2, TuttiProtocol> binder = BinderFactory.newBinder(TuttiProtocol2.class, TuttiProtocol.class); + binder.copy(tuttiProtocol2, result); + + List<CaracteristicMappingRow> caracteristicMappingRows = new ArrayList<>(); + for (String id : tuttiProtocol2.getGearUseFeaturePmfmId()) { + CaracteristicMappingRow row = new CaracteristicMappingRowBean(); + row.setPmfmId(id); + row.setTab(CaracteristicType.GEAR_USE_FEATURE.name()); + caracteristicMappingRows.add(row); + } + for (String id : tuttiProtocol2.getVesselUseFeaturePmfmId()) { + CaracteristicMappingRow row = new CaracteristicMappingRowBean(); + row.setPmfmId(id); + row.setTab(CaracteristicType.VESSEL_USE_FEATURE.name()); + caracteristicMappingRows.add(row); + } + result.setCaracteristicMapping(caracteristicMappingRows); + + return result; + } + protected static YamlConfig createConfig() { YamlConfig result = new YamlConfig(); result.setClassTag(SpeciesProtocol.class.getSimpleName(), @@ -324,6 +376,15 @@ public class TuttiProtocols extends AbstractTuttiProtocols { return result; } + protected static YamlConfig createConfigV2() { + YamlConfig result = new YamlConfig(); + result.setClassTag(SpeciesProtocol.class.getSimpleName(), + SpeciesProtocols.typeOfSpeciesProtocol()); + result.writeConfig.setAlwaysWriteClassname(false); + result.writeConfig.setWriteRootTags(false); + return result; + } + public static SpeciesProtocol getSpeciesOrBenthosProtocol(TuttiProtocol protocol, Integer speciesReferenceTaxonId) { SpeciesProtocol speciesProtocol = getSpeciesProtocol(protocol, speciesReferenceTaxonId); if (speciesProtocol == null) { diff --git a/tutti-persistence/src/main/xmi/tutti-persistence.zargo b/tutti-persistence/src/main/xmi/tutti-persistence.zargo index 982bb6a..b3c7107 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 2d2cc86..982bb6a 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-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index 98af0fd..365cd21 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -2,6 +2,7 @@ tutti.caracteristicType.GEAR_USE_FEATURE=Caractéristiques de l'engin tutti.caracteristicType.INDIVIDUAL_OBSERVATION=Observations individuelles tutti.caracteristicType.LENGTH_STEP=Classes de tailles tutti.caracteristicType.VESSEL_USE_FEATURE=Autres caractéristiques +tutti.caracteristicType.lengthStep= tutti.io.mkDir.error=Erreur à la création du dossier %s tutti.pdf.export.missing.species.code=Une espèce (referenceId %s, nom scientifique %s) n'a ni code campagne, ni code refTax. tutti.property.attachment=Pièce jointe diff --git a/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties b/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties index ec3237d..0ef2271 100644 --- a/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties +++ b/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties @@ -1,5 +1,5 @@ #Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo -#Sat Nov 15 23:48:54 CET 2014 +#Mon Dec 01 10:21:58 CET 2014 tutti.config.help=config.html tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions tutti.createAccidentalBatch.action.saveAndClose.help=editFishingOperation.html\#captureCapturesAccidentellesActions @@ -233,6 +233,7 @@ tutti.editProtocol.action.exportProtocolSpecies.help=editProtocol.html\#actionsS tutti.editProtocol.action.exportPupitri.help=editProtocol.html\#actionsSpecies tutti.editProtocol.action.importProtocolBenthos.help=editProtocol.html\#actionsBenthos tutti.editProtocol.action.importProtocolCaracteristic.help=editProtocol.html\#actionsCaracteristics +tutti.editProtocol.action.importProtocolColumns.help= tutti.editProtocol.action.importProtocolSpecies.help=editProtocol.html\#actionsSpecies tutti.editProtocol.action.removeBenthosProtocol.help=editProtocol.html\#actionsBenthos tutti.editProtocol.action.removeSpeciesProtocol.help=editProtocol.html\#actionsSpecies diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/LoadProtocolImportColumnsAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/LoadProtocolImportColumnsAction.java new file mode 100644 index 0000000..725e2cd --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/LoadProtocolImportColumnsAction.java @@ -0,0 +1,65 @@ +package fr.ifremer.tutti.ui.swing.action; + +import com.csvreader.CsvReader; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIHandler; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.io.File; +import java.io.FileInputStream; +import java.nio.charset.Charset; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static org.nuiton.i18n.I18n.t; + +/** + * @author Kevin Morin (Code Lutin) + * @since 3.10 + */ +public class LoadProtocolImportColumnsAction extends AbstractTuttiAction<EditProtocolUIModel, EditProtocolUI, EditProtocolUIHandler> { + + private static final Log log = LogFactory.getLog(LoadProtocolImportColumnsAction.class); + + protected File columnsFile; + + public LoadProtocolImportColumnsAction(EditProtocolUIHandler handler) { + super(handler, false); + } + + @Override + public boolean prepareAction() throws Exception { + boolean result = super.prepareAction(); + + if (result) { + columnsFile = chooseFile(t("tutti.editProtocol.action.title.choose.importColumnsFile"), + t("tutti.editProtocol.action.chooseColumnsFile.import"), + "^.*\\.csv", t("tutti.common.file.csv")); + + result = columnsFile != null; + } + + return result; + } + + @Override + public void doAction() throws Exception { + FileInputStream fileInputStream = new FileInputStream(columnsFile); + CsvReader csvReader = new CsvReader(fileInputStream, ';', Charset.forName("UTF-8")); + if (csvReader.readHeaders()) { + String[] headers = csvReader.getHeaders(); + List<String> importColumns = Arrays.asList(headers); + Collections.sort(importColumns); + getModel().setImportColumns(importColumns); + } + } + + @Override + public void postSuccessAction() { + super.postSuccessAction(); + sendMessage(t("tutti.editProtocol.action.loadImportColumns.success", getModel().sizeImportColumns())); + } +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUIHandler.java index f1b92fc..b3f2903 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUIHandler.java @@ -6,11 +6,18 @@ import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicType; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; +import jaxx.runtime.JAXXUtil; +import jaxx.runtime.SwingUtil; +import jaxx.runtime.swing.editor.bean.BeanUIUtil; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; +import org.jdesktop.swingx.autocomplete.ComboBoxCellEditor; +import org.jdesktop.swingx.autocomplete.ObjectToStringConverter; import org.jdesktop.swingx.table.DefaultTableColumnModelExt; +import org.jdesktop.swingx.table.TableColumnExt; +import org.nuiton.decorator.Decorator; import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; import javax.swing.*; @@ -93,12 +100,43 @@ public class CaracteristicMappingUIHandler CaracteristicMappingUIModel model = new CaracteristicMappingUIModel(); model.setCaracteristics(editProtocolUIModel.getCaracteristics()); + editProtocolUIModel.addPropertyChangeListener(EditProtocolUIModel.PROPERTY_CARACTERISTIC_MAPPING, new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { getModel().setCaracteristicMappingRows((List<CaracteristicMappingRow>) evt.getNewValue()); } }); + + editProtocolUIModel.addPropertyChangeListener(EditProtocolUIModel.PROPERTY_IMPORT_COLUMNS, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + + Collection<String> newValue = (Collection<String>) evt.getNewValue(); + ArrayList<String> dataToList = new ArrayList<String>(); + + if (newValue != null) { + dataToList.addAll(newValue); + + // add a null value at first position + if (!dataToList.isEmpty() && dataToList.get(0) != null) { + dataToList.add(0, null); + } + + } else { + dataToList.add(null); + } + + JComboBox comboBox = new JComboBox(); + SwingUtil.fillComboBox(comboBox, dataToList, null); + + TableColumnExt col = getTable().getColumnExt(2); + ComboBoxCellEditor editor = new ComboBoxCellEditor(comboBox); + col.setCellEditor(editor); + + } + }); + ui.setContextValue(model); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUIModel.java index d07ab9f..03538c9 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUIModel.java @@ -22,10 +22,14 @@ import java.util.Map; public class CaracteristicMappingUIModel extends AbstractTuttiTableUIModel<CaracteristicMappingRow, EditProtocolCaracteristicsRowModel, CaracteristicMappingUIModel> { public static final String PROPERTY_CARACTERISTIC_MAPPING_ROWS = "caracteristicMappingRows"; + public static final String PROPERTY_CARACTERISTICS_IN_MAPPING = "caracteristicsInMapping"; protected List<Caracteristic> caracteristics = new ArrayList<Caracteristic>(); + protected Map<String, CaracteristicMappingRow> caracteristicMappingRows = new HashMap<String, CaracteristicMappingRow>(); + protected List<String> importColumns = new ArrayList<String>(); + public CaracteristicMappingUIModel() { super(CaracteristicMappingRow.class, null, null); } @@ -53,6 +57,18 @@ public class CaracteristicMappingUIModel extends AbstractTuttiTableUIModel<Carac })); } firePropertyChanged(PROPERTY_CARACTERISTIC_MAPPING_ROWS, null, caracteristicMappingRows); + firePropertyChanged(PROPERTY_CARACTERISTICS_IN_MAPPING, null, this.caracteristicMappingRows.values()); + } + + public List<String> getImportColumns() { + return importColumns; + } + + public void setImportColumns(List<String> importColumns) { + this.importColumns.clear(); + if (importColumns != null) { + this.importColumns.addAll(importColumns); + } } @Override diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css index 9b882b7..aec68ad 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css @@ -268,3 +268,12 @@ JTextField { _help: {"tutti.editProtocol.action.exportProtocolAllCaracteristic.help"}; } +#importColumnsButton { + actionIcon: import; + text: "tutti.editProtocol.action.importProtocolColumns"; + toolTipText: "tutti.editProtocol.action.importProtocolColumns.tip"; + i18nMnemonic: "tutti.editProtocol.action.importProtocolColumns.mnemonic"; + _applicationAction: {fr.ifremer.tutti.ui.swing.action.LoadProtocolImportColumnsAction.class}; + _help: {"tutti.editProtocol.action.importProtocolColumns.help"}; +} + diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx index b8e29f4..1644756 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx @@ -108,7 +108,10 @@ <JButton id='importCaracteristicButton'/> <JButton id='exportCaracteristicButton'/> <JButton id='exportAllCaracteristicButton'/> + <JButton id='importColumnsButton'/> + </JPanel> + <JTabbedPane id='caracteristicPane' constraints='BorderLayout.CENTER'> <tab title='tutti.editProtocol.tab.caracteristic.lengthClasses'> <BeanDoubleList id='lengthClassesList' genericType='Caracteristic'/> diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java index eed2950..506a97b 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java @@ -603,4 +603,66 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, public void setVersion(Integer version) { editObject.setVersion(version); } + + @Override + public String getImportColumns(int index) { + return editObject.getImportColumns(index); + } + + @Override + public boolean isImportColumnsEmpty() { + return editObject.isImportColumnsEmpty(); + } + + @Override + public int sizeImportColumns() { + return editObject.sizeImportColumns(); + } + + @Override + public void addImportColumns(String importColumns) { + editObject.addImportColumns(importColumns); + firePropertyChanged(TuttiProtocol.PROPERTY_IMPORT_COLUMNS, null, getImportColumns()); + } + + @Override + public void addAllImportColumns(Collection<String> importColumns) { + editObject.addAllImportColumns(importColumns); + firePropertyChanged(TuttiProtocol.PROPERTY_IMPORT_COLUMNS, null, getImportColumns()); + } + + @Override + public boolean removeImportColumns(String importColumns) { + boolean removeImportColumns = editObject.removeImportColumns(importColumns); + firePropertyChanged(TuttiProtocol.PROPERTY_IMPORT_COLUMNS, null, getImportColumns()); + return removeImportColumns; + } + + @Override + public boolean removeAllImportColumns(Collection<String> importColumns) { + boolean removeAllImportColumns = editObject.removeAllImportColumns(importColumns); + firePropertyChanged(TuttiProtocol.PROPERTY_IMPORT_COLUMNS, null, getImportColumns()); + return removeAllImportColumns; + } + + @Override + public boolean containsImportColumns(String importColumns) { + return editObject.containsImportColumns(importColumns); + } + + @Override + public boolean containsAllImportColumns(Collection<String> importColumns) { + return editObject.containsAllImportColumns(importColumns); + } + + @Override + public Collection<String> getImportColumns() { + return editObject.getImportColumns(); + } + + @Override + public void setImportColumns(Collection<String> importColumns) { + editObject.setImportColumns(importColumns); + firePropertyChanged(TuttiProtocol.PROPERTY_IMPORT_COLUMNS, null, getImportColumns()); + } } diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties index b7ea6ee..6f21ba3 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties @@ -882,6 +882,7 @@ tutti.editProtocol.action.addBenthosProtocol.mnemonic= tutti.editProtocol.action.addBenthosProtocol.tip= tutti.editProtocol.action.addSpeciesProtocol.mnemonic= tutti.editProtocol.action.addSpeciesProtocol.tip= +tutti.editProtocol.action.chooseColumnsFile.import= tutti.editProtocol.action.chooseProtocolBenthosFile= tutti.editProtocol.action.chooseProtocolCaracteristicFile= tutti.editProtocol.action.chooseProtocolSpeciesFile= @@ -913,6 +914,9 @@ tutti.editProtocol.action.importProtocolBenthos.tip= tutti.editProtocol.action.importProtocolCaracteristic= tutti.editProtocol.action.importProtocolCaracteristic.mnemonic= tutti.editProtocol.action.importProtocolCaracteristic.tip= +tutti.editProtocol.action.importProtocolColumns= +tutti.editProtocol.action.importProtocolColumns.mnemonic= +tutti.editProtocol.action.importProtocolColumns.tip= tutti.editProtocol.action.importProtocolSpecies= tutti.editProtocol.action.importProtocolSpecies.mnemonic= tutti.editProtocol.action.importProtocolSpecies.speciesInBenthos= @@ -920,6 +924,7 @@ tutti.editProtocol.action.importProtocolSpecies.speciesInBenthos.title= tutti.editProtocol.action.importProtocolSpecies.tip= tutti.editProtocol.action.importSpecies.speciesInBenthos= tutti.editProtocol.action.importSpecies.speciesInBenthos.title= +tutti.editProtocol.action.loadImportColumns.success= tutti.editProtocol.action.removeBenthosProtocol= tutti.editProtocol.action.removeBenthosProtocol.mnemonic= tutti.editProtocol.action.removeBenthosProtocol.tip= @@ -935,6 +940,7 @@ tutti.editProtocol.action.selectOtherBenthos.tip= tutti.editProtocol.action.selectOtherSpecies= tutti.editProtocol.action.selectOtherSpecies.mnemonic= tutti.editProtocol.action.selectOtherSpecies.tip= +tutti.editProtocol.action.title.choose.importColumnsFile= tutti.editProtocol.askCancelEditBeforeLeaving.cancelSaveProtocol= tutti.editProtocol.askCancelEditBeforeLeaving.cancelSaveSampleCategoryModel= tutti.editProtocol.askSaveBeforeLeaving.saveProtocol= diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties index d8cbc07..53967e3 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties @@ -866,6 +866,7 @@ tutti.editProtocol.action.addBenthosProtocol.mnemonic=j tutti.editProtocol.action.addBenthosProtocol.tip=Ajouter une espèce du benthos au protocole tutti.editProtocol.action.addSpeciesProtocol.mnemonic=j tutti.editProtocol.action.addSpeciesProtocol.tip=Ajouter une espèce au protocole +tutti.editProtocol.action.chooseColumnsFile.import=Choisir le fichier contenant les colonnes tutti.editProtocol.action.chooseProtocolBenthosFile=Choisir le fichier des benthos tutti.editProtocol.action.chooseProtocolCaracteristicFile=Choisir le fichier des caractéristiques tutti.editProtocol.action.chooseProtocolSpeciesFile=Choisir le fichier des espèces @@ -895,11 +896,15 @@ tutti.editProtocol.action.importProtocolBenthos.tip=Importer les benthos dans le tutti.editProtocol.action.importProtocolCaracteristic=Importer les caractéristiques tutti.editProtocol.action.importProtocolCaracteristic.mnemonic=i tutti.editProtocol.action.importProtocolCaracteristic.tip=Importer les caractéristiques dans le protocole +tutti.editProtocol.action.importProtocolColumns=Importer les colonnes d'import +tutti.editProtocol.action.importProtocolColumns.mnemonic=c +tutti.editProtocol.action.importProtocolColumns.tip=Importer les colonnes d'import tutti.editProtocol.action.importProtocolSpecies=Importer les espèces tutti.editProtocol.action.importProtocolSpecies.mnemonic=é tutti.editProtocol.action.importProtocolSpecies.speciesInBenthos=Les espèces suivantes n'ont pas été importées car elles sont déjà présentes dans le benthos \:<ul>%s</ul> tutti.editProtocol.action.importProtocolSpecies.speciesInBenthos.title=Espèces non importées tutti.editProtocol.action.importProtocolSpecies.tip=Importer les espèces dans le protocole +tutti.editProtocol.action.loadImportColumns.success=%s colonnes importées avec succès tutti.editProtocol.action.removeBenthosProtocol=Supprimer les benthos tutti.editProtocol.action.removeBenthosProtocol.mnemonic=S tutti.editProtocol.action.removeBenthosProtocol.tip=Supprimer les benthos sélectionnés @@ -915,6 +920,7 @@ tutti.editProtocol.action.selectOtherBenthos.tip=Sélectionner une autre espèce tutti.editProtocol.action.selectOtherSpecies=... tutti.editProtocol.action.selectOtherSpecies.mnemonic=. tutti.editProtocol.action.selectOtherSpecies.tip=Sélectionner une autre espèce (dans les synonymes) +tutti.editProtocol.action.title.choose.importColumnsFile=Importer les colonnes d'import tutti.editProtocol.askCancelEditBeforeLeaving.cancelSaveProtocol=Le protocole n'est pas valide et ne peut pas être enregistré tutti.editProtocol.askCancelEditBeforeLeaving.cancelSaveSampleCategoryModel=La catégorisation n'est pas valide et ne peut pas être enregistré tutti.editProtocol.askSaveBeforeLeaving.saveProtocol=Des modifications sur le protocole n'ont pas été enregistrées -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.