/** * */ package emlab.trend; import java.io.BufferedReader; import java.io.InputStreamReader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.neo4j.annotation.NodeEntity; import agentspring.trend.Trend; /** * @author E.J.L. Chappin * */ @NodeEntity public class CSVDataTrend implements Trend { Logger logger = LoggerFactory.getLogger(CSVDataTrend.class); private String filename; private String data; private void readData() { logger.warn("Trying to read CSV file: " + filename); data = new String(); // Save the data in a long String try { InputStreamReader inputStreamReader = new InputStreamReader(this.getClass().getResourceAsStream(filename)); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String line; while ((line = bufferedReader.readLine()) != null) { data = data.concat(line + ","); } bufferedReader.close(); } catch (Exception e) { logger.error("Couldn't read CSV file: " + filename); e.printStackTrace(); } this.persist(); } @Override public double getValue(long time) { // Process the data and save it in the double array String data = getData(); String[] vals = data.split(","); double[] doubleArrayData = new double[vals.length]; for (int i = 0; i <= vals.length - 1; i++) { doubleArrayData[i] = Double.parseDouble(vals[i]); } return doubleArrayData[(int) time]; } private String getData() { if (data != null) { return data; } else { readData(); return data; } } public String getFilename() { return filename; } public void setFilename(String filename) { this.filename = filename; } public void setData(String data) { this.data = data; } @Override public double getStart() { return 0; } @Override public void setStart(double start) { } }