package org.simantics.district.imports; 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.CSVFormat; import org.apache.commons.csv.CSVRecord; import org.simantics.db.Resource; 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; private int altElevationIndex = -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 supplytempIndex = -1; private int supplypressureIndex= -1; private int diameterIndex = -1; private int outerDiamterIndex = -1; private int nominalMassFlowIndex = -1; private int returnTempIndex = -1; private int returnPressureIndex = -1; private int deltaPressureIndex = -1; private int deltaTemperatureIndex = -1; private int heatPowerIndex = -1; private int nominalHeadMIndex = -1; private int nominalHeadBIndex = -1; private int nominalFlowIndex = -1; private int maximumHeadMIndex = -1; private int heatLoadDsIndex = -1; private int massFlowIndex = -1; private int volFlowIndex = -1; private int velocityIndex = -1; private int flowAreaIndex = -1; private int nominalPressureLossIndex = -1; private int edgeFlowAreaIndex = -1; private int kReturnIndex = -1; private int kSupplyIndex = -1; private int tGroundIndex = -1; private int idIndex = -1; private double edgePadding = 0.0001; // default private int valvePositionIndx = -1; private int addressIndex = -1; private int lengthIndex = -1; private int detailedGeometryIndex = -1; private int peakPowerIndex = -1; private int regionIndex = -1; private int pipeTypeIndex = -1; private int pipeCodeIndex = -1; private int installationYearIndex = -1; private int wallThicknessIndex = -1; private int insulationConductivityIndex = -1; private int pipeSizeDNIndex = -1; private int roughnessIndex = -1; private int structureIndex = -1; // 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, boolean readFirstAsHeader) throws IOException { if (source != null) return DistrictImportUtils.readRows(source, delimiter, readFirstAsHeader, 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, CSVFormat.newFormat(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 setSupplyTempIndex(int supplyTempIndex) { this.supplytempIndex = supplyTempIndex; } public int getSupplyTempIndex() { return supplytempIndex; } public void setSupplyPressureIndex(int supplyPressureIndex) { this.supplypressureIndex = supplyPressureIndex; } public int getSupplyPressureIndex() { return supplypressureIndex; } public void setReturnTempIndex(int returnTempIndex) { this.returnTempIndex = returnTempIndex; } public int getReturnTempIndex() { return returnTempIndex; } public void setReturnPressureIndex(int returnPressureIndex) { this.returnPressureIndex = returnPressureIndex; } public int getReturnPressureIndex() { return returnPressureIndex; } 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; } public void setDeltaPressureIndex(int parseInt) { this.deltaPressureIndex = parseInt; } public int getDeltaPressureIndex() { return deltaPressureIndex; } public void setDeltaTemperatureIndex(int parseInt) { this.deltaTemperatureIndex = parseInt; } public int getDeltaTemperatureIndex() { return deltaTemperatureIndex; } public void setHeatPowerIndex(int parseInt) { this.heatPowerIndex = parseInt; } public int getHeatPowerIndex() { return heatPowerIndex; } public void setNominalHeadMIndex(int parseInt) { this.nominalHeadMIndex = parseInt; } public int getNominalHeadMIndex() { return nominalHeadMIndex; } public void setNominalHeadBIndex(int parseInt) { this.nominalHeadBIndex = parseInt; } public int getNominalHeadBIndex() { return nominalHeadBIndex; } public void setNominalFlowIndex(int parseInt) { this.nominalFlowIndex = parseInt; } public int getNominalFlowIndex() { return nominalFlowIndex; } public void setMaximumHeadMIndex(int parseInt) { this.maximumHeadMIndex = parseInt; } public int getMaximumHeadMIndex() { return maximumHeadMIndex; } public void setHeatLoadDsIndex(int parseInt) { this.heatLoadDsIndex = parseInt; } public int getHeatLoadDsIndex() { return heatLoadDsIndex; } public void setMassFlowIndex(int parseInt) { this.massFlowIndex = parseInt; } public int getMassFlowIndex() { return massFlowIndex; } public void setVolFlowIndex(int parseInt) { this.volFlowIndex = parseInt; } public int getVolFlowIndex() { return volFlowIndex; } public void setVelocityIndex(int parseInt) { this.velocityIndex = parseInt; } public int getVelocityIndex() { return velocityIndex; } public void setFlowAreaIndex(int parseInt) { this.flowAreaIndex = parseInt; } public int getFlowAreaIndex() { return flowAreaIndex; } public void setNominalPressureLossIndex(int parseInt) { this.nominalPressureLossIndex = parseInt; } public int getNominalPressureLossIndex() { return nominalPressureLossIndex; } public void setEdgeFlowAreaIndex(int parseInt) { this.edgeFlowAreaIndex = parseInt; } public int getEdgeFlowAreaIndex() { return edgeFlowAreaIndex; } public void setKReturnIndex(int parseInt) { this.kReturnIndex = parseInt; } public int getkReturnIndex() { return kReturnIndex; } public void setKSupplyIndex(int parseInt) { this.kSupplyIndex = parseInt; } public int getkSupplyIndex() { return kSupplyIndex; } public void setTGroundIndex(int parseInt) { this.tGroundIndex = parseInt; } public int gettGroundIndex() { return tGroundIndex; } public int getIdIndex() { return idIndex; } public void setIdIndex(int idIndex) { this.idIndex = idIndex; } public void setEdgePadding(double edgePadding) { this.edgePadding = edgePadding; } public double getEdgePadding() { return edgePadding; } public void setValvePositionIndex(int valvePositionIndx) { this.valvePositionIndx = valvePositionIndx; } public int getValvePositionIndx() { return valvePositionIndx; } public void setAddressIndex(int parseInt) { this.addressIndex = parseInt; } public int getAddressIndex() { return addressIndex; } public int getLengthIndex() { return lengthIndex; } public void setLengthIndex(int lengthIndex) { this.lengthIndex = lengthIndex; } public void detailedGeometryIndex(int detailedGeometryIndex) { this.detailedGeometryIndex = detailedGeometryIndex; } public int getDetailedGeometryIndex() { return detailedGeometryIndex; } public int getAlternativeElevationIndex() { return altElevationIndex; } public void setAltElevationIndex(int parseInt) { this.altElevationIndex = parseInt; } public void setPeakPowerIndex(int parseInt) { this.peakPowerIndex = parseInt; } public int getPeakPowerIndex() { return peakPowerIndex; } public int getRegionIndex() { return regionIndex; } public void setRegionIndex(int regionIndex) { this.regionIndex = regionIndex; } public int getPipeTypeIndex() { return pipeTypeIndex; } public void setPipeTypeIndex(int pipeTypeIndex) { this.pipeTypeIndex = pipeTypeIndex; } public int getPipeCodeIndex() { return pipeCodeIndex; } public void setPipeCodeIndex(int pipeCodeIndex) { this.pipeCodeIndex = pipeCodeIndex; } public int getInstallationYearIndex() { return installationYearIndex; } public void setInstallationYearIndex(int installationYearIndex) { this.installationYearIndex = installationYearIndex; } public int getWallThicknessIndex() { return wallThicknessIndex; } public void setWallThicknessIndex(int wallThicknessIndex) { this.wallThicknessIndex = wallThicknessIndex; } public int getInsulationConductivityIndex() { return insulationConductivityIndex; } public void setInsulationConductivityIndex(int insulationConductivityIndex) { this.insulationConductivityIndex = insulationConductivityIndex; } public int getPipeSizeDNIndex() { return pipeSizeDNIndex; } public void setPipeSizeDNIndex(int pipeSizeDNIndex) { this.pipeSizeDNIndex = pipeSizeDNIndex; } public int getRoughnessIndex() { return roughnessIndex; } public void setRoughnessIndex(int roughnessIndex) { this.roughnessIndex = roughnessIndex; } public int getStructureIndex() { return structureIndex; } public void setStructureIndex(int structureIndex) { this.structureIndex = structureIndex; } }