Tutti-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
May 2013
- 4 participants
- 180 discussions
07 May '13
Author: kmorin
Date: 2013-05-07 16:13:08 +0200 (Tue, 07 May 2013)
New Revision: 927
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/927
Log:
refs #1873 [IMP/EXP] - Import/Export multi-postes
Added:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/TuttiMultiPostImportExportService.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ExportMultiPostAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportMultiPostAction.java
Modified:
trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties
trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRow.java 2013-05-07 14:13:08 UTC (rev 927)
@@ -0,0 +1,72 @@
+package fr.ifremer.tutti.service.catches.multipost;
+
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+
+import java.io.Serializable;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 2.2
+ */
+public class CatchFrequencyRow implements Serializable {
+
+ public static final String BATCH_ID = "batchId";
+
+ public static final String FREQUENCY_LENGTH_STEP_CARACTERISTIC = "lengthStepCaracteristic";
+
+ public static final String FREQUENCY_LENGTH_STEP = "lengthStep";
+
+ public static final String FREQUENCY_WEIGHT = "weight";
+
+ public static final String FREQUENCY_NUMBER = "number";
+
+ protected String batchId;
+
+ protected Caracteristic lengthStepCaracteristic;
+
+ protected Float lengthStep;
+
+ protected Float weight;
+
+ protected Integer number;
+
+ public String getBatchId() {
+ return batchId;
+ }
+
+ public void setBatchId(String batchId) {
+ this.batchId = batchId;
+ }
+
+ public Caracteristic getLengthStepCaracteristic() {
+ return lengthStepCaracteristic;
+ }
+
+ public void setLengthStepCaracteristic(Caracteristic lengthStepCaracteristic) {
+ this.lengthStepCaracteristic = lengthStepCaracteristic;
+ }
+
+ public Float getLengthStep() {
+ return lengthStep;
+ }
+
+ public void setLengthStep(Float lengthStep) {
+ this.lengthStep = lengthStep;
+ }
+
+ public Float getWeight() {
+ return weight;
+ }
+
+ public void setWeight(Float weight) {
+ this.weight = weight;
+ }
+
+ public Integer getNumber() {
+ return number;
+ }
+
+ public void setNumber(Integer number) {
+ this.number = number;
+ }
+}
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java 2013-05-07 14:13:08 UTC (rev 927)
@@ -0,0 +1,47 @@
+package fr.ifremer.tutti.service.catches.multipost;
+
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+import org.nuiton.util.csv.ValueFormatter;
+
+import java.io.Serializable;
+
+/**
+ * Model of a catch export.
+ *
+ * @author kmorin <morin(a)codelutin.com>
+ * @since 2.2
+ */
+public class CatchFrequencyRowModel extends TuttiCsvUtil.AbstractTuttiExportModel<CatchFrequencyRow> {
+
+ public CatchFrequencyRowModel(char separator) {
+ super(separator);
+
+ newColumnForExport(CatchFrequencyRow.BATCH_ID,
+ CatchFrequencyRow.BATCH_ID);
+
+ newColumnForExport(CatchFrequencyRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC,
+ CatchFrequencyRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC,
+ new ValueFormatter<Caracteristic>() {
+ @Override
+ public String format(Caracteristic value) {
+ return value != null ? value.getId() : "";
+ }
+ });
+
+ newColumnForExport(CatchFrequencyRow.FREQUENCY_LENGTH_STEP,
+ CatchFrequencyRow.FREQUENCY_LENGTH_STEP,
+ TuttiCsvUtil.FLOAT);
+
+ newColumnForExport(CatchFrequencyRow.FREQUENCY_NUMBER,
+ CatchFrequencyRow.FREQUENCY_NUMBER,
+ TuttiCsvUtil.INTEGER);
+
+ newColumnForExport(CatchFrequencyRow.FREQUENCY_WEIGHT,
+ CatchFrequencyRow.FREQUENCY_WEIGHT,
+ TuttiCsvUtil.FLOAT);
+
+ }
+}
\ No newline at end of file
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRow.java (from rev 919, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportRow.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRow.java 2013-05-07 14:13:08 UTC (rev 927)
@@ -0,0 +1,168 @@
+package fr.ifremer.tutti.service.catches.multipost;
+
+import com.google.common.collect.Maps;
+import fr.ifremer.tutti.persistence.entities.data.*;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+import fr.ifremer.tutti.service.export.ExportSampleCategory;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * A row in a catch export.
+ *
+ * @author kmorin <morin(a)codelutin.com>
+ * @since 2.2
+ */
+public class CatchRow implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String ID = "id";
+
+ public static final String SPECIES = "species";
+
+ public static final String SORTED_UNSORTED_SAMPLE_CATEGORY = "sortedUnsortedSampleCategory";
+
+ public static final String SIZE_SAMPLE_CATEGORY = "sizeSampleCategory";
+
+ public static final String SEX_SAMPLE_CATEGORY = "sexSampleCategory";
+
+ public static final String MATURITY_SAMPLE_CATEGORY = "maturitySampleCategory";
+
+ public static final String AGE_SAMPLE_CATEGORY = "ageSampleCategory";
+
+ public static final String CATEGORY_WEIGHT = "categoryWeight";
+
+ public static final String WEIGHT = "weight";
+
+ public static final String NUMBER = "number";
+
+ public static final String COMMENT = "comment";
+
+ public static final String TO_CONFIRM = "toConfirm";
+
+ protected String id;
+
+ protected Species species;
+
+ protected Serializable sortedUnsortedSampleCategory;
+
+ protected Serializable sizeSampleCategory;
+
+ protected Serializable sexSampleCategory;
+
+ protected Serializable maturitySampleCategory;
+
+ protected Serializable ageSampleCategory;
+
+ protected Float categoryWeight;
+
+ protected Float weight;
+
+ protected Integer number;
+
+ protected String comment;
+
+ protected boolean toConfirm;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public Species getSpecies() {
+ return species;
+ }
+
+ public void setSpecies(Species species) {
+ this.species = species;
+ }
+
+ public Serializable getSortedUnsortedSampleCategory() {
+ return sortedUnsortedSampleCategory;
+ }
+
+ public void setSortedUnsortedSampleCategory(Serializable sortedUnsortedSampleCategory) {
+ this.sortedUnsortedSampleCategory = sortedUnsortedSampleCategory;
+ }
+
+ public Serializable getSizeSampleCategory() {
+ return sizeSampleCategory;
+ }
+
+ public void setSizeSampleCategory(Serializable sizeSampleCategory) {
+ this.sizeSampleCategory = sizeSampleCategory;
+ }
+
+ public Serializable getSexSampleCategory() {
+ return sexSampleCategory;
+ }
+
+ public void setSexSampleCategory(Serializable sexSampleCategory) {
+ this.sexSampleCategory = sexSampleCategory;
+ }
+
+ public Serializable getMaturitySampleCategory() {
+ return maturitySampleCategory;
+ }
+
+ public void setMaturitySampleCategory(Serializable maturitySampleCategory) {
+ this.maturitySampleCategory = maturitySampleCategory;
+ }
+
+ public Serializable getAgeSampleCategory() {
+ return ageSampleCategory;
+ }
+
+ public void setAgeSampleCategory(Serializable ageSampleCategory) {
+ this.ageSampleCategory = ageSampleCategory;
+ }
+
+ public Float getCategoryWeight() {
+ return categoryWeight;
+ }
+
+ public void setCategoryWeight(Float categoryWeight) {
+ this.categoryWeight = categoryWeight;
+ }
+
+ public Float getWeight() {
+ return weight;
+ }
+
+ public void setWeight(Float weight) {
+ this.weight = weight;
+ }
+
+ public Integer getNumber() {
+ return number;
+ }
+
+ public void setNumber(Integer number) {
+ this.number = number;
+ }
+
+ public String getComment() {
+ return comment;
+ }
+
+ public void setComment(String comment) {
+ this.comment = comment;
+ }
+
+ public boolean isToConfirm() {
+ return toConfirm;
+ }
+
+ public void setToConfirm(boolean toConfirm) {
+ this.toConfirm = toConfirm;
+ }
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRow.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java (from rev 919, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java 2013-05-07 14:13:08 UTC (rev 927)
@@ -0,0 +1,94 @@
+package fr.ifremer.tutti.service.catches.multipost;
+
+import fr.ifremer.tutti.persistence.entities.data.*;
+import fr.ifremer.tutti.persistence.entities.referential.*;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+import fr.ifremer.tutti.service.export.ExportSampleCategory;
+import org.apache.commons.collections.CollectionUtils;
+import org.nuiton.util.csv.ValueFormatter;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Model of a catch export.
+ *
+ * @author kmorin <morin(a)codelutin.com>
+ * @since 2.2
+ */
+public class CatchRowModel extends TuttiCsvUtil.AbstractTuttiExportModel<CatchRow> {
+
+ public CatchRowModel(char separator) {
+ super(separator);
+
+ ValueFormatter<Serializable> caracteristicValueFormatter = new ValueFormatter<Serializable>() {
+ @Override
+ public String format(Serializable value) {
+ String result = "";
+ if (value != null) {
+ if (CaracteristicQualitativeValue.class.isAssignableFrom(value.getClass())) {
+ CaracteristicQualitativeValue cqv = (CaracteristicQualitativeValue) value;
+ result = cqv.getId();
+
+ } else {
+ result = String.valueOf(value);
+ }
+ }
+ return result;
+ }
+ };
+
+ newColumnForExport(CatchRow.ID,
+ CatchRow.ID);
+
+ newColumnForExport(CatchRow.SPECIES,
+ CatchRow.SPECIES,
+ new ValueFormatter<Species>() {
+ @Override
+ public String format(Species value) {
+ return value != null ? String.valueOf(value.getReferenceTaxonId()) : null;
+ }
+ });
+
+ newColumnForExport(CatchRow.SORTED_UNSORTED_SAMPLE_CATEGORY,
+ CatchRow.SORTED_UNSORTED_SAMPLE_CATEGORY,
+ caracteristicValueFormatter);
+
+ newColumnForExport(CatchRow.SIZE_SAMPLE_CATEGORY,
+ CatchRow.SIZE_SAMPLE_CATEGORY,
+ caracteristicValueFormatter);
+
+ newColumnForExport(CatchRow.SEX_SAMPLE_CATEGORY,
+ CatchRow.SEX_SAMPLE_CATEGORY,
+ caracteristicValueFormatter);
+
+ newColumnForExport(CatchRow.MATURITY_SAMPLE_CATEGORY,
+ CatchRow.MATURITY_SAMPLE_CATEGORY,
+ caracteristicValueFormatter);
+
+ newColumnForExport(CatchRow.AGE_SAMPLE_CATEGORY,
+ CatchRow.AGE_SAMPLE_CATEGORY,
+ caracteristicValueFormatter);
+
+ newColumnForExport(CatchRow.CATEGORY_WEIGHT,
+ CatchRow.CATEGORY_WEIGHT,
+ TuttiCsvUtil.FLOAT);
+
+ newColumnForExport(CatchRow.WEIGHT,
+ CatchRow.WEIGHT,
+ TuttiCsvUtil.FLOAT);
+
+ newColumnForExport(CatchRow.NUMBER,
+ CatchRow.NUMBER,
+ TuttiCsvUtil.INTEGER);
+
+ newColumnForExport(CatchRow.COMMENT,
+ CatchRow.COMMENT);
+
+ newColumnForExport(CatchRow.TO_CONFIRM,
+ CatchRow.TO_CONFIRM,
+ TuttiCsvUtil.PRIMITIVE_BOOLEAN);
+
+ }
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/TuttiMultiPostImportExportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/TuttiMultiPostImportExportService.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/TuttiMultiPostImportExportService.java 2013-05-07 14:13:08 UTC (rev 927)
@@ -0,0 +1,267 @@
+package fr.ifremer.tutti.service.catches.multipost;
+
+import com.google.common.base.Charsets;
+import com.google.common.collect.Lists;
+import com.google.common.io.Files;
+import fr.ifremer.tutti.TuttiTechnicalException;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.*;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
+import fr.ifremer.tutti.service.AbstractTuttiService;
+import fr.ifremer.tutti.service.DecoratorService;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import fr.ifremer.tutti.service.catches.TuttiWeightComputingService;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.ZipUtil;
+import org.nuiton.util.csv.Export;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 2.2
+ */
+public class TuttiMultiPostImportExportService extends AbstractTuttiService {
+
+ private static final Log log =
+ LogFactory.getLog(TuttiMultiPostImportExportService.class);
+
+ protected PersistenceService persistenceService;
+
+ protected DecoratorService decoratorService;
+
+ protected char csvSeparator;
+
+ protected List<SampleCategoryEnum> samplingOrder;
+
+ @Override
+ public void setServiceContext(TuttiServiceContext context) {
+ super.setServiceContext(context);
+ persistenceService = getService(PersistenceService.class);
+ decoratorService = getService(DecoratorService.class);
+
+ csvSeparator = context.getConfig().getCsvSeparator();
+
+ Map<Integer, SampleCategoryEnum> idMapping = SampleCategoryEnum.toIdMapping();
+
+ samplingOrder = Lists.newArrayList();
+
+ // always first sampling category
+ samplingOrder.add(SampleCategoryEnum.sortedUnsorted);
+
+ for (Integer categoryId : context.getConfig().getSamplingOrderIds()) {
+ SampleCategoryEnum categoryEnum = idMapping.get(categoryId);
+ if (SampleCategoryEnum.sortedUnsorted != categoryEnum) {
+ samplingOrder.add(categoryEnum);
+ }
+ }
+ }
+
+ public void exportSpecies(File file, FishingOperation operation) {
+ CatchRowModel csvModel = new CatchRowModel(csvSeparator);
+ CatchFrequencyRowModel csvFrequencyModel = new CatchFrequencyRowModel(csvSeparator);
+
+ BatchContainer<SpeciesBatch> speciesBatchContainer =
+ persistenceService.getRootSpeciesBatch(operation.getId());
+
+ List<CatchRow> rows = Lists.newArrayList();
+ List<CatchFrequencyRow> frequencyRows = Lists.newArrayList();
+
+ for (SpeciesBatch batch : speciesBatchContainer.getChildren()) {
+ createSpeciesRow(batch, rows, frequencyRows);
+ }
+
+ BufferedWriter writer = null;
+ File directory = Files.createTempDir();
+
+ File speciesFile = new File(directory, "species.csv");
+ try {
+ writer = Files.newWriter(speciesFile, Charsets.UTF_8);
+ Export export = Export.newExport(csvModel, rows);
+ export.write(writer);
+ writer.close();
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(_("tutti.service.multipost.export.error", file), e);
+ } finally {
+ IOUtils.closeQuietly(writer);
+ }
+
+ File frequencyFile = new File(directory, "frequencies.csv");
+ try {
+ writer = Files.newWriter(frequencyFile, Charsets.UTF_8);
+ Export export = Export.newExport(csvFrequencyModel, frequencyRows);
+ export.write(writer);
+ writer.close();
+
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(_("tutti.service.multipost.export.frequencies.error", frequencyFile), e);
+ } finally {
+ IOUtils.closeQuietly(writer);
+ }
+
+ try {
+ ZipUtil.compressFiles(file, directory, Lists.newArrayList(speciesFile, frequencyFile));
+
+ } catch (IOException e) {
+ throw new TuttiTechnicalException(_("tutti.service.multipost.export.error", file), e);
+ }
+ }
+
+ protected void createSpeciesRow(SpeciesBatch batch, List<CatchRow> rows, List<CatchFrequencyRow> frequencyRows) {
+ CatchRow row = new CatchRow();
+
+ String id = UUID.randomUUID().toString();
+ row.setId(id);
+
+ row.setSpecies(batch.getSpecies());
+
+ switch (batch.getSampleCategoryType()) {
+ case sortedUnsorted:
+ row.setSortedUnsortedSampleCategory(batch.getSampleCategoryValue());
+ break;
+ case sex:
+ row.setSexSampleCategory(batch.getSampleCategoryValue());
+ break;
+ case size:
+ row.setSizeSampleCategory(batch.getSampleCategoryValue());
+ break;
+ case maturity:
+ row.setMaturitySampleCategory(batch.getSampleCategoryValue());
+ break;
+ case age:
+ row.setAgeSampleCategory(batch.getSampleCategoryValue());
+ break;
+ }
+ row.setCategoryWeight(batch.getSampleCategoryWeight());
+ row.setWeight(batch.getWeight());
+ row.setNumber(batch.getNumber());
+ row.setComment(batch.getComment());
+ row.setToConfirm(batch.isSpeciesToConfirm());
+
+ rows.add(row);
+
+ List<SpeciesBatchFrequency> frequencies =
+ persistenceService.getAllSpeciesBatchFrequency(batch.getId());
+ for (SpeciesBatchFrequency frequency : frequencies) {
+ CatchFrequencyRow frequencyRow = new CatchFrequencyRow();
+ frequencyRow.setBatchId(id);
+ frequencyRow.setLengthStepCaracteristic(frequency.getLengthStepCaracteristic());
+ frequencyRow.setLengthStep(frequency.getLengthStep());
+ frequencyRow.setNumber(frequency.getNumber());
+ frequencyRow.setWeight(frequency.getWeight());
+ frequencyRows.add(frequencyRow);
+ }
+
+ for (SpeciesBatch child : batch.getChildBatchs()) {
+ createSpeciesRow(child, rows, frequencyRows);
+ }
+ }
+
+ public void exportBenthos(File file, FishingOperation operation) {
+ CatchRowModel csvModel = new CatchRowModel(csvSeparator);
+ CatchFrequencyRowModel csvFrequencyModel = new CatchFrequencyRowModel(csvSeparator);
+
+ BatchContainer<BenthosBatch> benthosBatchContainer =
+ persistenceService.getRootBenthosBatch(operation.getId());
+
+ List<CatchRow> rows = Lists.newArrayList();
+ List<CatchFrequencyRow> frequencyRows = Lists.newArrayList();
+
+ for (BenthosBatch batch : benthosBatchContainer.getChildren()) {
+ createBenthosRow(batch, rows, frequencyRows);
+ }
+
+ BufferedWriter writer = null;
+ File directory = Files.createTempDir();
+
+ File benthosFile = new File(directory, "benthos.csv");
+ try {
+ writer = Files.newWriter(benthosFile, Charsets.UTF_8);
+ Export export = Export.newExport(csvModel, rows);
+ export.write(writer);
+ writer.close();
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(_("tutti.service.multipost.export.error", file), e);
+ } finally {
+ IOUtils.closeQuietly(writer);
+ }
+
+ File frequencyFile = new File(directory, "frequencies.csv");
+ try {
+ writer = Files.newWriter(frequencyFile, Charsets.UTF_8);
+ Export export = Export.newExport(csvFrequencyModel, frequencyRows);
+ export.write(writer);
+ writer.close();
+
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(_("tutti.service.multipost.export.frequencies.error", frequencyFile), e);
+ } finally {
+ IOUtils.closeQuietly(writer);
+ }
+
+ compressZipFile(file, directory);
+
+ }
+
+ protected void createBenthosRow(BenthosBatch batch, List<CatchRow> rows, List<CatchFrequencyRow> frequencyRows) {
+ CatchRow row = new CatchRow();
+
+ String id = UUID.randomUUID().toString();
+ row.setId(id);
+
+ row.setSpecies(batch.getSpecies());
+
+ switch (batch.getSampleCategoryType()) {
+ case sortedUnsorted:
+ row.setSortedUnsortedSampleCategory(batch.getSampleCategoryValue());
+ break;
+ case sex:
+ row.setSexSampleCategory(batch.getSampleCategoryValue());
+ break;
+ case size:
+ row.setSizeSampleCategory(batch.getSampleCategoryValue());
+ break;
+ case maturity:
+ row.setMaturitySampleCategory(batch.getSampleCategoryValue());
+ break;
+ case age:
+ row.setAgeSampleCategory(batch.getSampleCategoryValue());
+ break;
+ }
+ row.setCategoryWeight(batch.getSampleCategoryWeight());
+ row.setWeight(batch.getWeight());
+ row.setNumber(batch.getNumber());
+ row.setComment(batch.getComment());
+ row.setToConfirm(batch.isSpeciesToConfirm());
+
+ rows.add(row);
+
+ List<SpeciesBatchFrequency> frequencies =
+ persistenceService.getAllSpeciesBatchFrequency(batch.getId());
+ for (SpeciesBatchFrequency frequency : frequencies) {
+ CatchFrequencyRow frequencyRow = new CatchFrequencyRow();
+ frequencyRow.setBatchId(id);
+ frequencyRow.setLengthStepCaracteristic(frequency.getLengthStepCaracteristic());
+ frequencyRow.setLengthStep(frequency.getLengthStep());
+ frequencyRow.setNumber(frequency.getNumber());
+ frequencyRow.setWeight(frequency.getWeight());
+ frequencyRows.add(frequencyRow);
+ }
+
+ for (BenthosBatch child : batch.getChildBatchs()) {
+ createBenthosRow(child, rows, frequencyRows);
+ }
+ }
+}
Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties
===================================================================
--- trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2013-05-07 14:13:08 UTC (rev 927)
@@ -82,6 +82,7 @@
tutti.service.exportSumatra.header.station=
tutti.service.exportSumatra.header.weight=
tutti.service.mkDir.error=
+tutti.service.multipost.export.error=
tutti.service.operations.accidental.error.species.required=
tutti.service.operations.computeWeights.benthos.error.incoherentCategoryWeight=
tutti.service.operations.computeWeights.benthos.error.incoherentParentCategoryWeight=
Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
===================================================================
--- trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-05-07 14:13:08 UTC (rev 927)
@@ -80,6 +80,7 @@
tutti.service.exportSumatra.header.station=Station
tutti.service.exportSumatra.header.weight=Total
tutti.service.mkDir.error=Erreur à la création du dossier %s
+tutti.service.multipost.export.error=
tutti.service.operations.computeWeights.error.benthos.incoherentCategoryWeight=Le poids total des mensurations d'un lot du benthos est supérieur au poids de la catégorie
tutti.service.operations.computeWeights.error.benthos.incoherentParentCategoryWeight=Le poids de la catégorie d'un lot du benthos est différent de la somme des poids de ses sous-catégories
tutti.service.operations.computeWeights.error.benthos.incoherentRowWeightCategory=Le poids de sous-échantillon est renseigné alors que le lot n'a pas de poids.
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-05-07 14:13:08 UTC (rev 927)
@@ -1,5 +1,5 @@
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Mon May 06 16:32:40 CEST 2013
+#Tue May 07 16:11:30 CEST 2013
tutti.config.help=config.html
tutti.createAccidentalBatch.action.cancel.help=createAccidentalBatch.html\#actions
tutti.createAccidentalBatch.action.save.help=createAccidentalBatch.html\#actions
@@ -47,10 +47,14 @@
tutti.dbManager.action.upgradeDb.help=dbManager.html\#actions
tutti.dbManager.help=dbManager.html
tutti.editAccidentalBatch.action.createBatch.help=editAccidentalBatch.html\#actions
+tutti.editAccidentalBatch.action.exportMultiPost.help=
+tutti.editAccidentalBatch.action.importMultiPost.help=
tutti.editAccidentalBatch.action.removeBatch.help=editAccidentalBatch.html\#actions
tutti.editAccidentalBatch.help=editAccidentalBatch.html
tutti.editBenthosBatch.action.createBatch.help=editBenthosBatch.html\#actions
tutti.editBenthosBatch.action.createMelag.help=editBenthosBatch.html\#actions
+tutti.editBenthosBatch.action.exportMultiPost.help=
+tutti.editBenthosBatch.action.importMultiPost.help=
tutti.editBenthosBatch.action.removeBatch.help=editBenthosBatch.html\#actions
tutti.editBenthosBatch.action.removeSubBatch.help=editBenthosBatch.html\#actions
tutti.editBenthosBatch.action.renameBatch.help=editBenthosBatch.html\#actions
@@ -157,9 +161,13 @@
tutti.editFishingOperation.field.vessel.help=editFishingOperation.html\#fields
tutti.editFishingOperation.help=editFishingOperation.html
tutti.editIndividualObservationBatch.action.createBatch.help=editIndividualObservationBatch.html\#actions
+tutti.editIndividualObservationBatch.action.exportMultiPost.help=
+tutti.editIndividualObservationBatch.action.importMultiPost.help=
tutti.editIndividualObservationBatch.action.removeBatch.help=editIndividualObservationBatch.html\#actions
tutti.editIndividualObservationBatch.help=editIndividualObservationBatch.html
tutti.editMarineLitterBatch.action.createBatch.help=editIndividualObservationBatch.html\#actions
+tutti.editMarineLitterBatch.action.exportMultiPost.help=
+tutti.editMarineLitterBatch.action.importMultiPost.help=
tutti.editMarineLitterBatch.action.removeBatch.help=editIndividualObservationBatch.html\#actions
tutti.editMarineLitterBatch.field.marineLitterTotalWeight.help=editIndividualObservationBatch.html\#fields
tutti.editMarineLitterBatch.help=editMarineLitterBatch.html
@@ -197,6 +205,8 @@
tutti.editProtocol.pane.caracteristic.help=editProtocol.html\#fieldsCaracteristics
tutti.editSpeciesBatch.action.createBatch.help=editSpeciesBatch.html\#actions
tutti.editSpeciesBatch.action.createMelag.help=editSpeciesBatch.html\#actions
+tutti.editSpeciesBatch.action.exportMultiPost.help=
+tutti.editSpeciesBatch.action.importMultiPost.help=
tutti.editSpeciesBatch.action.removeBatch.help=editSpeciesBatch.html\#actions
tutti.editSpeciesBatch.action.removeSubBatch.help=editSpeciesBatch.html\#actions
tutti.editSpeciesBatch.action.renameBatch.help=editSpeciesBatch.html\#actions
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-05-07 14:13:08 UTC (rev 927)
@@ -1,5 +1,5 @@
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Mon May 06 16:32:40 CEST 2013
+#Tue May 07 16:11:30 CEST 2013
tutti.config.help=config.html
tutti.createAccidentalBatch.action.cancel.help=createAccidentalBatch.html\#actions
tutti.createAccidentalBatch.action.save.help=createAccidentalBatch.html\#actions
@@ -47,10 +47,14 @@
tutti.dbManager.action.upgradeDb.help=dbManager.html\#actions
tutti.dbManager.help=dbManager.html
tutti.editAccidentalBatch.action.createBatch.help=editAccidentalBatch.html\#actions
+tutti.editAccidentalBatch.action.exportMultiPost.help=
+tutti.editAccidentalBatch.action.importMultiPost.help=
tutti.editAccidentalBatch.action.removeBatch.help=editAccidentalBatch.html\#actions
tutti.editAccidentalBatch.help=editAccidentalBatch.html
tutti.editBenthosBatch.action.createBatch.help=editBenthosBatch.html\#actions
tutti.editBenthosBatch.action.createMelag.help=editBenthosBatch.html\#actions
+tutti.editBenthosBatch.action.exportMultiPost.help=
+tutti.editBenthosBatch.action.importMultiPost.help=
tutti.editBenthosBatch.action.removeBatch.help=editBenthosBatch.html\#actions
tutti.editBenthosBatch.action.removeSubBatch.help=editBenthosBatch.html\#actions
tutti.editBenthosBatch.action.renameBatch.help=editBenthosBatch.html\#actions
@@ -157,9 +161,13 @@
tutti.editFishingOperation.field.vessel.help=editFishingOperation.html\#fields
tutti.editFishingOperation.help=editFishingOperation.html
tutti.editIndividualObservationBatch.action.createBatch.help=editIndividualObservationBatch.html\#actions
+tutti.editIndividualObservationBatch.action.exportMultiPost.help=
+tutti.editIndividualObservationBatch.action.importMultiPost.help=
tutti.editIndividualObservationBatch.action.removeBatch.help=editIndividualObservationBatch.html\#actions
tutti.editIndividualObservationBatch.help=editIndividualObservationBatch.html
tutti.editMarineLitterBatch.action.createBatch.help=editIndividualObservationBatch.html\#actions
+tutti.editMarineLitterBatch.action.exportMultiPost.help=
+tutti.editMarineLitterBatch.action.importMultiPost.help=
tutti.editMarineLitterBatch.action.removeBatch.help=editIndividualObservationBatch.html\#actions
tutti.editMarineLitterBatch.field.marineLitterTotalWeight.help=editIndividualObservationBatch.html\#fields
tutti.editMarineLitterBatch.help=editMarineLitterBatch.html
@@ -197,6 +205,8 @@
tutti.editProtocol.pane.caracteristic.help=editProtocol.html\#fieldsCaracteristics
tutti.editSpeciesBatch.action.createBatch.help=editSpeciesBatch.html\#actions
tutti.editSpeciesBatch.action.createMelag.help=editSpeciesBatch.html\#actions
+tutti.editSpeciesBatch.action.exportMultiPost.help=
+tutti.editSpeciesBatch.action.importMultiPost.help=
tutti.editSpeciesBatch.action.removeBatch.help=editSpeciesBatch.html\#actions
tutti.editSpeciesBatch.action.removeSubBatch.help=editSpeciesBatch.html\#actions
tutti.editSpeciesBatch.action.renameBatch.help=editSpeciesBatch.html\#actions
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-05-07 14:13:08 UTC (rev 927)
@@ -39,6 +39,7 @@
import fr.ifremer.tutti.service.catches.ExportCatchesReportService;
import fr.ifremer.tutti.service.catches.TuttiWeightComputingService;
import fr.ifremer.tutti.service.catches.ValidateCruiseOperationsService;
+import fr.ifremer.tutti.service.catches.multipost.TuttiMultiPostImportExportService;
import fr.ifremer.tutti.service.export.TuttiExportService;
import fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportService;
import fr.ifremer.tutti.service.pupitri.TuttiPupitriImportExportService;
@@ -545,6 +546,10 @@
return serviceContext.getService(TuttiCatchesSumatraExportService.class);
}
+ public TuttiMultiPostImportExportService getMultiPostImportExportService() {
+ return serviceContext.getService(TuttiMultiPostImportExportService.class);
+ }
+
public boolean useRealPersistenceService() {
return isDbExist() && isDbLoaded();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-05-07 14:13:08 UTC (rev 927)
@@ -580,13 +580,3 @@
_tuttiAction: {CancelEditFishingOperationAction.class};
_help: {"tutti.editFishingOperation.action.cancelEditFishingOperation.help"};
}
-
-#importCasinoButton {
- actionIcon: casino-import;
- text: "tutti.editFishingOperation.action.importCasino";
- toolTipText: "tutti.editFishingOperation.action.importCasino.tip";
- i18nMnemonic: "tutti.editFishingOperation.action.importCasino.mnemonic";
- _tuttiAction: {ImportCasinoAction.class};
- enabled: {model.getId() != null};
- _help: {"tutti.editFishingOperation.action.importCasino.help"};
-}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-05-07 14:13:08 UTC (rev 927)
@@ -147,7 +147,6 @@
constructorParams='"tuttihelp.editeditFishingOperation.help"'/>
<JToolBar id='traitGeneralTabPaneToolBar'>
- <JButton id='importCasinoButton'/>
<ButtonAttachment id='fishingOperationAttachmentsButton'
constructorParams='getHandler().getContext(), getModel()'/>
</JToolBar>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css 2013-05-07 14:13:08 UTC (rev 927)
@@ -60,6 +60,26 @@
rightDecoration: {catchesCaracteristicsTabToolBar};
}
+#speciesTabFishingOperationReminderLabel {
+ rightDecoration: {speciesTabContent.getSpeciesBatchTabToolBar()};
+}
+
+#benthosTabFishingOperationReminderLabel {
+ rightDecoration: {benthosTabContent.getBenthosBatchTabToolBar()};
+}
+
+#marineLitterTabFishingOperationReminderLabel {
+ rightDecoration: {marineLitterTabContent.getMarineLitterBatchTabToolBar()};
+}
+
+#individualObservationTabFishingOperationReminderLabel {
+ rightDecoration: {individualObservationTabContent.getIndividualObservationBatchTabToolBar()};
+}
+
+#accidentalTabFishingOperationReminderLabel {
+ rightDecoration: {accidentalTabContent.getAccidentalBatchTabToolBar()};
+}
+
#catchTable {
border: {BorderFactory.createTitledBorder(_("tutti.editCatchBatch.legend.total"))};
}
@@ -301,7 +321,6 @@
text: "tutti.editCatchBatch.action.importPupitri";
toolTipText: "tutti.editCatchBatch.action.importPupitri.tip";
i18nMnemonic: "tutti.editCatchBatch.action.importPupitri.mnemonic";
- /*enabled: {model.getCatchTotalSortedTremisWeight() == null};*/
_tuttiAction: {ImportPupitriAction.class};
_help: {"tutti.editCatchBatch.action.importPupitri.help"};
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.css 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.css 2013-05-07 14:13:08 UTC (rev 927)
@@ -33,6 +33,30 @@
_help: {"tutti.editAccidentalBatch.help"};
}
+#accidentalBatchTabToolBar {
+ floatable: false;
+ opaque: false;
+ borderPainted: false;
+}
+
+#importMultiPostButton {
+ actionIcon: import;
+ text: "tutti.editAccidentalBatch.action.importMultiPost";
+ toolTipText: "tutti.editAccidentalBatch.action.importMultiPost.tip";
+ i18nMnemonic: "tutti.editAccidentalBatch.action.importMultiPost.mnemonic";
+ /*_tuttiAction: {ImportMultiPostAction.class};*/
+ _help: {"tutti.editAccidentalBatch.action.importMultiPost.help"};
+}
+
+#exportMultiPostButton {
+ actionIcon: export;
+ text: "tutti.editAccidentalBatch.action.exportMultiPost";
+ toolTipText: "tutti.editAccidentalBatch.action.exportMultiPost.tip";
+ i18nMnemonic: "tutti.editAccidentalBatch.action.exportMultiPost.mnemonic";
+ /*_tuttiAction: {ExportMultiPostAction.class};*/
+ _help: {"tutti.editAccidentalBatch.action.exportMultiPost.help"};
+}
+
#tablePopup {
label: "tutti.editAccidentalBatch.title.batchActions";
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx 2013-05-07 14:13:08 UTC (rev 927)
@@ -67,6 +67,11 @@
<TuttiHelpBroker id='broker'
constructorParams='"tutti.editAccidentalBatch.help"'/>
+ <JToolBar id='accidentalBatchTabToolBar'>
+ <JButton id='importMultiPostButton'/>
+ <JButton id='exportMultiPostButton'/>
+ </JToolBar>
+
<JPopupMenu id='tablePopup'>
<JMenuItem id='removeAccidentalBatchMenu'/>
</JPopupMenu>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.css 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.css 2013-05-07 14:13:08 UTC (rev 927)
@@ -46,6 +46,30 @@
_help: {"tutti.editBenthosBatch.help"};
}
+#benthosBatchTabToolBar {
+ floatable: false;
+ opaque: false;
+ borderPainted: false;
+}
+
+#importMultiPostButton {
+ actionIcon: import;
+ text: "tutti.editBenthosBatch.action.importMultiPost";
+ toolTipText: "tutti.editBenthosBatch.action.importMultiPost.tip";
+ i18nMnemonic: "tutti.editBenthosBatch.action.importMultiPost.mnemonic";
+ /*_tuttiAction: {ImportMultiPostAction.class};*/
+ _help: {"tutti.editBenthosBatch.action.importMultiPost.help"};
+}
+
+#exportMultiPostButton {
+ actionIcon: export;
+ text: "tutti.editBenthosBatch.action.exportMultiPost";
+ toolTipText: "tutti.editBenthosBatch.action.exportMultiPost.tip";
+ i18nMnemonic: "tutti.editBenthosBatch.action.exportMultiPost.mnemonic";
+ /*_tuttiAction: {ExportMultiPostAction.class};*/
+ _help: {"tutti.editBenthosBatch.action.exportMultiPost.help"};
+}
+
#benthosTotalWeightLabel {
text: "tutti.editBenthosBatch.field.benthosTotalWeight";
toolTipText: "tutti.editBenthosBatch.field.benthosTotalWeight.tip";
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx 2013-05-07 14:13:08 UTC (rev 927)
@@ -69,6 +69,11 @@
<TuttiHelpBroker id='broker'
constructorParams='"tutti.editBenthosBatch.help"'/>
+ <JToolBar id='benthosBatchTabToolBar'>
+ <JButton id='importMultiPostButton'/>
+ <JButton id='exportMultiPostButton'/>
+ </JToolBar>
+
<JPopupMenu id='tablePopup'>
<JMenuItem id='splitBenthosBatchMenu'
onActionPerformed='handler.splitBatch()'/>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.css 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.css 2013-05-07 14:13:08 UTC (rev 927)
@@ -26,6 +26,30 @@
_help: {"tutti.editIndividualObservationBatch.help"};
}
+#individualObservationBatchTabToolBar {
+ floatable: false;
+ opaque: false;
+ borderPainted: false;
+}
+
+#importMultiPostButton {
+ actionIcon: import;
+ text: "tutti.editIndividualObservationBatch.action.importMultiPost";
+ toolTipText: "tutti.editIndividualObservationBatch.action.importMultiPost.tip";
+ i18nMnemonic: "tutti.editIndividualObservationBatch.action.importMultiPost.mnemonic";
+ /*_tuttiAction: {ImportMultiPostAction.class};*/
+ _help: {"tutti.editIndividualObservationBatch.action.importMultiPost.help"};
+}
+
+#exportMultiPostButton {
+ actionIcon: export;
+ text: "tutti.editIndividualObservationBatch.action.exportMultiPost";
+ toolTipText: "tutti.editIndividualObservationBatch.action.exportMultiPost.tip";
+ i18nMnemonic: "tutti.editIndividualObservationBatch.action.exportMultiPost.mnemonic";
+ /*_tuttiAction: {ExportMultiPostAction.class};*/
+ _help: {"tutti.editIndividualObservationBatch.action.exportMultiPost.help"};
+}
+
#tablePopup {
label: "tutti.editIndividualObservationBatch.title.batchActions";
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx 2013-05-07 14:13:08 UTC (rev 927)
@@ -66,6 +66,11 @@
<TuttiHelpBroker id='broker'
constructorParams='"tutti.editIndividualObservationBatch.help"'/>
+ <JToolBar id='individualObservationBatchTabToolBar'>
+ <JButton id='importMultiPostButton'/>
+ <JButton id='exportMultiPostButton'/>
+ </JToolBar>
+
<JPopupMenu id='tablePopup'>
<JMenuItem id='removeIndividualObservationBatchMenu'/>
</JPopupMenu>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.css 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.css 2013-05-07 14:13:08 UTC (rev 927)
@@ -36,6 +36,30 @@
_help: {"tutti.editMarineLitterBatch.help"};
}
+#marineLitterBatchTabToolBar {
+ floatable: false;
+ opaque: false;
+ borderPainted: false;
+}
+
+#importMultiPostButton {
+ actionIcon: import;
+ text: "tutti.editMarineLitterBatch.action.importMultiPost";
+ toolTipText: "tutti.editMarineLitterBatch.action.importMultiPost.tip";
+ i18nMnemonic: "tutti.editMarineLitterBatch.action.importMultiPost.mnemonic";
+ /*_tuttiAction: {ImportMultiPostAction.class};*/
+ _help: {"tutti.editMarineLitterBatch.action.importMultiPost.help"};
+}
+
+#exportMultiPostButton {
+ actionIcon: export;
+ text: "tutti.editMarineLitterBatch.action.exportMultiPost";
+ toolTipText: "tutti.editMarineLitterBatch.action.exportMultiPost.tip";
+ i18nMnemonic: "tutti.editMarineLitterBatch.action.exportMultiPost.mnemonic";
+ /*_tuttiAction: {ExportMultiPostAction.class};*/
+ _help: {"tutti.editMarineLitterBatch.action.exportMultiPost.help"};
+}
+
#marineLitterTotalWeightLabel {
text: "tutti.editMarineLitterBatch.field.marineLitterTotalWeight";
toolTipText: "tutti.editMarineLitterBatch.field.marineLitterTotalWeight.tip";
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx 2013-05-07 14:13:08 UTC (rev 927)
@@ -67,6 +67,11 @@
<TuttiHelpBroker id='broker'
constructorParams='"tutti.editMarineLitterBatch.help"'/>
+ <JToolBar id='marineLitterBatchTabToolBar'>
+ <JButton id='importMultiPostButton'/>
+ <JButton id='exportMultiPostButton'/>
+ </JToolBar>
+
<JPopupMenu id='tablePopup'>
<JMenuItem id='removeMarineLitterBatchMenu'/>
</JPopupMenu>
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ExportMultiPostAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ExportMultiPostAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ExportMultiPostAction.java 2013-05-07 14:13:08 UTC (rev 927)
@@ -0,0 +1,79 @@
+package fr.ifremer.tutti.ui.swing.content.operation.catches.species;
+
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.service.DecoratorService;
+import fr.ifremer.tutti.service.catches.multipost.TuttiMultiPostImportExportService;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
+
+import java.io.File;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 2.2
+ */
+public class ExportMultiPostAction extends AbstractTuttiAction<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> {
+
+ protected File file;
+
+ protected FishingOperation currentOperation;
+
+ protected TuttiMultiPostImportExportService multiPostImportExportService;
+
+ public ExportMultiPostAction(SpeciesBatchUIHandler handler) {
+ super(handler, false);
+ multiPostImportExportService = getContext().getMultiPostImportExportService();
+ }
+
+ @Override
+ protected boolean prepareAction() throws Exception {
+
+ boolean doAction = super.prepareAction();
+
+ if (doAction) {
+
+ EditCatchesUI catchesUI = getUI().getParentContainer(EditCatchesUI.class);
+ currentOperation = catchesUI.getModel().getFishingOperation();
+
+ // choose file to export
+ file = TuttiUIUtil.saveFile(
+ decorate(currentOperation, DecoratorService.FILE_NAME_COMPATIBLE) + ".zip",
+ getContext().getMainUI(),
+ _("tutti.editSpeciesBatch.action.exportMultiPost.destinationFile.title"),
+ _("tutti.editSpeciesBatch.action.exportMultiPost.destinationFile.button"),
+ "^.*\\.zip", _("tutti.common.file.zip")
+ );
+ if (file == null) {
+
+ // user cancel
+ doAction = false;
+ } else {
+
+ // ask user to confirm overwrite.
+ doAction = getHandler().askOverwriteFile(file);
+ }
+ }
+ return doAction;
+ }
+
+ @Override
+ protected void releaseAction() {
+ file = null;
+ currentOperation = null;
+ super.releaseAction();
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+ multiPostImportExportService.exportSpecies(file, currentOperation);
+ }
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ sendMessage(_("tutti.editSpeciesBatch.action.exportMultiPost.success", file));
+ }
+}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportMultiPostAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportMultiPostAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportMultiPostAction.java 2013-05-07 14:13:08 UTC (rev 927)
@@ -0,0 +1,86 @@
+package fr.ifremer.tutti.ui.swing.content.operation.catches.species;
+
+import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationAction;
+import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.ImportPupitriPopupUI;
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
+
+import java.io.File;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 2.2
+ */
+public class ImportMultiPostAction extends AbstractTuttiAction<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> {
+
+ protected File file;
+
+ protected EditFishingOperationAction editAction;
+
+ public ImportMultiPostAction(SpeciesBatchUIHandler handler) {
+ super(handler, false);
+ }
+
+ public EditFishingOperationAction getEditAction() {
+ FishingOperationsUI parentUI = getUI().getParentContainer(FishingOperationsUI.class);
+ if (editAction == null) {
+ editAction = TuttiActionHelper.createLogicAction(parentUI.getHandler(),
+ EditFishingOperationAction.class);
+ }
+ return editAction;
+ }
+
+ @Override
+ protected boolean prepareAction() throws Exception {
+
+ boolean doAction = super.prepareAction();
+
+ if (doAction) {
+
+ // choose file to import
+ file = TuttiUIUtil.chooseFile(
+ getContext().getMainUI(),
+ _("tutti.editSpeciesBatch.action.importMultiPost.sourceFile.title"),
+ _("tutti.editSpeciesBatch.action.importMultiPost.sourceFile.button")
+ );
+
+ doAction = file != null;
+ }
+ return doAction;
+ }
+
+ @Override
+ protected void releaseAction() {
+ file = null;
+ super.releaseAction();
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+ EditCatchesUI editCatchesUI = getUI().getParentContainer(EditCatchesUI.class);
+ EditCatchesUIModel editCatchesUIModel = editCatchesUI.getModel();
+
+ FishingOperation operation = editCatchesUIModel.getFishingOperation();
+ CatchBatch catchBatch = editCatchesUIModel.getCatchBatch();
+
+ String fishingOperationText = getEditAction().getFishingOperationTitle(operation);
+
+ getEditAction().loadCatchBatch(operation, fishingOperationText, true);
+ }
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+
+ sendMessage(_("tutti.editSpeciesBatch.action.importMultiPost.success", file));
+ }
+}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css 2013-05-07 14:13:08 UTC (rev 927)
@@ -46,6 +46,30 @@
_help: {"tutti.editSpeciesBatch.help"};
}
+#speciesBatchTabToolBar {
+ floatable: false;
+ opaque: false;
+ borderPainted: false;
+}
+
+#importMultiPostButton {
+ actionIcon: import;
+ text: "tutti.editSpeciesBatch.action.importMultiPost";
+ toolTipText: "tutti.editSpeciesBatch.action.importMultiPost.tip";
+ i18nMnemonic: "tutti.editSpeciesBatch.action.importMultiPost.mnemonic";
+ _tuttiAction: {ImportMultiPostAction.class};
+ _help: {"tutti.editSpeciesBatch.action.importMultiPost.help"};
+}
+
+#exportMultiPostButton {
+ actionIcon: export;
+ text: "tutti.editSpeciesBatch.action.exportMultiPost";
+ toolTipText: "tutti.editSpeciesBatch.action.exportMultiPost.tip";
+ i18nMnemonic: "tutti.editSpeciesBatch.action.exportMultiPost.mnemonic";
+ _tuttiAction: {ExportMultiPostAction.class};
+ _help: {"tutti.editSpeciesBatch.action.exportMultiPost.help"};
+}
+
#speciesTotalWeightLabel {
text: "tutti.editSpeciesBatch.field.speciesTotalWeight";
toolTipText: "tutti.editSpeciesBatch.field.speciesTotalWeight.tip";
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2013-05-07 14:13:08 UTC (rev 927)
@@ -68,6 +68,11 @@
<TuttiHelpBroker id='broker'
constructorParams='"tutti.editSpeciesBatch.help"'/>
+ <JToolBar id='speciesBatchTabToolBar'>
+ <JButton id='importMultiPostButton'/>
+ <JButton id='exportMultiPostButton'/>
+ </JToolBar>
+
<JPopupMenu id='tablePopup'>
<JMenuItem id='splitSpeciesBatchMenu'
onActionPerformed='handler.splitBatch()'/>
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-05-07 14:13:08 UTC (rev 927)
@@ -258,6 +258,12 @@
tutti.editAccidentalBatch.action.createBatch=
tutti.editAccidentalBatch.action.createBatch.mnemonic=
tutti.editAccidentalBatch.action.createBatch.tip=
+tutti.editAccidentalBatch.action.exportMultiPost=
+tutti.editAccidentalBatch.action.exportMultiPost.mnemonic=
+tutti.editAccidentalBatch.action.exportMultiPost.tip=
+tutti.editAccidentalBatch.action.importMultiPost=
+tutti.editAccidentalBatch.action.importMultiPost.mnemonic=
+tutti.editAccidentalBatch.action.importMultiPost.tip=
tutti.editAccidentalBatch.action.removeBatch=
tutti.editAccidentalBatch.action.removeBatch.mnemonic=
tutti.editAccidentalBatch.action.removeBatch.tip=
@@ -285,6 +291,12 @@
tutti.editBenthosBatch.action.createMelag=
tutti.editBenthosBatch.action.createMelag.mnemonic=
tutti.editBenthosBatch.action.createMelag.tip=
+tutti.editBenthosBatch.action.exportMultiPost=
+tutti.editBenthosBatch.action.exportMultiPost.mnemonic=
+tutti.editBenthosBatch.action.exportMultiPost.tip=
+tutti.editBenthosBatch.action.importMultiPost=
+tutti.editBenthosBatch.action.importMultiPost.mnemonic=
+tutti.editBenthosBatch.action.importMultiPost.tip=
tutti.editBenthosBatch.action.removeBatch=
tutti.editBenthosBatch.action.removeBatch.mnemonic=
tutti.editBenthosBatch.action.removeBatch.tip=
@@ -593,6 +605,12 @@
tutti.editIndividualObservationBatch.action.createBatch=
tutti.editIndividualObservationBatch.action.createBatch.mnemonic=
tutti.editIndividualObservationBatch.action.createBatch.tip=
+tutti.editIndividualObservationBatch.action.exportMultiPost=
+tutti.editIndividualObservationBatch.action.exportMultiPost.mnemonic=
+tutti.editIndividualObservationBatch.action.exportMultiPost.tip=
+tutti.editIndividualObservationBatch.action.importMultiPost=
+tutti.editIndividualObservationBatch.action.importMultiPost.mnemonic=
+tutti.editIndividualObservationBatch.action.importMultiPost.tip=
tutti.editIndividualObservationBatch.action.removeBatch=
tutti.editIndividualObservationBatch.action.removeBatch.mnemonic=
tutti.editIndividualObservationBatch.action.removeBatch.tip=
@@ -626,6 +644,12 @@
tutti.editMarineLitterBatch.action.createBatch=
tutti.editMarineLitterBatch.action.createBatch.mnemonic=
tutti.editMarineLitterBatch.action.createBatch.tip=
+tutti.editMarineLitterBatch.action.exportMultiPost=
+tutti.editMarineLitterBatch.action.exportMultiPost.mnemonic=
+tutti.editMarineLitterBatch.action.exportMultiPost.tip=
+tutti.editMarineLitterBatch.action.importMultiPost=
+tutti.editMarineLitterBatch.action.importMultiPost.mnemonic=
+tutti.editMarineLitterBatch.action.importMultiPost.tip=
tutti.editMarineLitterBatch.action.removeBatch=
tutti.editMarineLitterBatch.action.removeBatch.mnemonic=
tutti.editMarineLitterBatch.action.removeBatch.tip=
@@ -773,6 +797,18 @@
tutti.editSpeciesBatch.action.createMelag=
tutti.editSpeciesBatch.action.createMelag.mnemonic=
tutti.editSpeciesBatch.action.createMelag.tip=
+tutti.editSpeciesBatch.action.exportMultiPost=
+tutti.editSpeciesBatch.action.exportMultiPost.destinationFile.button=
+tutti.editSpeciesBatch.action.exportMultiPost.destinationFile.title=
+tutti.editSpeciesBatch.action.exportMultiPost.mnemonic=
+tutti.editSpeciesBatch.action.exportMultiPost.success=
+tutti.editSpeciesBatch.action.exportMultiPost.tip=
+tutti.editSpeciesBatch.action.importMultiPost=
+tutti.editSpeciesBatch.action.importMultiPost.destinationFile.title=
+tutti.editSpeciesBatch.action.importMultiPost.mnemonic=
+tutti.editSpeciesBatch.action.importMultiPost.sourceFile.button=
+tutti.editSpeciesBatch.action.importMultiPost.sourceFile.title=
+tutti.editSpeciesBatch.action.importMultiPost.tip=
tutti.editSpeciesBatch.action.removeBatch=
tutti.editSpeciesBatch.action.removeBatch.mnemonic=
tutti.editSpeciesBatch.action.removeBatch.tip=
@@ -1183,6 +1219,7 @@
tutti.updateApplication.message.success=
tutti.updateApplication.noUpdate=
tutti.updateApplication.title.success=
+tutti.v.action.importMultiPost.mnemonic=
tutti.validateCruise.action.export.all.chooseFile.defaultFile=
tutti.validateCruise.action.export.all.chooseFile.label=
tutti.validateCruise.action.export.all.chooseFile.title=
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-05-07 13:08:02 UTC (rev 926)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-05-07 14:13:08 UTC (rev 927)
@@ -253,6 +253,12 @@
tutti.editAccidentalBatch.action.createBatch=Créer une capture accidentelle
tutti.editAccidentalBatch.action.createBatch.mnemonic=C
tutti.editAccidentalBatch.action.createBatch.tip=Créer une capture accidentelle
+tutti.editAccidentalBatch.action.exportMultiPost=Exporter les captures accidentelles
+tutti.editAccidentalBatch.action.exportMultiPost.mnemonic=E
+tutti.editAccidentalBatch.action.exportMultiPost.tip=Exporter les captures accidentelles pour les importer sur le poste maître
+tutti.editAccidentalBatch.action.importMultiPost=Importer des captures accidentelles
+tutti.editAccidentalBatch.action.importMultiPost.mnemonic=I
+tutti.editAccidentalBatch.action.importMultiPost.tip=Importer des captures accidentelles créées sur un poste satellite
tutti.editAccidentalBatch.action.removeBatch=Supprimer la capture courante
tutti.editAccidentalBatch.action.removeBatch.mnemonic=S
tutti.editAccidentalBatch.action.removeBatch.tip=Supprimer la capture courante (celle de la ligne sélectionnée)
@@ -280,6 +286,12 @@
tutti.editBenthosBatch.action.createMelag=Espèces d'un MELAG
tutti.editBenthosBatch.action.createMelag.mnemonic=C
tutti.editBenthosBatch.action.createMelag.tip=Calcul des poids des lots appartenant à un MELAG
+tutti.editBenthosBatch.action.exportMultiPost=Exporter les lots de benthos
+tutti.editBenthosBatch.action.exportMultiPost.mnemonic=E
+tutti.editBenthosBatch.action.exportMultiPost.tip=Exporter les lots de benthos pour les importer sur le poste maître
+tutti.editBenthosBatch.action.importMultiPost=Importer des lots de benthos
+tutti.editBenthosBatch.action.importMultiPost.mnemonic=I
+tutti.editBenthosBatch.action.importMultiPost.tip=Importer des lots de benthos créés sur un poste satellite
tutti.editBenthosBatch.action.removeBatch=Supprimer le lot
tutti.editBenthosBatch.action.removeBatch.mnemonic=S
tutti.editBenthosBatch.action.removeBatch.tip=Supprimer le lot courant (celui de la ligne sélectionnée) et tous ces fils
@@ -577,6 +589,12 @@
tutti.editIndividualObservationBatch.action.createBatch=Créer une observation
tutti.editIndividualObservationBatch.action.createBatch.mnemonic=C
tutti.editIndividualObservationBatch.action.createBatch.tip=Créer une nouvelle observation
+tutti.editIndividualObservationBatch.action.exportMultiPost=Exporter les observations
+tutti.editIndividualObservationBatch.action.exportMultiPost.mnemonic=E
+tutti.editIndividualObservationBatch.action.exportMultiPost.tip=Exporter les observations pour les importer sur le poste maître
+tutti.editIndividualObservationBatch.action.importMultiPost=Importer des observations
+tutti.editIndividualObservationBatch.action.importMultiPost.mnemonic=I
+tutti.editIndividualObservationBatch.action.importMultiPost.tip=Importer des observations créées sur un poste satellite
tutti.editIndividualObservationBatch.action.removeBatch=Supprimer la ligne sélectionnée
tutti.editIndividualObservationBatch.action.removeBatch.mnemonic=S
tutti.editIndividualObservationBatch.action.removeBatch.tip=Supprimer la ligne sélectionnée
@@ -610,6 +628,12 @@
tutti.editMarineLitterBatch.action.createBatch=Créer un lot de déchet
tutti.editMarineLitterBatch.action.createBatch.mnemonic=C
tutti.editMarineLitterBatch.action.createBatch.tip=Créer un nouveau lot de déchet
+tutti.editMarineLitterBatch.action.exportMultiPost=Exporter les lots de déchets
+tutti.editMarineLitterBatch.action.exportMultiPost.mnemonic=E
+tutti.editMarineLitterBatch.action.exportMultiPost.tip=Exporter les lots de déchets pour les importer sur le poste maître
+tutti.editMarineLitterBatch.action.importMultiPost=Importer des lots de déchets
+tutti.editMarineLitterBatch.action.importMultiPost.mnemonic=I
+tutti.editMarineLitterBatch.action.importMultiPost.tip=Importer des lots de déchets créés sur un poste satellite
tutti.editMarineLitterBatch.action.removeBatch=Supprimer la ligne sélectionnée
tutti.editMarineLitterBatch.action.removeBatch.mnemonic=S
tutti.editMarineLitterBatch.action.removeBatch.tip=Supprimer la ligne sélectionnée
@@ -743,6 +767,17 @@
tutti.editSpeciesBatch.action.createMelag=Espèces d'un MELAG
tutti.editSpeciesBatch.action.createMelag.mnemonic=C
tutti.editSpeciesBatch.action.createMelag.tip=Calcul des poids des lots appartenant à un MELAG
+tutti.editSpeciesBatch.action.exportMultiPost=Exporter les lots d'espèces
+tutti.editSpeciesBatch.action.exportMultiPost.destinationFile.button=Choisir le fichier pour l'export
+tutti.editSpeciesBatch.action.exportMultiPost.destinationFile.title=Exporter les lots d'espèces
+tutti.editSpeciesBatch.action.exportMultiPost.mnemonic=E
+tutti.editSpeciesBatch.action.exportMultiPost.success=
+tutti.editSpeciesBatch.action.exportMultiPost.tip=Exporter les lots d'espèces pour les importer sur le poste maître
+tutti.editSpeciesBatch.action.importMultiPost=Importer des lots d'espèces
+tutti.editSpeciesBatch.action.importMultiPost.mnemonic=I
+tutti.editSpeciesBatch.action.importMultiPost.sourceFile.button=Choisir le fichier à importer
+tutti.editSpeciesBatch.action.importMultiPost.sourceFile.title=Importer des lots d'espèces
+tutti.editSpeciesBatch.action.importMultiPost.tip=Importer des lots d'espèces créés sur un poste satellite
tutti.editSpeciesBatch.action.removeBatch=Supprimer le lot
tutti.editSpeciesBatch.action.removeBatch.mnemonic=S
tutti.editSpeciesBatch.action.removeBatch.tip=Supprimer le lot courant (celui de la ligne sélectionnée) et tous ces fils
1
0
r926 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content/cruise java/fr/ifremer/tutti/ui/swing/content/operation resources/i18n
by tchemit@users.forge.codelutin.com 07 May '13
by tchemit@users.forge.codelutin.com 07 May '13
07 May '13
Author: tchemit
Date: 2013-05-07 15:08:02 +0200 (Tue, 07 May 2013)
New Revision: 926
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/926
Log:
add missing svn properties + license headers
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditGearCaracteristicsAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ViewGearCaracteristicsAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/DeleteFishingOperationAction.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditGearCaracteristicsAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditGearCaracteristicsAction.java 2013-05-07 13:07:36 UTC (rev 925)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditGearCaracteristicsAction.java 2013-05-07 13:08:02 UTC (rev 926)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.ui.swing.content.cruise;
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
import fr.ifremer.tutti.service.PersistenceService;
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditGearCaracteristicsAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ViewGearCaracteristicsAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ViewGearCaracteristicsAction.java 2013-05-07 13:07:36 UTC (rev 925)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ViewGearCaracteristicsAction.java 2013-05-07 13:08:02 UTC (rev 926)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.ui.swing.content.cruise;
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
import fr.ifremer.tutti.persistence.entities.referential.Gear;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ViewGearCaracteristicsAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/DeleteFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/DeleteFishingOperationAction.java 2013-05-07 13:07:36 UTC (rev 925)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/DeleteFishingOperationAction.java 2013-05-07 13:08:02 UTC (rev 926)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.ui.swing.content.operation;
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/DeleteFishingOperationAction.java
___________________________________________________________________
Modified: svn:keywords
- Author Date Id Revision
+ Author Date Id Revision HeadURL
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-05-07 13:07:36 UTC (rev 925)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-05-07 13:08:02 UTC (rev 926)
@@ -587,6 +587,7 @@
tutti.editFishingOperation.field.vessel.tip=
tutti.editFishingOperation.label.traitReminder=
tutti.editFishingOperation.label.traitReminder.inCreation=
+tutti.editFishingOperation.message.operation.deleted=
tutti.editFishingOperation.pane.other=
tutti.editFishingOperation.tab.general=
tutti.editIndividualObservationBatch.action.createBatch=
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-05-07 13:07:36 UTC (rev 925)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-05-07 13:08:02 UTC (rev 926)
@@ -487,7 +487,6 @@
tutti.editFishingOperation.action.deleteFishingOperation.message=Vous êtes sur le point de supprimer l'opération de pêche <strong>%s</strong>
tutti.editFishingOperation.action.deleteFishingOperation.tip=Supprimer l'opération de pêche sélectionnée
tutti.editFishingOperation.action.deleteFishingOperation.title=Supprimer l'opération de pêche sélectionnée
-tutti.editFishingOperation.message.operation.deleted=Opération de pêche <strong>%s</strong> supprimée.
tutti.editFishingOperation.action.editFishingOperation.tip=Éditer l'opération de pêche
tutti.editFishingOperation.action.importCasino=Import Casino
tutti.editFishingOperation.action.importCasino.mnemonic=I
@@ -572,6 +571,7 @@
tutti.editFishingOperation.field.vessel.tip=Navire du trait
tutti.editFishingOperation.label.traitReminder=Trait \: %s
tutti.editFishingOperation.label.traitReminder.inCreation=en cours de création
+tutti.editFishingOperation.message.operation.deleted=Opération de pêche <strong>%s</strong> supprimée.
tutti.editFishingOperation.pane.other=Autres caractéristiques
tutti.editFishingOperation.tab.general=Trait
tutti.editIndividualObservationBatch.action.createBatch=Créer une observation
1
0
r925 - in trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service: . batch
by tchemit@users.forge.codelutin.com 07 May '13
by tchemit@users.forge.codelutin.com 07 May '13
07 May '13
Author: tchemit
Date: 2013-05-07 15:07:36 +0200 (Tue, 07 May 2013)
New Revision: 925
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/925
Log:
fixes #2404: [CAPTURES] Les pic?\195?\168es jointes ne sont pas toutes supprim?\195?\169es
improve sample helper api
improve delete attachments api
Added:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SamplePersistenceHelper.java
Removed:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SampleMeasurementPersistenceHelper.java
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceService.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/PlanktonBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java 2013-05-07 13:00:45 UTC (rev 924)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java 2013-05-07 13:07:36 UTC (rev 925)
@@ -31,7 +31,6 @@
import fr.ifremer.adagio.core.dao.administration.user.PersonImpl;
import fr.ifremer.adagio.core.dao.data.operation.FishingOperationImpl;
import fr.ifremer.adagio.core.dao.data.sample.Sample;
-import fr.ifremer.adagio.core.dao.data.sample.SampleDao;
import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl;
import fr.ifremer.adagio.core.dao.referential.pmfm.Matrix;
import fr.ifremer.adagio.core.dao.referential.pmfm.MatrixImpl;
@@ -41,7 +40,6 @@
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
-import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
@@ -73,15 +71,9 @@
@Autowired
protected ReferentialPersistenceService referentialService;
- @Autowired
- protected AttachmentPersistenceService attachmentPersistenceService;
+ @Resource(name = "samplePersistenceHelper")
+ protected SamplePersistenceHelper samplePersistenceHelper;
- @Autowired
- protected SampleMeasurementPersistenceHelper sampleMeasurementPersistenceHelper;
-
- @Resource(name = "sampleDao")
- protected SampleDao sampleDao;
-
@Override
public List<AccidentalBatch> getAllAccidentalBatch(String fishingOperationId) {
Preconditions.checkNotNull(fishingOperationId);
@@ -132,7 +124,7 @@
Sample sample = Sample.Factory.newInstance();
beanToEntity(bean, sample);
- sampleDao.create(sample);
+ samplePersistenceHelper.create(sample);
bean.setId(String.valueOf(sample.getId()));
return bean;
}
@@ -145,13 +137,13 @@
Preconditions.checkNotNull(bean.getFishingOperation());
Preconditions.checkState(!TuttiEntities.isNew(bean.getFishingOperation()));
- Sample sample = sampleDao.load(bean.getIdAsInt());
+ Sample sample = samplePersistenceHelper.load(bean.getIdAsInt());
if (sample == null) {
throw new DataRetrievalFailureException(
"Could not retrieve sample id=" + bean.getId());
}
beanToEntity(bean, sample);
- sampleDao.update(sample);
+ samplePersistenceHelper.update(sample);
return bean;
}
@@ -164,11 +156,7 @@
if (log.isInfoEnabled()) {
log.info("Will delete accidental batch: " + batchId);
}
- sampleDao.remove(batchId);
-
- attachmentPersistenceService.deleteAllAttachment(
- AttachementObjectTypeEnum.SAMPLE,
- batchId);
+ samplePersistenceHelper.deleteSample(batchId);
}
@Override
@@ -295,8 +283,8 @@
source.getSize());
}
- sampleMeasurementPersistenceHelper.setSampleMeasurements(target,
- caracteristics);
+ samplePersistenceHelper.setSampleMeasurements(target,
+ caracteristics);
}
@@ -308,7 +296,7 @@
CaracteristicMap result = batch.getCaracteristics();
- sampleMeasurementPersistenceHelper.fillSampleMeasurements(
+ samplePersistenceHelper.fillSampleMeasurements(
result, batch.getIdAsInt());
CaracteristicQualitativeValue deadOrAliveValue =
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceService.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceService.java 2013-05-07 13:00:45 UTC (rev 924)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceService.java 2013-05-07 13:07:36 UTC (rev 925)
@@ -88,13 +88,13 @@
void deleteAttachment(String attachmentId);
/**
- * Deletes all attachments of the given object id.
+ * Deletes all attachments of the given object ids.
*
* @param objectType type of attachment
- * @param objectId id of the object
+ * @param objectIds ids of object
*/
@Transactional(readOnly = false)
void deleteAllAttachment(AttachementObjectTypeEnum objectType,
- Integer objectId);
+ Integer... objectIds);
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceServiceImpl.java 2013-05-07 13:00:45 UTC (rev 924)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceServiceImpl.java 2013-05-07 13:07:36 UTC (rev 925)
@@ -246,10 +246,12 @@
@Override
public void deleteAllAttachment(AttachementObjectTypeEnum objectType,
- Integer objectId) {
- List<Attachment> attachments = getAllAttachments(objectType, objectId);
- for (Attachment attachment : attachments) {
- delete(attachment);
+ Integer... objectIds) {
+ for (Integer objectId : objectIds) {
+ List<Attachment> attachments = getAllAttachments(objectType, objectId);
+ for (Attachment attachment : attachments) {
+ delete(attachment);
+ }
}
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java 2013-05-07 13:00:45 UTC (rev 924)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java 2013-05-07 13:07:36 UTC (rev 925)
@@ -37,7 +37,6 @@
import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxon;
import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxonImpl;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
-import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
import fr.ifremer.tutti.persistence.entities.data.BenthosBatchFrequency;
@@ -76,9 +75,6 @@
@Autowired
protected ReferentialPersistenceService referentialService;
- @Autowired
- protected AttachmentPersistenceService attachmentPersistenceService;
-
@Resource(name = "batchPersistenceHelper")
protected BatchPersistenceHelper batchHelper;
@@ -191,10 +187,6 @@
Integer batchId = Integer.valueOf(id);
batchHelper.removeWithChildren(batchId);
-
- attachmentPersistenceService.deleteAllAttachment(
- AttachementObjectTypeEnum.BATCH,
- batchId);
}
@Override
@@ -221,11 +213,6 @@
log.info("Delete child [" + childBatchId + "] of species batch: " + id);
}
batchHelper.removeWithChildren(childBatchId);
-
- // delete his attachment (if any)
- attachmentPersistenceService.deleteAllAttachment(
- AttachementObjectTypeEnum.BATCH,
- childBatchId);
}
}
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-05-07 13:00:45 UTC (rev 924)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-05-07 13:07:36 UTC (rev 925)
@@ -366,8 +366,18 @@
@Override
public FishingOperation saveFishingOperation(FishingOperation bean) {
- checkFishingOperation(bean);
+ Preconditions.checkNotNull(bean);
+ Preconditions.checkNotNull(bean.getId());
+ Preconditions.checkNotNull(bean.getCruise());
+ Preconditions.checkNotNull(bean.getCruise().getId());
+ //TODO-TC Voir si il n'y a pas d'autre données obligatoires
+ if (bean.getGearShootingStartDate() != null && bean.getGearShootingEndDate() != null) {
+
+ //make sure not same date
+ Preconditions.checkArgument(!bean.getGearShootingStartDate().equals(bean.getGearShootingEndDate()));
+ }
+
getCurrentSession().clear();
getCurrentSession().setFlushMode(FlushMode.COMMIT);
fr.ifremer.adagio.core.dao.data.operation.FishingOperation fishingOperation = fishingOperationDao.load(Integer.valueOf(bean.getId()));
@@ -484,9 +494,6 @@
// remove operation vessel associations
removeAllOperationVesselAssociation(fishingOperation);
-// if (CollectionUtils.isNotEmpty(fishingOperation.getOperationVesselAssociations())) {
-// fishingOperation.getOperationVesselAssociations().clear();
-// }
// remove fishing areas
if (CollectionUtils.isNotEmpty(fishingAreas)) {
@@ -521,20 +528,6 @@
//-- Internal methods --//
//------------------------------------------------------------------------//
- protected void checkFishingOperation(FishingOperation bean) {
- Preconditions.checkNotNull(bean);
- Preconditions.checkNotNull(bean.getId());
- Preconditions.checkNotNull(bean.getCruise());
- Preconditions.checkNotNull(bean.getCruise().getId());
- //TODO-TC Voir si il n'y a pas d'autre données obligatoires
-
- if (bean.getGearShootingStartDate() != null && bean.getGearShootingEndDate() != null) {
-
- //make sure not same date
- Preconditions.checkArgument(!bean.getGearShootingStartDate().equals(bean.getGearShootingEndDate()));
- }
- }
-
protected void getVesselUseCaracteristics(String fishingOperationId, FishingOperation result) {
// retrieve fishing operation caracteristics
Iterator<Object[]> list = queryList(
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java 2013-05-07 13:00:45 UTC (rev 924)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java 2013-05-07 13:07:36 UTC (rev 925)
@@ -33,7 +33,6 @@
import fr.ifremer.adagio.core.dao.data.batch.CatchBatch;
import fr.ifremer.adagio.core.dao.data.operation.FishingOperationImpl;
import fr.ifremer.adagio.core.dao.data.sample.Sample;
-import fr.ifremer.adagio.core.dao.data.sample.SampleDao;
import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl;
import fr.ifremer.adagio.core.dao.referential.pmfm.Matrix;
import fr.ifremer.adagio.core.dao.referential.pmfm.MatrixImpl;
@@ -42,7 +41,6 @@
import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
-import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
@@ -79,15 +77,12 @@
@Autowired
protected AttachmentPersistenceService attachmentPersistenceService;
- @Autowired
- protected SampleMeasurementPersistenceHelper sampleMeasurementPersistenceHelper;
+ @Resource(name = "samplePersistenceHelper")
+ protected SamplePersistenceHelper samplePersistenceHelper;
@Resource(name = "batchPersistenceHelper")
protected BatchPersistenceHelper batchHelper;
- @Resource(name = "sampleDao")
- protected SampleDao sampleDao;
-
@Override
public List<IndividualObservationBatch> getAllIndividualObservationBatch(String fishingOperationId) {
Preconditions.checkNotNull(fishingOperationId);
@@ -152,7 +147,7 @@
Sample sample = Sample.Factory.newInstance();
beanToEntity(bean, sample, catchBatch);
- sampleDao.create(sample);
+ samplePersistenceHelper.create(sample);
bean.setId(String.valueOf(sample.getId()));
return bean;
}
@@ -172,13 +167,13 @@
// Get catch Batch
Batch catchBatch = getBatch(fishingOperation.getIdAsInt());
- Sample sample = sampleDao.load(bean.getIdAsInt());
+ Sample sample = samplePersistenceHelper.load(bean.getIdAsInt());
if (sample == null) {
throw new DataRetrievalFailureException(
"Could not retrieve sample id: " + bean.getId());
}
beanToEntity(bean, sample, catchBatch);
- sampleDao.update(sample);
+ samplePersistenceHelper.update(sample);
return bean;
}
@@ -192,15 +187,7 @@
log.info("Will delete individual observation batch: " +
batchId);
}
- //FIXME See why this code does not work
-// sampleDao.remove(batchId);
- Sample sample = sampleDao.load(batchId);
- if (sample != null) {
- sample.getSampleMeasurements().clear();
- sampleDao.remove(sample);
- attachmentPersistenceService.deleteAllAttachment(AttachementObjectTypeEnum.SAMPLE,
- batchId);
- }
+ samplePersistenceHelper.deleteSample(batchId);
}
@Override
@@ -327,8 +314,8 @@
source.getSize());
}
- sampleMeasurementPersistenceHelper.setSampleMeasurements(target,
- caracteristics);
+ samplePersistenceHelper.setSampleMeasurements(target,
+ caracteristics);
}
protected Batch getBatch(Integer operationId) {
@@ -342,7 +329,7 @@
CaracteristicMap result = batch.getCaracteristics();
- sampleMeasurementPersistenceHelper.fillSampleMeasurements(
+ samplePersistenceHelper.fillSampleMeasurements(
result, batch.getIdAsInt());
String sampleCode = (String) result.remove(referentialService.getSampleIdCaracteristic());
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceImpl.java 2013-05-07 13:00:45 UTC (rev 924)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MarineLitterBatchPersistenceServiceImpl.java 2013-05-07 13:07:36 UTC (rev 925)
@@ -35,7 +35,6 @@
import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValue;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
-import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
@@ -65,9 +64,6 @@
@Autowired
protected ReferentialPersistenceService referentialService;
- @Autowired
- protected AttachmentPersistenceService attachmentPersistenceService;
-
@Resource(name = "batchPersistenceHelper")
protected BatchPersistenceHelper batchHelper;
@@ -162,9 +158,6 @@
Integer batchId = Integer.valueOf(id);
batchHelper.removeWithChildren(batchId);
-
- attachmentPersistenceService.deleteAllAttachment(
- AttachementObjectTypeEnum.BATCH, batchId);
}
public MarineLitterBatch entityToMarineLitterBatch(SortingBatch source,
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/PlanktonBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/PlanktonBatchPersistenceServiceImpl.java 2013-05-07 13:00:45 UTC (rev 924)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/PlanktonBatchPersistenceServiceImpl.java 2013-05-07 13:07:36 UTC (rev 925)
@@ -26,7 +26,6 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
-import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
import fr.ifremer.tutti.persistence.entities.data.PlanktonBatch;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -46,9 +45,6 @@
private static final Log log =
LogFactory.getLog(PlanktonBatchPersistenceServiceImpl.class);
- @Autowired
- protected AttachmentPersistenceService attachmentPersistenceService;
-
@Override
public List<PlanktonBatch> getAllPlanktonBatch(String fishingOperationId) {
List<PlanktonBatch> result = Lists.newArrayList();
@@ -71,8 +67,5 @@
@Override
public void deletePlanktonBatch(String id) {
Preconditions.checkNotNull(id);
- attachmentPersistenceService.deleteAllAttachment(
- AttachementObjectTypeEnum.BATCH,
- Integer.valueOf(id));
}
}
Deleted: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SampleMeasurementPersistenceHelper.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SampleMeasurementPersistenceHelper.java 2013-05-07 13:00:45 UTC (rev 924)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SampleMeasurementPersistenceHelper.java 2013-05-07 13:07:36 UTC (rev 925)
@@ -1,145 +0,0 @@
-package fr.ifremer.tutti.persistence.service;
-
-/*
- * #%L
- * Tutti :: Persistence
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.collect.Sets;
-import fr.ifremer.adagio.core.dao.data.measure.SampleMeasurement;
-import fr.ifremer.adagio.core.dao.data.sample.Sample;
-import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl;
-import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmImpl;
-import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
-import fr.ifremer.tutti.persistence.entities.TuttiEntities;
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import org.hibernate.type.IntegerType;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.io.Serializable;
-import java.util.Iterator;
-import java.util.Set;
-
-/**
- * Helper around {@link SampleMeasurement}.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.6
- */
-@Component("sampleMeasurementPersistenceHelper")
-public class SampleMeasurementPersistenceHelper extends AbstractPersistenceService {
-
- @Autowired
- protected ReferentialPersistenceService referentialService;
-
- @Autowired
- protected MeasurementPersistenceHelper measurementPersistenceHelper;
-
- public void setSampleMeasurements(Sample target,
- CaracteristicMap caracteristics) {
-
- Set<SampleMeasurement> notChangedSampleMeasurements = Sets.newHashSet();
- if (target.getSampleMeasurements() != null) {
- notChangedSampleMeasurements.addAll(target.getSampleMeasurements());
- }
-
- for (Caracteristic caracteristic : caracteristics.keySet()) {
- SampleMeasurement vum = setSampleMeasurement(
- target,
- caracteristic,
- caracteristics.get(caracteristic));
- notChangedSampleMeasurements.remove(vum);
- }
-
- if (target.getSampleMeasurements() != null &&
- notChangedSampleMeasurements.size() > 0) {
- target.getSampleMeasurements().removeAll(notChangedSampleMeasurements);
- }
- }
-
- public void fillSampleMeasurements(CaracteristicMap result,
- Integer sampleId) {
- Iterator<Object[]> list = queryList(
- "sampleMeasurements",
- "sampleId", IntegerType.INSTANCE, sampleId);
- while (list.hasNext()) {
- int colIndex = 0;
- Object[] source = list.next();
- Integer pmfmId = (Integer) source[colIndex++];
- Float numericalValue = (Float) source[colIndex++];
- String alphanumericalValue = (String) source[colIndex++];
- Integer qualitativeValueId = (Integer) source[colIndex];
-
- Caracteristic caracteristic = referentialService.getCaracteristic(pmfmId);
- Serializable value = null;
- switch (caracteristic.getCaracteristicType()) {
-
- case NUMBER:
- value = numericalValue;
- break;
- case QUALITATIVE:
- value = TuttiEntities.getQualitativeValue(caracteristic,
- qualitativeValueId);
- break;
- case TEXT:
- value = alphanumericalValue;
- break;
- }
- result.put(caracteristic, value);
- }
- }
-
- protected SampleMeasurement setSampleMeasurement(Sample sample,
- Caracteristic caracteristic,
- Serializable value) {
-
- Integer pmfmId = caracteristic.getIdAsInt();
-
- SampleMeasurement result = null;
- if (sample.getSampleMeasurements() != null) {
- for (SampleMeasurement vum : sample.getSampleMeasurements()) {
- if (pmfmId.equals(vum.getPmfm().getId())) {
- result = vum;
- break;
- }
- }
- }
- if (result == null) {
-
- result = SampleMeasurement.Factory.newInstance();
-
- result.setSample(sample);
- if (sample.getSampleMeasurements() == null) {
- sample.setSampleMeasurements(Sets.newHashSet(result));
- } else {
- sample.getSampleMeasurements().add(result);
- }
- result.setQualityFlag(load(QualityFlagImpl.class, enumeration.QUALITY_FLAG_CODE_NOT_QUALIFIED));
- result.setDepartment(sample.getRecorderDepartment());
- result.setPmfm(load(PmfmImpl.class, pmfmId));
- }
- measurementPersistenceHelper.setMeasurement(result, caracteristic, value);
- return result;
- }
-
-}
Copied: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SamplePersistenceHelper.java (from rev 920, trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SampleMeasurementPersistenceHelper.java)
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SamplePersistenceHelper.java (rev 0)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SamplePersistenceHelper.java 2013-05-07 13:07:36 UTC (rev 925)
@@ -0,0 +1,178 @@
+package fr.ifremer.tutti.persistence.service;
+
+/*
+ * #%L
+ * Tutti :: Persistence
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.collect.Sets;
+import fr.ifremer.adagio.core.dao.data.measure.SampleMeasurement;
+import fr.ifremer.adagio.core.dao.data.sample.Sample;
+import fr.ifremer.adagio.core.dao.data.sample.SampleDao;
+import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl;
+import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmImpl;
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import org.hibernate.type.IntegerType;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.io.Serializable;
+import java.util.Iterator;
+import java.util.Set;
+
+/**
+ * Helper around {@link Sample}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.6
+ */
+@Component("samplePersistenceHelper")
+public class SamplePersistenceHelper extends AbstractPersistenceService {
+
+ @Autowired
+ protected ReferentialPersistenceService referentialService;
+
+ @Autowired
+ protected MeasurementPersistenceHelper measurementPersistenceHelper;
+
+ @Autowired
+ protected AttachmentPersistenceService attachmentPersistenceService;
+
+ @Resource(name = "sampleDao")
+ protected SampleDao sampleDao;
+
+ public Sample create(Sample sample) {
+ return sampleDao.create(sample);
+ }
+
+ public void update(Sample sample) {
+ sampleDao.update(sample);
+ }
+
+ public Sample load(Integer id) {
+ return sampleDao.load(id);
+ }
+
+ public void deleteSample(Integer sampleId) {
+
+ Sample sample = sampleDao.load(sampleId);
+ if (sample != null) {
+ sample.getSampleMeasurements().clear();
+ sampleDao.remove(sample);
+ attachmentPersistenceService.deleteAllAttachment(
+ AttachementObjectTypeEnum.SAMPLE,
+ sampleId);
+ }
+ }
+
+ public void setSampleMeasurements(Sample target,
+ CaracteristicMap caracteristics) {
+
+ Set<SampleMeasurement> notChangedSampleMeasurements = Sets.newHashSet();
+ if (target.getSampleMeasurements() != null) {
+ notChangedSampleMeasurements.addAll(target.getSampleMeasurements());
+ }
+
+ for (Caracteristic caracteristic : caracteristics.keySet()) {
+ SampleMeasurement vum = setSampleMeasurement(
+ target,
+ caracteristic,
+ caracteristics.get(caracteristic));
+ notChangedSampleMeasurements.remove(vum);
+ }
+
+ if (target.getSampleMeasurements() != null &&
+ notChangedSampleMeasurements.size() > 0) {
+ target.getSampleMeasurements().removeAll(notChangedSampleMeasurements);
+ }
+ }
+
+ public void fillSampleMeasurements(CaracteristicMap result,
+ Integer sampleId) {
+ Iterator<Object[]> list = queryList(
+ "sampleMeasurements",
+ "sampleId", IntegerType.INSTANCE, sampleId);
+ while (list.hasNext()) {
+ int colIndex = 0;
+ Object[] source = list.next();
+ Integer pmfmId = (Integer) source[colIndex++];
+ Float numericalValue = (Float) source[colIndex++];
+ String alphanumericalValue = (String) source[colIndex++];
+ Integer qualitativeValueId = (Integer) source[colIndex];
+
+ Caracteristic caracteristic = referentialService.getCaracteristic(pmfmId);
+ Serializable value = null;
+ switch (caracteristic.getCaracteristicType()) {
+
+ case NUMBER:
+ value = numericalValue;
+ break;
+ case QUALITATIVE:
+ value = TuttiEntities.getQualitativeValue(caracteristic,
+ qualitativeValueId);
+ break;
+ case TEXT:
+ value = alphanumericalValue;
+ break;
+ }
+ result.put(caracteristic, value);
+ }
+ }
+
+ protected SampleMeasurement setSampleMeasurement(Sample sample,
+ Caracteristic caracteristic,
+ Serializable value) {
+
+ Integer pmfmId = caracteristic.getIdAsInt();
+
+ SampleMeasurement result = null;
+ if (sample.getSampleMeasurements() != null) {
+ for (SampleMeasurement vum : sample.getSampleMeasurements()) {
+ if (pmfmId.equals(vum.getPmfm().getId())) {
+ result = vum;
+ break;
+ }
+ }
+ }
+ if (result == null) {
+
+ result = SampleMeasurement.Factory.newInstance();
+
+ result.setSample(sample);
+ if (sample.getSampleMeasurements() == null) {
+ sample.setSampleMeasurements(Sets.newHashSet(result));
+ } else {
+ sample.getSampleMeasurements().add(result);
+ }
+ result.setQualityFlag(load(QualityFlagImpl.class, enumeration.QUALITY_FLAG_CODE_NOT_QUALIFIED));
+ result.setDepartment(sample.getRecorderDepartment());
+ result.setPmfm(load(PmfmImpl.class, pmfmId));
+ }
+ measurementPersistenceHelper.setMeasurement(result, caracteristic, value);
+ return result;
+ }
+
+}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java 2013-05-07 13:00:45 UTC (rev 924)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java 2013-05-07 13:07:36 UTC (rev 925)
@@ -38,7 +38,6 @@
import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxonImpl;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
-import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
@@ -75,9 +74,6 @@
LogFactory.getLog(SpeciesBatchPersistenceServiceImpl.class);
@Autowired
- protected AttachmentPersistenceService attachmentPersistenceService;
-
- @Autowired
protected ReferentialPersistenceService referentialService;
@Resource(name = "batchPersistenceHelper")
@@ -202,10 +198,6 @@
Integer batchId = Integer.valueOf(id);
batchHelper.removeWithChildren(batchId);
-
- attachmentPersistenceService.deleteAllAttachment(
- AttachementObjectTypeEnum.BATCH,
- batchId);
}
@Override
@@ -232,11 +224,6 @@
log.info("Delete child [" + childBatchId + "] of species batch: " + id);
}
batchHelper.removeWithChildren(childBatchId);
-
- // delete his attachment (if any)
- attachmentPersistenceService.deleteAllAttachment(
- AttachementObjectTypeEnum.BATCH,
- childBatchId);
}
}
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java 2013-05-07 13:00:45 UTC (rev 924)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java 2013-05-07 13:07:36 UTC (rev 925)
@@ -132,11 +132,9 @@
getCurrentSession().flush();
- for (Integer id : ids) {
- attachmentPersistenceService.deleteAllAttachment(
- AttachementObjectTypeEnum.BATCH,
- id);
- }
+ attachmentPersistenceService.deleteAllAttachment(
+ AttachementObjectTypeEnum.BATCH,
+ ids.toArray(new Integer[ids.size()]));
}
public <D extends TuttiEntity> D createSortingBatch(D bean, CatchBatch catchBatch, SortingBatch batch) {
@@ -146,11 +144,23 @@
}
public void removeWithChildren(Integer batchId) {
+ List<Integer> ids = catchBatchDao.getAllChildrenIds(batchId);
+ ids.add(batchId);
catchBatchDao.removeWithChildren(batchId);
+
+ attachmentPersistenceService.deleteAllAttachment(
+ AttachementObjectTypeEnum.BATCH,
+ ids.toArray(new Integer[ids.size()]));
}
public void removeWithChildren(Integer batchId, CatchBatch parentCatchBatch) {
+ List<Integer> ids = catchBatchDao.getAllChildrenIds(batchId);
+ ids.add(batchId);
catchBatchDao.removeWithChildren(batchId, parentCatchBatch);
+
+ attachmentPersistenceService.deleteAllAttachment(
+ AttachementObjectTypeEnum.BATCH,
+ ids.toArray(new Integer[ids.size()]));
}
public void updateSortingBatch(List<SortingBatch> sortingBatchs, CatchBatch parentCatchBatch) {
1
0
r924 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content/home java/fr/ifremer/tutti/ui/swing/content/operation java/fr/ifremer/tutti/ui/swing/util resources/i18n
by tchemit@users.forge.codelutin.com 07 May '13
by tchemit@users.forge.codelutin.com 07 May '13
07 May '13
Author: tchemit
Date: 2013-05-07 15:00:45 +0200 (Tue, 07 May 2013)
New Revision: 924
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/924
Log:
fixes #1975: [TRAIT] - Pouvoir supprimer un trait + improve delete messages
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/DeleteProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/DeleteFishingOperationAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/DeleteProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/DeleteProtocolAction.java 2013-05-07 09:16:46 UTC (rev 923)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/DeleteProtocolAction.java 2013-05-07 13:00:45 UTC (rev 924)
@@ -31,7 +31,6 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import javax.swing.JOptionPane;
import java.util.List;
import static org.nuiton.i18n.I18n._;
@@ -56,14 +55,13 @@
boolean result = super.prepareAction();
TuttiProtocol protocol = getHandler().getModel().getProtocol();
- int answer = JOptionPane.showConfirmDialog(
- getHandler().getUI(),
- _("tutti.selectCruise.action.deleteProtocol.message", protocol.getName()),
- _("tutti.selectCruise.action.deleteProtocol.title"),
- JOptionPane.OK_CANCEL_OPTION
- );
- result &= answer == JOptionPane.OK_OPTION;
+ result &=
+ getHandler().askBeforeDelete(
+ _("tutti.selectCruise.action.deleteProtocol.title"),
+ _("tutti.selectCruise.action.deleteProtocol.message", protocol.getName())
+ );
+
return result;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java 2013-05-07 09:16:46 UTC (rev 923)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java 2013-05-07 13:00:45 UTC (rev 924)
@@ -27,7 +27,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.tutti.service.ValidationService;
import fr.ifremer.tutti.ui.swing.TuttiScreen;
-import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import fr.ifremer.tutti.ui.swing.content.AbstractChangeScreenAction;
import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
import org.apache.commons.logging.Log;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/DeleteFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/DeleteFishingOperationAction.java 2013-05-07 09:16:46 UTC (rev 923)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/DeleteFishingOperationAction.java 2013-05-07 13:00:45 UTC (rev 924)
@@ -3,7 +3,6 @@
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
-import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -19,35 +18,24 @@
/** Logger. */
private static final Log log =
- LogFactory.getLog(EditFishingOperationAction.class);
+ LogFactory.getLog(DeleteFishingOperationAction.class);
- /**
- * Delegate edit action.
- *
- * @since 1.0
- */
- protected EditFishingOperationAction editAction;
-
public DeleteFishingOperationAction(FishingOperationsUIHandler handler) {
super(handler, true);
- setActionDescription(_("tutti.editFishingOperation.action.editFishingOperation.tip"));
+ setActionDescription(
+ _("tutti.editFishingOperation.action.deleteFishingOperation.tip"));
}
- public EditFishingOperationAction getEditAction() {
- if (editAction == null) {
- editAction = TuttiActionHelper.createLogicAction(
- getHandler(),
- EditFishingOperationAction.class);
- }
- return editAction;
- }
-
@Override
- protected boolean prepareAction() {
-
+ protected boolean prepareAction() throws Exception {
+ boolean canContinue = super.prepareAction();
FishingOperation fishingOperation = getModel().getSelectedFishingOperation();
- boolean canContinue = fishingOperation != null &&
- !TuttiEntities.isNew(fishingOperation);
+ canContinue &= fishingOperation != null &&
+ !TuttiEntities.isNew(fishingOperation) &&
+ getHandler().askBeforeDelete(
+ _("tutti.editFishingOperation.action.deleteFishingOperation.title"),
+ _("tutti.editFishingOperation.action.deleteFishingOperation.message", decorate(fishingOperation))
+ );
return canContinue;
}
@@ -58,17 +46,27 @@
getModel().getSelectedFishingOperation();
if (log.isInfoEnabled()) {
- log.info("Try to delete fishingOperation: " + fishingOperation);
+ log.info("Will delete fishingOperation: " + fishingOperation);
}
getContext().getPersistenceService().deleteFishingOperation(fishingOperation.getId());
-
}
@Override
public void postSuccessAction() {
super.postSuccessAction();
- getEditAction().setFishingOperation(null);
- runAction(getEditAction());
+
+ FishingOperationsUIModel model = getModel();
+
+ FishingOperation fishingOperation =
+ model.getSelectedFishingOperation();
+
+ // unselect removed fishing operation
+ model.setSelectedFishingOperation(null);
+
+ // remove it from selection model
+ model.removeFishingOperation(fishingOperation);
+
+ sendMessage(_("tutti.editFishingOperation.message.operation.deleted", decorate(fishingOperation)));
}
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-05-07 09:16:46 UTC (rev 923)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-05-07 13:00:45 UTC (rev 924)
@@ -166,7 +166,6 @@
fishingOperation = null;
checkPreviousEdit = true;
super.releaseAction();
-// getComputeWeightsAction().actionPerformed(event);
}
protected SaveFishingOperationAction getSaveFishingOperationAction() {
@@ -547,7 +546,7 @@
// batch is not compatible with Tutti
if (log.isDebugEnabled()) {
- log.debug("Invalid batch model");
+ log.debug("Invalid batch model", e);
}
batch = null;
attachments = Collections.emptyList();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-05-07 09:16:46 UTC (rev 923)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-05-07 13:00:45 UTC (rev 924)
@@ -324,6 +324,22 @@
return result;
}
+ public boolean askBeforeDelete(String title, String message) {
+ String htmlMessage = String.format(
+ CONFIRMATION_FORMAT,
+ message,
+ _("tutti.common.askBeforeDelete.help"));
+ int i = JOptionPane.showConfirmDialog(
+ getTopestUI(),
+ htmlMessage,
+ title,
+ JOptionPane.OK_CANCEL_OPTION,
+ JOptionPane.QUESTION_MESSAGE);
+
+ boolean result = i == JOptionPane.OK_OPTION;
+ return result;
+ }
+
public boolean askOverwriteFile(File file) {
boolean result;
if (file.exists()) {
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-05-07 09:16:46 UTC (rev 923)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-05-07 13:00:45 UTC (rev 924)
@@ -66,6 +66,8 @@
tutti.commentEditor.action.tip=
tutti.commentEditor.none.tip=
tutti.commentEditor.title=
+tutti.common.askBeforeDelete.help=
+tutti.common.askBeforeDelete.title=
tutti.common.askCancelEditBeforeLeaving.help=
tutti.common.askCancelEditBeforeLeaving.title=
tutti.common.askOverwriteFile.help=
@@ -81,6 +83,8 @@
tutti.common.file.pdf=
tutti.common.file.protocol=
tutti.common.file.zip=
+tutti.common.selected.fishingOperation=
+tutti.common.selected.protocol=
tutti.common.validate=
tutti.common.validate.mnemonic=
tutti.config.action.reload.actions=
@@ -496,6 +500,9 @@
tutti.editFishingOperation.action.cancelEditFishingOperation=
tutti.editFishingOperation.action.cancelEditFishingOperation.mnemonic=
tutti.editFishingOperation.action.cancelEditFishingOperation.tip=
+tutti.editFishingOperation.action.deleteFishingOperation.message=
+tutti.editFishingOperation.action.deleteFishingOperation.tip=
+tutti.editFishingOperation.action.deleteFishingOperation.title=
tutti.editFishingOperation.action.editFishingOperation.tip=
tutti.editFishingOperation.action.importCasino=
tutti.editFishingOperation.action.importCasino.mnemonic=
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-05-07 09:16:46 UTC (rev 923)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-05-07 13:00:45 UTC (rev 924)
@@ -63,6 +63,8 @@
tutti.commentEditor.action.tip=Commentaire
tutti.commentEditor.none.tip=Pas de commentaire
tutti.commentEditor.title=Commentaire
+tutti.common.askBeforeDelete.help=Que voulez-vous faire ?<ul><li><strong>Annuler</strong> pour ne pas supprimer</li><li><strong>OK</strong> pour supprimer l'objet en question</li></ul>
+tutti.common.askBeforeDelete.title=Suppression de %s
tutti.common.askCancelEditBeforeLeaving.help=Que voulez-vous faire ?<ul><li><strong>Annuler</strong> pour rester sur cet écran</li><li><strong>OK</strong> pour quitter l'écran en abandonnant les modifications</li></ul>
tutti.common.askCancelEditBeforeLeaving.title=Modifications non enregistrées mais invalides
tutti.common.askOverwriteFile.help=Que voulez-vous faire ?<ul><li><strong>Annuler</strong> pour ne pas écraser le fichier et annuler l'opération</li><li><strong>Oui</strong> pour écraser le fichier et continuer l'opération</li></ul>
@@ -77,6 +79,8 @@
tutti.common.file.pdf=Extension d'un fichier pdf
tutti.common.file.protocol=Extension d'un fichier de protocole Tutti
tutti.common.file.zip=Extension d'une archive zip
+tutti.common.selected.fishingOperation=l'opération de pêche sélectionnée
+tutti.common.selected.protocol=le protocole sélectionné
tutti.common.validate=Valider
tutti.common.validate.mnemonic=V
tutti.config.action.reload.actions=Recharger les actions
@@ -480,6 +484,10 @@
tutti.editFishingOperation.action.cancelEditFishingOperation=Annuler
tutti.editFishingOperation.action.cancelEditFishingOperation.mnemonic=A
tutti.editFishingOperation.action.cancelEditFishingOperation.tip=Annuler la création du trait
+tutti.editFishingOperation.action.deleteFishingOperation.message=Vous êtes sur le point de supprimer l'opération de pêche <strong>%s</strong>
+tutti.editFishingOperation.action.deleteFishingOperation.tip=Supprimer l'opération de pêche sélectionnée
+tutti.editFishingOperation.action.deleteFishingOperation.title=Supprimer l'opération de pêche sélectionnée
+tutti.editFishingOperation.message.operation.deleted=Opération de pêche <strong>%s</strong> supprimée.
tutti.editFishingOperation.action.editFishingOperation.tip=Éditer l'opération de pêche
tutti.editFishingOperation.action.importCasino=Import Casino
tutti.editFishingOperation.action.importCasino.mnemonic=I
@@ -1039,7 +1047,7 @@
tutti.selectCruise.action.cloneProtocol=Cloner
tutti.selectCruise.action.cloneProtocol.tip=Dupliquer le protocole sélectionné
tutti.selectCruise.action.deleteProtocol=Supprimer
-tutti.selectCruise.action.deleteProtocol.message=Vous êtes sur le point de supprimer le protocole %s
+tutti.selectCruise.action.deleteProtocol.message=Vous êtes sur le point de supprimer le protocole <strong>%s</strong>
tutti.selectCruise.action.deleteProtocol.tip=Supprimer le protocole sélectionné
tutti.selectCruise.action.deleteProtocol.title=Supprimer le protocole sélectionné
tutti.selectCruise.action.editCatches=Saisir les captures
1
0
r923 - trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service
by tchemit@users.forge.codelutin.com 07 May '13
by tchemit@users.forge.codelutin.com 07 May '13
07 May '13
Author: tchemit
Date: 2013-05-07 11:16:46 +0200 (Tue, 07 May 2013)
New Revision: 923
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/923
Log:
refs #2401: [TRAI] erreur ?\195?\160 la cr?\195?\169ation d'un premier trait sur une campagne
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java 2013-05-06 19:47:06 UTC (rev 922)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java 2013-05-07 09:16:46 UTC (rev 923)
@@ -329,8 +329,6 @@
sampleMeasurementPersistenceHelper.setSampleMeasurements(target,
caracteristics);
-
-
}
protected Batch getBatch(Integer operationId) {
@@ -338,16 +336,6 @@
CatchBatch catchBatch = batchHelper.getRootCatchBatchByFishingOperationId(operationId.toString(), false);
return catchBatch;
-// // Vrac / Species
-// SortingBatch vracSpeciesBatch = batchHelper.getSortingBatch(
-// catchBatch,
-// "Vrac > Species > Alive Itemized",
-// enumeration.PMFM_ID_SORTED_UNSORTED, enumeration.QUALITATIVE_VRAC_ID,
-// enumeration.PMFM_ID_SORTING_TYPE, enumeration.QUALITATIVE_ID_SORTING_TYPE_SPECIES,
-// enumeration.PMFM_ID_SORTING_TYPE_2, enumeration.QUALITATIVE_ID_SORTING_TYPE_2_ALIVE_ITEMIZED
-// );
-// Preconditions.checkNotNull(vracSpeciesBatch);
-// return vracSpeciesBatch;
}
protected void fillSampleMeasurements(IndividualObservationBatch batch) {
1
0
r922 - in trunk/tutti-persistence/src/main: java/fr/ifremer/tutti/persistence/service resources
by tchemit@users.forge.codelutin.com 06 May '13
by tchemit@users.forge.codelutin.com 06 May '13
06 May '13
Author: tchemit
Date: 2013-05-06 21:47:06 +0200 (Mon, 06 May 2013)
New Revision: 922
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/922
Log:
fixes #2394: [TRAIT] - Mauvaise info sauvegard?\195?\169e dans le champ OPERATION.NAME
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-05-06 19:33:55 UTC (rev 921)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-05-06 19:47:06 UTC (rev 922)
@@ -74,6 +74,7 @@
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.FlushMode;
@@ -179,18 +180,8 @@
// Fishing operation number : trying to retrieve from name
String name = (String) source[colIndex++];
- String gearLabel = (String) source[colIndex++];
- String fishingOperationNumberStr;
- if (name != null && !name.isEmpty()) {
- if (gearLabel != null && !gearLabel.isEmpty()
- && name.startsWith(gearLabel)) {
- fishingOperationNumberStr = name.substring(gearLabel.length());
- } else {
- fishingOperationNumberStr = name;
- }
- if (fishingOperationNumberStr.matches("\\d+")) {
- fishingOperation.setFishingOperationNumber(Integer.valueOf(fishingOperationNumberStr));
- }
+ if (StringUtils.isNotBlank(name)) {
+ fishingOperation.setFishingOperationNumber(Integer.valueOf(name));
}
// If not found, compute it using a counter (see "order by startDateTime" in HQL query)
@@ -246,21 +237,10 @@
int colIndex = 0;
- // Name = <GearLabel><FishingOperationNumber>
+ // Name
String name = (String) source[colIndex++];
- String gearLabel = (String) source[colIndex++];
-
- String fishingOperationNumberStr;
- if (name != null && !name.isEmpty()) {
- if (gearLabel != null && !gearLabel.isEmpty()
- && name.startsWith(gearLabel)) {
- fishingOperationNumberStr = name.substring(gearLabel.length());
- } else {
- fishingOperationNumberStr = name;
- }
- if (fishingOperationNumberStr.matches("\\d+")) {
- result.setFishingOperationNumber(Integer.valueOf(fishingOperationNumberStr));
- }
+ if (StringUtils.isNotBlank(name)) {
+ result.setFishingOperationNumber(Integer.valueOf(name));
}
// If not found, compute it using a counter (see "order by startDateTime" in HQL query)
@@ -503,9 +483,10 @@
}
// remove operation vessel associations
- if (CollectionUtils.isNotEmpty(fishingOperation.getOperationVesselAssociations())) {
- fishingOperation.getOperationVesselAssociations().clear();
- }
+ removeAllOperationVesselAssociation(fishingOperation);
+// if (CollectionUtils.isNotEmpty(fishingOperation.getOperationVesselAssociations())) {
+// fishingOperation.getOperationVesselAssociations().clear();
+// }
// remove fishing areas
if (CollectionUtils.isNotEmpty(fishingAreas)) {
@@ -568,7 +549,7 @@
Integer pmfmId = (Integer) source[colIndex++];
Float numericalValue = (Float) source[colIndex++];
String alphanumericalValue = (String) source[colIndex++];
- Integer qualitativeValueId = (Integer) source[colIndex++];
+ Integer qualitativeValueId = (Integer) source[colIndex];
// Trawl distance
if (enumeration.PMFM_ID_TRAWL_DISTANCE.equals(pmfmId)) {
@@ -634,7 +615,7 @@
Integer pmfmId = (Integer) source[colIndex++];
Float numericalValue = (Float) source[colIndex++];
String alphanumericalValue = (String) source[colIndex++];
- Integer qualitativeValueId = (Integer) source[colIndex++];
+ Integer qualitativeValueId = (Integer) source[colIndex];
// Trawl net number
if (enumeration.PMFM_ID_MULTIRIG_AGGREGATION.equals(pmfmId)
@@ -670,7 +651,6 @@
protected void beanToEntity(FishingOperation source,
fr.ifremer.adagio.core.dao.data.operation.FishingOperation target) {
- StringBuilder nameBuffer = new StringBuilder();
// Retrieve entities : FishingTrip and ScientificCruise
ScientificCruise scientificCruise;
@@ -753,9 +733,6 @@
gearPhysicalFeatures.getOperations().add(target);
}
}
- if (source.getGear() != null && source.getGear().getLabel() != null) {
- nameBuffer.append(source.getGear().getLabel());
- }
// Retrieve entities : Fishing Area
FishingArea fishingArea;
@@ -795,9 +772,8 @@
// OP N°
if (source.getFishingOperationNumber() != null) {
- nameBuffer.append(source.getFishingOperationNumber());
+ target.setName(source.getFishingOperationNumber().toString());
}
- target.setName(nameBuffer.toString());
// Multirig Aggregation
if (source.getMultirigAggregation() != null) {
@@ -806,9 +782,6 @@
if (mutlirigNumber > cruiseMultirigCount) {
throw new DataIntegrityViolationException("An operation could not have a 'multirig number' greater than 'multirig count' defined in the cruise.");
}
- } else {
- // TODO BLA : Then parse the String when more than one number (ie "1,3")
- // and validate content
}
// Store into Gear Use Features
@@ -1228,7 +1201,7 @@
} else if (value instanceof Float) {
vesselUseMeasurement.setNumericalValue((Float) value);
} else if (value instanceof Integer) {
- vesselUseMeasurement.setQualitativeValue(load(QualitativeValueImpl.class, (Integer) value));
+ vesselUseMeasurement.setQualitativeValue(load(QualitativeValueImpl.class, value));
}
return vesselUseMeasurement;
@@ -1241,26 +1214,6 @@
return vesselUseMeasurement;
}
-// protected void setMeasurement(Measurement measurement, Caracteristic caracteristic, Serializable value) {
-// if (value == null) {
-// return;
-// }
-// if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
-// measurement.setAlphanumericalValue((String) value);
-// } else if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
-// measurement.setNumericalValue((Float) value);
-// } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE) {
-// Integer qvId = null;
-// if (value instanceof CaracteristicQualitativeValue) {
-// qvId = Integer.valueOf(((CaracteristicQualitativeValue) value).getId());
-// } else if (value instanceof Integer) {
-// qvId = (Integer) value;
-// }
-// QualitativeValue qv = load(QualitativeValueImpl.class, qvId);
-// measurement.setQualitativeValue(qv);
-// }
-// }
-
protected GearUseMeasurement setGearUseMeasurement(ScientificCruise scientificCruise, GearUseFeatures gearUseFeatures,
Integer pmfmId,
Float numericalValue,
Modified: trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml
===================================================================
--- trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml 2013-05-06 19:33:55 UTC (rev 921)
+++ trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml 2013-05-06 19:47:06 UTC (rev 922)
@@ -213,7 +213,6 @@
SELECT
o.id AS id,
o.name AS name,
- g.label AS gearLabel,
o.startDateTime AS startDateTime,
(select vum.alphanumericalValue from VesselUseMeasurementImpl vum where vum.vesselUseFeatures.id = vuf.id and vum.pmfm.id=:pmfmIdStationNumber) AS stationNumber,
(select gum.alphanumericalValue from GearUseMeasurementImpl gum where gum.gearUseFeatures.id = guf.id and gum.pmfm.id=:pmfmIdMultirigAggregation) AS multirigAggregation
@@ -236,7 +235,6 @@
<![CDATA[
SELECT
o.name AS name,
- max(g.label) AS gearLabel,
max(o.startDateTime) AS startDateTime,
max(o.endDateTime) AS endDateTime,
max(o.comments) AS comments,
1
0
06 May '13
Author: tchemit
Date: 2013-05-06 21:33:55 +0200 (Mon, 06 May 2013)
New Revision: 921
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/921
Log:
refs #1975: [TRAIT] - Pouvoir supprimer un trait
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/DeleteFishingOperationAction.java
Modified:
trunk/pom.xml
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceService.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceService.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceWriteTest.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/pom.xml 2013-05-06 19:33:55 UTC (rev 921)
@@ -136,9 +136,9 @@
<swingXVersion>1.6.4</swingXVersion>
<xworkVersion>2.3.7</xworkVersion>
- <slf4jVersion>1.7.2</slf4jVersion>
+ <slf4jVersion>1.7.5</slf4jVersion>
- <adagioVersion>3.3.5</adagioVersion>
+ <adagioVersion>3.3.6-SNAPSHOT</adagioVersion>
<msaccessImporterVersion>1.4.1</msaccessImporterVersion>
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-05-06 19:33:55 UTC (rev 921)
@@ -24,7 +24,6 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
import fr.ifremer.tutti.persistence.entities.data.Attachment;
@@ -440,6 +439,9 @@
@Transactional(readOnly = false)
FishingOperation saveFishingOperation(FishingOperation bean);
+ @Transactional(readOnly = false)
+ void deleteFishingOperation(String id);
+
//------------------------------------------------------------------------//
//-- CatchBatch methods --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-05-06 19:33:55 UTC (rev 921)
@@ -26,7 +26,6 @@
import com.google.common.collect.Maps;
import fr.ifremer.adagio.core.service.technical.CacheService;
-import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
import fr.ifremer.tutti.persistence.entities.data.Attachment;
@@ -583,6 +582,11 @@
return fishingOperationService.saveFishingOperation(bean);
}
+ @Override
+ public void deleteFishingOperation(String id) {
+ fishingOperationService.deleteFishingOperation(id);
+ }
+
//------------------------------------------------------------------------//
//-- CatchBatch methods --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-05-06 19:33:55 UTC (rev 921)
@@ -24,7 +24,6 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
import fr.ifremer.tutti.persistence.entities.data.Attachment;
@@ -393,6 +392,11 @@
}
@Override
+ public void deleteFishingOperation(String id) {
+ throw notImplemented();
+ }
+
+ @Override
public CatchBatch getCatchBatchFromFishingOperation(String id) {
throw notImplemented();
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceService.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceService.java 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceService.java 2013-05-06 19:33:55 UTC (rev 921)
@@ -49,4 +49,7 @@
@Transactional(readOnly = false)
void deleteAccidentalBatch(String id);
+
+ @Transactional(readOnly = false)
+ void deleteAccidentalBatchForFishingOperation(String fishingOperationId);
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java 2013-05-06 19:33:55 UTC (rev 921)
@@ -45,6 +45,7 @@
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.type.IntegerType;
@@ -164,11 +165,26 @@
log.info("Will delete accidental batch: " + batchId);
}
sampleDao.remove(batchId);
+
attachmentPersistenceService.deleteAllAttachment(
AttachementObjectTypeEnum.SAMPLE,
batchId);
}
+ @Override
+ public void deleteAccidentalBatchForFishingOperation(String fishingOperationId) {
+ Preconditions.checkNotNull(fishingOperationId);
+
+ List<AccidentalBatch> batches =
+ getAllAccidentalBatch(fishingOperationId);
+
+ if (CollectionUtils.isNotEmpty(batches)) {
+ for (AccidentalBatch batch : batches) {
+ deleteAccidentalBatch(batch.getId());
+ }
+ }
+ }
+
// ------------------------------------------------------------------------//
// -- Internal methods --//
// ------------------------------------------------------------------------//
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceService.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceService.java 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceService.java 2013-05-06 19:33:55 UTC (rev 921)
@@ -38,7 +38,7 @@
/**
* Get the catchBatch from the fishing Operation id.
*
- * @param fishingOperationId id of the fihsing operation
+ * @param fishingOperationId id of the fishing operation
* @return found catchBatch
*/
CatchBatch getCatchBatchFromFishingOperation(String fishingOperationId);
@@ -61,4 +61,14 @@
@Transactional(readOnly = false)
CatchBatch saveCatchBatch(CatchBatch bean);
+ /**
+ * Delete catch batch for the given fishing Operation id (will then delete
+ * in cascade all sorting batchs + individual observation batchs).
+ *
+ * @param fishingOperationId id of the fishing operation
+ * @since 2.2
+ */
+ @Transactional(readOnly = false)
+ void deleteCatchBatch(String fishingOperationId);
+
}
\ No newline at end of file
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceImpl.java 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceImpl.java 2013-05-06 19:33:55 UTC (rev 921)
@@ -261,6 +261,18 @@
return bean;
}
+ @Override
+ public void deleteCatchBatch(String fishingOperationId) {
+ Preconditions.checkNotNull(fishingOperationId);
+ Integer catchBatchId = batchHelper.getCatchBatchIdByFishingOperationId(Integer.valueOf(fishingOperationId));
+
+ if (catchBatchId == null) {
+ throw new DataRetrievalFailureException("Could not retrieve catch batch for fishingOperation id=" + fishingOperationId);
+ }
+
+ batchHelper.deleteCatchBatch(fishingOperationId, catchBatchId);
+ }
+
//------------------------------------------------------------------------//
//-- Internal methods --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-05-06 19:33:55 UTC (rev 921)
@@ -28,10 +28,11 @@
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
-import fr.ifremer.adagio.core.dao.administration.user.PersonImpl;
import fr.ifremer.adagio.core.dao.data.fishingArea.FishingArea;
import fr.ifremer.adagio.core.dao.data.fishingArea.FishingArea2RegulationLocation;
+import fr.ifremer.adagio.core.dao.data.fishingArea.FishingArea2RegulationLocationDao;
import fr.ifremer.adagio.core.dao.data.fishingArea.FishingArea2RegulationLocationPK;
+import fr.ifremer.adagio.core.dao.data.fishingArea.FishingAreaDao;
import fr.ifremer.adagio.core.dao.data.measure.GearPhysicalMeasurement;
import fr.ifremer.adagio.core.dao.data.measure.GearUseMeasurement;
import fr.ifremer.adagio.core.dao.data.measure.VesselUseMeasurement;
@@ -72,6 +73,7 @@
import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.MapUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.FlushMode;
@@ -85,7 +87,15 @@
import java.io.Serializable;
import java.sql.Timestamp;
import java.text.MessageFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
/**
* @author tchemit <chemit(a)codelutin.com>
@@ -102,6 +112,12 @@
protected ReferentialPersistenceService referentialService;
@Autowired
+ protected CatchBatchPersistenceService catchBatchService;
+
+ @Autowired
+ protected AccidentalBatchPersistenceService accidentalBatchService;
+
+ @Autowired
protected AttachmentPersistenceService attachmentPersistenceService;
@Autowired
@@ -116,9 +132,15 @@
@Resource(name = "gearPhysicalFeaturesDao")
protected GearPhysicalFeaturesExtendDao gearPhysicalFeaturesDao;
+ @Resource(name = "fishingArea2RegulationLocationDao")
+ protected FishingArea2RegulationLocationDao fishingArea2RegulationLocationDao;
+
@Resource(name = "fishingOperationDao")
protected FishingOperationDao fishingOperationDao;
+ @Resource(name = "fishingAreaDao")
+ protected FishingAreaDao fishingAreaDao;
+
@Resource(name = "operationVesselAssociationDao")
protected OperationVesselAssociationDao operationVesselAssociationDao;
@@ -339,7 +361,6 @@
return result;
}
-
@Override
public FishingOperation createFishingOperation(FishingOperation bean) {
Preconditions.checkNotNull(bean);
@@ -410,8 +431,106 @@
if (fishingOperation == null) {
throw new DataRetrievalFailureException("Could not retrieve fishing operation with id=" + fishingOperationId);
}
+
+ // delete accidental batchs
+ accidentalBatchService.deleteAccidentalBatchForFishingOperation(id);
+ getCurrentSession().flush();
+
+ // delete catch batch
+ catchBatchService.deleteCatchBatch(id);
+ getCurrentSession().flush();
+
+ Set<FishingArea> fishingAreas = Sets.newHashSet();
+
+ // remove gear use features
+ if (CollectionUtils.isNotEmpty(fishingOperation.getGearUseFeatures())) {
+ for (GearUseFeatures gearUseFeatures : fishingOperation.getGearUseFeatures()) {
+
+ gearUseFeatures.setOperation(null);
+ gearUseFeatures.getGearUseMeasurements().clear();
+
+ if (CollectionUtils.isNotEmpty(gearUseFeatures.getFishingAreas())) {
+ for (FishingArea fishingArea : gearUseFeatures.getFishingAreas()) {
+ fishingArea.setGearUseFeatures(null);
+ }
+ fishingAreas.addAll(gearUseFeatures.getFishingAreas());
+ }
+ }
+ // must remove all features content before removing them (data integrity will then failed otherwise)
+ getCurrentSession().flush();
+ fishingOperation.getGearUseFeatures().clear();
+ }
+
+ // remove vessel use features
+ if (CollectionUtils.isNotEmpty(fishingOperation.getVesselUseFeatures())) {
+ for (VesselUseFeatures vesselUseFeatures : fishingOperation.getVesselUseFeatures()) {
+
+ vesselUseFeatures.setOperation(null);
+ vesselUseFeatures.getVesselUseMeasurements().clear();
+
+ if (CollectionUtils.isNotEmpty(vesselUseFeatures.getFishingAreas())) {
+ for (FishingArea fishingArea : vesselUseFeatures.getFishingAreas()) {
+ fishingArea.setVesselUseFeatures(null);
+ }
+ fishingAreas.addAll(vesselUseFeatures.getFishingAreas());
+ }
+ }
+
+ // must remove all features content before removing them (data integrity will then failed otherwise)
+ getCurrentSession().flush();
+ fishingOperation.getVesselUseFeatures().clear();
+ }
+
+ // remove vessel position
+ if (CollectionUtils.isNotEmpty(fishingOperation.getVesselPositions())) {
+ fishingOperation.getVesselPositions().clear();
+ }
+
+ // remove vessel person features
+ if (CollectionUtils.isNotEmpty(fishingOperation.getVesselPersonFeatures())) {
+ fishingOperation.getVesselPersonFeatures().clear();
+ }
+
+ // remove gear physical features
+ fishingOperation.setGearPhysicalFeatures(null);
+
+ // remove catch batch
+ fishingOperation.setCatchBatch(null);
+
+ // remove samples
+ if (CollectionUtils.isNotEmpty(fishingOperation.getSamples())) {
+ fishingOperation.getSamples().clear();
+ }
+
+ // remove operation vessel associations
+ if (CollectionUtils.isNotEmpty(fishingOperation.getOperationVesselAssociations())) {
+ fishingOperation.getOperationVesselAssociations().clear();
+ }
+
+ // remove fishing areas
+ if (CollectionUtils.isNotEmpty(fishingAreas)) {
+ for (FishingArea fishingArea : fishingAreas) {
+ fishingArea.setProduce(null);
+ fishingArea2RegulationLocationDao.remove(fishingArea.getRegulationLocation());
+ fishingArea.getRegulationLocation().clear();
+ }
+ getCurrentSession().flush();
+ fishingAreaDao.remove(fishingAreas);
+ }
+
+ getCurrentSession().flush();
+
+ // remove fishing operation produces
+ if (CollectionUtils.isNotEmpty(fishingOperation.getProduces())) {
+ fishingOperation.getProduces().clear();
+ getCurrentSession().flush();
+ }
+
+ // remove fishing operations
fishingOperationDao.remove(fishingOperation);
+ getCurrentSession().flush();
+
attachmentPersistenceService.deleteAllAttachment(
AttachementObjectTypeEnum.OPERATION,
fishingOperationId);
@@ -669,25 +788,19 @@
}
// StationNumber
- if (source.getStationNumber() == null) {
- // Nothing to do : will be removed using the list notChangedVesselUseMeasurements
- } else if (source.getStationNumber() != null) {
+ if (source.getStationNumber() != null) {
VesselUseMeasurement vum = setVesselUseMeasurement(scientificCruise, vesselUseFeatures, enumeration.PMFM_ID_STATION_NUMBER, null, source.getStationNumber(), null);
notChangedVesselUseMeasurements.remove(vum);
}
// OP N°
- if (source.getFishingOperationNumber() == null) {
- // Leave empty in the name buffer
- } else if (source.getFishingOperationNumber() != null) {
+ if (source.getFishingOperationNumber() != null) {
nameBuffer.append(source.getFishingOperationNumber());
}
target.setName(nameBuffer.toString());
// Multirig Aggregation
- if (source.getMultirigAggregation() == null) {
- // Nothing to do : will be removed later, using notChangedGearUseMeasurements
- } else if (source.getMultirigAggregation() != null) {
+ if (source.getMultirigAggregation() != null) {
if (source.getMultirigAggregation().matches("\\d+")) {
int mutlirigNumber = Integer.valueOf(source.getMultirigAggregation());
if (mutlirigNumber > cruiseMultirigCount) {
@@ -726,9 +839,7 @@
}
// Trawl distance
- if (source.getTrawlDistance() == null) {
- // Nothing to do : will be removed later, using notChangedVesselUseMeasurements
- } else if (source.getTrawlDistance() != null) {
+ if (source.getTrawlDistance() != null) {
VesselUseMeasurement vum = setVesselUseMeasurement(scientificCruise, vesselUseFeatures, enumeration.PMFM_ID_TRAWL_DISTANCE, source.getTrawlDistance(), null, null);
notChangedVesselUseMeasurements.remove(vum);
}
@@ -740,9 +851,7 @@
}
// Operation is valid ?
- if (source.getFishingOperationValid() == null) {
- // Nothing to do : will be removed later, using notChangedVesselUseMeasurements
- } else if (source.getFishingOperationValid() != null) {
+ if (source.getFishingOperationValid() != null) {
VesselUseMeasurement vum = setVesselUseMeasurement(scientificCruise, vesselUseFeatures, enumeration.PMFM_ID_HAUL_VALID, null, null, source.getFishingOperationValid() ? enumeration.QUALITATIVE_HAUL_VALID_YES : enumeration.QUALITATIVE_HAUL_VALID_NO);
notChangedVesselUseMeasurements.remove(vum);
}
@@ -875,9 +984,7 @@
// Vessel user features
CaracteristicMap vesselUseCaracteristics = source.getVesselUseFeatures();
- if (vesselUseCaracteristics == null || vesselUseCaracteristics.size() == 0) {
- // Nothing to do : will be removed later, using notChangedVesselUseMeasurements
- } else if (vesselUseCaracteristics != null && vesselUseCaracteristics.size() > 0) {
+ if (MapUtils.isNotEmpty(vesselUseCaracteristics)) {
for (Caracteristic caracteristic : vesselUseCaracteristics.keySet()) {
VesselUseMeasurement vum = setVesselUseMeasurement(scientificCruise, vesselUseFeatures, caracteristic, vesselUseCaracteristics.get(caracteristic));
notChangedVesselUseMeasurements.remove(vum);
@@ -894,9 +1001,9 @@
for (Person person : source.getRecorderPerson()) {
Integer personId = person.getIdAsInt();
vesselPersonFeaturesPersistenceHelper.fillVesselPersonFeatures(vesselPersonFeaturesMap,
- personId,
- target,
- recorderPersonRole);
+ personId,
+ target,
+ recorderPersonRole);
}
}
if (fishingTrip.getVesselPersonFeatures() == null) {
@@ -914,25 +1021,26 @@
// Gear use Caracteristics
CaracteristicMap gearUseCaracteristics = source.getGearUseFeatures();
- if (gearUseCaracteristics == null || gearUseCaracteristics.size() == 0) {
- // Nothing to do : will be removed later, using notChangedGearUseMeasurements
- } else if (gearUseCaracteristics != null && gearUseCaracteristics.size() > 0) {
+ if (MapUtils.isNotEmpty(gearUseCaracteristics)) {
for (Caracteristic caracteristic : gearUseCaracteristics.keySet()) {
- GearUseMeasurement gum = setGearUseMeasurement(scientificCruise, gearUseFeatures, caracteristic, gearUseCaracteristics.get(caracteristic));
+ GearUseMeasurement gum = setGearUseMeasurement(
+ scientificCruise,
+ gearUseFeatures,
+ caracteristic,
+ gearUseCaracteristics.get(caracteristic));
notChangedGearUseMeasurements.remove(gum);
}
}
// Removed not changed measurements (in Vessel & Gear Use Measurement lists)
- if (vesselUseFeatures.getVesselUseMeasurements() != null && notChangedVesselUseMeasurements.size() > 0) {
- for (VesselUseMeasurement vum : notChangedVesselUseMeasurements) {
- vesselUseFeatures.getVesselUseMeasurements().remove(vum);
- }
+ if (vesselUseFeatures.getVesselUseMeasurements() != null &&
+ notChangedVesselUseMeasurements.size() > 0) {
+ vesselUseFeatures.getVesselUseMeasurements().removeAll(notChangedVesselUseMeasurements);
+
}
- if (gearUseFeatures.getGearUseMeasurements() != null && notChangedGearUseMeasurements.size() > 0) {
- for (GearUseMeasurement gum : notChangedGearUseMeasurements) {
- gearUseFeatures.getGearUseMeasurements().remove(gum);
- }
+ if (gearUseFeatures.getGearUseMeasurements() != null &&
+ notChangedGearUseMeasurements.size() > 0) {
+ gearUseFeatures.getGearUseMeasurements().removeAll(notChangedGearUseMeasurements);
}
// ----------------------------------------------------------------
@@ -949,11 +1057,7 @@
}
// Strata :
- if (source.getStrata() == null || source.getStrata().getId() == null) {
-
- // will be removed using notChangedRegulationLocation
-
- } else if (source.getStrata() != null && source.getStrata().getId() != null) {
+ if (source.getStrata() != null && source.getStrata().getId() != null) {
FishingArea2RegulationLocation fa2rl = FishingArea2RegulationLocation.Factory.newInstance();
FishingArea2RegulationLocationPK fa2rlPK = new FishingArea2RegulationLocationPK();
fa2rl.setFishingArea2RegulationLocationPk(fa2rlPK);
@@ -972,11 +1076,7 @@
}
// Sub-Strata :
- if (source.getSubStrata() == null || source.getSubStrata().getId() == null) {
-
- // will be removed using notChangedRegulationLocation
-
- } else if (source.getSubStrata() != null && source.getSubStrata().getId() != null) {
+ if (source.getSubStrata() != null && source.getSubStrata().getId() != null) {
FishingArea2RegulationLocation fa2rl = FishingArea2RegulationLocation.Factory.newInstance();
FishingArea2RegulationLocationPK fa2rlPK = new FishingArea2RegulationLocationPK();
fa2rl.setFishingArea2RegulationLocationPk(fa2rlPK);
@@ -996,11 +1096,7 @@
}
// Localite :
- if (source.getLocation() == null || source.getLocation().getId() == null) {
-
- // will be removed using notChangedRegulationLocation
-
- } else if (source.getLocation() != null && source.getLocation().getId() != null) {
+ if (source.getLocation() != null && source.getLocation().getId() != null) {
FishingArea2RegulationLocation fa2rl = FishingArea2RegulationLocation.Factory.newInstance();
FishingArea2RegulationLocationPK fa2rlPK = new FishingArea2RegulationLocationPK();
fa2rl.setFishingArea2RegulationLocationPk(fa2rlPK);
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java 2013-05-06 19:33:55 UTC (rev 921)
@@ -49,4 +49,7 @@
@Transactional(readOnly = false)
void deleteIndividualObservationBatch(String id);
+
+ @Transactional(readOnly = false)
+ void deleteIndividualObservationBatchForFishingOperation(String fishingOperationId);
}
\ No newline at end of file
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java 2013-05-06 19:33:55 UTC (rev 921)
@@ -48,6 +48,7 @@
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.persistence.service.batch.BatchPersistenceHelper;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.type.IntegerType;
@@ -202,6 +203,20 @@
}
}
+ @Override
+ public void deleteIndividualObservationBatchForFishingOperation(String fishingOperationId) {
+ Preconditions.checkNotNull(fishingOperationId);
+
+ List<IndividualObservationBatch> batches =
+ getAllIndividualObservationBatch(fishingOperationId);
+
+ if (CollectionUtils.isNotEmpty(batches)) {
+ for (IndividualObservationBatch batch : batches) {
+ deleteIndividualObservationBatch(batch.getId());
+ }
+ }
+ }
+
// ------------------------------------------------------------------------//
// -- Internal methods --//
// ------------------------------------------------------------------------//
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java 2013-05-06 19:33:55 UTC (rev 921)
@@ -31,6 +31,7 @@
import fr.ifremer.adagio.core.dao.data.batch.CatchBatch;
import fr.ifremer.adagio.core.dao.data.batch.CatchBatchExtendDao;
import fr.ifremer.adagio.core.dao.data.batch.SortingBatch;
+import fr.ifremer.adagio.core.dao.data.batch.SortingBatchDao;
import fr.ifremer.adagio.core.dao.data.batch.validator.CatchBatchValidationException;
import fr.ifremer.adagio.core.dao.data.batch.validator.CatchBatchValidator;
import fr.ifremer.adagio.core.dao.data.measure.QuantificationMeasurement;
@@ -39,17 +40,21 @@
import fr.ifremer.adagio.core.dao.referential.pmfm.Pmfm;
import fr.ifremer.tutti.persistence.InvalidBatchModelException;
import fr.ifremer.tutti.persistence.entities.TuttiEntity;
+import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
import fr.ifremer.tutti.persistence.service.AbstractPersistenceService;
+import fr.ifremer.tutti.persistence.service.AttachmentPersistenceService;
+import fr.ifremer.tutti.persistence.service.IndividualObservationBatchPersistenceService;
import fr.ifremer.tutti.persistence.service.MeasurementPersistenceHelper;
import fr.ifremer.tutti.persistence.service.ReferentialPersistenceService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException;
+import org.springframework.dao.DataRetrievalFailureException;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@@ -77,9 +82,18 @@
@Resource(name = "referentialPersistenceService")
protected ReferentialPersistenceService referentialService;
+ @Resource(name = "attachmentPersistenceService")
+ protected AttachmentPersistenceService attachmentPersistenceService;
+
+ @Resource(name = "individualObservationBatchPersistenceService")
+ protected IndividualObservationBatchPersistenceService individualObservationBatchPersistenceService;
+
@Resource(name = "catchBatchDao")
protected CatchBatchExtendDao catchBatchDao;
+ @Resource(name = "sortingBatchDao")
+ protected SortingBatchDao sortingBatchDao;
+
@Resource(name = "scientificCruiseCatchBatchValidator")
protected CatchBatchValidator catchBatchValidator;
@@ -104,6 +118,27 @@
return bean;
}
+ public void deleteCatchBatch(String fishingOperationId, Integer catchBatchId) {
+
+ // delete individual observation batchs
+ individualObservationBatchPersistenceService.deleteIndividualObservationBatchForFishingOperation(fishingOperationId);
+
+ getCurrentSession().flush();
+
+ // get all catch batch children ids (to delete attachments)
+ List<Integer> ids = catchBatchDao.getAllChildrenIds(catchBatchId);
+
+ catchBatchDao.remove(catchBatchId);
+
+ getCurrentSession().flush();
+
+ for (Integer id : ids) {
+ attachmentPersistenceService.deleteAllAttachment(
+ AttachementObjectTypeEnum.BATCH,
+ id);
+ }
+ }
+
public <D extends TuttiEntity> D createSortingBatch(D bean, CatchBatch catchBatch, SortingBatch batch) {
batch = catchBatchDao.createSortingBatch(batch, catchBatch);
bean.setId(batch.getId());
@@ -197,6 +232,10 @@
return result;
}
+ public Integer getCatchBatchIdByFishingOperationId(Integer fishingOperationId) throws DataRetrievalFailureException {
+ return catchBatchDao.getIdByFishingOperationId(fishingOperationId);
+ }
+
public fr.ifremer.adagio.core.dao.data.batch.CatchBatch getRootCatchBatchByBatchId(Integer batchId) {
Preconditions.checkNotNull(batchId);
@@ -768,14 +807,9 @@
}
parentBatch.getChildBatchs().add(result);
-// Collection<QuantificationMeasurement> quantificationMeasurements = result.getQuantificationMeasurements();
Collection<SortingMeasurement> sortingMeasurements = result.getSortingMeasurements();
// Create lists to store all updates, then remove not updated items
-// Set<QuantificationMeasurement> notChangedQuantificationMeasurements = Sets.newHashSet();
-// if (quantificationMeasurements != null) {
-// notChangedQuantificationMeasurements.addAll(quantificationMeasurements);
-// }
Set<SortingMeasurement> notChangedSortingMeasurements = Sets.newHashSet();
if (sortingMeasurements != null) {
notChangedSortingMeasurements.addAll(sortingMeasurements);
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java 2013-05-06 19:33:55 UTC (rev 921)
@@ -282,16 +282,23 @@
List<Caracteristic> allEnvironmentCaracteristics = referentialService.getAllCaracteristic();
CaracteristicMap environmentCaracteristics = new CaracteristicMap();
CaracteristicMap environmentValuesOneEntry = new CaracteristicMap();
+ int count=0;
for (Caracteristic caracteristic : allEnvironmentCaracteristics) {
+ if (count==3) {
+ break;
+ }
Serializable value = null;
if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
value = 1.0f;
+ count++;
} else if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
value = "some text";
+ count++;
} else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE
&& caracteristic.getQualitativeValue(0) != null) {
// Choose the first qualitative value
value = caracteristic.getQualitativeValue(0);
+ count++;
}
if (value != null) {
environmentCaracteristics.put(caracteristic, value);
@@ -305,16 +312,23 @@
List<Caracteristic> allGearShootingCaracteristics = referentialService.getAllCaracteristic();
CaracteristicMap gearShootingCaracteristics = new CaracteristicMap();
CaracteristicMap gearShootingCaracteristicsOneEntry = new CaracteristicMap();
+ count=0;
for (Caracteristic caracteristic : allGearShootingCaracteristics) {
+ if (count==3) {
+ break;
+ }
Serializable value = null;
if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
value = 1.0f;
+ count++;
} else if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
value = "some text";
+ count++;
} else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE
&& caracteristic.getQualitativeValue(0) != null) {
// Choose the first qualitative value
value = caracteristic.getQualitativeValue(0);
+ count++;
}
if (value != null) {
gearShootingCaracteristics.put(caracteristic, value);
@@ -365,7 +379,7 @@
return result;
}
- public CatchBatch createCatchBatch(FishingOperation fishingOperation) {
+ public CatchBatch createMinimalCatchBatch(FishingOperation fishingOperation) {
setUp();
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceWriteTest.java 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceWriteTest.java 2013-05-06 19:33:55 UTC (rev 921)
@@ -153,7 +153,7 @@
}
@Test
- public void deleteAccidentalBatch(/*String id*/) {
+ public void deleteAccidentalBatch(/*String fishingOperationId*/) {
AccidentalBatch createdAccidentalBatch =
dbResource.getFixtures().createMinimalAccidentalBatch(
@@ -168,6 +168,24 @@
Assert.assertTrue(CollectionUtils.isEmpty(allAccidentalBatch2));
}
+ @Test
+ public void deleteAccidentalBatchForFishingOperation(/*String id*/) {
+
+ dbResource.getFixtures().createMinimalAccidentalBatch(
+ fishingOperation);
+
+ dbResource.getFixtures().createMinimalAccidentalBatch(
+ fishingOperation);
+
+ List<AccidentalBatch> allAccidentalBatch = service.getAllAccidentalBatch(fishingOperation.getId());
+ Assert.assertFalse(CollectionUtils.isEmpty(allAccidentalBatch));
+
+ service.deleteAccidentalBatchForFishingOperation(fishingOperation.getId());
+
+ List<AccidentalBatch> allAccidentalBatch2 = service.getAllAccidentalBatch(fishingOperation.getId());
+ Assert.assertTrue(CollectionUtils.isEmpty(allAccidentalBatch2));
+ }
+
protected void assertEqualsAccidentalBatch(AccidentalBatch expected,
AccidentalBatch actual) {
Assert.assertEquals(expected, actual);
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceWriteTest.java 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceWriteTest.java 2013-05-06 19:33:55 UTC (rev 921)
@@ -30,21 +30,16 @@
import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import org.apache.commons.collections.CollectionUtils;
import org.junit.Assert;
import org.junit.Before;
import org.junit.ClassRule;
-import org.junit.Ignore;
import org.junit.Test;
+import org.springframework.dao.DataRetrievalFailureException;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.List;
-
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
/**
* To test {@link CatchBatchPersistenceService} for write operation.
@@ -52,7 +47,6 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
*/
-@Ignore
public class CatchBatchPersistenceServiceWriteTest {
@ClassRule
@@ -66,6 +60,8 @@
protected FishingOperationPersistenceService fishingOperationService;
+ protected IndividualObservationBatchPersistenceService individualObservationBatchPersistenceService;
+
protected ReferentialPersistenceService referentialService;
/*
@@ -73,7 +69,7 @@
* */
protected Cruise cruise;
- protected FishingOperation fishingOperationNoCatchBatch;
+ protected FishingOperation fishingOperation;
@Before
public void setUp() throws Exception {
@@ -81,39 +77,10 @@
cruiseService = TuttiPersistenceServiceLocator.getCruisePersistenceService();
fishingOperationService = TuttiPersistenceServiceLocator.getFishingOperationPersistenceService();
referentialService = TuttiPersistenceServiceLocator.getReferentialPersistenceService();
+ individualObservationBatchPersistenceService = TuttiPersistenceServiceLocator.getIndividualObservationBatchPersistenceService();
cruise = dbResource.getFixtures().createCruise();
-// cruiseService.getCruise(dbResource.getFixtures().cruiseId());
-// cruise.setId((String) null);
- Calendar calendar = new GregorianCalendar();
-// cruise.setBeginDate(calendar.getTime());
-// calendar.add(Calendar.MONTH, 1); // add one month
-// cruise.setEndDate(calendar.getTime());
-// List<TuttiLocation> allHarbour = referentialService.getAllHarbour();
-// Assert.assertNotNull(allHarbour);
-// Assert.assertTrue(allHarbour.size() > 1);
-// cruise.setDepartureLocation(allHarbour.get(0));
-// cruise.setReturnLocation(allHarbour.get(1));
-//
-// cruise = cruiseService.createCruise(cruise);
-
- // Create a first operation, with no cacth batch : to test CatchBatch insert/update :
- List<FishingOperation> fishingOperations = fishingOperationService.getAllFishingOperation(dbResource.getFixtures().cruiseId());
- assertNotNull(fishingOperations);
- assertTrue(fishingOperations.size() > 0);
- fishingOperationNoCatchBatch = fishingOperations.get(0);
- fishingOperationNoCatchBatch = fishingOperationService.getFishingOperation(fishingOperationNoCatchBatch.getId());
- fishingOperationNoCatchBatch.setId((String) null);
- fishingOperationNoCatchBatch.setCruise(cruise);
- calendar.setTime(new Date());
- calendar.set(Calendar.HOUR_OF_DAY, 1);
- calendar.set(Calendar.MILLISECOND, 0);
- fishingOperationNoCatchBatch.setGearShootingStartDate(calendar.getTime());
- calendar.setTime(new Date());
- calendar.set(Calendar.HOUR_OF_DAY, 10);
- calendar.set(Calendar.MILLISECOND, 0);
- fishingOperationNoCatchBatch.setGearShootingEndDate(calendar.getTime());
- fishingOperationNoCatchBatch = fishingOperationService.createFishingOperation(fishingOperationNoCatchBatch);
+ fishingOperation = dbResource.getFixtures().createFishingOperation(cruise);
}
@Test
@@ -121,14 +88,14 @@
CatchBatch catchBatch;
catchBatch = TuttiBeanFactory.newCatchBatch();
- catchBatch.setFishingOperation(fishingOperationNoCatchBatch);
+ catchBatch.setFishingOperation(fishingOperation);
// -----------------------------------------------------------------------------
// 1. Test with only mandatory properties
// -----------------------------------------------------------------------------
// Create and reload (test round trip)
- assertCreateAndReloadCatchBatch(catchBatch, fishingOperationNoCatchBatch.getId());
+ assertCreateAndReloadCatchBatch(catchBatch, fishingOperation.getId());
// -----------------------------------------------------------------------------
// 2. Test with all properties
@@ -166,7 +133,7 @@
catchBatch.setCatchTotalRejectedWeight(15f);
// Create and reload (test round trip)
- assertCreateAndReloadCatchBatch(catchBatch, fishingOperationNoCatchBatch.getId());
+ assertCreateAndReloadCatchBatch(catchBatch, fishingOperation.getId());
// -----------------------------------------------------------------------------
// 2. Test save after modification
@@ -176,9 +143,65 @@
catchBatch.setSpeciesTotalSortedWeight(null);
catchBatch.setBenthosTotalSortedWeight(null);
- assertSaveAndReloadCatchBatch(catchBatch, fishingOperationNoCatchBatch.getId());
+ assertSaveAndReloadCatchBatch(catchBatch, fishingOperation.getId());
}
+ @Test
+ public void deleteCatchBatch(/*String fishingOperationId*/) {
+
+ CatchBatch catchBatch = dbResource.getFixtures().createMinimalCatchBatch(fishingOperation);
+
+ // total weight : 100kg
+ catchBatch.setCatchTotalWeight(75f);
+ // Vrac :
+ // note : poids trie par la balance tremis (thalassa) (init par pupitri)
+ catchBatch.setCatchTotalSortedTremisWeight(50f);
+ // note : poids vrac caroussel (thalassa) (init par pupitri) (vrac trie) ou bien "poids trié fournie par la
+ // table de tri (Sum(Si))
+ catchBatch.setCatchTotalSortedCarousselWeight(45f);
+
+ // Species
+ catchBatch.setSpeciesTotalSortedWeight(12f);
+ catchBatch.setSpeciesTotalLivingNotItemizedWeight(0.2f);
+ catchBatch.setSpeciesTotalInertWeight(0.1f);
+
+ // Benthos
+ catchBatch.setBenthosTotalSortedWeight(24f);
+ catchBatch.setBenthosTotalLivingNotItemizedWeight(0.4f);
+ catchBatch.setBenthosTotalInertWeight(0.2f);
+
+ // Hors-Vrac :
+ // MarineLitter
+ catchBatch.setMarineLitterTotalWeight(100f);
+
+ // Rejet : 15kg
+ catchBatch.setCatchTotalRejectedWeight(15f);
+ service.saveCatchBatch(catchBatch);
+
+ dbResource.getFixtures().createMinimalIndividualObservationBatch(fishingOperation);
+
+ String fishingOperationId = fishingOperation.getId();
+
+ Assert.assertNotNull(service.getCatchBatchFromFishingOperation(fishingOperationId));
+ Assert.assertFalse(CollectionUtils.isEmpty(individualObservationBatchPersistenceService.getAllIndividualObservationBatch(fishingOperationId)));
+ service.deleteCatchBatch(fishingOperationId);
+
+ try {
+ service.getCatchBatchFromFishingOperation(fishingOperationId);
+ Assert.fail();
+ } catch (DataRetrievalFailureException e) {
+ // feel good, no catch batch associated with fishing operation
+ }
+
+ try {
+ individualObservationBatchPersistenceService.getAllIndividualObservationBatch(fishingOperationId);
+ Assert.fail();
+ } catch (DataRetrievalFailureException e) {
+ // feel good, no catch batch associated with fishing operation
+ }
+
+ }
+
protected void assertCreateAndReloadCatchBatch(CatchBatch catchBatch, String fishingOperationId) {
CatchBatch createdCatchBatch = service.createCatchBatch(catchBatch);
assertNotNull(createdCatchBatch);
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceWriteTest.java 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceWriteTest.java 2013-05-06 19:33:55 UTC (rev 921)
@@ -24,7 +24,6 @@
* #L%
*/
-import com.google.common.collect.Lists;
import fr.ifremer.tutti.persistence.DatabaseResource;
import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
@@ -35,12 +34,16 @@
import fr.ifremer.tutti.persistence.entities.referential.Gear;
import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.junit.Assert;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Ignore;
import org.junit.Test;
import org.springframework.dao.DataIntegrityViolationException;
+import org.springframework.dao.DataRetrievalFailureException;
import java.io.Serializable;
import java.util.Calendar;
@@ -60,20 +63,25 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
*/
-@Ignore
public class FishingOperationPersistenceServiceWriteTest {
@ClassRule
public static final DatabaseResource dbResource = DatabaseResource.writeDb();
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(FishingOperationPersistenceServiceWriteTest.class);
+
protected FishingOperationPersistenceService service;
- protected ReferentialPersistenceService referentialService;
+ protected CatchBatchPersistenceService catchBatchPersistenceService;
- protected ProgramPersistenceService programService;
+ protected AccidentalBatchPersistenceService accidentalBatchPersistenceService;
- protected CruisePersistenceService cruiseService;
+ protected IndividualObservationBatchPersistenceService individualObservationBatchPersistenceService;
+ protected ReferentialPersistenceService referentialService;
+
protected Cruise cruise = null;
protected Gear cruiseGear = null;
@@ -83,37 +91,15 @@
@Before
public void setUp() throws Exception {
service = TuttiPersistenceServiceLocator.getFishingOperationPersistenceService();
- cruiseService = TuttiPersistenceServiceLocator.getCruisePersistenceService();
referentialService = TuttiPersistenceServiceLocator.getReferentialPersistenceService();
- programService = TuttiPersistenceServiceLocator.getProgramPersistenceService();
+ catchBatchPersistenceService = TuttiPersistenceServiceLocator.getCatchBatchPersistenceService();
+ accidentalBatchPersistenceService = TuttiPersistenceServiceLocator.getAccidentalBatchPersistenceService();
+ individualObservationBatchPersistenceService = TuttiPersistenceServiceLocator.getIndividualObservationBatchPersistenceService();
- // Duplicate an existing cruise, to attach new fishing operations
- cruise = cruiseService.getCruise(dbResource.getFixtures().cruiseId());
- cruise.setId((String) null);
- cruise.setName("Unit-test-" + System.currentTimeMillis());
- Calendar calendar = new GregorianCalendar();
- cruise.setBeginDate(calendar.getTime());
+ cruise = dbResource.getFixtures().createCruise();
+ Assert.assertFalse(cruise.getGear().isEmpty());
+ cruiseGear = cruise.getGear().get(0);
- calendar.add(Calendar.MONTH, 1); // add one month
- cruise.setEndDate(calendar.getTime());
- cruise.setMultirigNumber(2);
- List<TuttiLocation> allHarbour = referentialService.getAllHarbour();
- Assert.assertNotNull(allHarbour);
- Assert.assertTrue(allHarbour.size() > 1);
- cruise.setDepartureLocation(allHarbour.get(0));
- cruise.setReturnLocation(allHarbour.get(1));
-
- // Keep only one gear in the cruise : (need for case n°4)
- List<Gear> cruiseGears = cruise.getGear();
- assertNotNull(cruiseGears);
- assertTrue(cruiseGears.size() > 0);
- cruiseGear = cruiseGears.get(0);
- assertNotNull(cruiseGear.getId());
- cruise.setGear(Lists.newArrayList(cruiseGear));
-
- cruise = cruiseService.createCruise(cruise);
- assertNotNull(cruise.getId());
-
// Find a vessel, different from the cruise vessel
notCruiseVessel = referentialService.getVessel(dbResource.getFixtures().fishingVesselCode());
assertNotNull(notCruiseVessel.getId());
@@ -174,7 +160,6 @@
}
}
-
// Create new fishing operation :
FishingOperation fishingOperation = TuttiBeanFactory.newFishingOperation();
@@ -324,7 +309,7 @@
fishingOperation.setId((String) null);
// Find and set a gear not used in the cruise
- List<Gear> gears = referentialService.getAllFishingGear();
+ List<Gear> gears = referentialService.getAllScientificGear();
assertNotNull(gears);
assertTrue(gears.size() > 0);
for (Gear gear : gears) {
@@ -395,5 +380,41 @@
}
+ @Test
+ public void deleteFishingOperation(/*String id*/) {
+ FishingOperation fishingOperation = dbResource.getFixtures().createFishingOperation(cruise);
+
+ dbResource.getFixtures().createMinimalCatchBatch(fishingOperation);
+ dbResource.getFixtures().createMinimalAccidentalBatch(fishingOperation);
+ dbResource.getFixtures().createMinimalIndividualObservationBatch(fishingOperation);
+
+ String fishingOperationId = fishingOperation.getId();
+ Assert.assertFalse(CollectionUtils.isEmpty(service.getAllFishingOperation(cruise.getId())));
+ Assert.assertNotNull(catchBatchPersistenceService.getCatchBatchFromFishingOperation(fishingOperationId));
+ Assert.assertFalse(CollectionUtils.isEmpty(accidentalBatchPersistenceService.getAllAccidentalBatch(fishingOperationId)));
+ Assert.assertFalse(CollectionUtils.isEmpty(individualObservationBatchPersistenceService.getAllIndividualObservationBatch(fishingOperationId)));
+
+ if (log.isInfoEnabled()) {
+ log.info("\n\n\nWill delete fishing operation: " + fishingOperationId);
+ }
+
+ service.deleteFishingOperation(fishingOperationId);
+
+ Assert.assertTrue(CollectionUtils.isEmpty(service.getAllFishingOperation(cruise.getId())));
+ try {
+ catchBatchPersistenceService.getCatchBatchFromFishingOperation(fishingOperationId);
+ Assert.fail();
+ } catch (DataRetrievalFailureException e) {
+ // feel good, no catch batch associated with fishing operation
+ }
+ try {
+ individualObservationBatchPersistenceService.getAllIndividualObservationBatch(fishingOperationId);
+ Assert.fail();
+ } catch (DataRetrievalFailureException e) {
+ // feel good, no catch batch associated with fishing operation
+ }
+ Assert.assertTrue(CollectionUtils.isEmpty(accidentalBatchPersistenceService.getAllAccidentalBatch(fishingOperationId)));
+ }
+
}
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceWriteTest.java 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceWriteTest.java 2013-05-06 19:33:55 UTC (rev 921)
@@ -63,7 +63,7 @@
service = TuttiPersistenceServiceLocator.getIndividualObservationBatchPersistenceService();
Cruise cruise = dbResource.getFixtures().createCruise();
fishingOperation = dbResource.getFixtures().createFishingOperation(cruise);
- dbResource.getFixtures().createCatchBatch(fishingOperation);
+ dbResource.getFixtures().createMinimalCatchBatch(fishingOperation);
}
@@ -170,6 +170,24 @@
Assert.assertTrue(CollectionUtils.isEmpty(allIndividualObservationBatch2));
}
+ @Test
+ public void deleteIndividualObservationBatchForFishingOperation(/*String fishingOperationId*/) {
+
+ dbResource.getFixtures().createMinimalIndividualObservationBatch(
+ fishingOperation);
+
+ dbResource.getFixtures().createMinimalIndividualObservationBatch(
+ fishingOperation);
+
+ List<IndividualObservationBatch> allIndividualObservationBatch = service.getAllIndividualObservationBatch(fishingOperation.getId());
+ Assert.assertFalse(CollectionUtils.isEmpty(allIndividualObservationBatch));
+
+ service.deleteIndividualObservationBatchForFishingOperation(fishingOperation.getId());
+
+ List<IndividualObservationBatch> allIndividualObservationBatch2 = service.getAllIndividualObservationBatch(fishingOperation.getId());
+ Assert.assertTrue(CollectionUtils.isEmpty(allIndividualObservationBatch2));
+ }
+
protected void assertEqualsIndividualObservationBatch(IndividualObservationBatch expected,
IndividualObservationBatch actual) {
Assert.assertEquals(expected, actual);
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-05-06 19:33:55 UTC (rev 921)
@@ -31,7 +31,6 @@
import fr.ifremer.tutti.persistence.TuttiPersistence;
import fr.ifremer.tutti.persistence.TuttiPersistenceNoDbImpl;
import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfig;
-import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
import fr.ifremer.tutti.persistence.entities.data.Attachment;
@@ -231,7 +230,7 @@
FileObject fileObject = TuttiIOUtil.resolveFile("zip:" + file.getAbsolutePath(),
_("tutti.service.persistence.getArchive.error", file));
- FileObject[] children = TuttiIOUtil.getChildren(fileObject, _("tutti.service.persistence.openArchive.error", file));
+ FileObject[] children = TuttiIOUtil.getChildren(fileObject, _("tutti.service.persistence.openArchive.error", file));
fileObject = children[0];
@@ -679,6 +678,11 @@
return driver.saveFishingOperation(bean);
}
+ @Override
+ public void deleteFishingOperation(String id) {
+ driver.deleteFishingOperation(id);
+ }
+
//------------------------------------------------------------------------//
//-- CatchBatch methods --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-05-06 19:33:55 UTC (rev 921)
@@ -1,5 +1,5 @@
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Tue Apr 30 17:57:05 CEST 2013
+#Mon May 06 16:32:40 CEST 2013
tutti.config.help=config.html
tutti.createAccidentalBatch.action.cancel.help=createAccidentalBatch.html\#actions
tutti.createAccidentalBatch.action.save.help=createAccidentalBatch.html\#actions
@@ -223,6 +223,7 @@
tutti.editSpeciesFrequencies.field.simpleCounting.help=editSpeciesFrequencies.html\#fields
tutti.editSpeciesFrequencies.field.step.help=editSpeciesFrequencies.html\#fields
tutti.editSpeciesFrequencies.help=editSpeciesFrequencies.html
+tutti.fishingOperations.action.deleteFishingOperation.help=
tutti.fishingOperations.action.newFishingOperation.help=fishingOperations.html\#actions
tutti.fishingOperations.field.fishingOperation.help=fishingOperations.html\#fields
tutti.fishingOperations.help=fishingOperations.html
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-05-06 19:33:55 UTC (rev 921)
@@ -1,5 +1,5 @@
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Tue Apr 30 17:57:05 CEST 2013
+#Mon May 06 16:32:40 CEST 2013
tutti.config.help=config.html
tutti.createAccidentalBatch.action.cancel.help=createAccidentalBatch.html\#actions
tutti.createAccidentalBatch.action.save.help=createAccidentalBatch.html\#actions
@@ -223,6 +223,7 @@
tutti.editSpeciesFrequencies.field.simpleCounting.help=editSpeciesFrequencies.html\#fields
tutti.editSpeciesFrequencies.field.step.help=editSpeciesFrequencies.html\#fields
tutti.editSpeciesFrequencies.help=editSpeciesFrequencies.html
+tutti.fishingOperations.action.deleteFishingOperation.help=
tutti.fishingOperations.action.newFishingOperation.help=fishingOperations.html\#actions
tutti.fishingOperations.field.fishingOperation.help=fishingOperations.html\#fields
tutti.fishingOperations.help=fishingOperations.html
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/DeleteFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/DeleteFishingOperationAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/DeleteFishingOperationAction.java 2013-05-06 19:33:55 UTC (rev 921)
@@ -0,0 +1,74 @@
+package fr.ifremer.tutti.ui.swing.content.operation;
+
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * To delete a fishing operation.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.2
+ */
+public class DeleteFishingOperationAction extends AbstractTuttiAction<FishingOperationsUIModel, FishingOperationsUI, FishingOperationsUIHandler> {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(EditFishingOperationAction.class);
+
+ /**
+ * Delegate edit action.
+ *
+ * @since 1.0
+ */
+ protected EditFishingOperationAction editAction;
+
+ public DeleteFishingOperationAction(FishingOperationsUIHandler handler) {
+ super(handler, true);
+ setActionDescription(_("tutti.editFishingOperation.action.editFishingOperation.tip"));
+ }
+
+ public EditFishingOperationAction getEditAction() {
+ if (editAction == null) {
+ editAction = TuttiActionHelper.createLogicAction(
+ getHandler(),
+ EditFishingOperationAction.class);
+ }
+ return editAction;
+ }
+
+ @Override
+ protected boolean prepareAction() {
+
+ FishingOperation fishingOperation = getModel().getSelectedFishingOperation();
+ boolean canContinue = fishingOperation != null &&
+ !TuttiEntities.isNew(fishingOperation);
+ return canContinue;
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+
+ FishingOperation fishingOperation =
+ getModel().getSelectedFishingOperation();
+
+ if (log.isInfoEnabled()) {
+ log.info("Try to delete fishingOperation: " + fishingOperation);
+ }
+
+ getContext().getPersistenceService().deleteFishingOperation(fishingOperation.getId());
+
+ }
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ getEditAction().setFishingOperation(null);
+ runAction(getEditAction());
+ }
+}
\ No newline at end of file
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/DeleteFishingOperationAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.css 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.css 2013-05-06 19:33:55 UTC (rev 921)
@@ -40,6 +40,15 @@
_help: {"tutti.fishingOperations.action.newFishingOperation.help"};
}
+#deleteFishingOperationButton {
+ actionIcon: delete;
+ enabled:{model.getSelectedFishingOperation() != null};
+ toolTipText: "tutti.fishingOperations.action.deleteFishingOperation.tip";
+ i18nMnemonic: "tutti.fishingOperations.action.deleteFishingOperation.mnemonic";
+ _tuttiAction: {DeleteFishingOperationAction.class};
+ _help: {"tutti.fishingOperations.action.deleteFishingOperation.help"};
+}
+
#fishingOperationComboBox {
property: selectedFishingOperation;
selectedItem: {model.getSelectedFishingOperation()};
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.jaxx 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.jaxx 2013-05-06 19:33:55 UTC (rev 921)
@@ -35,6 +35,8 @@
jaxx.runtime.swing.editor.bean.BeanFilterableComboBox
+ java.awt.GridLayout
+
static org.nuiton.i18n.I18n._
</import>
@@ -70,7 +72,10 @@
genericType='FishingOperation'/>
</cell>
<cell anchor='east'>
- <JButton id='newFishingOperationButton'/>
+ <JPanel layout="{new GridLayout()}">
+ <JButton id='newFishingOperationButton'/>
+ <JButton id='deleteFishingOperationButton'/>
+ </JPanel>
</cell>
</row>
<row>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java 2013-05-06 19:33:55 UTC (rev 921)
@@ -80,7 +80,7 @@
protected FishingOperation selectedFishingOperation;
/**
- * Current editied fishing operation.
+ * Current edited fishing operation.
*
* @since 1.0
*/
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-05-06 19:33:55 UTC (rev 921)
@@ -863,6 +863,8 @@
tutti.exportDb.reloadApplication=
tutti.exportProgram.action.success=
tutti.exportProtocol.action.success=
+tutti.fishingOperations.action.deleteFishingOperation.mnemonic=
+tutti.fishingOperations.action.deleteFishingOperation.tip=
tutti.fishingOperations.action.newFishingOperation.mnemonic=
tutti.fishingOperations.action.newFishingOperation.tip=
tutti.fishingOperations.info.no.fishingOperation.selected=
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-05-06 13:01:52 UTC (rev 920)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-05-06 19:33:55 UTC (rev 921)
@@ -832,6 +832,8 @@
tutti.exportDb.reloadApplication=Redémarrage de l'application
tutti.exportProgram.action.success=La série de campagne <strong>%s</strong> a été exportée dans le fichier <strong>%s</strong>.
tutti.exportProtocol.action.success=Protocole [%1s] exporté dans le fichier <strong>%2s</strong>.
+tutti.fishingOperations.action.deleteFishingOperation.mnemonic=S
+tutti.fishingOperations.action.deleteFishingOperation.tip=Supprimer l'opération de pêche sélectionnée
tutti.fishingOperations.action.newFishingOperation.mnemonic=N
tutti.fishingOperations.action.newFishingOperation.tip=Créer une nouvelle opération de pêche
tutti.fishingOperations.info.no.fishingOperation.selected=< Aucun trait sélectionné >
1
0
06 May '13
Jenkins build is back to normal : tutti » Tutti :: Persistence #753
by admin+hudson@codelutin.com 06 May '13
by admin+hudson@codelutin.com 06 May '13
06 May '13
Jenkins build is back to normal : tutti » Tutti :: Service #753
by admin+hudson@codelutin.com 06 May '13
by admin+hudson@codelutin.com 06 May '13
06 May '13