This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 12408e1d65846a1ad084a6e12b54bb9450bb1f0b Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 1 14:42:02 2015 +0200 fix count lines of import files --- .../genericformat/GenericFormatArchive.java | 40 +++++++++++++--------- .../genericformat/GenericFormatArchiveTest.java | 38 ++++++++++++++++++++ .../GenericFormatImportServiceTest.java | 12 ++++++- .../GenericFormatImportServiceValidTest.java | 13 ++++++- .../genericFormat/test_countLines/oneEmptyLine.txt | 0 .../genericFormat/test_countLines/oneLine.txt | 1 + .../genericFormat/test_countLines/twoLines.txt | 2 ++ .../test_countLines/twoLines_secondEmpty.txt | 1 + .../genericFormat/test_countLines/zeroLines.txt | 0 9 files changed, 88 insertions(+), 19 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java index d02da4d..ede41b5 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchive.java @@ -31,7 +31,6 @@ import org.nuiton.jaxx.application.ApplicationIOUtil; import org.nuiton.jaxx.application.ApplicationTechnicalException; import org.nuiton.util.ZipUtil; -import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.LineNumberReader; @@ -377,7 +376,7 @@ public class GenericFormatArchive implements Serializable { throw new ApplicationTechnicalException("Could not explode zipfile " + archiveFile, e); } File[] files = workingDirectory.listFiles(); - if (files==null || files.length!=1) { + if (files == null || files.length != 1) { throw new ApplicationTechnicalException("Archive should contains onyl one directory"); } return files[0]; @@ -450,22 +449,10 @@ public class GenericFormatArchive implements Serializable { } else { - //FIXME The LineNumberReader can in some case be wrong, improve it - try (BufferedReader bufferedReader = Files.newBufferedReader(path, Charset.forName("UTF-8"))) { + int nbLines = countLines(path); + result = nbLines - 1; + countLines.put(archiveFilePath, result); - try (LineNumberReader lineNumberReader = new LineNumberReader(bufferedReader)) { - lineNumberReader.skip(Long.MAX_VALUE); - result = lineNumberReader.getLineNumber() - 1; - if (result == -1) { - result = 0; - } - countLines.put(archiveFilePath, result); - - } - - } catch (IOException e) { - throw new ApplicationTechnicalException("Could not read " + path.toFile().getName() + " file from archive " + archiveFile, e); - } } } @@ -474,4 +461,23 @@ public class GenericFormatArchive implements Serializable { } + protected static int countLines(Path path) { + + try (LineNumberReader reader = new LineNumberReader(Files.newBufferedReader(path, Charset.forName("UTF-8")))) { + String lastLine = null; + String line; + while ((line = reader.readLine()) != null) { + lastLine = line; + } + int cnt = reader.getLineNumber(); + if (lastLine != null && lastLine.trim().isEmpty()) { + cnt--; + } + return cnt; + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not read file " + path.toFile().getName(), e); + } + + } + } diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchiveTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchiveTest.java new file mode 100644 index 0000000..0e25f43 --- /dev/null +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatArchiveTest.java @@ -0,0 +1,38 @@ +package fr.ifremer.tutti.service.genericformat; + +import org.junit.Assert; +import org.junit.Test; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Paths; + +/** + * Created on 4/1/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public class GenericFormatArchiveTest { + + @Test + public void testCountLines() throws IOException { + + assertCountLines("src/test/resources/genericFormat/test_countLines/zeroLines.txt", 0); + assertCountLines("src/test/resources/genericFormat/test_countLines/oneEmptyLine.txt", 0); + assertCountLines("src/test/resources/genericFormat/test_countLines/oneLine.txt", 1); + assertCountLines("src/test/resources/genericFormat/test_countLines/twoLines_secondEmpty.txt", 1); + assertCountLines("src/test/resources/genericFormat/test_countLines/twoLines.txt", 2); + + } + + protected void assertCountLines(String filepath, int expected) throws IOException { + + File file = Paths.get(new File("").getAbsolutePath(), filepath).toFile(); + Assert.assertTrue("File " + file + " does not exists", file.exists()); + int actual = GenericFormatArchive.countLines(file.toPath()); + Assert.assertEquals("Sould have " + expected + " lines in file " + file, expected, actual); + + } + +} diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceTest.java index 9be2a0e..e494f3d 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceTest.java @@ -28,6 +28,7 @@ import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.referential.GearWithOriginalRankOrder; +import fr.ifremer.tutti.persistence.model.ProgramDataModel; import fr.ifremer.tutti.service.ServiceDbResource; import fr.ifremer.tutti.service.referential.ReferentialTemporaryGearService; import fr.ifremer.tutti.service.referential.ReferentialTemporaryPersonService; @@ -211,8 +212,17 @@ public class GenericFormatImportServiceTest extends GenericFormatImportServiceTe GenericFormatImportConfiguration importConfiguration = new GenericFormatImportConfiguration(); importConfiguration.setImportFile(archiveFile); - importConfiguration.setProgramId(programId); importConfiguration.setOverrideData(overrideData); + importConfiguration.setImportSpecies(true); + importConfiguration.setImportBenthos(true); + importConfiguration.setImportMarineLitter(true); + importConfiguration.setImportAccidentalCatch(true); + importConfiguration.setImportIndividualObservation(true); + importConfiguration.setImportAttachments(true); + importConfiguration.setUpdateCruises(true); + importConfiguration.setUpdateOperations(true); + ProgramDataModel dataModel = persistenceService.loadProgram(programId, true); + importConfiguration.setDataToExport(dataModel); File reportFile = getServiceDbResource().getConfig().newTempFile(archivName, ".pdf"); importConfiguration.setReportFile(reportFile); diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceValidTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceValidTest.java index b074ae6..50eb7d0 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceValidTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceValidTest.java @@ -26,6 +26,7 @@ package fr.ifremer.tutti.service.genericformat; import com.google.common.base.Joiner; import fr.ifremer.tutti.persistence.ProgressionModel; +import fr.ifremer.tutti.persistence.model.ProgramDataModel; import fr.ifremer.tutti.service.ServiceDbResource; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -1038,7 +1039,17 @@ public class GenericFormatImportServiceValidTest extends GenericFormatImportServ GenericFormatImportConfiguration importConfiguration = new GenericFormatImportConfiguration(); importConfiguration.setImportFile(archiveFile); - importConfiguration.setProgramId(programId); + + ProgramDataModel dataModel = persistenceService.loadProgram(programId, true); + importConfiguration.setDataToExport(dataModel); + importConfiguration.setImportSpecies(true); + importConfiguration.setImportBenthos(true); + importConfiguration.setImportMarineLitter(true); + importConfiguration.setImportAccidentalCatch(true); + importConfiguration.setImportIndividualObservation(true); + importConfiguration.setImportAttachments(true); + importConfiguration.setUpdateCruises(true); + importConfiguration.setUpdateOperations(true); File reportFile = getServiceDbResource().getConfig().newTempFile(archivName, ".pdf"); importConfiguration.setReportFile(reportFile); diff --git a/tutti-service/src/test/resources/genericFormat/test_countLines/oneEmptyLine.txt b/tutti-service/src/test/resources/genericFormat/test_countLines/oneEmptyLine.txt new file mode 100644 index 0000000..e69de29 diff --git a/tutti-service/src/test/resources/genericFormat/test_countLines/oneLine.txt b/tutti-service/src/test/resources/genericFormat/test_countLines/oneLine.txt new file mode 100644 index 0000000..8c7e5a6 --- /dev/null +++ b/tutti-service/src/test/resources/genericFormat/test_countLines/oneLine.txt @@ -0,0 +1 @@ +A \ No newline at end of file diff --git a/tutti-service/src/test/resources/genericFormat/test_countLines/twoLines.txt b/tutti-service/src/test/resources/genericFormat/test_countLines/twoLines.txt new file mode 100644 index 0000000..2fe4ab0 --- /dev/null +++ b/tutti-service/src/test/resources/genericFormat/test_countLines/twoLines.txt @@ -0,0 +1,2 @@ +A +B \ No newline at end of file diff --git a/tutti-service/src/test/resources/genericFormat/test_countLines/twoLines_secondEmpty.txt b/tutti-service/src/test/resources/genericFormat/test_countLines/twoLines_secondEmpty.txt new file mode 100644 index 0000000..f70f10e --- /dev/null +++ b/tutti-service/src/test/resources/genericFormat/test_countLines/twoLines_secondEmpty.txt @@ -0,0 +1 @@ +A diff --git a/tutti-service/src/test/resources/genericFormat/test_countLines/zeroLines.txt b/tutti-service/src/test/resources/genericFormat/test_countLines/zeroLines.txt new file mode 100644 index 0000000..e69de29 -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.