1 package org.djutils.data;
2
3 import java.io.IOException;
4 import java.util.ArrayList;
5 import java.util.HashMap;
6 import java.util.List;
7 import java.util.Map;
8
9 import javax.xml.stream.XMLStreamException;
10
11 import org.djunits.unit.AbsoluteTemperatureUnit;
12 import org.djunits.unit.TimeUnit;
13 import org.djunits.value.vdouble.scalar.AbsoluteTemperature;
14 import org.djunits.value.vdouble.scalar.Time;
15 import org.djutils.data.csv.CSVData;
16 import org.djutils.data.csv.TSVData;
17 import org.djutils.data.json.JSONData;
18 import org.djutils.data.serialization.TextSerializationException;
19 import org.djutils.data.xml.XMLData;
20
21
22
23
24
25
26
27
28
29
30
31
32 public final class DataDemo
33 {
34
35
36
37 private DataDemo()
38 {
39
40 }
41
42
43
44
45
46
47
48
49 public static void main(final String[] args)
50 throws IOException, TextSerializationException, XMLStreamException
51 {
52 System.out.println("Example using java basic types");
53 example1();
54 System.out.println("Example using DJUNITS");
55 example2();
56 }
57
58
59
60
61
62
63
64 public static void example1() throws IOException, TextSerializationException, XMLStreamException
65 {
66 DataColumn<Integer> timeStamp = new SimpleDataColumn<>("timeStamp", "time rounded to nearest second", int.class);
67 DataColumn<Double> temperature = new SimpleDataColumn<>("temperature", "engine temperature in Celcius", double.class);
68 DataColumn<String> remark = new SimpleDataColumn<>("remark", "remark", String.class);
69 List<DataColumn<?>> columns = new ArrayList<>();
70 columns.add(timeStamp);
71 columns.add(temperature);
72 columns.add(remark);
73 ListDataTable table = new ListDataTable("engineTemperatureData", "engine temperature samples", columns);
74
75 System.out.println(table);
76
77 Object[] record = new Object[] { 600, 18.0, "starting engine" };
78 table.addRecord(record);
79
80 Map<String, Object> map = new HashMap<>();
81 map.put("remark", "leaving parking lot");
82 map.put("temperature", 28.5);
83 map.put("timeStamp", 660);
84 table.addRecordByColumnIds(map);
85
86 for (DataRecord dataRecord : table)
87 {
88 for (int column = 0; column < table.getNumberOfColumns(); column++)
89 {
90 System.out.println("column " + column + ": " + dataRecord.getValues()[column]);
91 }
92 }
93 for (DataRecord dataRecord : table)
94 {
95 System.out.println("timeStamp=" + dataRecord.getValue("timeStamp") + ", temperature="
96 + dataRecord.getValue("temperature") + ", " + dataRecord.getValue("remark"));
97 }
98
99 System.out.println("JSON");
100 JSONData.writeData("C:/Temp/example.json", table);
101
102 DataTable readBack = JSONData.readData("C:/Temp/example.json");
103 for (DataRecord dataRecord : readBack)
104 {
105 for (int column = 0; column < readBack.getNumberOfColumns(); column++)
106 {
107 System.out.println("column " + column + ": " + dataRecord.getValues()[column]);
108 }
109 }
110
111 System.out.println("XML");
112 XMLData.writeData("C:/Temp/example.xml", table);
113
114 readBack = XMLData.readData("C:/Temp/example.xml");
115 for (DataRecord dataRecord : readBack)
116 {
117 for (int column = 0; column < readBack.getNumberOfColumns(); column++)
118 {
119 System.out.println("column " + column + ": " + dataRecord.getValues()[column]);
120 }
121 }
122
123 System.out.println("CSV");
124 CSVData.writeData("C:/Temp/example.csv", "C:/Temp/example.csvm", table);
125
126 readBack = CSVData.readData("C:/Temp/example.csv", "C:/Temp/example.csvm");
127 for (DataRecord dataRecord : readBack)
128 {
129 for (int column = 0; column < readBack.getNumberOfColumns(); column++)
130 {
131 System.out.println("column " + column + ": " + dataRecord.getValues()[column]);
132 }
133 }
134
135 System.out.println("TSV");
136 TSVData.writeData("C:/Temp/example.tsv", "C:/Temp/example.tsvm", table);
137
138 readBack = TSVData.readData("C:/Temp/example.tsv", "C:/Temp/example.tsvm");
139 for (DataRecord dataRecord : readBack)
140 {
141 for (int column = 0; column < readBack.getNumberOfColumns(); column++)
142 {
143 System.out.println("column " + column + ": " + dataRecord.getValues()[column]);
144 }
145 }
146
147 table.addRecord(new Object[] { 720, Double.NaN, "can we store a NaN value?" });
148 table.addRecord(new Object[] { 780, Double.POSITIVE_INFINITY, "can we store positive infinity?" });
149 table.addRecord(new Object[] { 840, Double.NEGATIVE_INFINITY, "can we store negative infinity?" });
150 System.out.println("JSON");
151 JSONData.writeData("C:/Temp/example.json", table);
152
153 readBack = JSONData.readData("C:/Temp/example.json");
154 for (DataRecord dataRecord : readBack)
155 {
156 for (int column = 0; column < readBack.getNumberOfColumns(); column++)
157 {
158 System.out.println("column " + column + ": " + dataRecord.getValues()[column]);
159 }
160 }
161 CSVData.writeData("C:/Temp/example.csv", "C:/Temp/example.csvm", table);
162
163 }
164
165
166
167
168
169
170 public static void example2() throws IOException, TextSerializationException
171 {
172 DataColumn<Time> timeStamp = new SimpleDataColumn<>("timeStamp", "time rounded to nearest second", Time.class);
173 DataColumn<AbsoluteTemperature> temperature =
174 new SimpleDataColumn<>("temperature", "engine temperature in Celcius", AbsoluteTemperature.class);
175 DataColumn<String> remark = new SimpleDataColumn<>("remark", "remark", String.class);
176 List<DataColumn<?>> columns = new ArrayList<>();
177 columns.add(timeStamp);
178 columns.add(temperature);
179 columns.add(remark);
180 ListDataTable table = new ListDataTable("engineTemperatureData", "engine temperature samples", columns);
181
182 System.out.println(table);
183
184 Object[] record = new Object[] { new Time(600, TimeUnit.BASE_SECOND),
185 new AbsoluteTemperature(18.0, AbsoluteTemperatureUnit.DEGREE_CELSIUS), "starting engine" };
186 table.addRecord(record);
187
188 Map<String, Object> map = new HashMap<>();
189 map.put("remark", "leaving parking lot");
190 map.put("temperature", new AbsoluteTemperature(28.5, AbsoluteTemperatureUnit.DEGREE_CELSIUS));
191 map.put("timeStamp", new Time(660, TimeUnit.BASE_SECOND));
192 table.addRecordByColumnIds(map);
193
194 for (DataRecord dataRecord : table)
195 {
196 for (int column = 0; column < table.getNumberOfColumns(); column++)
197 {
198 System.out.println("column " + column + ": " + dataRecord.getValues()[column]);
199 }
200 }
201 for (DataRecord dataRecord : table)
202 {
203 System.out.println("timeStamp=" + dataRecord.getValue("timeStamp") + ", temperature="
204 + dataRecord.getValue("temperature") + ", " + dataRecord.getValue("remark"));
205 }
206
207 System.out.println("JSON");
208 JSONData.writeData("C:/Temp/example.json", table);
209
210 DataTable readBack = JSONData.readData("C:/Temp/example.json");
211 for (DataRecord dataRecord : readBack)
212 {
213 for (int column = 0; column < readBack.getNumberOfColumns(); column++)
214 {
215 System.out.println("column " + column + ": " + dataRecord.getValues()[column]);
216 }
217 }
218
219 }
220
221 }