1 package org.simantics.district.imports.ui;
3 import java.io.IOException;
4 import java.nio.file.Path;
5 import java.util.Collections;
6 import java.util.HashMap;
10 import org.apache.commons.csv.CSVRecord;
11 import org.simantics.db.Resource;
12 import org.simantics.district.imports.DistrictImportUtils;
13 import org.simantics.district.imports.DistrictImportUtils.CSVHeader;
15 public class CSVImportModel {
17 // First page fills these
18 private Resource targetDiagram;
21 // Second page fills these
22 private char delimiter;
23 private boolean readFirstAsHeader = true;
24 private Map<String, Character> delimiters;
25 // private Path wktFile;
28 private int xCoordIndex = -1;
29 private int yCoordIndex = -1;
30 private int zCoordIndex = -1;
33 private int startXCoordIndex = -1;
34 private int startYCoordIndex = -1;
35 private int startZCoordIndex = -1;
36 private int endXCoordIndex = -1;
37 private int endYCoordIndex = -1;
38 private int endZCoordIndex = -1;
41 private int componentMappingIndex = -1;
42 private Map<String, Resource> componentMappings = new HashMap<>();
43 private boolean isVertexImport;
44 private String sourceCRS;
45 private int supplytempIndex = -1;
46 private int supplypressureIndex= -1;
47 private int diameterIndex = -1;
48 private int outerDiamterIndex = -1;
49 private int nominalMassFlowIndex = -1;
50 private int returnTempIndex = -1;
51 private int returnPressureIndex = -1;
52 private int deltaPressureIndex = -1;
53 private int deltaTemperatureIndex = -1;
54 private int heatPowerIndex = -1;
55 private int nominalHeadMIndex = -1;
56 private int nominalHeadBIndex = -1;
57 private int nominalFlowIndex = -1;
58 private int maximumHeadMIndex = -1;
59 private int heatLoadDsIndex = -1;
60 private int massFlowIndex = -1;
61 private int volFlowIndex = -1;
62 private int velocityIndex = -1;
63 private int flowAreaIndex = -1;
64 private int nominalPressureLossIndex = -1;
65 private int edgeFlowAreaIndex = -1;
66 private int kReturnIndex = -1;
67 private int kSupplyIndex = -1;
68 private int tGroundIndex = -1;
69 private int idIndex = -1;
70 private double edgePadding = 0.0001; // default
71 private int valvePositionIndx = -1;
72 private int addressIndex;
73 private int lengthIndex;
77 public CSVImportModel() {
78 delimiters = DistrictImportUtils.getSupportedCSVDelimiterFormats();
81 public void setSource(Path source) {
85 public void setDelimiter(char delimiter) {
86 this.delimiter = delimiter;
89 public void setReadFirstAsHeader(boolean read) {
90 this.readFirstAsHeader = read;
93 public Path getSource() {
97 public List<CSVRecord> getRows(int amount) throws IOException {
99 return DistrictImportUtils.readRows(source, delimiter, amount);
101 return Collections.emptyList();
104 public Map<CSVHeader, List<String>> getHeaderAndRows(int amount) throws IOException {
106 return DistrictImportUtils.readCSVHeaderAndRows(source, delimiter, readFirstAsHeader, amount);
108 return Collections.emptyMap();
111 public Map<String, Integer> getHeader() throws IOException {
112 Map<String, Integer> header = null;
114 header = DistrictImportUtils.readCSVHeader(source, delimiter, readFirstAsHeader);
116 header = Collections.emptyMap();
120 public boolean getReadFirstAsHeader() {
121 return readFirstAsHeader;
124 public String[] getDelimiterFormats() {
125 return delimiters.keySet().toArray(new String[delimiters.size()]);
128 public void setDelimiterByLabel(String item) {
129 setDelimiter(delimiters.get(item));
132 public List<Map<String, String>> readRows(int amount) throws IOException {
134 return DistrictImportUtils.readRows(source, delimiter, readFirstAsHeader, amount);
136 return Collections.emptyList();
139 public char getDelimiter() {
143 // public Path getWKTFile() {
147 public int getXCoordIndex() {
151 public void setXCoordIndex(int xCoordIndex) {
152 this.xCoordIndex = xCoordIndex;
155 public int getYCoordIndex() {
159 public void setYCoordIndex(int yCoordIndex) {
160 this.yCoordIndex = yCoordIndex;
163 public int getZCoordIndex() {
167 public void setZCoordIndex(int zCoordIndex) {
168 this.zCoordIndex = zCoordIndex;
171 public int getComponentMappingIndex() {
172 return componentMappingIndex;
175 public void setComponentMappingIndex(int componentMappingIndex) {
176 this.componentMappingIndex = componentMappingIndex;
179 public void setParentDiagram(Resource diagram) {
180 this.targetDiagram = diagram;
183 public Resource getParentDiagram() {
184 return targetDiagram;
187 // public void setWKTFile(Path wktFile) {
188 // this.wktFile = wktFile;
191 public void setComponentMappings(String value, Resource resource) {
192 componentMappings.put(value, resource);
195 public Map<String, Resource> getComponentMappings() {
196 return componentMappings;
199 public boolean isVertexImport() {
200 return isVertexImport;
203 public void setVertexImport(boolean isVertexImport) {
204 this.isVertexImport = isVertexImport;
207 public void setStartXCoordIndex(int parseInt) {
208 this.startXCoordIndex = parseInt;
211 public int getStartXCoordIndex() {
212 return startXCoordIndex;
215 public void setStartYCoordIndex(int parseInt) {
216 this.startYCoordIndex = parseInt;
219 public int getStartYCoordIndex() {
220 return startYCoordIndex;
223 public void setStartZCoordIndex(int parseInt) {
224 this.startZCoordIndex = parseInt;
227 public int getStartZCoordIndex() {
228 return startZCoordIndex;
231 public void setEndXCoordIndex(int parseInt) {
232 this.endXCoordIndex = parseInt;
235 public int getEndXCoordIndex() {
236 return endXCoordIndex;
239 public void setEndYCoordIndex(int parseInt) {
240 this.endYCoordIndex = parseInt;
243 public int getEndYCoordIndex() {
244 return endYCoordIndex;
247 public void setEndZCoordIndex(int parseInt) {
248 this.endZCoordIndex = parseInt;
251 public int getEndZCoordIndex() {
252 return endZCoordIndex;
255 public void setSourceCRS(String crs) {
256 this.sourceCRS = crs;
259 public String getSourceCRS() {
263 public void setSupplyTempIndex(int supplyTempIndex) {
264 this.supplytempIndex = supplyTempIndex;
267 public int getSupplyTempIndex() {
268 return supplytempIndex;
271 public void setSupplyPressureIndex(int supplyPressureIndex) {
272 this.supplypressureIndex = supplyPressureIndex;
275 public int getSupplyPressureIndex() {
276 return supplypressureIndex;
279 public void setReturnTempIndex(int returnTempIndex) {
280 this.returnTempIndex = returnTempIndex;
283 public int getReturnTempIndex() {
284 return returnTempIndex;
287 public void setReturnPressureIndex(int returnPressureIndex) {
288 this.returnPressureIndex = returnPressureIndex;
291 public int getReturnPressureIndex() {
292 return returnPressureIndex;
295 public void setDiameterIndex(int parseInt) {
296 this.diameterIndex = parseInt;
299 public int getDiameterIndex() {
300 return diameterIndex;
303 public void setOuterDiameterIndex(int parseInt) {
304 this.outerDiamterIndex = parseInt;
307 public int getOuterDiamterIndex() {
308 return outerDiamterIndex;
311 public void setNominalMassFlowIndex(int parseInt) {
312 this.nominalMassFlowIndex = parseInt;
315 public int getNominalMassFlowIndex() {
316 return nominalMassFlowIndex;
319 public void setDeltaPressureIndex(int parseInt) {
320 this.deltaPressureIndex = parseInt;
323 public int getDeltaPressureIndex() {
324 return deltaPressureIndex;
327 public void setDeltaTemperatureIndex(int parseInt) {
328 this.deltaTemperatureIndex = parseInt;
331 public int getDeltaTemperatureIndex() {
332 return deltaTemperatureIndex;
335 public void setHeatPowerIndex(int parseInt) {
336 this.heatPowerIndex = parseInt;
339 public int getHeatPowerIndex() {
340 return heatPowerIndex;
343 public void setNominalHeadMIndex(int parseInt) {
344 this.nominalHeadMIndex = parseInt;
347 public int getNominalHeadMIndex() {
348 return nominalHeadMIndex;
351 public void setNominalHeadBIndex(int parseInt) {
352 this.nominalHeadBIndex = parseInt;
355 public int getNominalHeadBIndex() {
356 return nominalHeadBIndex;
359 public void setNominalFlowIndex(int parseInt) {
360 this.nominalFlowIndex = parseInt;
363 public int getNominalFlowIndex() {
364 return nominalFlowIndex;
367 public void setMaximumHeadMIndex(int parseInt) {
368 this.maximumHeadMIndex = parseInt;
371 public int getMaximumHeadMIndex() {
372 return maximumHeadMIndex;
375 public void setHeatLoadDsIndex(int parseInt) {
376 this.heatLoadDsIndex = parseInt;
379 public int getHeatLoadDsIndex() {
380 return heatLoadDsIndex;
383 public void setMassFlowIndex(int parseInt) {
384 this.massFlowIndex = parseInt;
387 public int getMassFlowIndex() {
388 return massFlowIndex;
391 public void setVolFlowIndex(int parseInt) {
392 this.volFlowIndex = parseInt;
395 public int getVolFlowIndex() {
399 public void setVelocityIndex(int parseInt) {
400 this.velocityIndex = parseInt;
403 public int getVelocityIndex() {
404 return velocityIndex;
407 public void setFlowAreaIndex(int parseInt) {
408 this.flowAreaIndex = parseInt;
411 public int getFlowAreaIndex() {
412 return flowAreaIndex;
415 public void setNominalPressureLossIndex(int parseInt) {
416 this.nominalPressureLossIndex = parseInt;
419 public int getNominalPressureLossIndex() {
420 return nominalPressureLossIndex;
423 public void setEdgeFlowAreaIndex(int parseInt) {
424 this.edgeFlowAreaIndex = parseInt;
427 public int getEdgeFlowAreaIndex() {
428 return edgeFlowAreaIndex;
431 public void setKReturnIndex(int parseInt) {
432 this.kReturnIndex = parseInt;
435 public int getkReturnIndex() {
439 public void setKSupplyIndex(int parseInt) {
440 this.kSupplyIndex = parseInt;
443 public int getkSupplyIndex() {
447 public void setTGroundIndex(int parseInt) {
448 this.tGroundIndex = parseInt;
451 public int gettGroundIndex() {
455 public int getIdIndex() {
459 public void setIdIndex(int idIndex) {
460 this.idIndex = idIndex;
463 public void setEdgePapping(double edgePadding) {
464 this.edgePadding = edgePadding;
467 public double getEdgePadding() {
471 public void setValvePositionIndex(int valvePositionIndx) {
472 this.valvePositionIndx = valvePositionIndx;
475 public int getValvePositionIndx() {
476 return valvePositionIndx;
479 public void setAddressIndex(int parseInt) {
480 this.addressIndex = parseInt;
483 public int getAddressIndex() {
487 public int getLengthIndex() {
491 public void setLengthIndex(int lengthIndex) {
492 this.lengthIndex = lengthIndex;