/* * This file is part of JGrasstools (http://www.jgrasstools.org) * (C) HydroloGIS - www.hydrologis.com * * JGrasstools 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/>. */ package org.jgrasstools.gears.modules; import java.io.File; import java.net.URL; import java.util.HashMap; import org.jgrasstools.gears.io.timedependent.OmsTimeSeriesIteratorReader; import org.jgrasstools.gears.io.timedependent.OmsTimeSeriesIteratorWriter; import org.jgrasstools.gears.utils.HMTestCase; /** * Test {@link OmsTimeSeriesIteratorWriter}. * * @author Andrea Antonello (www.hydrologis.com) */ public class TestTimeSeriesIteratorWriter extends HMTestCase { public void testTimeSeriesIteratorWriter() throws Exception { String startDate = "2000-01-01 00:00"; String endDate = "2000-12-31 00:00"; String id = "ID"; int timeStep = 1440; URL dataUrl = this.getClass().getClassLoader().getResource("timeseriesiteratorreader_test.csv"); String dataPath = new File(dataUrl.toURI()).getAbsolutePath(); // setup reader OmsTimeSeriesIteratorReader reader = new OmsTimeSeriesIteratorReader(); reader.file = dataPath; reader.idfield = id; reader.tStart = startDate; reader.tEnd = endDate; reader.tTimestep = timeStep; reader.initProcess(); // setup writer File tempFile = File.createTempFile("test", "jgt"); OmsTimeSeriesIteratorWriter writer = new OmsTimeSeriesIteratorWriter(); writer.file = tempFile.getAbsolutePath(); writer.inTablename = "testrain"; writer.fileNovalue = "-9999.0"; writer.tStart = startDate; writer.tTimestep = timeStep; while( reader.doProcess ) { reader.nextRecord(); HashMap<Integer, double[]> id2ValueMap = reader.outData; // feed to writer writer.inData = id2ValueMap; writer.writeNextLine(); } writer.close(); reader.close(); // check written stuff reader = new OmsTimeSeriesIteratorReader(); reader.file = tempFile.getAbsolutePath(); reader.idfield = id; reader.tStart = startDate; reader.tEnd = endDate; reader.tTimestep = timeStep; reader.nextRecord(); // record 1: ,2000-01-01 00:00,-2.5,-2,-1.3,-1.1 HashMap<Integer, double[]> id2ValueMap = reader.outData; assertEquals(-2.5, id2ValueMap.get(1)[0]); assertEquals(-2.0, id2ValueMap.get(2)[0]); assertEquals(-1.3, id2ValueMap.get(3)[0]); assertEquals(-1.1, id2ValueMap.get(4)[0]); reader.nextRecord(); // record 2: ,2000-01-02 00:00,-2,2.6,3.9,3.4 id2ValueMap = reader.outData; assertEquals(-2.0, id2ValueMap.get(1)[0]); assertEquals(2.6, id2ValueMap.get(2)[0]); assertEquals(3.9, id2ValueMap.get(3)[0]); assertEquals(3.4, id2ValueMap.get(4)[0]); reader.close(); tempFile.delete(); } public void testTimeSeriesIteratorWriterComplex() throws Exception { String startDate = "2005-05-01 00:00"; String endDate = "2005-05-01 03:00"; String id = "ID"; int timeStep = 60; URL dataUrl = this.getClass().getClassLoader().getResource("timeseriesiteratorcomplexreader_test.csv"); String dataPath = new File(dataUrl.toURI()).getAbsolutePath(); // setup reader OmsTimeSeriesIteratorReader reader = new OmsTimeSeriesIteratorReader(); reader.file = dataPath; reader.idfield = id; reader.tStart = startDate; reader.tEnd = endDate; reader.tTimestep = timeStep; reader.initProcess(); // setup writer File tempFile = File.createTempFile("test", "jgt"); OmsTimeSeriesIteratorWriter writer = new OmsTimeSeriesIteratorWriter(); writer.file = tempFile.getAbsolutePath(); writer.inTablename = "testrain"; writer.fileNovalue = "-9999.0"; writer.tStart = startDate; writer.tTimestep = timeStep; while( reader.doProcess ) { reader.nextRecord(); HashMap<Integer, double[]> id2ValueMap = reader.outData; // feed to writer writer.inData = id2ValueMap; writer.writeNextLine(); } writer.close(); reader.close(); // check written stuff reader = new OmsTimeSeriesIteratorReader(); reader.file = tempFile.getAbsolutePath(); reader.idfield = id; reader.tStart = startDate; reader.tEnd = endDate; reader.tTimestep = timeStep; reader.nextRecord(); // record 1: ,2000-01-01 00:00,-2.5,-2,-1.3,-1.1 HashMap<Integer, double[]> id2ValueMap = reader.outData; assertEquals(8.64, id2ValueMap.get(1221)[0]); assertEquals(7.34, id2ValueMap.get(1221)[1]); assertEquals(7.16, id2ValueMap.get(1221)[2]); assertEquals(6.01, id2ValueMap.get(1221)[3]); assertEquals(3.03, id2ValueMap.get(1221)[4]); reader.nextRecord(); // record 2: ,2000-01-02 00:00,-2,2.6,3.9,3.4 id2ValueMap = reader.outData; assertEquals(5.95, id2ValueMap.get(1097)[0]); assertEquals(5.77, id2ValueMap.get(1097)[1]); assertEquals(5.59, id2ValueMap.get(1097)[2]); assertEquals(4.01, id2ValueMap.get(1097)[3]); assertEquals(2.39, id2ValueMap.get(1097)[4]); reader.close(); tempFile.delete(); } }