4 package emlab.gen.trend;
6 import java.io.BufferedReader;
7 import java.io.InputStreamReader;
9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory;
11 import org.springframework.data.neo4j.annotation.NodeEntity;
12 import org.springframework.transaction.annotation.Transactional;
28 Logger logger = LoggerFactory.getLogger(TimeSeriesCSVReader.class);
30 private String filename;
32 private String delimiter;
34 private String variableName;
36 private void readSingleColumn() {
38 logger.warn(
"Trying to read single column CSV file: " + filename);
40 String data =
new String();
45 InputStreamReader inputStreamReader =
new InputStreamReader(this.getClass().getResourceAsStream(filename));
46 BufferedReader bufferedReader =
new BufferedReader(inputStreamReader);
50 while ((line = bufferedReader.readLine()) != null) {
51 data = data.concat(line +
",");
54 bufferedReader.close();
55 double[] timeSeries =
new double[lineCounter];
57 for (String s : data.split(
"[,]")) {
58 timeSeries[i] = Double.parseDouble(s);
61 setTimeSeries(timeSeries);
63 }
catch (Exception e) {
64 logger.error(
"Couldn't read CSV file: " + filename);
71 private void readVariableFromCSV() {
72 logger.warn(
"Trying to read variable " + variableName +
" from CSV file: " + filename +
" with delimiter "
78 InputStreamReader inputStreamReader =
new InputStreamReader(this.getClass().getResourceAsStream(filename));
79 BufferedReader bufferedReader =
new BufferedReader(inputStreamReader);
82 String[] lineContentSplit = null;
83 while ((line = bufferedReader.readLine()) != null) {
84 if (line.startsWith(variableName)) {
85 lineContentSplit = line.split(delimiter);
89 bufferedReader.close();
90 double[] timeSeries =
new double[lineContentSplit.length - 1];
92 for (String s : lineContentSplit) {
94 timeSeries[i - 1] = Double.parseDouble(s);
97 setTimeSeries(timeSeries);
100 }
catch (Exception e) {
101 logger.error(
"Couldn't read CSV file: " + filename);
108 public double getValue(
long time) {
109 if (getTimeSeries() == null)
110 if (variableName != null)
111 readVariableFromCSV();
114 return super.getValue(time);
117 public String getFilename() {
121 public void setFilename(String filename) {
122 this.filename = filename;
125 public String getDelimiter() {
129 public void setDelimiter(String delimiter) {
130 this.delimiter = delimiter;
133 public String getVariableName() {
137 public void setVariableName(String variable) {
138 this.variableName = variable;