import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
+import java.util.function.Consumer;
import org.apache.commons.csv.CSVRecord;
import org.eclipse.jface.dialogs.IPageChangeProvider;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
import org.geotools.referencing.CRS;
-import org.simantics.district.imports.ui.controls.DynamicComboFieldEditor;
+import org.simantics.district.imports.CSVImportModel;
+import org.simantics.district.network.ui.DynamicComboFieldEditor;
public class CSVImportWizardPage extends WizardPage {
// Common for vertex and edge
private DynamicComboFieldEditor componentMappingSelector;
- private DynamicComboFieldEditor labelSelector;
+ private DynamicComboFieldEditor idSelector;
// For vertex import
private DynamicComboFieldEditor xCoordSelector;
private DynamicComboFieldEditor yCoordSelector;
private DynamicComboFieldEditor zValueSelector;
+ private DynamicComboFieldEditor altElevationValueSelector;
+
+ private DynamicComboFieldEditor supplyTempValueSelector;
+ private DynamicComboFieldEditor returnTempValueSelector;
+ private DynamicComboFieldEditor supplyPressureValueSelector;
+ private DynamicComboFieldEditor returnPressureValueSelector;
+ private DynamicComboFieldEditor dpSelector;
+ private DynamicComboFieldEditor dtSelector;
+ private DynamicComboFieldEditor heatPowerSelector;
+ private DynamicComboFieldEditor peakPowerSelector;
+ private DynamicComboFieldEditor regionSelector;
+ private DynamicComboFieldEditor nominalHeadMSelector;
+ private DynamicComboFieldEditor nominalHeadBSelector;
+ private DynamicComboFieldEditor nominalFlowSelector;
+ private DynamicComboFieldEditor maximumHeadMSelector;
+ private DynamicComboFieldEditor heatLoadDsSelector;
+ private DynamicComboFieldEditor massFlowSelector;
+ private DynamicComboFieldEditor volFlowSelector;
+ private DynamicComboFieldEditor velocitySelector;
+ private DynamicComboFieldEditor flowAreaSelector;
+ private DynamicComboFieldEditor nominalPressureLossSelector;
+ private DynamicComboFieldEditor valvePositionSelector;
+ private DynamicComboFieldEditor addressSelector;
+ private DynamicComboFieldEditor lengthSelector;
// For edge import
private DynamicComboFieldEditor startXCoordSelector;
private DynamicComboFieldEditor endXCoordSelector;
private DynamicComboFieldEditor endYCoordSelector;
private DynamicComboFieldEditor endZValueSelector;
- private DynamicComboFieldEditor tempValueSelector;
- private DynamicComboFieldEditor pressureValueSelector;
+ private DynamicComboFieldEditor detailedGeometrySelector;
+ private DynamicComboFieldEditor pipeCodeSelector;
+ private DynamicComboFieldEditor installationYearSelector;
+ private DynamicComboFieldEditor wallThicknessSelector;
+ private DynamicComboFieldEditor insulationConductivitySelector;
+ private DynamicComboFieldEditor pipeSizeDNSelector;
+ private DynamicComboFieldEditor roughnessSelector;
+ private DynamicComboFieldEditor structureSelector;
+
+ private Text edgeConnectionPadding;
private DynamicComboFieldEditor outerDiameterSelector;
private DynamicComboFieldEditor diameterSelector;
private Button isVertexImport;
private Combo sourceCRSCombo;
+
+ private DynamicComboFieldEditor edgeFlowAreaSelector;
+
+ private DynamicComboFieldEditor kReturnSelector;
+
+ private DynamicComboFieldEditor kSupplySelector;
+
+ private DynamicComboFieldEditor tGroundSelector;
protected CSVImportWizardPage(CSVImportModel model) {
super("Import CSV Data");
delimiterCombo = new Combo(composite, SWT.DROP_DOWN | SWT.READ_ONLY);
delimiterCombo.setToolTipText("Select the delimiter that is used to separate elements in the CSV file");
- delimiterCombo.setItems(model.getDelimiterFormats());
+ String[] formats = model.getDelimiterFormats();
+ delimiterCombo.setItems(formats);
+ if (formats.length > 0)
+ delimiterCombo.select(0);
delimiterCombo.addSelectionListener(new SelectionListener() {
@Override
createEdgeIndexMappingField(indexMappingGroup);
createCommonIndexMappingField(indexMappingGroup);
+
+ if (!model.isVertexImport()) {
+ Label label = new Label(indexMappingGroup, SWT.NONE);
+ label.setText("Connection point padding");
+ GridDataFactory.fillDefaults().applyTo(label);
+ edgeConnectionPadding = new Text(indexMappingGroup, SWT.BORDER);
+ GridDataFactory.fillDefaults().applyTo(edgeConnectionPadding);
+ edgeConnectionPadding.setText("0.0001"); // default
+ edgeConnectionPadding.addModifyListener(new ModifyListener() {
+
+ @Override
+ public void modifyText(ModifyEvent e) {
+ try {
+ double padding = Double.parseDouble(edgeConnectionPadding.getText());
+ model.setEdgePadding(padding);
+ } catch (NumberFormatException ee) {
+ // ignore
+ }
+ }
+ });
+ }
}
private void createCommonIndexMappingField(Group parent) {
- componentMappingSelector = new DynamicComboFieldEditor("componentMapping", "Apros component mapping", parent);
- componentMappingSelector.addComboListener(new SelectionListener() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- widgetDefaultSelected(e);
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- model.setComponentMappingIndex(Integer.parseInt(componentMappingSelector.getValue()));
- validatePageComplete();
- }
- });
+ componentMappingSelector = createComboField("componentMapping", "Apros component mapping", model::setComponentMappingIndex, parent);
+ idSelector = createComboField("id", "ID", model::setIdIndex, parent);
+ regionSelector = createComboField("regionValue", "Region", model::setRegionIndex, parent);
}
- private void createVertexIndexMappingField(Group parent) {
- xCoordSelector = new DynamicComboFieldEditor("xCoord", "X Coordinate", parent);
- xCoordSelector.addComboListener(new SelectionListener() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- widgetDefaultSelected(e);
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- model.setXCoordIndex(Integer.parseInt(xCoordSelector.getValue()));
- validatePageComplete();
- }
- });
-
- yCoordSelector = new DynamicComboFieldEditor("yCoord", "Y Coordinate", parent);
- yCoordSelector.addComboListener(new SelectionListener() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- widgetDefaultSelected(e);
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- model.setYCoordIndex(Integer.parseInt(yCoordSelector.getValue()));
- validatePageComplete();
- }
- });
- zValueSelector = new DynamicComboFieldEditor("zValue", "Z Value", parent);
- zValueSelector.addComboListener(new SelectionListener() {
-
+ private DynamicComboFieldEditor createComboField(String name, String label, Consumer<Integer> setter, Group parent) {
+ DynamicComboFieldEditor selector = new DynamicComboFieldEditor(name, label, parent);
+ createSelectionListener(selector, setter);
+ return selector;
+ }
+
+ private void createSelectionListener(DynamicComboFieldEditor editor, Consumer<Integer> setter) {
+ editor.addComboListener(new SelectionListener() {
+
@Override
public void widgetSelected(SelectionEvent e) {
widgetDefaultSelected(e);
}
-
+
@Override
public void widgetDefaultSelected(SelectionEvent e) {
- model.setZCoordIndex(Integer.parseInt(zValueSelector.getValue()));
+ setter.accept(Integer.parseInt(editor.getValue()));
validatePageComplete();
}
});
- tempValueSelector = new DynamicComboFieldEditor("tempValue", "Temperature value", parent);
- tempValueSelector.addComboListener(new SelectionListener() {
+ }
- @Override
- public void widgetSelected(SelectionEvent e) {
- widgetDefaultSelected(e);
- }
+ private void createVertexIndexMappingField(Group parent) {
+ xCoordSelector = createComboField("xCoord", "X Coordinate", model::setXCoordIndex, parent);
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- model.setTempIndex(Integer.parseInt(tempValueSelector.getValue()));
- validatePageComplete();
- }
- });
- pressureValueSelector = new DynamicComboFieldEditor("pressureValue", "Pressure value", parent);
- pressureValueSelector.addComboListener(new SelectionListener() {
+ yCoordSelector = createComboField("yCoord", "Y Coordinate", model::setYCoordIndex, parent);
+ zValueSelector = createComboField("zValue", "Z Value", model::setZCoordIndex, parent);
- @Override
- public void widgetSelected(SelectionEvent e) {
- widgetDefaultSelected(e);
- }
+ altElevationValueSelector = createComboField("altElevation", "Alternative Elevation", model::setAltElevationIndex, parent);
+
+ supplyTempValueSelector = createComboField("tempValue", "Supply Temperature value", model::setSupplyTempIndex, parent);
+ returnTempValueSelector = createComboField("returnTempValue", "Return Temperature value", model::setReturnTempIndex, parent);
+ supplyPressureValueSelector = createComboField("pressureValue", "Supply Pressure value", model::setSupplyPressureIndex, parent);
+ returnPressureValueSelector = createComboField("returnPressureValue", "Return Pressure value", model::setReturnPressureIndex, parent);
+ dpSelector = createComboField("dpValue", "Delta pressure ", model::setDeltaPressureIndex, parent);
+ dtSelector = createComboField("dtValue", "Delta temperature ", model::setDeltaTemperatureIndex, parent);
+ heatPowerSelector = createComboField("heatPowerValue", "Heat Power", model::setHeatPowerIndex, parent);
+ peakPowerSelector = createComboField("peakPowerValue", "Peak Power", model::setPeakPowerIndex, parent);
+
+ nominalHeadMSelector = createComboField("nominalHeadMValue", "nominalHeadM", model::setNominalHeadMIndex, parent);
+ nominalHeadBSelector = createComboField("nominalHeadBValue", "nominalHeadB", model::setNominalHeadBIndex, parent);
+ nominalFlowSelector = createComboField("nominalFlowValue", "nominalFlow", model::setNominalFlowIndex, parent);
+
+ maximumHeadMSelector = createComboField("maximumHeadMValue", "maximumHeadM", model::setMaximumHeadMIndex, parent);
+ heatLoadDsSelector = createComboField("heatLoadDsValue", "heatLoadDs", model::setHeatLoadDsIndex, parent);
+ massFlowSelector = createComboField("massFlowValue", "massFlow", model::setMassFlowIndex, parent);
+ volFlowSelector = createComboField("volFlowValue", "volFlow", model::setVolFlowIndex, parent);
+ velocitySelector = createComboField("velocityValue", "velocity", model::setVelocityIndex, parent);
+ flowAreaSelector = createComboField("flowAreaValue", "flowArea", model::setFlowAreaIndex, parent);
+ nominalPressureLossSelector = createComboField("nominalPressureLossValue", "nominalPressureLoss", model::setNominalPressureLossIndex, parent);
+ valvePositionSelector = createComboField("valvePositionSelectorValue", "valvePositionSelector", model::setValvePositionIndex, parent);
+ addressSelector = createComboField("addressValue", "addressSelector", model::setAddressIndex, parent);
+
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- model.setPressureIndex(Integer.parseInt(pressureValueSelector.getValue()));
- validatePageComplete();
- }
- });
}
-
+
private void createEdgeIndexMappingField(Group parent) {
- startXCoordSelector = new DynamicComboFieldEditor("startxCoord", "Start X Coordinate", parent);
- startXCoordSelector.addComboListener(new SelectionListener() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- widgetDefaultSelected(e);
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- model.setStartXCoordIndex(Integer.parseInt(startXCoordSelector.getValue()));
- validatePageComplete();
- }
- });
-
- startYCoordSelector = new DynamicComboFieldEditor("startyCoord", "Start Y Coordinate", parent);
- startYCoordSelector.addComboListener(new SelectionListener() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- widgetDefaultSelected(e);
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- model.setStartYCoordIndex(Integer.parseInt(startYCoordSelector.getValue()));
- validatePageComplete();
- }
- });
- startZValueSelector = new DynamicComboFieldEditor("startzValue", "Start Z Value", parent);
- startZValueSelector.addComboListener(new SelectionListener() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- widgetDefaultSelected(e);
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- model.setStartZCoordIndex(Integer.parseInt(startZValueSelector.getValue()));
- validatePageComplete();
- }
- });
- endXCoordSelector = new DynamicComboFieldEditor("endxCoord", "End X Coordinate", parent);
- endXCoordSelector.addComboListener(new SelectionListener() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- widgetDefaultSelected(e);
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- model.setEndXCoordIndex(Integer.parseInt(endXCoordSelector.getValue()));
- validatePageComplete();
- }
- });
-
- endYCoordSelector = new DynamicComboFieldEditor("endyCoord", "End Y Coordinate", parent);
- endYCoordSelector.addComboListener(new SelectionListener() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- widgetDefaultSelected(e);
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- model.setEndYCoordIndex(Integer.parseInt(endYCoordSelector.getValue()));
- validatePageComplete();
- }
- });
- endZValueSelector = new DynamicComboFieldEditor("endzValue", "End Z Value", parent);
- endZValueSelector.addComboListener(new SelectionListener() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- widgetDefaultSelected(e);
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- model.setEndZCoordIndex(Integer.parseInt(endZValueSelector.getValue()));
- validatePageComplete();
- }
- });
- diameterSelector = new DynamicComboFieldEditor("diameterValue", "Diameter value", parent);
- diameterSelector.addComboListener(new SelectionListener() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- widgetDefaultSelected(e);
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- model.setDiameterIndex(Integer.parseInt(diameterSelector.getValue()));
- validatePageComplete();
- }
- });
- outerDiameterSelector = new DynamicComboFieldEditor("outerDiameterValue", "Outer Diameter value", parent);
- outerDiameterSelector.addComboListener(new SelectionListener() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- widgetDefaultSelected(e);
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- model.setOuterDiameterIndex(Integer.parseInt(outerDiameterSelector.getValue()));
- validatePageComplete();
- }
- });
- nominalMassFlowSelector = new DynamicComboFieldEditor("nominalMassFlowValue", "Nominal Mass Flow", parent);
- nominalMassFlowSelector.addComboListener(new SelectionListener() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- widgetDefaultSelected(e);
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- model.setNominalMassFlowIndex(Integer.parseInt(nominalMassFlowSelector.getValue()));
- validatePageComplete();
- }
- });
+// Composite paddingComposite = new Composite(parent, SWT.NONE);
+// GridLayoutFactory.fillDefaults().numColumns(2).applyTo(paddingComposite);
+ startXCoordSelector = createComboField("startxCoord", "Start X Coordinate", model::setStartXCoordIndex, parent);
+ startYCoordSelector = createComboField("startyCoord", "Start Y Coordinate", model::setStartYCoordIndex, parent);
+ startZValueSelector = createComboField("startzValue", "Start Z Value", model::setStartZCoordIndex, parent);
+
+ endXCoordSelector = createComboField("endxCoord", "End X Coordinate", model::setEndXCoordIndex, parent);
+ endYCoordSelector = createComboField("endyCoord", "End Y Coordinate", model::setEndYCoordIndex, parent);
+ endZValueSelector = createComboField("endzValue", "End Z Value", model::setEndZCoordIndex, parent);
+
+ pipeCodeSelector = createComboField("pipeCodeValue", "Pipe Code", model::setPipeCodeIndex, parent);
+
+ detailedGeometrySelector = createComboField("detailedGeometryValue", "Geometry", model::detailedGeometryIndex, parent);
+ diameterSelector = createComboField("diameterValue", "Diameter value", model::setDiameterIndex, parent);
+ outerDiameterSelector = createComboField("outerDiameterValue", "Outer Diameter value", model::setOuterDiameterIndex, parent);
+ nominalMassFlowSelector = createComboField("nominalMassFlowValue", "Nominal Mass Flow", model::setNominalMassFlowIndex, parent);
+ edgeFlowAreaSelector = createComboField("edgeFlowAreaValue", "Flow Area", model::setEdgeFlowAreaIndex, parent);
+ kReturnSelector = createComboField("kReturnValue", "K Return", model::setKReturnIndex, parent);
+ kSupplySelector = createComboField("kSupplyValue", "K Supply", model::setKSupplyIndex, parent);
+ tGroundSelector = createComboField("tGroundValue", "Temperature Ground", model::setTGroundIndex, parent);
+ lengthSelector = createComboField("lengthValue", "lengthSelector", model::setLengthIndex, parent);
+
+ pipeSizeDNSelector = createComboField("pipeSizeDNValue", "Pipe Size DN", model::setPipeSizeDNIndex, parent);
+ structureSelector = createComboField("structureValue", "Structure", model::setStructureIndex, parent);
+ installationYearSelector = createComboField("installationYearValue", "Installation Year", model::setInstallationYearIndex, parent);
+ wallThicknessSelector = createComboField("wallThicknessValue", "Wall Thickness", model::setWallThicknessIndex, parent);
+ insulationConductivitySelector = createComboField("insulationConductivityValue", "Insulation Conductivity", model::setInsulationConductivityIndex, parent);
+ roughnessSelector = createComboField("roughnessValue", "Roughness", model::setRoughnessIndex, parent);
}
private void updateCombos() {
- String[][] namesAndValues = new String[headerIndexAndValues.size()][];
+ String[][] namesAndValues = new String[headerIndexAndValues.size() + 1][];
- int i = 0;
+ namesAndValues[0] = new String[] {"", "-1"};
+ int i = 1;
for (Entry<Integer, String> entry : headerIndexAndValues.entrySet()) {
int key = entry.getKey();
String value = entry.getValue();
updateEdgeCombos(namesAndValues);
componentMappingSelector.updateCombo(namesAndValues);
+ idSelector.updateCombo(namesAndValues);
}
private void updateEdgeCombos(String[][] namesAndValues) {
endYCoordSelector.updateCombo(namesAndValues);
startZValueSelector.updateCombo(namesAndValues);
endZValueSelector.updateCombo(namesAndValues);
+ pipeCodeSelector.updateCombo(namesAndValues);
+ detailedGeometrySelector.updateCombo(namesAndValues);
diameterSelector.updateCombo(namesAndValues);
outerDiameterSelector.updateCombo(namesAndValues);
nominalMassFlowSelector.updateCombo(namesAndValues);
+ edgeFlowAreaSelector.updateCombo(namesAndValues);
+ kReturnSelector.updateCombo(namesAndValues);
+ kSupplySelector.updateCombo(namesAndValues);
+ tGroundSelector.updateCombo(namesAndValues);
+ lengthSelector.updateCombo(namesAndValues);
+ pipeSizeDNSelector.updateCombo(namesAndValues);
+ structureSelector.updateCombo(namesAndValues);
+ installationYearSelector.updateCombo(namesAndValues);
+ wallThicknessSelector.updateCombo(namesAndValues);
+ insulationConductivitySelector.updateCombo(namesAndValues);
+ roughnessSelector.updateCombo(namesAndValues);
}
private void updateVertexCombos(String[][] namesAndValues) {
xCoordSelector.updateCombo(namesAndValues);
yCoordSelector.updateCombo(namesAndValues);
zValueSelector.updateCombo(namesAndValues);
- pressureValueSelector.updateCombo(namesAndValues);
- tempValueSelector.updateCombo(namesAndValues);
+ altElevationValueSelector.updateCombo(namesAndValues);
+ supplyTempValueSelector.updateCombo(namesAndValues);
+ returnTempValueSelector.updateCombo(namesAndValues);
+ supplyPressureValueSelector.updateCombo(namesAndValues);
+ returnPressureValueSelector.updateCombo(namesAndValues);
+ dpSelector.updateCombo(namesAndValues);
+ dtSelector.updateCombo(namesAndValues);
+ heatPowerSelector.updateCombo(namesAndValues);
+ valvePositionSelector.updateCombo(namesAndValues);
+ nominalHeadMSelector.updateCombo(namesAndValues);
+ nominalHeadBSelector.updateCombo(namesAndValues);
+ nominalFlowSelector.updateCombo(namesAndValues);
+ maximumHeadMSelector.updateCombo(namesAndValues);
+ heatLoadDsSelector.updateCombo(namesAndValues);
+ massFlowSelector.updateCombo(namesAndValues);
+ volFlowSelector.updateCombo(namesAndValues);
+ velocitySelector.updateCombo(namesAndValues);
+ flowAreaSelector.updateCombo(namesAndValues);
+ nominalPressureLossSelector.updateCombo(namesAndValues);
+ addressSelector.updateCombo(namesAndValues);
}
+
+
private void updateHeaders() {
if (headerTable != null)
headerIndexAndValues.clear();
try {
- List<CSVRecord> rows = model.getRows(5);
+ List<CSVRecord> rows = model.getRows(5, false);
for (int k = 0; k < rows.size(); k++) {
CSVRecord row = rows.get(k);
if (model.isVertexImport())
setPageComplete(model.getXCoordIndex() != -1 && model.getYCoordIndex() != -1 && model.getComponentMappingIndex() != -1);
else
- setPageComplete(model.getStartXCoordIndex() != 1 && model.getStartYCoordIndex() != -1 && model.getEndXCoordIndex() != -1 && model.getEndYCoordIndex() != -1 && model.getComponentMappingIndex() != -1);
+ setPageComplete(model.getStartXCoordIndex() != -1 && model.getStartYCoordIndex() != -1 && model.getEndXCoordIndex() != -1 && model.getEndYCoordIndex() != -1 && model.getComponentMappingIndex() != -1);
}
}