r607 - in trunk/coser-business/src/main: java/fr/ifremer/coser/services java/fr/ifremer/coser/util resources/i18n
Author: chatellier Date: 2011-01-28 08:39:41 +0000 (Fri, 28 Jan 2011) New Revision: 607 Log: Fix stream progress buffer bug Added: trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressReader.java Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ImportService.java trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressStream.java trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ImportService.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/services/ImportService.java 2011-01-27 10:54:55 UTC (rev 606) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ImportService.java 2011-01-28 08:39:41 UTC (rev 607) @@ -63,7 +63,7 @@ import fr.ifremer.coser.storage.DataStorage; import fr.ifremer.coser.storage.MemoryDataStorage; import fr.ifremer.coser.util.ProgressMonitor; -import fr.ifremer.coser.util.ProgressStream; +import fr.ifremer.coser.util.ProgressReader; /** * File import/export service. @@ -129,10 +129,10 @@ try { InputStream stream = new FileInputStream(file); + Reader reader = new BufferedReader(new InputStreamReader(stream, CoserConstants.CSV_FILE_ENCODING)); if (progress != null) { - stream = new ProgressStream(stream, progress); + reader = new ProgressReader(reader, progress); } - Reader reader = new BufferedReader(new InputStreamReader(stream, CoserConstants.CSV_FILE_ENCODING)); csvReader = new CSVReader(reader, CoserConstants.CSV_SEPARATOR_CHAR); // check header Added: trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressReader.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressReader.java (rev 0) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressReader.java 2011-01-28 08:39:41 UTC (rev 607) @@ -0,0 +1,149 @@ +/* + * #%L + * + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2010 - 2011 Ifremer, Codelutin, Chatellier Eric + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser 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 Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ + +package fr.ifremer.coser.util; + +import java.io.IOException; +import java.io.Reader; +import java.nio.CharBuffer; + +/** + * Reader that notify read progression. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class ProgressReader extends Reader { + + /** Delegate reader */ + protected Reader delegateReader; + + /** Progress monitor notified. */ + protected ProgressMonitor delegateProgress; + + public ProgressReader(Reader delegateReader, ProgressMonitor delegateProgress) { + this.delegateReader = delegateReader; + this.delegateProgress = delegateProgress; + } + + /* + * @see java.io.Reader#read(char[], int, int) + */ + @Override + public int read(char[] cbuf, int off, int len) throws IOException { + int nb = delegateReader.read(cbuf, off, len); + if (nb != -1) { + delegateProgress.addCurrent(nb); + } + return nb; + } + + /* + * @see java.io.Reader#read(java.nio.CharBuffer) + */ + @Override + public int read(CharBuffer target) throws IOException { + int nb = delegateReader.read(target); + if (nb != -1) { + delegateProgress.addCurrent(nb); + } + return nb; + } + + /* + * @see java.io.Reader#read() + */ + @Override + public int read() throws IOException { + int nb = delegateReader.read(); + if (nb != -1) { + delegateProgress.addCurrent(nb); + } + return nb; + } + + /* + * @see java.io.Reader#read(char[]) + */ + @Override + public int read(char[] cbuf) throws IOException { + int nb = delegateReader.read(cbuf); + if (nb != -1) { + delegateProgress.addCurrent(nb); + } + return nb; + } + + /* + * @see java.io.Reader#skip(long) + */ + @Override + public long skip(long n) throws IOException { + return delegateReader.skip(n); + } + + /* + * @see java.io.Reader#ready() + */ + @Override + public boolean ready() throws IOException { + return delegateReader.ready(); + } + + /* + * @see java.io.Reader#markSupported() + */ + @Override + public boolean markSupported() { + return delegateReader.markSupported(); + } + + /* + * @see java.io.Reader#mark(int) + */ + @Override + public void mark(int readAheadLimit) throws IOException { + delegateReader.mark(readAheadLimit); + } + + /* + * @see java.io.Reader#reset() + */ + @Override + public void reset() throws IOException { + delegateReader.reset(); + } + + /* + * @see java.io.Reader#close() + */ + @Override + public void close() throws IOException { + delegateReader.close(); + } +} Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressReader.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressStream.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressStream.java 2011-01-27 10:54:55 UTC (rev 606) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/util/ProgressStream.java 2011-01-28 08:39:41 UTC (rev 607) @@ -57,15 +57,79 @@ public int read() throws IOException { int nb = delegateStream.read(); if (nb != -1) { - delegateProgress.addCurrent(1); + delegateProgress.addCurrent(nb); } return nb; } /* - * @see java.io.Reader#close() + * @see java.io.InputStream#read(byte[], int, int) */ @Override + public int read(byte[] b, int off, int len) throws IOException { + int nb = delegateStream.read(b, off, len); + if (nb != -1) { + delegateProgress.addCurrent(nb); + } + return nb; + } + + /* + * @see java.io.InputStream#read(byte[]) + */ + @Override + public int read(byte[] b) throws IOException { + int nb = delegateStream.read(b); + if (nb != -1) { + delegateProgress.addCurrent(nb); + } + return nb; + } + + /* + * @see java.io.InputStream#skip(long) + */ + @Override + public long skip(long n) throws IOException { + return delegateStream.skip(n); + } + + /* + * @see java.io.InputStream#available() + */ + @Override + public int available() throws IOException { + return delegateStream.available(); + } + + /* + * @see java.io.InputStream#mark(int) + */ + @Override + public synchronized void mark(int readlimit) { + delegateStream.mark(readlimit); + } + + /* + * @see java.io.InputStream#reset() + */ + @Override + public synchronized void reset() throws IOException { + delegateStream.reset(); + } + + /* + * @see java.io.InputStream#markSupported() + */ + @Override + public boolean markSupported() { + return delegateStream.markSupported(); + } + + /* + * @see java.io.InputStream#close() + */ + @Override public void close() throws IOException { delegateStream.close(); } Modified: trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties =================================================================== --- trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties 2011-01-27 10:54:55 UTC (rev 606) +++ trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties 2011-01-28 08:39:41 UTC (rev 607) @@ -69,7 +69,7 @@ coser.business.extract.projectAuthor=Auteur du projet \: coser.business.extract.projectComment=Commentaire du projet \: coser.business.extract.projectName=Nom du project \: -coser.business.extract.selectionNameNom de la s\u00E9lection \: +coser.business.extract.selectionName=Nom de la s\u00E9lection \: coser.business.line=Ligne coser.business.matrix.density=Densit\u00E9 coser.business.matrix.lengthstructure=Structures en taille
participants (1)
-
chatellierï¼ users.labs.libre-entreprise.org