r281 - in trunk: . tutti-persistence tutti-persistence/src/license tutti-persistence/src/main/java/fr/ifremer/tutti/persistence tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service tutti-persistence/src/test/java/fr/ifremer/tutti tutti-persistence/src/test/java/fr/ifremer/tutti/persistence tutti-persistence/src/test/java/fr/ifrem
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@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@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@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@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@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
participants (1)
-
tchemit@users.forge.codelutin.com