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
February 2013
- 6 participants
- 236 discussions
01 Feb '13
Author: tchemit
Date: 2013-02-01 11:54:50 +0100 (Fri, 01 Feb 2013)
New Revision: 285
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/285
Log:
- add a control to disabled catches edit or validate when program has no zone
- import / export protocol species
Added:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolSpeciesExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolSpeciesImportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRow.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolSpeciesAction.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/home/
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIModel-error-validation.xml
Removed:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/update/
Modified:
trunk/pom.xml
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolCaracteristicImportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportService.java
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportServiceTest.java
trunk/tutti-ui-swing/pom.xml
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolCaracteristicAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-02-01 09:30:28 UTC (rev 284)
+++ trunk/pom.xml 2013-02-01 10:54:50 UTC (rev 285)
@@ -124,7 +124,7 @@
<!-- libraries version -->
- <nuitonUtilsVersion>2.6.7-SNAPSHOT</nuitonUtilsVersion>
+ <nuitonUtilsVersion>2.6.7</nuitonUtilsVersion>
<nuitonI18nVersion>2.5</nuitonI18nVersion>
<eugenePluginVersion>2.6.1</eugenePluginVersion>
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java 2013-02-01 10:54:50 UTC (rev 285)
@@ -0,0 +1,116 @@
+package fr.ifremer.tutti.service;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $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.IdAware;
+import org.apache.commons.lang3.StringUtils;
+import org.nuiton.util.csv.ValueParserFormatter;
+import org.nuiton.util.csv.ext.AbstractImportModel;
+
+import java.text.ParseException;
+import java.util.Map;
+
+/**
+ * Helper around csv import / export in Tutti.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class TuttiCsvUtil {
+
+ public static abstract class AbstractTuttiImportModel<M> extends AbstractImportModel<M> {
+
+ public AbstractTuttiImportModel(char separator) {
+ super(separator);
+ }
+
+ public <E extends IdAware> void newForeignKeyColumn(String headerName, String propertyName, Class<E> entityType, String foreignKeyName, Map<String, E> universe) {
+ newMandatoryColumn(headerName, propertyName, newForeignKeyValue(entityType, foreignKeyName, universe));
+ }
+
+ public <E extends IdAware> void newForeignKeyColumn(String propertyName, Class<E> entityType, String foreignKeyName, Map<String, E> universe) {
+ newMandatoryColumn(propertyName, propertyName, newForeignKeyValue(entityType, foreignKeyName, universe));
+ }
+
+ public <E extends IdAware> ForeignKeyValue<E> newForeignKeyValue(Class<E> type, String propertyName, Map<String, E> universe) {
+ return new ForeignKeyValue<E>(type, propertyName, universe);
+ }
+ }
+
+ /**
+ * @param <E>
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.6.12
+ */
+ public static class ForeignKeyValue<E extends IdAware> implements ValueParserFormatter<E> {
+
+ protected final String propertyName;
+
+ protected final Class<E> entityType;
+
+ protected final Map<String, E> universe;
+
+ public ForeignKeyValue(Class<E> entityType,
+ String propertyName,
+ Map<String, E> universe) {
+ this.entityType = entityType;
+ this.propertyName = propertyName;
+ this.universe = universe;
+ }
+
+ @Override
+ public E parse(String value) throws ParseException {
+ E result = null;
+ if (StringUtils.isNotBlank(value)) {
+
+ // get entity from universe
+ result = universe.get(value);
+
+ if (result == null) {
+
+ // can not find entity this is a big problem for us...
+ throw new RuntimeException(
+ "Could not find entity of type " +
+ entityType.getSimpleName() + " with '" +
+ propertyName + "' = " + value);
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public String format(E e) {
+ String value = "";
+ if (e != null) {
+ value = e.getId();
+ }
+ return value;
+ }
+ }
+
+ protected TuttiCsvUtil() {
+ // no instance
+ }
+}
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolCaracteristicImportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolCaracteristicImportModel.java 2013-02-01 09:30:28 UTC (rev 284)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolCaracteristicImportModel.java 2013-02-01 10:54:50 UTC (rev 285)
@@ -25,14 +25,10 @@
package fr.ifremer.tutti.service.protocol;
-import fr.ifremer.tutti.persistence.entities.IdAware;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import org.apache.commons.lang3.StringUtils;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
import org.nuiton.util.csv.Common;
-import org.nuiton.util.csv.ValueParserFormatter;
-import org.nuiton.util.csv.ext.AbstractImportModel;
-import java.text.ParseException;
import java.util.Map;
/**
@@ -41,7 +37,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
*/
-public class ProtocolCaracteristicImportModel extends AbstractImportModel<CaracteristicRow> {
+public class ProtocolCaracteristicImportModel extends TuttiCsvUtil.AbstractTuttiImportModel<CaracteristicRow> {
public ProtocolCaracteristicImportModel(char separator, Map<String, Caracteristic> caracteristicMap) {
super(separator);
@@ -67,66 +63,4 @@
return new CaracteristicRow();
}
- public <E extends IdAware> void newForeignKeyColumn(String headerName, String propertyName, Class<E> entityType, String foreignKeyName, Map<String, E> universe) {
- newMandatoryColumn(headerName, propertyName, newForeignKeyValue(entityType, foreignKeyName, universe));
- }
-
- public <E extends IdAware> void newForeignKeyColumn(String propertyName, Class<E> entityType, String foreignKeyName, Map<String, E> universe) {
- newMandatoryColumn(propertyName, propertyName, newForeignKeyValue(entityType, foreignKeyName, universe));
- }
-
- public static <E extends IdAware> ForeignKeyValue<E> newForeignKeyValue(Class<E> type, String propertyName, Map<String, E> universe) {
- return new ForeignKeyValue<E>(type, propertyName, universe);
- }
-
- /**
- * @param <E>
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.6.12
- */
- public static class ForeignKeyValue<E extends IdAware> implements ValueParserFormatter<E> {
-
- protected final String propertyName;
-
- protected final Class<E> entityType;
-
- protected final Map<String, E> universe;
-
- public ForeignKeyValue(Class<E> entityType,
- String propertyName,
- Map<String, E> universe) {
- this.entityType = entityType;
- this.propertyName = propertyName;
- this.universe = universe;
- }
-
- @Override
- public E parse(String value) throws ParseException {
- E result = null;
- if (StringUtils.isNotBlank(value)) {
-
- // get entity from universe
- result = universe.get(value);
-
- if (result == null) {
-
- // can not find entity this is a big problem for us...
- throw new RuntimeException(
- "Could not find entity of type " +
- entityType.getSimpleName() + " with '" +
- propertyName + "' = " + value);
- }
- }
- return result;
- }
-
- @Override
- public String format(E e) {
- String value = "";
- if (e != null) {
- value = e.getId();
- }
- return value;
- }
- }
}
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolSpeciesExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolSpeciesExportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolSpeciesExportModel.java 2013-02-01 10:54:50 UTC (rev 285)
@@ -0,0 +1,53 @@
+package fr.ifremer.tutti.service.protocol;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $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.protocol.SpeciesProtocol;
+import org.nuiton.util.csv.Common;
+import org.nuiton.util.csv.ext.AbstractExportModel;
+
+/**
+ * Model to export {@link SpeciesProtocol}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class ProtocolSpeciesExportModel extends AbstractExportModel<SpeciesRow> {
+
+ public ProtocolSpeciesExportModel(char separator) {
+ super(separator);
+
+ newColumnForExport(SpeciesRow.PROPERTY_ID);
+ newColumnForExport(SpeciesRow.PROPERTY_LENGTH_CLASS, SpeciesRow.PROPERTY_LENGTH_CLASS_ID);
+ newColumnForExport(SpeciesRow.PROPERTY_SIZE_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newColumnForExport(SpeciesRow.PROPERTY_SEX_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newColumnForExport(SpeciesRow.PROPERTY_MATURITY_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newColumnForExport(SpeciesRow.PROPERTY_AGE_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newColumnForExport(SpeciesRow.PROPERTY_WEIGHT_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newColumnForExport(SpeciesRow.PROPERTY_COUNT_IF_NO_FREQUENCY_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newColumnForExport(SpeciesRow.PROPERTY_CALCIFY_SAMPLE_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolSpeciesExportModel.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/protocol/ProtocolSpeciesImportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolSpeciesImportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolSpeciesImportModel.java 2013-02-01 10:54:50 UTC (rev 285)
@@ -0,0 +1,77 @@
+package fr.ifremer.tutti.service.protocol;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $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.protocol.SpeciesProtocol;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+import org.nuiton.util.csv.Common;
+
+import java.util.Map;
+
+/**
+ * Model to export {@link SpeciesProtocol}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class ProtocolSpeciesImportModel extends TuttiCsvUtil.AbstractTuttiImportModel<SpeciesRow> {
+
+ public ProtocolSpeciesImportModel(char separator,
+ Map<String, Caracteristic> caracteristicMap,
+ Map<String, Species> speciesMap) {
+ super(separator);
+
+ newForeignKeyColumn(SpeciesRow.PROPERTY_ID,
+ SpeciesRow.PROPERTY_SPECIES,
+ Species.class,
+ Species.PROPERTY_ID,
+ speciesMap);
+
+ newForeignKeyColumn(SpeciesRow.PROPERTY_LENGTH_CLASS,
+ SpeciesRow.PROPERTY_LENGTH_CLASS,
+ Caracteristic.class,
+ Caracteristic.PROPERTY_ID,
+ caracteristicMap);
+
+ newMandatoryColumn(SpeciesRow.PROPERTY_SIZE_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newMandatoryColumn(SpeciesRow.PROPERTY_SEX_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newMandatoryColumn(SpeciesRow.PROPERTY_MATURITY_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newMandatoryColumn(SpeciesRow.PROPERTY_AGE_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newMandatoryColumn(SpeciesRow.PROPERTY_WEIGHT_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newMandatoryColumn(SpeciesRow.PROPERTY_COUNT_IF_NO_FREQUENCY_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newMandatoryColumn(SpeciesRow.PROPERTY_CALCIFY_SAMPLE_ENABLED, Common.PRIMITIVE_BOOLEAN);
+//
+// newIgnoredColumn(SpeciesRow.PROPERTY_PARAMETER);
+ }
+
+ @Override
+ public SpeciesRow newEmptyInstance() {
+ return new SpeciesRow();
+ }
+
+
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolSpeciesImportModel.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/protocol/SpeciesRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRow.java 2013-02-01 10:54:50 UTC (rev 285)
@@ -0,0 +1,160 @@
+package fr.ifremer.tutti.service.protocol;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $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.protocol.SpeciesProtocol;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+
+import java.io.Serializable;
+
+/**
+ * Row of a {@link SpeciesProtocol} to import or export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class SpeciesRow implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String PROPERTY_ID = "id";
+
+ public static final String PROPERTY_SPECIES = "species";
+
+ public static final String PROPERTY_SIZE_ENABLED = "sizeEnabled";
+
+ public static final String PROPERTY_SEX_ENABLED = "sexEnabled";
+
+ public static final String PROPERTY_MATURITY_ENABLED = "maturityEnabled";
+
+ public static final String PROPERTY_AGE_ENABLED = "ageEnabled";
+
+ public static final String PROPERTY_LENGTH_CLASS = "lengthClass";
+ public static final String PROPERTY_LENGTH_CLASS_ID = "lengthClassId";
+
+ public static final String PROPERTY_WEIGHT_ENABLED = "weightEnabled";
+
+ public static final String PROPERTY_COUNT_IF_NO_FREQUENCY_ENABLED = "countIfNoFrequencyEnabled";
+
+ public static final String PROPERTY_CALCIFY_SAMPLE_ENABLED = "calcifySampleEnabled";
+
+ protected final SpeciesProtocol delegate;
+
+ protected Species species;
+
+ protected Caracteristic lengthClass;
+
+ public SpeciesRow() {
+ delegate = new SpeciesProtocol();
+ }
+
+ public Species getSpecies() {
+ return species;
+ }
+
+ public Caracteristic getLengthClass() {
+ return lengthClass;
+ }
+
+ public void setLengthClass(Caracteristic lengthClass) {
+ this.lengthClass = lengthClass;
+ delegate.setLengthStepPmfmId(lengthClass == null ? null : lengthClass.getId());
+ }
+
+ public String getLengthClassId() {
+ return delegate.getLengthStepPmfmId();
+ }
+
+ public void setSpecies(Species species) {
+ this.species = species;
+ delegate.setSpeciesId(species == null ? null : species.getId());
+ }
+
+ public String getId() {
+ return delegate.getSpeciesId();
+ }
+
+ public boolean isSizeEnabled() {
+ return delegate.isSizeEnabled();
+ }
+
+ public void setSizeEnabled(boolean sizeEnabled) {
+ delegate.setSizeEnabled(sizeEnabled);
+ }
+
+ public boolean isSexEnabled() {
+ return delegate.isSexEnabled();
+ }
+
+ public void setSexEnabled(boolean sexEnabled) {
+ delegate.setSexEnabled(sexEnabled);
+ }
+
+ public boolean isMaturityEnabled() {
+ return delegate.isMaturityEnabled();
+ }
+
+ public void setMaturityEnabled(boolean maturityEnabled) {
+ delegate.setMaturityEnabled(maturityEnabled);
+ }
+
+ public boolean isAgeEnabled() {
+ return delegate.isAgeEnabled();
+ }
+
+ public void setAgeEnabled(boolean ageEnabled) {
+ delegate.setAgeEnabled(ageEnabled);
+ }
+
+ public boolean isWeightEnabled() {
+ return delegate.isWeightEnabled();
+ }
+
+ public void setWeightEnabled(boolean weightEnabled) {
+ delegate.setWeightEnabled(weightEnabled);
+ }
+
+ public boolean isCountIfNoFrequencyEnabled() {
+ return delegate.isCountIfNoFrequencyEnabled();
+ }
+
+ public void setCountIfNoFrequencyEnabled(boolean countIfNoFrequencyEnabled) {
+ delegate.setCountIfNoFrequencyEnabled(countIfNoFrequencyEnabled);
+ }
+
+ public boolean isCalcifySampleEnabled() {
+ return delegate.isCalcifySampleEnabled();
+ }
+
+ public void setCalcifySampleEnabled(boolean calcifySampleEnabled) {
+ delegate.setCalcifySampleEnabled(calcifySampleEnabled);
+ }
+
+ public String getSpeciesId() {
+ return delegate.getSpeciesId();
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRow.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportService.java 2013-02-01 09:30:28 UTC (rev 284)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportService.java 2013-02-01 10:54:50 UTC (rev 285)
@@ -28,17 +28,22 @@
import com.google.common.base.Function;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
import com.google.common.collect.TreeMultimap;
import com.google.common.io.Closeables;
import com.google.common.io.Files;
+import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.service.AbstractTuttiService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.beans.Binder;
+import org.nuiton.util.beans.BinderFactory;
import org.nuiton.util.csv.Export;
import org.nuiton.util.csv.Import2;
import org.nuiton.util.csv.ImportRow;
@@ -143,7 +148,6 @@
}
public void exportAllCaracteristic(File file,
-
Map<String, Caracteristic> caracteristicMap) throws Exception {
if (log.isInfoEnabled()) {
@@ -170,7 +174,8 @@
}
}
- public void exportProtocolCaracteristic(File file, TuttiProtocol protocol,
+ public void exportProtocolCaracteristic(File file,
+ TuttiProtocol protocol,
Map<String, Caracteristic> caracteristicMap) throws Exception {
if (log.isInfoEnabled()) {
@@ -182,18 +187,24 @@
List<CaracteristicRow> rows = Lists.newArrayList();
- function.setType(CaracteristicType.LENGTH_CLASS);
- rows.addAll(Lists.transform(protocol.getLengthClassesPmfmId(), function));
+ if (!protocol.isLengthClassesPmfmIdEmpty()) {
+ function.setType(CaracteristicType.LENGTH_CLASS);
- function.setType(CaracteristicType.ENVIRONMENT);
- rows.addAll(Lists.transform(protocol.getEnvironmentPmfmId(), function));
+ rows.addAll(Lists.transform(protocol.getLengthClassesPmfmId(), function));
+ }
+ if (!protocol.isEnvironmentPmfmIdEmpty()) {
+ function.setType(CaracteristicType.ENVIRONMENT);
+ rows.addAll(Lists.transform(protocol.getEnvironmentPmfmId(), function));
+ }
+ if (!protocol.isGearPmfmIdEmpty()) {
- function.setType(CaracteristicType.GEAR);
- rows.addAll(Lists.transform(protocol.getGearPmfmId(), function));
-
- function.setType(CaracteristicType.HYDROLOGY);
- rows.addAll(Lists.transform(protocol.getHydrologyPmfmId(), function));
-
+ function.setType(CaracteristicType.GEAR);
+ rows.addAll(Lists.transform(protocol.getGearPmfmId(), function));
+ }
+ if (!protocol.isHydrologyPmfmIdEmpty()) {
+ function.setType(CaracteristicType.HYDROLOGY);
+ rows.addAll(Lists.transform(protocol.getHydrologyPmfmId(), function));
+ }
ProtocolCaracteristicExportModel csvModel =
new ProtocolCaracteristicExportModel(getCsvSeparator());
@@ -208,23 +219,111 @@
}
public void importProtocolSpecies(File file,
- TuttiProtocol protocol) throws IOException {
+ TuttiProtocol protocol,
+ Map<String, Caracteristic> caracteristicMap,
+ Map<String, Species> speciesMap) throws IOException {
+
if (log.isInfoEnabled()) {
- log.info("Will import protocol [" + protocol.getName() + "] species from file: " + file);
+ log.info("Will import protocol [" + protocol.getName() +
+ "] species from file: " + file);
}
- Reader fileReader = Files.newReader(file, Charsets.UTF_8);
+
+
+ Map<String, SpeciesProtocol> ids = Maps.newLinkedHashMap();
+
+ if (!protocol.isSpeciesEmpty()) {
+
+ // get existing species (will be replaced if required)
+
+ for (SpeciesProtocol speciesProtocol : protocol.getSpecies()) {
+ ids.put(speciesProtocol.getSpeciesId(), speciesProtocol);
+ }
+
+ }
+ ProtocolSpeciesImportModel csvModel =
+ new ProtocolSpeciesImportModel(getCsvSeparator(),
+ caracteristicMap,
+ speciesMap);
+
+ Reader reader = Files.newReader(file, Charsets.UTF_8);
try {
- if (log.isInfoEnabled()) {
- log.info("TODO");
+
+ Import2<SpeciesRow> importer =
+ Import2.newImport(csvModel, reader);
+
+ try {
+
+ Binder<SpeciesRow, SpeciesProtocol> binder =
+ BinderFactory.newBinder(SpeciesRow.class,
+ SpeciesProtocol.class);
+
+ for (ImportRow<SpeciesRow> row : importer) {
+
+ if (!row.isValid()) {
+
+ //TODO deal with line error
+ if (log.isErrorEnabled()) {
+ log.error("there is some error on line " + row.getLineNumber() + ":\n" + row.getErrors());
+ }
+ } else {
+
+ // treat row
+ SpeciesRow bean = row.getBean();
+
+ Species species = bean.getSpecies();
+ String id = species.getId();
+
+ SpeciesProtocol sp = new SpeciesProtocol();
+ binder.copy(bean, sp);
+ sp.setId(id);
+
+ ids.put(id, sp);
+ }
+ }
+ importer.close();
+ } finally {
+ Closeables.closeQuietly(importer);
}
- fileReader.close();
+ reader.close();
} catch (Exception e) {
- throw new IOException("Could not import protocol [" + protocol.getName() + "] species from file " + file, e);
+ throw new IOException("Could not import protocol [" + protocol.getName() + "] caracteristic from file " + file, e);
} finally {
- Closeables.closeQuietly(fileReader);
+ Closeables.closeQuietly(reader);
}
+
+ List<SpeciesProtocol> values = Lists.newArrayList(ids.values());
+ protocol.setSpecies(values);
}
+ public void exportProtocolSpecies(File file,
+ TuttiProtocol protocol,
+ Map<String, Caracteristic> caracteristicMap,
+ Map<String, Species> speciesMap) throws Exception {
+ if (log.isInfoEnabled()) {
+ log.info("Will export species to file: " + file);
+ }
+
+ List<SpeciesRow> rows = Lists.newArrayList();
+
+ if (!protocol.isSpeciesEmpty()) {
+ rows = Lists.transform(protocol.getSpecies(), new SpeciesProtocolToSpeciesRowFunction(
+ caracteristicMap,
+ speciesMap));
+ }
+
+ ProtocolSpeciesExportModel csvModel =
+ new ProtocolSpeciesExportModel(getCsvSeparator());
+
+ BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8);
+ try {
+ Export export = Export.newExport(csvModel, rows);
+ export.write(writer);
+ writer.close();
+ } finally {
+ Closeables.closeQuietly(writer);
+ }
+ }
+
protected char getCsvSeparator() {
return context.getConfig().getCsvSeparator();
}
@@ -273,4 +372,35 @@
this.type = type;
}
}
+
+ private static class SpeciesProtocolToSpeciesRowFunction implements Function<SpeciesProtocol, SpeciesRow> {
+
+ private final Map<String, Species> speciesMap;
+
+ private final Map<String, Caracteristic> caracteristicMap;
+
+ private final Binder<SpeciesProtocol, SpeciesRow> binder;
+
+ public SpeciesProtocolToSpeciesRowFunction(Map<String, Caracteristic> caracteristicMap,
+ Map<String, Species> speciesMap) {
+ this.speciesMap = speciesMap;
+ this.caracteristicMap = caracteristicMap;
+ this.binder = BinderFactory.newBinder(SpeciesProtocol.class, SpeciesRow.class);
+ }
+
+ @Override
+ public SpeciesRow apply(SpeciesProtocol input) {
+ Species species = speciesMap.get(input.getSpeciesId());
+ Preconditions.checkNotNull(species, "Could not find a species with id: " + input);
+ SpeciesRow result = new SpeciesRow();
+ binder.copy(input, result);
+ String pmfmId = input.getLengthStepPmfmId();
+ if (pmfmId != null) {
+ Caracteristic caracteristic = caracteristicMap.get(pmfmId);
+ result.setLengthClass(caracteristic);
+ }
+ result.setSpecies(species);
+ return result;
+ }
+ }
}
Modified: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportServiceTest.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportServiceTest.java 2013-02-01 09:30:28 UTC (rev 284)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportServiceTest.java 2013-02-01 10:54:50 UTC (rev 285)
@@ -31,6 +31,7 @@
import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.SystemUtils;
import org.apache.commons.logging.Log;
@@ -113,6 +114,10 @@
"4;;parameterName4;matrixName4;fractionName4;methodName4;\n" +
"5;;parameterName5;matrixName5;fractionName5;methodName5;";
+ public static final String PROTOCOL_SPECIES_FILE_CONTENT =
+ "id;lengthClass;sizeEnabled;sexEnabled;maturityEnabled;ageEnabled;weightEnabled;countIfNoFrequencyEnabled;calcifySampleEnabled\n" +
+ "1;1;Y;Y;Y;Y;Y;Y;Y;\n" +
+ "2;;N;Y;N;Y;Y;Y;Y;";
@Before
public void setUp() throws Exception {
@@ -224,16 +229,16 @@
@Test
public void importProtocolCaracteristic() throws Exception {
- File importfile = new File(datadirectory, "importProtocolCaracteristic.csv");
+ File file = new File(datadirectory, "importProtocolCaracteristic.csv");
- Files.createParentDirs(importfile);
+ Files.createParentDirs(file);
- Files.write(PROTOCOL_CARACTERISTIC_FILE_CONTENT, importfile, Charsets.UTF_8);
+ Files.write(PROTOCOL_CARACTERISTIC_FILE_CONTENT, file, Charsets.UTF_8);
TuttiProtocol protocol = new TuttiProtocol();
Map<String, Caracteristic> caracteristicMap = createCaracteristics();
- service.importProtocolCaracteristic(importfile,
+ service.importProtocolCaracteristic(file,
protocol,
caracteristicMap);
@@ -291,6 +296,77 @@
Assert.assertEquals(ALL_CARACTERISTIC_FILE_CONTENT, exportFileToString);
}
+ @Test
+ public void importProtocolSpecies() throws Exception {
+
+ File file = new File(datadirectory, "importProtocolSpecies.csv");
+
+ Files.createParentDirs(file);
+
+ Files.write(PROTOCOL_SPECIES_FILE_CONTENT, file, Charsets.UTF_8);
+
+ TuttiProtocol protocol = new TuttiProtocol();
+ Map<String, Species> speciesMap = createSpecies();
+ Map<String, Caracteristic> caracteristicMap = createCaracteristics();
+
+ service.importProtocolSpecies(file,
+ protocol,
+ caracteristicMap,
+ speciesMap);
+
+ Assert.assertEquals(2, protocol.sizeSpecies());
+ }
+
+ @Test
+ public void exportProtocolSpecies() throws Exception {
+
+ File file = new File(datadirectory, "exportProtocolSpecies.csv");
+
+ Files.createParentDirs(file);
+
+ Map<String, Species> speciesMap = createSpecies();
+
+ TuttiProtocol protocol = new TuttiProtocol();
+ protocol.setSpecies(Lists.<SpeciesProtocol>newArrayList());
+
+ SpeciesProtocol sp1 = new SpeciesProtocol();
+ sp1.setSpeciesId("1");
+ sp1.setAgeEnabled(true);
+ sp1.setSizeEnabled(true);
+ sp1.setMaturityEnabled(true);
+ sp1.setSexEnabled(true);
+ sp1.setWeightEnabled(true);
+ sp1.setCountIfNoFrequencyEnabled(true);
+ sp1.setCalcifySampleEnabled(true);
+ sp1.setLengthStepPmfmId("1");
+
+ protocol.addSpecies(sp1);
+
+ SpeciesProtocol sp2 = new SpeciesProtocol();
+ sp2.setSpeciesId("2");
+ sp2.setAgeEnabled(true);
+ sp1.setSizeEnabled(true);
+ sp1.setMaturityEnabled(true);
+ sp2.setSexEnabled(true);
+ sp2.setWeightEnabled(true);
+ sp2.setCalcifySampleEnabled(true);
+ sp2.setCountIfNoFrequencyEnabled(true);
+ sp2.setLengthStepPmfmId(null);
+
+ protocol.addSpecies(sp2);
+
+ Assert.assertFalse(file.exists());
+ service.exportProtocolSpecies(file,
+ protocol,
+ createCaracteristics(),
+ speciesMap);
+
+ Assert.assertTrue(file.exists());
+
+ String exportFileToString = Files.toString(file, Charsets.UTF_8).trim();
+ Assert.assertEquals(PROTOCOL_SPECIES_FILE_CONTENT, exportFileToString);
+ }
+
public static File getTestSpecificDirectory(Class<?> testClassName,
String methodName,
String classifier) {
@@ -320,7 +396,7 @@
}
protected Map<String, Caracteristic> createCaracteristics() {
- Map<String, Caracteristic> caracteristicMap = Maps.newTreeMap();
+ Map<String, Caracteristic> result = Maps.newTreeMap();
for (int i = 1; i < 6; i++) {
Caracteristic c = new Caracteristic();
c.setId("" + i);
@@ -328,8 +404,18 @@
c.setMatrixName("matrixName" + i);
c.setFractionName("fractionName" + i);
c.setMethodName("methodName" + i);
- caracteristicMap.put(i + "", c);
+ result.put(i + "", c);
}
- return caracteristicMap;
+ return result;
}
+
+ protected Map<String, Species> createSpecies() {
+ Map<String, Species> result = Maps.newTreeMap();
+ for (int i = 1; i < 3; i++) {
+ Species c = new Species();
+ c.setId("" + i);
+ result.put(i + "", c);
+ }
+ return result;
+ }
}
Modified: trunk/tutti-ui-swing/pom.xml
===================================================================
--- trunk/tutti-ui-swing/pom.xml 2013-02-01 09:30:28 UTC (rev 284)
+++ trunk/tutti-ui-swing/pom.xml 2013-02-01 10:54:50 UTC (rev 285)
@@ -67,12 +67,14 @@
fr.ifremer.tutti.ui.swing.RunTutti
</maven.jar.main.class>
+ <bundlePrefix>tutti-${project.version}</bundlePrefix>
+
<redmine.releaseFiles>
- target/${project.build.finalName}-standalone.zip,
- target/${project.build.finalName}-full-windows-i586.zip,
- target/${project.build.finalName}-full-windows-x64.zip,
- target/${project.build.finalName}-full-linux-i586.zip,
- target/${project.build.finalName}-full-linux-x64.zip
+ target/${bundlePrefix}-standalone.zip,
+ target/${bundlePrefix}-full-windows-i586.zip,
+ target/${bundlePrefix}-full-windows-x64.zip,
+ target/${bundlePrefix}-full-linux-i586.zip,
+ target/${bundlePrefix}-full-linux-x64.zip
</redmine.releaseFiles>
</properties>
@@ -486,11 +488,10 @@
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<attach>false</attach>
- <finalName>tutti-${project.version}</finalName>
+ <finalName>${bundlePrefix}</finalName>
</configuration>
<executions>
<execution>
- <id>standalone</id>
<phase>package</phase>
<goals>
<goal>single</goal>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-02-01 09:30:28 UTC (rev 284)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-02-01 10:54:50 UTC (rev 285)
@@ -95,10 +95,10 @@
#editCatchesButton {
action: {editCatchesAction};
- enabled: {uiContext.isCruiseFilled()};
+ enabled: {model.isValid() && uiContext.isCruiseFilled()};
}
#validateCatchesButton {
action: {validateCatchesAction};
- enabled: {uiContext.isCruiseFilled()};
+ enabled: {model.isValid() && uiContext.isCruiseFilled()};
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-02-01 09:30:28 UTC (rev 284)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-02-01 10:54:50 UTC (rev 285)
@@ -32,6 +32,8 @@
fr.ifremer.tutti.ui.swing.util.ActionListCellRenderer
jaxx.runtime.swing.editor.bean.BeanComboBox
+ jaxx.runtime.validator.swing.SwingValidatorUtil
+ jaxx.runtime.validator.swing.SwingValidatorMessageTableModel
static org.nuiton.i18n.I18n._
</import>
@@ -59,6 +61,8 @@
<SelectCruiseUIModel id='model'
initializer='getContextValue(SelectCruiseUIModel.class)'/>
+ <SwingValidatorMessageTableModel id='errorTableModel'/>
+
<NewProgramAction id='newProgramAction' constructorParams='handler'/>
<EditProgramAction id='editProgramAction' constructorParams='handler'/>
@@ -75,6 +79,13 @@
<EditCatchesAction id='editCatchesAction' constructorParams='handler'/>
<ValidateCatchesAction id='validateCatchesAction' constructorParams='handler'/>
+ <BeanValidator id='validator' bean='model' errorTableModel='errorTableModel'
+ uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'>
+ <field name='program' component='programCombobox'/>
+ <field name='cruise' component='cruiseCombobox'/>
+ <field name='protocol' component='protocolCombobox'/>
+ </BeanValidator>
+
<Table fill='both' constraints='BorderLayout.CENTER'>
<row>
<cell anchor='west'>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-02-01 09:30:28 UTC (rev 284)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-02-01 10:54:50 UTC (rev 285)
@@ -74,7 +74,7 @@
@Override
public SwingValidator<SelectCruiseUIModel> getValidator() {
- return null;
+ return ui.getValidator();
}
@Override
@@ -273,6 +273,8 @@
ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_PROGRAM_BUTTON_ENABLED);
ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_CRUISE_BUTTON_ENABLED);
+
+ listenValidatorValid(getValidator(), model);
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIModel.java 2013-02-01 09:30:28 UTC (rev 284)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIModel.java 2013-02-01 10:54:50 UTC (rev 285)
@@ -27,7 +27,7 @@
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
-import org.jdesktop.beans.AbstractSerializableBean;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
import java.util.List;
@@ -37,7 +37,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.1
*/
-public class SelectCruiseUIModel extends AbstractSerializableBean {
+public class SelectCruiseUIModel extends AbstractTuttiBeanUIModel<Cruise, SelectCruiseUIModel> {
private static final long serialVersionUID = 1L;
@@ -71,6 +71,10 @@
protected TuttiProtocol protocol;
+ public SelectCruiseUIModel() {
+ super(Cruise.class, null, null);
+ }
+
public List<Program> getPrograms() {
return programs;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java 2013-02-01 09:30:28 UTC (rev 284)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java 2013-02-01 10:54:50 UTC (rev 285)
@@ -88,7 +88,7 @@
CaracteristicTabUIModel[] subModels = handler.getSubModels();
for (CaracteristicTabUIModel subModel : subModels) {
- Class modelClass = subModel.getClass();
+ Class<?> modelClass = subModel.getClass();
CaracteristicMap caracteristics = subModel.getCaracteristicMap();
if (modelClass.isAssignableFrom(EnvironmentTabUIModel.class)) {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-02-01 09:30:28 UTC (rev 284)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-02-01 10:54:50 UTC (rev 285)
@@ -121,7 +121,7 @@
EditCatchesUIModel model = getModel();
- listenValidatorValid(ui.getValidator(), model);
+ listenValidatorValid(getValidator(), model);
setCustomTab(0, model);
}
@@ -211,6 +211,7 @@
bean.getId() + " - " + fishingOperationText);
}
+ //TODO id can not be null
batch = persistenceService.getCatchBatchFromFishingOperation(bean.getId());
model.setCatchBatch(batch);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2013-02-01 09:30:28 UTC (rev 284)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2013-02-01 10:54:50 UTC (rev 285)
@@ -103,11 +103,16 @@
tabPlacement: {JTabbedPane.LEFT};
}
-#importSpecies{
+#importSpecies {
actionIcon: import;
action: {importProtocolSpeciesAction};
}
+#exportSpecies {
+ actionIcon: export;
+ action: {exportProtocolSpeciesAction};
+}
+
#importCaracteristic {
actionIcon: import;
action: {importProtocolCaracteristicAction};
@@ -126,24 +131,20 @@
#gearList {
property: gearPmfm;
beanType: {Caracteristic.class};
- /*border: {BorderFactory.createTitledBorder(_("tutti.label.tab.fishingOperation.gearShooting"))};*/
}
#environmentList {
property: environmentPmfm;
beanType: {Caracteristic.class};
- /*border: {BorderFactory.createTitledBorder(_("tutti.label.tab.fishingOperation.environment"))};*/
}
#hydrologyList {
property: hydrologyPmfm;
beanType: {Caracteristic.class};
- /*border: {BorderFactory.createTitledBorder(_("tutti.label.tab.fishingOperation.hydrology"))};*/
}
#lengthClassesList {
property: lengthClassesPmfm;
beanType: {Caracteristic.class};
- /*border: {BorderFactory.createTitledBorder(_("tutti.label.tab.fishingOperation.lengthClasses"))};*/
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-02-01 09:30:28 UTC (rev 284)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-02-01 10:54:50 UTC (rev 285)
@@ -83,6 +83,9 @@
<ImportProtocolSpeciesAction id='importProtocolSpeciesAction'
constructorParams='handler'/>
+ <ExportProtocolSpeciesAction id='exportProtocolSpeciesAction'
+ constructorParams='handler'/>
+
<SwingValidatorMessageTableModel id='errorTableModel'/>
<BeanValidator id='validator' bean='model' errorTableModel='errorTableModel'
@@ -124,7 +127,7 @@
</Table>
</tab>
- <tab title='tutti.label.tab.protocol.fishingOperation'>
+ <tab title='tutti.label.tab.protocol.caracteristic'>
<JPanel id='caracteristicPanel' layout="{new BorderLayout()}">
<JPanel id='caracteristicActions' layout="{new GridLayout()}"
constraints='BorderLayout.NORTH'>
@@ -148,29 +151,16 @@
</tab>
</JTabbedPane>
</JPanel>
-
- <!--Table fill='both' weightx='1'>
- <row fill='both' weighty='1'>
- <cell fill='both'>
- <BeanDoubleList id='gearList' genericType='Caracteristic'/>
- </cell>
- </row>
- <row fill='both' weighty='1'>
- <cell fill='both'>
- <BeanDoubleList id='environmentList' genericType='Caracteristic'/>
- </cell>
- </row>
- <row fill='both' weighty='1'>
- <cell fill='both'>
- <BeanDoubleList id='hydrologyList' genericType='Caracteristic'/>
- </cell>
- </row>
- </Table-->
</tab>
<tab title='tutti.label.tab.protocol.species'>
<JPanel id='speciesPanel' layout="{new BorderLayout()}">
- <JButton id='importSpecies' constraints='BorderLayout.NORTH'/>
+ <JPanel id='speciesActions' layout="{new GridLayout()}"
+ constraints='BorderLayout.NORTH'>
+ <JButton id='importSpecies'/>
+ <JButton id='exportSpecies'/>
+ </JPanel>
+
<Table fill='both' constraints='BorderLayout.CENTER'>
<row fill='both'>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-02-01 09:30:28 UTC (rev 284)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-02-01 10:54:50 UTC (rev 285)
@@ -182,6 +182,14 @@
return allCaracteristic;
}
+ public Map<String, Species> getAllSpecies() {
+ return allSpecies;
+ }
+
+ public Map<String, Caracteristic> getAllLengthStepPmfm() {
+ return allLengthStepPmfm;
+ }
+
@Override
public void afterInitUI() {
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolSpeciesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolSpeciesAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolSpeciesAction.java 2013-02-01 10:54:50 UTC (rev 285)
@@ -0,0 +1,111 @@
+package fr.ifremer.tutti.ui.swing.content.protocol;
+
+/*
+ * #%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.protocol.TuttiProtocol;
+import fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportService;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+import java.io.File;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * To export protocol species.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class ExportProtocolSpeciesAction extends AbstractTuttiAction<EditProtocolUIModel, EditProtocolUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(ExportProtocolSpeciesAction.class);
+
+ private File file;
+
+ public ExportProtocolSpeciesAction(EditProtocolUIHandler handler) {
+ super(handler,
+ "exportProtocolSpecies",
+ "export",
+ _("tutti.action.exportProtocolSpecies"),
+ _("tutti.action.exportProtocolSpecies.tip"),
+ true
+ );
+ }
+
+ @Override
+ protected boolean prepareAction(ActionEvent event) {
+
+ // choose file to export
+ file = TuttiUIUtil.chooseFile(
+ getContext().getMainUI(),
+ _("tutti.title.choose.protocolSpeciesFile"),
+ _("tutti.action.chooseProtocolSpeciesFile"),
+ null,
+ "^.*\\.csv", _("tutti.file.csv")
+ );
+ boolean doAction = file != null;
+ if (doAction) {
+ super.prepareAction(event);
+ }
+ return doAction;
+ }
+
+ @Override
+ protected void releaseAction(ActionEvent event) {
+ super.releaseAction(event);
+ file = null;
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) throws Exception {
+
+ if (log.isInfoEnabled()) {
+ log.info("Will export protocol species to file: " + file);
+ }
+
+ // bind to a protocol
+ TuttiProtocol protocol = getModel().toBean();
+
+
+ // import
+ TuttiProtocolImportExportService service =
+ getContext().getService(TuttiProtocolImportExportService.class);
+
+ service.exportProtocolSpecies(file,
+ protocol,
+ getHandler().getAllLengthStepPmfm(),
+ getHandler().getAllSpecies());
+
+ sendMessage("Espèces du Protocole exportés dans le fichier " + file + ".");
+ }
+}
\ No newline at end of file
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolSpeciesAction.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/protocol/ImportProtocolCaracteristicAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolCaracteristicAction.java 2013-02-01 09:30:28 UTC (rev 284)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolCaracteristicAction.java 2013-02-01 10:54:50 UTC (rev 285)
@@ -112,6 +112,6 @@
// rebind to model
getModel().fromBean(protocol);
- sendMessage("Caractéristiques du Protocole [" + protocol.getName() + "] lu depuis le fichier.");
+ sendMessage("Caractéristiques importées depuis le fichier ");
}
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java 2013-02-01 09:30:28 UTC (rev 284)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java 2013-02-01 10:54:50 UTC (rev 285)
@@ -100,11 +100,14 @@
TuttiProtocolImportExportService service =
getContext().getService(TuttiProtocolImportExportService.class);
- service.importProtocolSpecies(file, protocol);
+ service.importProtocolSpecies(file,
+ protocol,
+ getHandler().getAllLengthStepPmfm(),
+ getHandler().getAllSpecies());
// rebind to model
getModel().fromBean(protocol);
- sendMessage("Espèces du Protocole [" + protocol.getName() + "] importées depuis le fichier.");
+ sendMessage("Espèces importées depuis le fichier " + file + ".");
}
}
\ No newline at end of file
Added: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIModel-error-validation.xml (rev 0)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIModel-error-validation.xml 2013-02-01 10:54:50 UTC (rev 285)
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%L
+ Tutti :: UI
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2012 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%
+ -->
+<!DOCTYPE validators PUBLIC
+ "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+<validators>
+
+ <field name="program">
+
+ <field-validator type="required" short-circuit="true">
+ <param name="fieldName">program.zone</param>
+ <message>tutti.validator.error.program.zone.required</message>
+ </field-validator>
+ </field>
+
+
+</validators>
Property changes on: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIModel-error-validation.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
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-02-01 09:30:28 UTC (rev 284)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-02-01 10:54:50 UTC (rev 285)
@@ -42,6 +42,8 @@
tutti.action.exportProtocol.tip=Exporter le protocole sélectionné
tutti.action.exportProtocolCaracteristic=Exporter les caractéristiques
tutti.action.exportProtocolCaracteristic.tip=Exporter les caractéristiques du protocole
+tutti.action.exportProtocolSpecies=
+tutti.action.exportProtocolSpecies.tip=
tutti.action.generate=Générer
tutti.action.generateCampaignName=Générer le nom
tutti.action.importProtocol=Importer
@@ -230,11 +232,11 @@
tutti.label.tab.plancton=Plancton
tutti.label.tab.protocol.accidental=Accidental
tutti.label.tab.protocol.benthos=Benthos
+tutti.label.tab.protocol.caracteristic=Caractéristiques
tutti.label.tab.protocol.caracteristic.environment=Environnement
tutti.label.tab.protocol.caracteristic.gear=Mise en oeuvre de l'engin
tutti.label.tab.protocol.caracteristic.hydrology=Paramètres hydrologiques
tutti.label.tab.protocol.caracteristic.lengthClasses=Classes de taille
-tutti.label.tab.protocol.fishingOperation=Trait
tutti.label.tab.protocol.info=Informations générales
tutti.label.tab.protocol.plankton=Plancton
tutti.label.tab.protocol.species=Espèces
@@ -336,6 +338,7 @@
tutti.title.choose.protocolCaracteristicImportFile=Choisir le fichier des caractéristiques à importer
tutti.title.choose.protocolExportFile=Choisir le fichier où exporter le protocole
tutti.title.choose.protocolImportFile=Choisir le fichier du protocole à importer
+tutti.title.choose.protocolSpeciesFile=
tutti.title.choose.protocolSpeciesImportFile=
tutti.title.create.cruise=Créer une nouvelle campagne
tutti.title.create.program=Créer une nouvelle série de campagne
1
0
r284 - in trunk/tutti-persistence-adagio/src: main/java/fr/ifremer/tutti/persistence/service main/resources test/java/fr/ifremer/tutti/persistence/service
by blavenier@users.forge.codelutin.com 01 Feb '13
by blavenier@users.forge.codelutin.com 01 Feb '13
01 Feb '13
Author: blavenier
Date: 2013-02-01 10:30:28 +0100 (Fri, 01 Feb 2013)
New Revision: 284
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/284
Log:
- getProgram return a program with a zone, or a program with a 'null' zone if location is not a zone.
Modified:
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceImpl.java
trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml
trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceTest.java
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceImpl.java 2013-02-01 07:40:14 UTC (rev 283)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceImpl.java 2013-02-01 09:30:28 UTC (rev 284)
@@ -99,34 +99,30 @@
@Override
public Program getProgram(String id) {
- Object[] source = queryUnique(
+ Iterator<Object[]> list = queryList(
"program",
- "programCode", StringType.INSTANCE, id);
+ "programCode", StringType.INSTANCE, id,
+ "locationLevelId", IntegerType.INSTANCE, enumeration.LOCATION_LEVEL_ID_PROGRAM,
+ "locationClassificationId", IntegerType.INSTANCE, enumeration.LOCATION_CLASSIFICATION_ID_SECTOR);
+
+ if (list.hasNext() == false) return null;
- if (source == null) return null;
+ // Keep only the first row (=the first location, if many found)
+ Object[] source = list.next();
Program result = new Program();
result.setId((String) source[0]);
result.setName((String) source[1]);
result.setComment((String) source[2]);
-
- // get program locations
- Iterator<Object[]> list = queryList(
- "allProgramLocations",
- "programCode", StringType.INSTANCE, id);
-
- List<Zone> zones = Lists.newArrayList();
- while (list.hasNext()) {
- Object[] zoneSource = list.next();
- Zone target = new Zone();
- target.setId(String.valueOf(zoneSource[0]));
- target.setLabel((String) zoneSource[1]);
- target.setName((String) zoneSource[2]);
- zones.add(target);
+
+ if (source[3] != null) {
+ Zone zone = new Zone();
+ zone.setId(String.valueOf(source[3]));
+ zone.setLabel((String) source[4]);
+ zone.setName((String) source[5]);
+
+ result.setZone(zone);
}
- if (!zones.isEmpty()) {
- result.setZone(zones.get(0));
- }
return result;
}
@@ -213,9 +209,6 @@
target.setDescription(source.getComment());
}
-
-
-
// Zone
if (copyIfNull && source.getZone() == null) {
// Remove program location classifications :
Modified: trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml
===================================================================
--- trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml 2013-02-01 07:40:14 UTC (rev 283)
+++ trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml 2013-02-01 09:30:28 UTC (rev 284)
@@ -65,22 +65,10 @@
<!-- [DAT-03] Get a detail program -->
<query name="program">
<![CDATA[
- SELECT
+ SELECT
p.code,
p.name,
- p.description
- FROM
- ProgramImpl p
- WHERE
- p.code = :programCode
- ]]>
- <query-param name="programCode" type="java.lang.String"/>
- </query>
-
- <!-- [DAT-03-1] Get a program locations -->
- <query name="allProgramLocations">
- <![CDATA[
- SELECT
+ p.description,
l.id,
l.label,
l.name
@@ -89,8 +77,17 @@
LEFT OUTER JOIN p.locations l
WHERE
p.code = :programCode
+ AND (
+ l is null OR (
+ l.locationLevel.id = :locationLevelId
+ AND l.locationClassification.id = :locationClassificationId
+ )
+ )
+ ORDER BY l.label
]]>
<query-param name="programCode" type="java.lang.String"/>
+ <query-param name="locationLevelId" type="java.lang.Integer"/>
+ <query-param name="locationClassificationId" type="java.lang.Integer"/>
</query>
<!-- [DAT-04] Get a detail cruise -->
Modified: trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceTest.java
===================================================================
--- trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceTest.java 2013-02-01 07:40:14 UTC (rev 283)
+++ trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceTest.java 2013-02-01 09:30:28 UTC (rev 284)
@@ -78,7 +78,8 @@
Assert.assertNotNull(actual);
Assert.assertNotNull(actual.getId());
Assert.assertNotNull(actual.getName());
- Assert.assertNotNull(actual.getZone());
+ //comment, because in test database, "CAM-CGFS" could have a location that is not a zone
+ //Assert.assertNotNull(actual.getZone());
Assert.assertEquals(programCode, actual.getId());
}
1
0
Author: tchemit
Date: 2013-02-01 08:40:14 +0100 (Fri, 01 Feb 2013)
New Revision: 283
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/283
Log:
fix pom
Modified:
trunk/tutti-ui-swing/pom.xml
Modified: trunk/tutti-ui-swing/pom.xml
===================================================================
--- trunk/tutti-ui-swing/pom.xml 2013-02-01 07:31:31 UTC (rev 282)
+++ trunk/tutti-ui-swing/pom.xml 2013-02-01 07:40:14 UTC (rev 283)
@@ -503,7 +503,7 @@
<descriptor>
src/main/assembly/full-linux-i586.xml
</descriptor>
- <!--descriptor>
+ <descriptor>
src/main/assembly/full-linux-x64.xml
</descriptor>
<descriptor>
@@ -511,7 +511,7 @@
</descriptor>
<descriptor>
src/main/assembly/full-windows-x64.xml
- </descriptor-->
+ </descriptor>
</descriptors>
</configuration>
</execution>
1
0
Author: tchemit
Date: 2013-02-01 08:31:31 +0100 (Fri, 01 Feb 2013)
New Revision: 282
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/282
Log:
fix dependencies
Modified:
trunk/tutti-persistence/pom.xml
Modified: trunk/tutti-persistence/pom.xml
===================================================================
--- trunk/tutti-persistence/pom.xml 2013-02-01 00:53:55 UTC (rev 281)
+++ trunk/tutti-persistence/pom.xml 2013-02-01 07:31:31 UTC (rev 282)
@@ -59,7 +59,7 @@
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
-
+
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
1
0
01 Feb '13
Author: tchemit
Date: 2013-02-01 01:53:55 +0100 (Fri, 01 Feb 2013)
New Revision: 281
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/281
Log:
use protocolPersistenceDriver in TuttiPersistence
use a file storage protocol persistence strategy
optimize dependencies + third parties
import / export protocol caracteristics
Added:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/entities/
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/entities/protocol/
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocolsTest.java
Modified:
trunk/pom.xml
trunk/tutti-persistence-adagio/pom.xml
trunk/tutti-persistence-adagio/src/license/THIRD-PARTY.properties
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioConfig.java
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioConfigOption.java
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.java
trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceTest.java
trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceTest.java
trunk/tutti-persistence-dev/src/license/THIRD-PARTY.properties
trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java
trunk/tutti-persistence/pom.xml
trunk/tutti-persistence/src/license/THIRD-PARTY.properties
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceService.java
trunk/tutti-service/pom.xml
trunk/tutti-service/src/license/THIRD-PARTY.properties
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportService.java
trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportAllCaracteristicAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolCaracteristicAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolCaracteristicAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/pom.xml 2013-02-01 00:53:55 UTC (rev 281)
@@ -281,7 +281,14 @@
<version>0.5.0</version>
</dependency>
+
<dependency>
+ <groupId>commons-dbcp</groupId>
+ <artifactId>commons-dbcp</artifactId>
+ <version>1.3</version>
+ </dependency>
+
+ <dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernateVersion}</version>
Modified: trunk/tutti-persistence/pom.xml
===================================================================
--- trunk/tutti-persistence/pom.xml 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-persistence/pom.xml 2013-02-01 00:53:55 UTC (rev 281)
@@ -71,6 +71,11 @@
</dependency>
<dependency>
+ <groupId>com.esotericsoftware.yamlbeans</groupId>
+ <artifactId>yamlbeans</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<scope>provided</scope>
@@ -82,6 +87,10 @@
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
</dependencies>
<build>
Modified: trunk/tutti-persistence/src/license/THIRD-PARTY.properties
===================================================================
--- trunk/tutti-persistence/src/license/THIRD-PARTY.properties 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-persistence/src/license/THIRD-PARTY.properties 2013-02-01 00:53:55 UTC (rev 281)
@@ -3,20 +3,22 @@
# Already used licenses in project :
# - BSD License
# - COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+# - Common Public License Version 1.0
# - Indiana University Extreme! Lab Software License, vesion 1.1.1
# - Lesser General Public License (LGPL) v 3.0
# - Lesser General Public License (LPGL)
# - Lesser General Public License (LPGL) v 2.1
# - MIT License
+# - New BSD License
# - Public Domain
# - The Apache Software License, Version 2.0
+# - license.txt
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
-#Sat Jan 19 08:25:52 CET 2013
+#Fri Feb 01 01:24:24 CET 2013
antlr--antlr--2.7.6=BSD License
commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0
dom4j--dom4j--1.6.1=BSD License
javax.transaction--jta--1.1=COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-regexp--regexp--1.3=The Apache Software License, Version 2.0
\ No newline at end of file
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-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-02-01 00:53:55 UTC (rev 281)
@@ -214,6 +214,9 @@
@Transactional(readOnly = false)
TuttiProtocol saveProtocol(TuttiProtocol bean);
+ @Transactional(readOnly = false)
+ void deleteProtocol(String id);
+
//------------------------------------------------------------------------//
//-- FishingOperation methods --//
//------------------------------------------------------------------------//
Added: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java (rev 0)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java 2013-02-01 00:53:55 UTC (rev 281)
@@ -0,0 +1,89 @@
+package fr.ifremer.tutti.persistence.entities.protocol;
+
+/*
+ * #%L
+ * Tutti :: Persistence API
+ * $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.esotericsoftware.yamlbeans.YamlConfig;
+import com.esotericsoftware.yamlbeans.YamlException;
+import com.esotericsoftware.yamlbeans.YamlReader;
+import com.esotericsoftware.yamlbeans.YamlWriter;
+import com.google.common.base.Charsets;
+import com.google.common.io.Closeables;
+import com.google.common.io.Files;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.IOException;
+import java.io.Reader;
+
+/**
+ * Helper classaround {@link TuttiProtocol}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class TuttiProtocols {
+
+ public static void toFile(TuttiProtocol protocol, File file) throws IOException {
+
+ String id = protocol.getId();
+
+ BufferedWriter fileWriter = Files.newWriter(file, Charsets.UTF_8);
+ try {
+ YamlWriter writer = new YamlWriter(fileWriter, createConfig());
+ writer.write(protocol);
+ writer.close();
+ fileWriter.close();
+ } catch (YamlException e) {
+ throw new IOException("Could not transform protocol " + id + " to file " + file, e);
+ } finally {
+ Closeables.closeQuietly(fileWriter);
+ }
+ }
+
+ public static TuttiProtocol fromFile(File file) throws IOException {
+
+
+ Reader fileReader = Files.newReader(file, Charsets.UTF_8);
+ try {
+ YamlReader reader = new YamlReader(fileReader, createConfig());
+ TuttiProtocol result = reader.read(TuttiProtocol.class);
+ fileReader.close();
+ return result;
+ } catch (YamlException e) {
+ throw new IOException("Could not import protocol from file " + file, e);
+ } finally {
+ Closeables.closeQuietly(fileReader);
+ }
+ }
+
+ protected static YamlConfig createConfig() {
+ YamlConfig result = new YamlConfig();
+ result.setClassTag(SpeciesProtocol.class.getSimpleName(),
+ SpeciesProtocol.class);
+ result.writeConfig.setAlwaysWriteClassname(false);
+ result.writeConfig.setWriteRootTags(false);
+ return result;
+ }
+}
Property changes on: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceService.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceService.java 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceService.java 2013-02-01 00:53:55 UTC (rev 281)
@@ -25,7 +25,6 @@
*/
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
-import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@@ -35,18 +34,24 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.3
*/
-@Transactional(readOnly = true)
+//@Transactional(readOnly = true)
public interface ProtocolPersistenceService {
List<String> getAllProtocolId();
+ List<String> getAllProtocolNames();
+
List<TuttiProtocol> getAllProtocol();
TuttiProtocol getProtocol(String id);
- @Transactional(readOnly = false)
+ // @Transactional(readOnly = false)
TuttiProtocol createProtocol(TuttiProtocol bean);
- @Transactional(readOnly = false)
+ // @Transactional(readOnly = false)
TuttiProtocol saveProtocol(TuttiProtocol bean);
+
+ // @Transactional(readOnly = false)
+ void deleteProtocol(String protocolId);
+
}
Added: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocolsTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocolsTest.java (rev 0)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocolsTest.java 2013-02-01 00:53:55 UTC (rev 281)
@@ -0,0 +1,234 @@
+package fr.ifremer.tutti.persistence.entities.protocol;
+
+/*
+ * #%L
+ * Tutti :: Persistence API
+ * $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.base.Charsets;
+import com.google.common.collect.Lists;
+import com.google.common.io.Files;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.SystemUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestName;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class TuttiProtocolsTest {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(TuttiProtocolsTest.class);
+
+
+ public static final String PROTOCOL_FILE_CONTENT =
+ "id: 1\n" +
+ "name: protocolName\n" +
+ "comment: Commentaire\n" +
+ "environmentPmfmId: \n" +
+ "- 114\n" +
+ "- 228\n" +
+ "- 821\n" +
+ "gearPmfmId: \n" +
+ "- 21\n" +
+ "- 22\n" +
+ "hydrologyPmfmId: []\n" +
+ "lengthClassesPmfmId: \n" +
+ "- 14\n" +
+ "- 18\n" +
+ "species: \n" +
+ "- !SpeciesProtocol\n" +
+ " id: 1\n" +
+ " calcifySampleEnabled: true\n" +
+ " lengthStepPmfmId: 1394\n" +
+ " maturityEnabled: true\n" +
+ " sexEnabled: true\n" +
+ " speciesId: 11242\n" +
+ " weightEnabled: true\n" +
+ "- !SpeciesProtocol\n" +
+ " id: 2\n" +
+ " ageEnabled: true\n" +
+ " calcifySampleEnabled: true\n" +
+ " countIfNoFrequencyEnabled: true\n" +
+ " lengthStepPmfmId: 323\n" +
+ " maturityEnabled: true\n" +
+ " sexEnabled: true\n" +
+ " sizeEnabled: true\n" +
+ " speciesId: 3835\n" +
+ " weightEnabled: true";
+
+
+ public static final long TIMESTAMP = System.nanoTime();
+
+ @Rule
+ public final TestName name = new TestName();
+
+ protected File datadirectory;
+
+ @Before
+ public void setUp() throws Exception {
+
+ datadirectory = getTestSpecificDirectory(getClass(),
+ name.getMethodName(),
+ null);
+ }
+
+ @Test
+ public void toFile() throws IOException {
+
+ File file = new File(datadirectory, "exportProtocol.yaml");
+
+ Files.createParentDirs(file);
+
+ Assert.assertFalse(file.exists());
+ TuttiProtocol protocol = createProtocolFixture();
+
+ TuttiProtocols.toFile(protocol, file);
+ Assert.assertTrue(file.exists());
+
+ String exportFileToString = Files.toString(file, Charsets.UTF_8).trim();
+ Assert.assertEquals(PROTOCOL_FILE_CONTENT, exportFileToString);
+ }
+
+ @Test
+ public void fromFile() throws IOException {
+
+ File file = new File(datadirectory, "importProtocol.yaml");
+
+ Files.createParentDirs(file);
+
+ Files.write(PROTOCOL_FILE_CONTENT, file, Charsets.UTF_8);
+
+ TuttiProtocol protocol = TuttiProtocols.fromFile(file);
+
+ Assert.assertNotNull(protocol);
+ Assert.assertEquals("1", protocol.getId());
+ Assert.assertEquals("protocolName", protocol.getName());
+ Assert.assertEquals("Commentaire", protocol.getComment());
+ Assert.assertEquals(Lists.newArrayList("14", "18"), protocol.getLengthClassesPmfmId());
+ Assert.assertEquals(Lists.newArrayList("114", "228", "821"), protocol.getEnvironmentPmfmId());
+ Assert.assertEquals(Lists.newArrayList("21", "22"), protocol.getGearPmfmId());
+ Assert.assertEquals(Lists.<String>newArrayList(), protocol.getHydrologyPmfmId());
+ Assert.assertNotNull(protocol.getSpecies());
+ Assert.assertEquals(2, protocol.getSpecies().size());
+ SpeciesProtocol sp1 = protocol.getSpecies().get(0);
+ Assert.assertNotNull(sp1);
+ Assert.assertEquals("1", sp1.getId());
+ Assert.assertEquals("11242", sp1.getSpeciesId());
+ Assert.assertEquals("1394", sp1.getLengthStepPmfmId());
+ Assert.assertFalse(sp1.isAgeEnabled());
+ Assert.assertTrue(sp1.isCalcifySampleEnabled());
+ Assert.assertFalse(sp1.isCountIfNoFrequencyEnabled());
+ Assert.assertTrue(sp1.isMaturityEnabled());
+ Assert.assertTrue(sp1.isSexEnabled());
+ Assert.assertFalse(sp1.isSizeEnabled());
+ Assert.assertTrue(sp1.isWeightEnabled());
+
+ SpeciesProtocol sp2 = protocol.getSpecies().get(1);
+ Assert.assertNotNull(sp2);
+ Assert.assertEquals("2", sp2.getId());
+ Assert.assertEquals("3835", sp2.getSpeciesId());
+ Assert.assertEquals("323", sp2.getLengthStepPmfmId());
+ Assert.assertTrue(sp2.isAgeEnabled());
+ Assert.assertTrue(sp2.isCalcifySampleEnabled());
+ Assert.assertTrue(sp2.isCountIfNoFrequencyEnabled());
+ Assert.assertTrue(sp2.isMaturityEnabled());
+ Assert.assertTrue(sp2.isSexEnabled());
+ Assert.assertTrue(sp2.isSizeEnabled());
+ Assert.assertTrue(sp2.isWeightEnabled());
+ }
+
+ private TuttiProtocol createProtocolFixture() {
+ TuttiProtocol protocol = new TuttiProtocol();
+ protocol.setId("1");
+ protocol.setName("protocolName");
+ protocol.setComment("Commentaire");
+ protocol.setLengthClassesPmfmId(Lists.newArrayList("14", "18"));
+ protocol.setEnvironmentPmfmId(Lists.newArrayList("114", "228", "821"));
+ protocol.setGearPmfmId(Lists.newArrayList("21", "22"));
+ protocol.setHydrologyPmfmId(Lists.<String>newArrayList());
+
+ protocol.setSpecies(Lists.<SpeciesProtocol>newArrayList());
+ SpeciesProtocol sp1 = new SpeciesProtocol();
+ sp1.setId("1");
+ sp1.setSpeciesId("11242");
+ sp1.setLengthStepPmfmId("1394");
+ sp1.setCalcifySampleEnabled(true);
+ sp1.setMaturityEnabled(true);
+ sp1.setSexEnabled(true);
+ sp1.setWeightEnabled(true);
+ protocol.addSpecies(sp1);
+
+ SpeciesProtocol sp2 = new SpeciesProtocol();
+ sp2.setId("2");
+ sp2.setSpeciesId("3835");
+ sp2.setLengthStepPmfmId("323");
+ sp2.setAgeEnabled(true);
+ sp2.setCalcifySampleEnabled(true);
+ sp2.setCountIfNoFrequencyEnabled(true);
+ sp2.setMaturityEnabled(true);
+ sp2.setSexEnabled(true);
+ sp2.setSizeEnabled(true);
+ sp2.setWeightEnabled(true);
+ protocol.addSpecies(sp2);
+ return protocol;
+ }
+
+ public static File getTestSpecificDirectory(Class<?> testClassName,
+ String methodName,
+ String classifier) {
+ // Trying to look for the temporary folder to store data for the test
+ String tempDirPath = System.getProperty("java.io.tmpdir");
+ if (tempDirPath == null) {
+ // can this really occur ?
+ tempDirPath = "";
+ if (log.isWarnEnabled()) {
+ log.warn("'\"java.io.tmpdir\" not defined");
+ }
+ }
+ File tempDirFile = SystemUtils.getJavaIoTmpDir();
+
+ // create the directory to store database data
+ String dataBasePath = testClassName.getName()
+ + File.separator // a directory with the test class name
+ + methodName; // a sub-directory with the method name
+
+ if (StringUtils.isNotBlank(classifier)) {
+ dataBasePath += classifier;
+ }
+ dataBasePath += '_'
+ + TIMESTAMP; // and a timestamp
+ File databaseFile = new File(tempDirFile, dataBasePath);
+ return databaseFile;
+ }
+
+}
Property changes on: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocolsTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-persistence-adagio/pom.xml
===================================================================
--- trunk/tutti-persistence-adagio/pom.xml 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-persistence-adagio/pom.xml 2013-02-01 00:53:55 UTC (rev 281)
@@ -69,10 +69,10 @@
<artifactId>guava</artifactId>
</dependency>
- <!--dependency>
+ <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
- </dependency-->
+ </dependency>
<dependency>
<groupId>commons-io</groupId>
@@ -80,6 +80,16 @@
</dependency>
<dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-dbcp</groupId>
+ <artifactId>commons-dbcp</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</dependency>
@@ -98,13 +108,17 @@
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jdbc</artifactId>
+ </dependency>
- <!--dependency>
+ <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
- <dependency>
+ <!--dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
Modified: trunk/tutti-persistence-adagio/src/license/THIRD-PARTY.properties
===================================================================
--- trunk/tutti-persistence-adagio/src/license/THIRD-PARTY.properties 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-persistence-adagio/src/license/THIRD-PARTY.properties 2013-02-01 00:53:55 UTC (rev 281)
@@ -22,9 +22,8 @@
# Please fill the missing licenses for dependencies :
#
#
-#Sat Jan 19 08:25:57 CET 2013
+#Fri Feb 01 01:24:26 CET 2013
antlr--antlr--2.7.6=BSD License
commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0
dom4j--dom4j--1.6.1=BSD License
javax.transaction--jta--1.1=COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-regexp--regexp--1.3=The Apache Software License, Version 2.0
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java 2013-02-01 00:53:55 UTC (rev 281)
@@ -315,6 +315,11 @@
}
@Override
+ public void deleteProtocol(String id) {
+ protocolService.deleteProtocol(id);
+ }
+
+ @Override
public TuttiProtocol createProtocol(TuttiProtocol bean) {
return protocolService.createProtocol(bean);
}
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioConfig.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioConfig.java 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioConfig.java 2013-02-01 00:53:55 UTC (rev 281)
@@ -64,6 +64,7 @@
public void initConfig(RessourceClassLoader resourceLoader) throws IOException {
try {
FileUtils.forceMkdir(getDbDirectory());
+ FileUtils.forceMkdir(getProtocolDirectory());
} catch (Exception e) {
throw new RuntimeException("Could not create directory", e);
}
@@ -107,6 +108,10 @@
return config.getOptionAsFile(TuttiPersistenceAdagioConfigOption.DB_DIRECTORY.getKey());
}
+ public File getProtocolDirectory() {
+ return config.getOptionAsFile(TuttiPersistenceAdagioConfigOption.PROTOCOL_DIRECTORY.getKey());
+ }
+
public File getDbName() {
return config.getOptionAsFile(TuttiPersistenceAdagioConfigOption.DB_NAME.getKey());
}
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioConfigOption.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioConfigOption.java 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioConfigOption.java 2013-02-01 00:53:55 UTC (rev 281)
@@ -46,6 +46,14 @@
true,
true),
+ PROTOCOL_DIRECTORY(
+ "tutti.persistence.protocol.directory",
+ "Répertoire où sont conservés les protocoles",
+ "${tutti.data.directory}/protocol",
+ File.class,
+ true,
+ true),
+
DB_CONFIGURATION_PATH(
"tutti.persistence.db.configurationPath",
"Chemin du fichier de configuration d'Adagio",
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.java 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.java 2013-02-01 00:53:55 UTC (rev 281)
@@ -24,12 +24,23 @@
* #L%
*/
+import com.google.common.collect.Lists;
+import fr.ifremer.tutti.persistence.config.TuttiPersistenceAdagioConfig;
+import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.beans.Binder;
+import org.nuiton.util.beans.BinderFactory;
import org.springframework.stereotype.Service;
+import java.io.File;
+import java.io.IOException;
+import java.util.Collection;
import java.util.List;
+import java.util.UUID;
/**
* @author tchemit <chemit(a)codelutin.com>
@@ -42,28 +53,176 @@
private static final Log log =
LogFactory.getLog(ProtocolPersistenceServiceImpl.class);
+ public static final String TUTTI_PROTOCOL_EXTENSION = "tuttiProtocol";
+
+ protected TuttiPersistenceAdagioConfig config;
+
+ public void setConfig(TuttiPersistenceAdagioConfig config) {
+ this.config = config;
+ }
+
@Override
public List<String> getAllProtocolId() {
- return null;
+
+ File protocolDirectory = config.getProtocolDirectory();
+ Collection<File> files = FileUtils.listFiles(
+ protocolDirectory,
+ new String[]{TUTTI_PROTOCOL_EXTENSION}, false);
+ List<String> result = Lists.newArrayListWithCapacity(files.size());
+ if (log.isDebugEnabled()) {
+ log.debug("Found " + files.size() + " protocol(s).");
+ }
+ int suffixLength = TUTTI_PROTOCOL_EXTENSION.length() + 1;
+ for (File file : files) {
+ String fileName = file.getName();
+ result.add(fileName.substring(0,
+ fileName.length() - suffixLength));
+ }
+ return result;
}
@Override
+ public List<String> getAllProtocolNames() {
+
+ List<String> result = Lists.newArrayList();
+ for (TuttiProtocol protocol : getAllProtocol()) {
+ result.add(protocol.getName());
+ }
+ return result;
+ }
+
+ @Override
public List<TuttiProtocol> getAllProtocol() {
- return null;
+ List<TuttiProtocol> result = Lists.newArrayList();
+ for (String id : getAllProtocolId()) {
+ TuttiProtocol protocol = getProtocol(id);
+ result.add(protocol);
+ }
+ return result;
}
@Override
public TuttiProtocol getProtocol(String id) {
- return null;
+ File file = getProtocolFile(id);
+ try {
+ TuttiProtocol result = TuttiProtocols.fromFile(file);
+ return result;
+ } catch (IOException e) {
+ throw new RuntimeException("Could not read protocol " + id + " from file " + file, e);
+ }
}
@Override
public TuttiProtocol createProtocol(TuttiProtocol bean) {
- return null;
+ Binder<TuttiProtocol, TuttiProtocol> protocolBinder =
+ BinderFactory.newBinder(TuttiProtocol.class);
+
+ TuttiProtocol result = new TuttiProtocol();
+ protocolBinder.copy(bean, result);
+ result.setId(UUID.randomUUID().toString());
+ result.setLengthClassesPmfmId(Lists.newArrayList(bean.getLengthClassesPmfmId()));
+ result.setEnvironmentPmfmId(Lists.newArrayList(bean.getEnvironmentPmfmId()));
+ result.setGearPmfmId(Lists.newArrayList(bean.getGearPmfmId()));
+ result.setHydrologyPmfmId(Lists.newArrayList(bean.getHydrologyPmfmId()));
+ Binder<SpeciesProtocol, SpeciesProtocol> speciesProtocolBinder =
+ BinderFactory.newBinder(SpeciesProtocol.class);
+ List<SpeciesProtocol> species = Lists.newArrayList();
+ for (SpeciesProtocol speciesProtocol : bean.getSpecies()) {
+ SpeciesProtocol s = new SpeciesProtocol();
+ speciesProtocolBinder.copy(speciesProtocol, s);
+ s.setId(UUID.randomUUID().toString());
+ species.add(s);
+ }
+ result.setSpecies(species);
+
+ String id = result.getId();
+
+ File file = getProtocolFile(id);
+ try {
+ TuttiProtocols.toFile(result, file);
+ return result;
+ } catch (IOException e) {
+ throw new RuntimeException(
+ "Could not write protocol " + id + " to file " + file, e);
+ }
}
@Override
public TuttiProtocol saveProtocol(TuttiProtocol bean) {
- return null;
+ String id = bean.getId();
+
+ File file = getProtocolFile(id);
+ try {
+ TuttiProtocols.toFile(bean, file);
+ return bean;
+ } catch (IOException e) {
+ throw new RuntimeException(
+ "Could not write protocol " + id + " to file " + file, e);
+ }
}
+
+ @Override
+ public void deleteProtocol(String protocolId) {
+ File file = getProtocolFile(protocolId);
+
+ try {
+ if (file.exists()) {
+ FileUtils.forceDelete(file);
+ }
+ } catch (IOException e) {
+ throw new RuntimeException(
+ "Could not delete protocol " + protocolId + " (file " + file + ")");
+ }
+ }
+
+
+// @Override
+// public void toFile(TuttiProtocol protocol, File file) throws IOException {
+//
+// String id = protocol.getId();
+//
+// BufferedWriter fileWriter = Files.newWriter(file, Charsets.UTF_8);
+// try {
+// YamlWriter writer = new YamlWriter(fileWriter, createConfig());
+// writer.write(protocol);
+// writer.close();
+// fileWriter.close();
+// } catch (YamlException e) {
+// throw new IOException("Could not transform protocol " + id + " to file " + file, e);
+// } finally {
+// Closeables.closeQuietly(fileWriter);
+// }
+// }
+//
+// @Override
+// public TuttiProtocol fromFile(File file) throws IOException {
+//
+//
+// Reader fileReader = Files.newReader(file, Charsets.UTF_8);
+// try {
+// YamlReader reader = new YamlReader(fileReader, createConfig());
+// TuttiProtocol result = reader.read(TuttiProtocol.class);
+// fileReader.close();
+// return result;
+// } catch (YamlException e) {
+// throw new IOException("Could not import protocol from file " + file, e);
+// } finally {
+// Closeables.closeQuietly(fileReader);
+// }
+// }
+//
+// protected YamlConfig createConfig() {
+// YamlConfig result = new YamlConfig();
+// result.setClassTag(SpeciesProtocol.class.getSimpleName(),
+// SpeciesProtocol.class);
+// result.writeConfig.setAlwaysWriteClassname(false);
+// result.writeConfig.setWriteRootTags(false);
+// return result;
+// }
+
+ protected File getProtocolFile(String id) {
+ File protocolDirectory = config.getProtocolDirectory();
+ File result = new File(protocolDirectory, id + "." + TUTTI_PROTOCOL_EXTENSION);
+ return result;
+ }
}
Modified: trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceTest.java
===================================================================
--- trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceTest.java 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceTest.java 2013-02-01 00:53:55 UTC (rev 281)
@@ -24,12 +24,18 @@
* #L%
*/
+import com.google.common.collect.Lists;
import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Ignore;
import org.junit.Test;
+import java.util.List;
+
/**
* @author tchemit <chemit(a)codelutin.com>
* @since 0.3
@@ -42,14 +48,59 @@
protected ProtocolPersistenceService service;
+ public static final String PROTOCOL_FILE_CONTENT =
+ "id: 1\n" +
+ "name: protocolName\n" +
+ "comment: Commentaire\n" +
+ "environmentPmfmId: \n" +
+ "- 114\n" +
+ "- 228\n" +
+ "- 821\n" +
+ "gearPmfmId: \n" +
+ "- 21\n" +
+ "- 22\n" +
+ "hydrologyPmfmId: []\n" +
+ "lengthClassesPmfmId: \n" +
+ "- 14\n" +
+ "- 18\n" +
+ "species: \n" +
+ "- !SpeciesProtocol\n" +
+ " id: 1\n" +
+ " calcifySampleEnabled: true\n" +
+ " lengthStepPmfmId: 1394\n" +
+ " maturityEnabled: true\n" +
+ " sexEnabled: true\n" +
+ " speciesId: 11242\n" +
+ " weightEnabled: true\n" +
+ "- !SpeciesProtocol\n" +
+ " id: 2\n" +
+ " ageEnabled: true\n" +
+ " calcifySampleEnabled: true\n" +
+ " countIfNoFrequencyEnabled: true\n" +
+ " lengthStepPmfmId: 323\n" +
+ " maturityEnabled: true\n" +
+ " sexEnabled: true\n" +
+ " sizeEnabled: true\n" +
+ " speciesId: 3835\n" +
+ " weightEnabled: true";
+
@Before
public void setUp() throws Exception {
service = TuttiPersistenceServiceLocator.getProtocolPersistenceService();
+ ((ProtocolPersistenceServiceImpl) service).setConfig(dbResource.getConfig());
}
@Test
public void getAllProtocol() {
+ List<TuttiProtocol> allProtocol = service.getAllProtocol();
+ Assert.assertTrue(allProtocol.isEmpty());
+
+ TuttiProtocol protocol = createProtocolFixture();
+ TuttiProtocol createdProtocol = service.createProtocol(protocol);
+ allProtocol = service.getAllProtocol();
+ Assert.assertFalse(allProtocol.isEmpty());
+ Assert.assertEquals(createdProtocol, allProtocol.get(0));
}
@Test
@@ -60,10 +111,75 @@
@Test
public void createProtocol(/*TuttiProtocol bean*/) {
+ TuttiProtocol protocol = createProtocolFixture();
+ TuttiProtocol createdProtocol = service.createProtocol(protocol);
+ Assert.assertNotNull(createdProtocol);
+ String id = createdProtocol.getId();
+ Assert.assertTrue(service.getAllProtocolId().contains(id));
+
}
@Test
public void saveProtocol(/*TuttiProtocol bean*/) {
+ TuttiProtocol protocol = createProtocolFixture();
+ TuttiProtocol createdProtocol = service.createProtocol(protocol);
+
+ Assert.assertNotNull(createdProtocol);
+ String id = createdProtocol.getId();
+ Assert.assertTrue(service.getAllProtocolId().contains(id));
+
+ TuttiProtocol savedProtocol = service.saveProtocol(createdProtocol);
+ Assert.assertNotNull(savedProtocol);
}
+
+ @Test
+ public void deleteProtocol() {
+
+ TuttiProtocol protocol = createProtocolFixture();
+ TuttiProtocol createdProtocol = service.createProtocol(protocol);
+ Assert.assertNotNull(createdProtocol);
+
+ String id = createdProtocol.getId();
+ Assert.assertTrue(service.getAllProtocolId().contains(id));
+
+ service.deleteProtocol(id);
+ Assert.assertFalse(service.getAllProtocolId().contains(id));
+ }
+
+ protected TuttiProtocol createProtocolFixture() {
+ TuttiProtocol protocol = new TuttiProtocol();
+ protocol.setId("1");
+ protocol.setName("protocolName");
+ protocol.setComment("Commentaire");
+ protocol.setLengthClassesPmfmId(Lists.newArrayList("14", "18"));
+ protocol.setEnvironmentPmfmId(Lists.newArrayList("114", "228", "821"));
+ protocol.setGearPmfmId(Lists.newArrayList("21", "22"));
+ protocol.setHydrologyPmfmId(Lists.<String>newArrayList());
+
+ protocol.setSpecies(Lists.<SpeciesProtocol>newArrayList());
+ SpeciesProtocol sp1 = new SpeciesProtocol();
+ sp1.setId("1");
+ sp1.setSpeciesId("11242");
+ sp1.setLengthStepPmfmId("1394");
+ sp1.setCalcifySampleEnabled(true);
+ sp1.setMaturityEnabled(true);
+ sp1.setSexEnabled(true);
+ sp1.setWeightEnabled(true);
+ protocol.addSpecies(sp1);
+
+ SpeciesProtocol sp2 = new SpeciesProtocol();
+ sp2.setId("2");
+ sp2.setSpeciesId("3835");
+ sp2.setLengthStepPmfmId("323");
+ sp2.setAgeEnabled(true);
+ sp2.setCalcifySampleEnabled(true);
+ sp2.setCountIfNoFrequencyEnabled(true);
+ sp2.setMaturityEnabled(true);
+ sp2.setSexEnabled(true);
+ sp2.setSizeEnabled(true);
+ sp2.setWeightEnabled(true);
+ protocol.addSpecies(sp2);
+ return protocol;
+ }
}
Modified: trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceTest.java
===================================================================
--- trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceTest.java 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceTest.java 2013-02-01 00:53:55 UTC (rev 281)
@@ -47,7 +47,6 @@
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
-import org.junit.Ignore;
import org.junit.Test;
import org.nuiton.util.ApplicationConfig;
Modified: trunk/tutti-persistence-dev/src/license/THIRD-PARTY.properties
===================================================================
--- trunk/tutti-persistence-dev/src/license/THIRD-PARTY.properties 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-persistence-dev/src/license/THIRD-PARTY.properties 2013-02-01 00:53:55 UTC (rev 281)
@@ -11,12 +11,10 @@
# - Lesser General Public License (LPGL) v 2.1
# - MIT License
# - New BSD License
-# - Public Domain
# - The Apache Software License, Version 2.0
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
-#Sat Jan 19 08:25:56 CET 2013
+#Fri Feb 01 01:24:25 CET 2013
commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0
-regexp--regexp--1.3=The Apache Software License, Version 2.0
Modified: trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java
===================================================================
--- trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java 2013-02-01 00:53:55 UTC (rev 281)
@@ -438,6 +438,14 @@
return result;
}
+ @Override
+ public void deleteProtocol(String id) {
+ List<IdAware> data = getData(TuttiProtocol.class.getName());
+ TuttiProtocol protocol = getProtocol(id);
+ data.remove(protocol);
+ persistToFile(TuttiProtocol.class.getName());
+ }
+
//------------------------------------------------------------------------//
//-- FishingOperation methods --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-service/pom.xml
===================================================================
--- trunk/tutti-service/pom.xml 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-service/pom.xml 2013-02-01 00:53:55 UTC (rev 281)
@@ -82,6 +82,16 @@
</dependency>
<dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
@@ -91,11 +101,6 @@
<artifactId>commons-logging</artifactId>
</dependency>
- <dependency>
- <groupId>com.esotericsoftware.yamlbeans</groupId>
- <artifactId>yamlbeans</artifactId>
- </dependency>
-
<!-- Logging -->
<dependency>
Modified: trunk/tutti-service/src/license/THIRD-PARTY.properties
===================================================================
--- trunk/tutti-service/src/license/THIRD-PARTY.properties 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-service/src/license/THIRD-PARTY.properties 2013-02-01 00:53:55 UTC (rev 281)
@@ -6,6 +6,7 @@
# - COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
# - Common Public License Version 1.0
# - Eclipse Public License - v 1.0
+# - GNU Library or Lesser General Public License
# - General Public License (GPL)
# - HSQLDB License
# - Indiana University Extreme! Lab Software License, vesion 1.1.1
@@ -22,9 +23,8 @@
# Please fill the missing licenses for dependencies :
#
#
-#Sat Jan 19 08:25:57 CET 2013
+#Fri Feb 01 01:24:27 CET 2013
antlr--antlr--2.7.6=BSD License
commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0
dom4j--dom4j--1.6.1=BSD License
javax.transaction--jta--1.1=COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-regexp--regexp--1.3=The Apache Software License, Version 2.0
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-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-02-01 00:53:55 UTC (rev 281)
@@ -48,6 +48,8 @@
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import fr.ifremer.tutti.persistence.entities.referential.Zone;
+import fr.ifremer.tutti.persistence.service.ProtocolPersistenceService;
+import fr.ifremer.tutti.persistence.service.ProtocolPersistenceServiceImpl;
import fr.ifremer.tutti.persistence.service.TuttiPersistenceServiceLocator;
import fr.ifremer.tutti.service.config.TuttiServiceConfig;
import org.apache.commons.io.IOUtils;
@@ -72,6 +74,8 @@
protected TuttiPersistence driver;
+ protected ProtocolPersistenceService protocolPersistenceService;
+
@Override
public void setServiceContext(TuttiServiceContext context) {
super.setServiceContext(context);
@@ -117,9 +121,6 @@
if (driverConfig.isDbExists()) {
// can use adagio driver
-
-// driverConfig.initConfig(context.getResourceLoader());
-
driver = TuttiPersistenceServiceLocator.getPersistenceService();
if (log.isInfoEnabled()) {
@@ -141,7 +142,10 @@
driver = devDriver;
}
-
+ //TODO: TC use driver
+ protocolPersistenceService = new ProtocolPersistenceServiceImpl();
+ //TuttiPersistenceServiceLocator.getProtocolPersistenceService();
+ ((ProtocolPersistenceServiceImpl) protocolPersistenceService).setConfig(driverConfig);
}
@Override
@@ -323,29 +327,34 @@
@Override
public List<String> getAllProtocolNames() {
- return devDriver.getAllProtocolNames();
+ return protocolPersistenceService.getAllProtocolNames();
}
@Override
public List<TuttiProtocol> getAllProtocol() {
- return devDriver.getAllProtocol();
+ return protocolPersistenceService.getAllProtocol();
}
@Override
public TuttiProtocol getProtocol(String id) {
- return devDriver.getProtocol(id);
+ return protocolPersistenceService.getProtocol(id);
}
@Override
public TuttiProtocol createProtocol(TuttiProtocol bean) {
- return devDriver.createProtocol(bean);
+ return protocolPersistenceService.createProtocol(bean);
}
@Override
public TuttiProtocol saveProtocol(TuttiProtocol bean) {
- return devDriver.saveProtocol(bean);
+ return protocolPersistenceService.saveProtocol(bean);
}
+ @Override
+ public void deleteProtocol(String id) {
+ protocolPersistenceService.deleteProtocol(id);
+ }
+
//------------------------------------------------------------------------//
//-- FishingOperation methods --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportService.java 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportService.java 2013-02-01 00:53:55 UTC (rev 281)
@@ -24,10 +24,6 @@
* #L%
*/
-import com.esotericsoftware.yamlbeans.YamlConfig;
-import com.esotericsoftware.yamlbeans.YamlException;
-import com.esotericsoftware.yamlbeans.YamlReader;
-import com.esotericsoftware.yamlbeans.YamlWriter;
import com.google.common.base.Charsets;
import com.google.common.base.Function;
import com.google.common.base.Preconditions;
@@ -36,8 +32,8 @@
import com.google.common.collect.TreeMultimap;
import com.google.common.io.Closeables;
import com.google.common.io.Files;
-import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.service.AbstractTuttiService;
import org.apache.commons.collections.CollectionUtils;
@@ -68,46 +64,12 @@
LogFactory.getLog(TuttiProtocolImportExportService.class);
public void exportProtocol(TuttiProtocol protocol, File file) throws IOException {
-
- YamlConfig config = createConfig();
-
- String id = protocol.getId();
-
- if (log.isInfoEnabled()) {
- log.info("Will export protocol: " + id + " to file: " + file);
- }
-
- BufferedWriter fileWriter = Files.newWriter(file, Charsets.UTF_8);
- try {
- YamlWriter writer = new YamlWriter(fileWriter, config);
- writer.write(protocol);
- writer.close();
- fileWriter.close();
- } catch (YamlException e) {
- throw new IOException("Could not export protocol " + id, e);
- } finally {
- Closeables.closeQuietly(fileWriter);
- }
+ TuttiProtocols.toFile(protocol, file);
}
public TuttiProtocol importProtocol(File file) throws IOException {
- if (log.isInfoEnabled()) {
- log.info("Will import protocol from file: " + file);
- }
-
- YamlConfig config = createConfig();
-
- Reader fileReader = Files.newReader(file, Charsets.UTF_8);
- try {
- YamlReader reader = new YamlReader(fileReader, config);
- TuttiProtocol result = reader.read(TuttiProtocol.class);
- fileReader.close();
- return result;
- } catch (YamlException e) {
- throw new IOException("Could not import protocol from file " + file, e);
- } finally {
- Closeables.closeQuietly(fileReader);
- }
+ TuttiProtocol result = TuttiProtocols.fromFile(file);
+ return result;
}
public void importProtocolCaracteristic(File file,
@@ -156,7 +118,7 @@
Closeables.closeQuietly(importer);
}
reader.close();
- } catch (YamlException e) {
+ } catch (Exception e) {
throw new IOException("Could not import protocol [" + protocol.getName() + "] caracteristic from file " + file, e);
} finally {
@@ -256,22 +218,13 @@
log.info("TODO");
}
fileReader.close();
- } catch (YamlException e) {
+ } catch (Exception e) {
throw new IOException("Could not import protocol [" + protocol.getName() + "] species from file " + file, e);
} finally {
Closeables.closeQuietly(fileReader);
}
}
- protected YamlConfig createConfig() {
- YamlConfig config = new YamlConfig();
- config.setClassTag(SpeciesProtocol.class.getSimpleName(),
- SpeciesProtocol.class);
- config.writeConfig.setAlwaysWriteClassname(false);
- config.writeConfig.setWriteRootTags(false);
- return config;
- }
-
protected char getCsvSeparator() {
return context.getConfig().getCsvSeparator();
}
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-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-02-01 00:53:55 UTC (rev 281)
@@ -3,6 +3,7 @@
tutti.config.data.directory=Répertoire de données de l'application. Vous pouvez utiliser l'expression ${tutti.data.directory} pour le référence dans d'autres propriétés de configuration (ex\: ${tutti.data.directory}/tmp).
tutti.config.license.organizationName=Nom de l'organisation dans la licence
tutti.config.tmp.directory=Répertoire temporaire utilisée par l'application (est nettoyé à chaque démarrage de l'application)
+tutti.csv.separator=
tutti.property.attachment=Pièce jointe
tutti.property.caracteristic=Caractéristique
tutti.property.codeMemo=Code Memo
Modified: trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties
===================================================================
--- trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties 2013-02-01 00:53:55 UTC (rev 281)
@@ -8,6 +8,7 @@
# - Common Public License Version 1.0
# - Eclipse Public License - v 1.0
# - GNU General Public License - Version 2 with the class path exception
+# - GNU Library or Lesser General Public License
# - General Public License (GPL)
# - HSQLDB License
# - LGPL 2.1
@@ -23,9 +24,8 @@
# Please fill the missing licenses for dependencies :
#
#
-#Sat Jan 19 08:26:02 CET 2013
+#Fri Feb 01 01:12:25 CET 2013
antlr--antlr--2.7.6=BSD License
commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0
dom4j--dom4j--1.6.1=BSD License
javax.transaction--jta--1.1=Common Development and Distribution License (CDDL) v1.0
-regexp--regexp--1.3=The Apache Software License, Version 2.0
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportAllCaracteristicAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportAllCaracteristicAction.java 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportAllCaracteristicAction.java 2013-02-01 00:53:55 UTC (rev 281)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.ui.swing.content.protocol;
+/*
+ * #%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.referential.Caracteristic;
import fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportService;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolCaracteristicAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolCaracteristicAction.java 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolCaracteristicAction.java 2013-02-01 00:53:55 UTC (rev 281)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.ui.swing.content.protocol;
+/*
+ * #%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.protocol.TuttiProtocol;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolCaracteristicAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolCaracteristicAction.java 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolCaracteristicAction.java 2013-02-01 00:53:55 UTC (rev 281)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.ui.swing.content.protocol;
+/*
+ * #%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.protocol.TuttiProtocol;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java 2013-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java 2013-02-01 00:53:55 UTC (rev 281)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.ui.swing.content.protocol;
+/*
+ * #%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.protocol.TuttiProtocol;
import fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
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-02-01 00:19:07 UTC (rev 280)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-02-01 00:53:55 UTC (rev 281)
@@ -332,6 +332,7 @@
tutti.table.species.sampleCategory.header.weight=Poids (kg)
tutti.timeeditor.H=H
tutti.title.about=À propos de Tutti
+tutti.title.choose.protocolCaracteristicExportFile=
tutti.title.choose.protocolCaracteristicImportFile=Choisir le fichier des caractéristiques à importer
tutti.title.choose.protocolExportFile=Choisir le fichier où exporter le protocole
tutti.title.choose.protocolImportFile=Choisir le fichier du protocole à importer
1
0
r280 - trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/synchro
by tchemit@users.forge.codelutin.com 01 Feb '13
by tchemit@users.forge.codelutin.com 01 Feb '13
01 Feb '13
Author: tchemit
Date: 2013-02-01 01:19:07 +0100 (Fri, 01 Feb 2013)
New Revision: 280
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/280
Log:
fix date
Modified:
trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeHelperTest.java
Modified: trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeHelperTest.java
===================================================================
--- trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeHelperTest.java 2013-01-31 15:40:58 UTC (rev 279)
+++ trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeHelperTest.java 2013-02-01 00:19:07 UTC (rev 280)
@@ -661,11 +661,9 @@
}
public static Date getDate(int year, int month, int day) {
- Date fromDate = DateUtils.setYears(
- DateUtils.setMonths(
- DateUtils.setDays(new Date(), day),
- month),
- year);
+ Date fromDate = DateUtils.setYears(new Date(), year);
+ fromDate = DateUtils.setMonths(fromDate, month);
+ fromDate = DateUtils.setDays(fromDate, day);
return fromDate;
}
1
0