/* * Copyright (C) 2014 TESIS DYNAware GmbH. * All rights reserved. Use is subject to license terms. * * This file is licensed under the Eclipse Public License v1.0, which accompanies this * distribution and is available at http://www.eclipse.org/legal/epl-v10.html. */ package de.tesis.dynaware.javafx.fancychart.data.formats; import java.util.Iterator; import java.util.SortedMap; import java.util.TreeMap; import ch.systemsx.cisd.hdf5.HDF5Factory; import ch.systemsx.cisd.hdf5.IHDF5SimpleReader; import ch.systemsx.cisd.hdf5.IHDF5SimpleWriter; public class Hdf5Dao { private static final String DATA_ID = "xy"; private static IHDF5SimpleWriter writer; private static IHDF5SimpleReader reader; public static SortedMap<Number, Number> importHdf5(String filePath) { reader = HDF5Factory.openForReading(filePath); double[][] hdf5Data = reader.readDoubleMatrix(DATA_ID); SortedMap<Number, Number> data = new TreeMap<>(); for (int i = 0; i < hdf5Data[0].length; i++) { double x = hdf5Data[0][i]; double y = hdf5Data[1][i]; Number key = new Double(x); Number value = new Double(y); data.put(key, value); } return data; } public static void exportHdf5(SortedMap<Number, Number> data, String filePath) { writer = HDF5Factory.open(filePath); int size = data.keySet().size(); double[][] dataArray = new double[2][size]; int counter = 0; Iterator<Number> iter = data.keySet().iterator(); while (iter.hasNext()) { Number x = iter.next(); Number y = data.get(x); if (x instanceof Double) { dataArray[0][counter] = ((Double) x).doubleValue(); } else if (x instanceof Long) { dataArray[0][counter] = ((Long) x).doubleValue(); } if (y instanceof Double) { dataArray[1][counter] = ((Double) y).doubleValue(); } else if (y instanceof Long) { dataArray[1][counter] = ((Long) y).doubleValue(); } counter++; } writer.writeDoubleMatrix(DATA_ID, dataArray); writer.close(); } }