r371 - in trunk/nuiton-matrix/src: main/java/org/nuiton/math/matrix test/java/org/nuiton/math/matrix test/resources
Author: echatellier Date: 2011-06-01 10:52:36 +0200 (Wed, 01 Jun 2011) New Revision: 371 Url: http://nuiton.org/repositories/revision/nuiton-matrix/371 Log: Add new method to import from file and set matrix name automatically Added: trunk/nuiton-matrix/src/test/resources/matrix2dtest.csv trunk/nuiton-matrix/src/test/resources/matrix2dtest2 Modified: trunk/nuiton-matrix/src/main/java/org/nuiton/math/matrix/AbstractMatrixND.java trunk/nuiton-matrix/src/main/java/org/nuiton/math/matrix/MatrixND.java trunk/nuiton-matrix/src/test/java/org/nuiton/math/matrix/ImportExportMatrixTest.java Modified: trunk/nuiton-matrix/src/main/java/org/nuiton/math/matrix/AbstractMatrixND.java =================================================================== --- trunk/nuiton-matrix/src/main/java/org/nuiton/math/matrix/AbstractMatrixND.java 2011-06-01 08:40:32 UTC (rev 370) +++ trunk/nuiton-matrix/src/main/java/org/nuiton/math/matrix/AbstractMatrixND.java 2011-06-01 08:52:36 UTC (rev 371) @@ -25,6 +25,9 @@ package org.nuiton.math.matrix; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; import java.io.IOException; import java.io.Reader; import java.io.Writer; @@ -37,12 +40,14 @@ import org.apache.commons.collections.primitives.ArrayIntList; import org.apache.commons.collections.primitives.IntList; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.math.NumberUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.ArrayUtil; +import org.nuiton.util.FileUtil; /** * Abstract matrix class with all dimension and semantics support (but @@ -1186,6 +1191,42 @@ } /** + * Import depuis un reader au format CSV des données dans la matrice. + * + * @param reader le reader à importer + * @param origin le point à partir duquel il faut faire l'importation + * @param matrixName le nom de la matrice + * @throws IOException + */ + public void importCSV(Reader reader, int[] origin, String matrixName) throws IOException { + importCSV(reader, origin); + setName(matrixName); + } + + /** + * Import depuis un reader au format CSV des données dans la matrice. + * + * Call {importCSV(Reader, int[], String)} with file name as matrix name. + * + * @param file file to read + * @param origin le point à partir duquel il faut faire l'importation + * @throws IOException + */ + public void importCSV(File file, int[] origin) throws IOException { + Reader reader = null; + try { + reader = new BufferedReader(new FileReader(file)); + String matrixName = file.getName(); + if (matrixName.lastIndexOf('.') != -1) { // remove extension + matrixName = matrixName.substring(0, matrixName.lastIndexOf('.')); + } + importCSV(reader, origin, matrixName); + } finally { + IOUtils.closeQuietly(reader); + } + } + + /** * Import CSV file defined in Matrix ND format. * * @param reader reader containing content Modified: trunk/nuiton-matrix/src/main/java/org/nuiton/math/matrix/MatrixND.java =================================================================== --- trunk/nuiton-matrix/src/main/java/org/nuiton/math/matrix/MatrixND.java 2011-06-01 08:40:32 UTC (rev 370) +++ trunk/nuiton-matrix/src/main/java/org/nuiton/math/matrix/MatrixND.java 2011-06-01 08:52:36 UTC (rev 371) @@ -25,6 +25,7 @@ package org.nuiton.math.matrix; +import java.io.File; import java.io.IOException; import java.io.Reader; import java.io.Serializable; @@ -869,13 +870,34 @@ public boolean isSupportedCSV(); /** - * Import depuis un reader au format CSV des données dans la matrice + * Import depuis un reader au format CSV des données dans la matrice. * * @param reader le reader à importer * @param origin le point à partir duquel il faut faire l'importation * @throws IOException */ public void importCSV(Reader reader, int[] origin) throws IOException; + + /** + * Import depuis un reader au format CSV des données dans la matrice. + * + * @param reader le reader à importer + * @param origin le point à partir duquel il faut faire l'importation + * @param matrixName le nom de la matrice + * @throws IOException + */ + public void importCSV(Reader reader, int[] origin, String matrixName) throws IOException; + + /** + * Import depuis un reader au format CSV des données dans la matrice. + * + * Call {importCSV(Reader, int[], String)} with file name as matrix name. + * + * @param file file to read + * @param origin le point à partir duquel il faut faire l'importation + * @throws IOException + */ + public void importCSV(File file, int[] origin) throws IOException; /** * Export dans un writer au format CSV de la matrice Modified: trunk/nuiton-matrix/src/test/java/org/nuiton/math/matrix/ImportExportMatrixTest.java =================================================================== --- trunk/nuiton-matrix/src/test/java/org/nuiton/math/matrix/ImportExportMatrixTest.java 2011-06-01 08:40:32 UTC (rev 370) +++ trunk/nuiton-matrix/src/test/java/org/nuiton/math/matrix/ImportExportMatrixTest.java 2011-06-01 08:52:36 UTC (rev 371) @@ -25,12 +25,14 @@ package org.nuiton.math.matrix; +import java.io.File; import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import java.util.Arrays; import java.util.List; +import org.apache.commons.lang.StringUtils; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; @@ -337,4 +339,22 @@ MatrixND m = MatrixFactory.getInstance().create(new int[]{2, 2, 2}); m.importCSV(new StringReader(matrix3D), null); } + + /** + * Test l'import depuis un {@link File}. + * + * @throws IOException + */ + @Test + public void testImportMatrixFromFile() throws IOException { + MatrixND m = MatrixFactory.getInstance().create(new int[]{5, 6}); + + File testFile = new File(StringUtils.replace("src/test/resources/matrix2dtest.csv", "/", File.separator)); + m.importCSV(testFile, new int[] {0, 0}); + Assert.assertEquals("matrix2dtest", m.getName()); + + testFile = new File(StringUtils.replace("src/test/resources/matrix2dtest2", "/", File.separator)); + m.importCSV(testFile, new int[] {0, 0}); + Assert.assertEquals("matrix2dtest2", m.getName()); + } } Added: trunk/nuiton-matrix/src/test/resources/matrix2dtest.csv =================================================================== --- trunk/nuiton-matrix/src/test/resources/matrix2dtest.csv (rev 0) +++ trunk/nuiton-matrix/src/test/resources/matrix2dtest.csv 2011-06-01 08:52:36 UTC (rev 371) @@ -0,0 +1,10 @@ +10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;10000.0; +10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; +10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; +10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; +10000.0;10000.0;2000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; +10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; +10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; +10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; +10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; +10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;10000.0; Added: trunk/nuiton-matrix/src/test/resources/matrix2dtest2 =================================================================== --- trunk/nuiton-matrix/src/test/resources/matrix2dtest2 (rev 0) +++ trunk/nuiton-matrix/src/test/resources/matrix2dtest2 2011-06-01 08:52:36 UTC (rev 371) @@ -0,0 +1,10 @@ +10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;10000.0; +10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; +10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; +10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; +10000.0;10000.0;2000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; +10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; +10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; +10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; +10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;0.0; +10000.0;10000.0;10000.0;5000.0;10000.0;10000.0;10000.0;10000.0;10000.0;
participants (1)
-
echatellier@users.nuiton.org