package org.simantics.district.imports.ui; import java.io.IOException; import java.nio.file.Path; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.csv.CSVRecord; import org.simantics.db.Resource; import org.simantics.district.imports.DistrictImportUtils; import org.simantics.district.imports.DistrictImportUtils.CSVHeader; public class CSVImportModel { // First page fills these private Resource targetDiagram; private Path source; // Second page fills these private char delimiter; private boolean readFirstAsHeader = true; private Map delimiters; // private Path wktFile; // Vertex import private int xCoordIndex = -1; private int yCoordIndex = -1; private int zCoordIndex = -1; // Edge import private int startXCoordIndex = -1; private int startYCoordIndex = -1; private int startZCoordIndex = -1; private int endXCoordIndex = -1; private int endYCoordIndex = -1; private int endZCoordIndex = -1; // common private int componentMappingIndex = -1; private Map componentMappings = new HashMap<>(); private boolean isVertexImport; private String sourceCRS; private int tempIndex; private int pressureIndex; private int diameterIndex; private int outerDiamterIndex; private int nominalMassFlowIndex; // Third page public CSVImportModel() { delimiters = DistrictImportUtils.getSupportedCSVDelimiterFormats(); } public void setSource(Path source) { this.source = source; } public void setDelimiter(char delimiter) { this.delimiter = delimiter; } public void setReadFirstAsHeader(boolean read) { this.readFirstAsHeader = read; } public Path getSource() { return source; } public List getRows(int amount) throws IOException { if (source != null) return DistrictImportUtils.readRows(source, delimiter, amount); else return Collections.emptyList(); } public Map> getHeaderAndRows(int amount) throws IOException { if (source != null) return DistrictImportUtils.readCSVHeaderAndRows(source, delimiter, readFirstAsHeader, amount); else return Collections.emptyMap(); } public Map getHeader() throws IOException { Map header = null; if (source != null) header = DistrictImportUtils.readCSVHeader(source, delimiter, readFirstAsHeader); if (header == null) header = Collections.emptyMap(); return header; } public boolean getReadFirstAsHeader() { return readFirstAsHeader; } public String[] getDelimiterFormats() { return delimiters.keySet().toArray(new String[delimiters.size()]); } public void setDelimiterByLabel(String item) { setDelimiter(delimiters.get(item)); } public List> readRows(int amount) throws IOException { if (source != null) return DistrictImportUtils.readRows(source, delimiter, readFirstAsHeader, amount); else return Collections.emptyList(); } public char getDelimiter() { return delimiter; } // public Path getWKTFile() { // return wktFile; // } public int getXCoordIndex() { return xCoordIndex; } public void setXCoordIndex(int xCoordIndex) { this.xCoordIndex = xCoordIndex; } public int getYCoordIndex() { return yCoordIndex; } public void setYCoordIndex(int yCoordIndex) { this.yCoordIndex = yCoordIndex; } public int getZCoordIndex() { return zCoordIndex; } public void setZCoordIndex(int zCoordIndex) { this.zCoordIndex = zCoordIndex; } public int getComponentMappingIndex() { return componentMappingIndex; } public void setComponentMappingIndex(int componentMappingIndex) { this.componentMappingIndex = componentMappingIndex; } public void setParentDiagram(Resource diagram) { this.targetDiagram = diagram; } public Resource getParentDiagram() { return targetDiagram; } // public void setWKTFile(Path wktFile) { // this.wktFile = wktFile; // } public void setComponentMappings(String value, Resource resource) { componentMappings.put(value, resource); } public Map getComponentMappings() { return componentMappings; } public boolean isVertexImport() { return isVertexImport; } public void setVertexImport(boolean isVertexImport) { this.isVertexImport = isVertexImport; } public void setStartXCoordIndex(int parseInt) { this.startXCoordIndex = parseInt; } public int getStartXCoordIndex() { return startXCoordIndex; } public void setStartYCoordIndex(int parseInt) { this.startYCoordIndex = parseInt; } public int getStartYCoordIndex() { return startYCoordIndex; } public void setStartZCoordIndex(int parseInt) { this.startZCoordIndex = parseInt; } public int getStartZCoordIndex() { return startZCoordIndex; } public void setEndXCoordIndex(int parseInt) { this.endXCoordIndex = parseInt; } public int getEndXCoordIndex() { return endXCoordIndex; } public void setEndYCoordIndex(int parseInt) { this.endYCoordIndex = parseInt; } public int getEndYCoordIndex() { return endYCoordIndex; } public void setEndZCoordIndex(int parseInt) { this.endZCoordIndex = parseInt; } public int getEndZCoordIndex() { return endZCoordIndex; } public void setSourceCRS(String crs) { this.sourceCRS = crs; } public String getSourceCRS() { return sourceCRS; } public void setTempIndex(int tempIndex) { this.tempIndex = tempIndex; } public int getTempIndex() { return tempIndex; } public void setPressureIndex(int pressureIndex) { this.pressureIndex = pressureIndex; } public int getPressureIndex() { return pressureIndex; } public void setDiameterIndex(int parseInt) { this.diameterIndex = parseInt; } public int getDiameterIndex() { return diameterIndex; } public void setOuterDiameterIndex(int parseInt) { this.outerDiamterIndex = parseInt; } public int getOuterDiamterIndex() { return outerDiamterIndex; } public void setNominalMassFlowIndex(int parseInt) { this.nominalMassFlowIndex = parseInt; } public int getNominalMassFlowIndex() { return nominalMassFlowIndex; } }