Commit 219d36ea authored by Luna Riegel's avatar Luna Riegel
Browse files

Merge branch 'refs/heads/dev' into dev_advanced_db_management

# Conflicts:
#	CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/database/EmbeddedDatabaseHandler.java
parents 1c665219 5df59c7a
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>de.hft.stuttgart</groupId> <groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorParent</artifactId> <artifactId>CityDoctorParent</artifactId>
<version>3.18.0</version> <version>3.18.1</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<artifactId>CityDoctorGUI</artifactId> <artifactId>CityDoctorGUI</artifactId>
......
...@@ -3,7 +3,6 @@ package de.hft.stuttgart.citydoctor2.gui; ...@@ -3,7 +3,6 @@ package de.hft.stuttgart.citydoctor2.gui;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.file.Path;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
...@@ -11,14 +10,6 @@ import java.util.List; ...@@ -11,14 +10,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import de.hft.stuttgart.citydoctor2.parser.ProgressListener;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.control.Alert;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.control.Tooltip;
import javafx.stage.DirectoryChooser;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
...@@ -32,6 +23,7 @@ import de.hft.stuttgart.citydoctor2.check.Unit; ...@@ -32,6 +23,7 @@ import de.hft.stuttgart.citydoctor2.check.Unit;
import de.hft.stuttgart.citydoctor2.check.ValidationConfiguration; import de.hft.stuttgart.citydoctor2.check.ValidationConfiguration;
import de.hft.stuttgart.citydoctor2.checks.Checks; import de.hft.stuttgart.citydoctor2.checks.Checks;
import de.hft.stuttgart.citydoctor2.gui.tree.TreeRequirement; import de.hft.stuttgart.citydoctor2.gui.tree.TreeRequirement;
import de.hft.stuttgart.citydoctor2.parser.ProgressListener;
import de.hft.stuttgart.citydoctor2.utils.Localization; import de.hft.stuttgart.citydoctor2.utils.Localization;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.event.Event; import javafx.event.Event;
...@@ -39,6 +31,7 @@ import javafx.fxml.FXML; ...@@ -39,6 +31,7 @@ import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.control.ProgressBar; import javafx.scene.control.ProgressBar;
import javafx.scene.control.ScrollPane; import javafx.scene.control.ScrollPane;
...@@ -256,6 +249,15 @@ public class CheckDialog { ...@@ -256,6 +249,15 @@ public class CheckDialog {
}); });
schematronField.setText(ValidationConfiguration.CHECK_FOR_SOLID_XML); schematronField.setText(ValidationConfiguration.CHECK_FOR_SOLID_XML);
String configString = Settings.get(Settings.CONFIG);
if (configString != null) {
try {
applyConfig(ValidationConfiguration.loadValidationConfigFromString(configString));
} catch (IOException e) {
// failed to read config, ignore as default values are still available
}
}
} }
private void setupValueColumns(List<TableColumn<GlobalParameter, ?>> columns) { private void setupValueColumns(List<TableColumn<GlobalParameter, ?>> columns) {
...@@ -319,7 +321,7 @@ public class CheckDialog { ...@@ -319,7 +321,7 @@ public class CheckDialog {
if (f != null) { if (f != null) {
Settings.set(Settings.LAST_OPEN_FOLDER, f.getParent()); Settings.set(Settings.LAST_OPEN_FOLDER, f.getParent());
try { try {
ValidationConfiguration config = ValidationConfiguration.loadValidationConfig(f.getAbsolutePath()); ValidationConfiguration config = ValidationConfiguration.loadValidationConfigFile(f.getAbsolutePath());
applyConfig(config); applyConfig(config);
} catch (IOException e) { } catch (IOException e) {
window.showExceptionDialog(e); window.showExceptionDialog(e);
...@@ -440,9 +442,15 @@ public class CheckDialog { ...@@ -440,9 +442,15 @@ public class CheckDialog {
private void setupCheckButton() { private void setupCheckButton() {
checkBtn.setOnAction(ea -> { checkBtn.setOnAction(ea -> {
ValidationConfiguration config = createConfig();
checkBtn.setDisable(true); checkBtn.setDisable(true);
cancelBtn.setDisable(true); cancelBtn.setDisable(true);
ValidationConfiguration config = createConfig();
try {
String configString = config.saveAsString();
Settings.set(Settings.CONFIG, configString);
} catch (IOException e) {
// failed to save config, ignore
}
stage.setOnCloseRequest(Event::consume); stage.setOnCloseRequest(Event::consume);
Thread t = new Thread(() -> { Thread t = new Thread(() -> {
......
package de.hft.stuttgart.citydoctor2.gui; package de.hft.stuttgart.citydoctor2.gui;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Stream;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.citygml4j.core.model.core.CityModel;
import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.Checker; import de.hft.stuttgart.citydoctor2.check.Checker;
import de.hft.stuttgart.citydoctor2.check.ErrorId; import de.hft.stuttgart.citydoctor2.check.ErrorId;
import de.hft.stuttgart.citydoctor2.check.ValidationConfiguration; import de.hft.stuttgart.citydoctor2.check.ValidationConfiguration;
import de.hft.stuttgart.citydoctor2.check.error.SchematronError;
import de.hft.stuttgart.citydoctor2.database.UnconnectedCache; import de.hft.stuttgart.citydoctor2.database.UnconnectedCache;
import de.hft.stuttgart.citydoctor2.datastructure.*; import de.hft.stuttgart.citydoctor2.datastructure.AbstractBuilding;
import de.hft.stuttgart.citydoctor2.datastructure.AbstractFurniture;
import de.hft.stuttgart.citydoctor2.datastructure.AbstractRoom;
import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface;
import de.hft.stuttgart.citydoctor2.datastructure.BoundingBox;
import de.hft.stuttgart.citydoctor2.datastructure.BridgeConstructiveElement;
import de.hft.stuttgart.citydoctor2.datastructure.BridgeObject;
import de.hft.stuttgart.citydoctor2.datastructure.Building;
import de.hft.stuttgart.citydoctor2.datastructure.BuildingConstructiveElement;
import de.hft.stuttgart.citydoctor2.datastructure.BuildingPart;
import de.hft.stuttgart.citydoctor2.datastructure.BuildingUnit;
import de.hft.stuttgart.citydoctor2.datastructure.CityDoctorModel;
import de.hft.stuttgart.citydoctor2.datastructure.CityFurniture;
import de.hft.stuttgart.citydoctor2.datastructure.CityObject;
import de.hft.stuttgart.citydoctor2.datastructure.FeatureType;
import de.hft.stuttgart.citydoctor2.datastructure.GenericCityObject;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
import de.hft.stuttgart.citydoctor2.datastructure.GmlId;
import de.hft.stuttgart.citydoctor2.datastructure.Installation;
import de.hft.stuttgart.citydoctor2.datastructure.Opening;
import de.hft.stuttgart.citydoctor2.datastructure.Storey;
import de.hft.stuttgart.citydoctor2.datastructure.TopLevelTransportFeature;
import de.hft.stuttgart.citydoctor2.datastructure.TrafficAreaObject;
import de.hft.stuttgart.citydoctor2.datastructure.TrafficSpaceObject;
import de.hft.stuttgart.citydoctor2.datastructure.TransportSection;
import de.hft.stuttgart.citydoctor2.datastructure.TransportationObject;
import de.hft.stuttgart.citydoctor2.datastructure.TransportationSpace;
import de.hft.stuttgart.citydoctor2.datastructure.Tunnel;
import de.hft.stuttgart.citydoctor2.datastructure.TunnelConstructiveElement;
import de.hft.stuttgart.citydoctor2.datastructure.TunnelPart;
import de.hft.stuttgart.citydoctor2.datastructure.Vegetation;
import de.hft.stuttgart.citydoctor2.datastructure.WaterObject;
import de.hft.stuttgart.citydoctor2.exceptions.CityDoctorWriteException; import de.hft.stuttgart.citydoctor2.exceptions.CityDoctorWriteException;
import de.hft.stuttgart.citydoctor2.gui.table.ErrorStat; import de.hft.stuttgart.citydoctor2.gui.table.ErrorStat;
import de.hft.stuttgart.citydoctor2.gui.tree.*; import de.hft.stuttgart.citydoctor2.gui.tree.AddMoreButtonRunnable;
import de.hft.stuttgart.citydoctor2.gui.tree.ButtonRenderable;
import de.hft.stuttgart.citydoctor2.gui.tree.Renderable;
import de.hft.stuttgart.citydoctor2.gui.tree.node.CityObjectGroupNode; import de.hft.stuttgart.citydoctor2.gui.tree.node.CityObjectGroupNode;
import de.hft.stuttgart.citydoctor2.gui.tree.node.CityObjectNode; import de.hft.stuttgart.citydoctor2.gui.tree.node.CityObjectNode;
import de.hft.stuttgart.citydoctor2.gui.tree.node.GeometryNode; import de.hft.stuttgart.citydoctor2.gui.tree.node.GeometryNode;
import de.hft.stuttgart.citydoctor2.gui.tree.node.OpeningNode; import de.hft.stuttgart.citydoctor2.gui.tree.node.OpeningNode;
import de.hft.stuttgart.citydoctor2.gui.tree.node.TopLevelCityObjectNode; import de.hft.stuttgart.citydoctor2.gui.tree.node.TopLevelCityObjectNode;
import de.hft.stuttgart.citydoctor2.mapper.citygml3.GMLValidationHandler; import de.hft.stuttgart.citydoctor2.parser.CityGmlParseException;
import de.hft.stuttgart.citydoctor2.parser.*; import de.hft.stuttgart.citydoctor2.parser.CityGmlParser;
import de.hft.stuttgart.citydoctor2.parser.InvalidGmlFileException;
import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import de.hft.stuttgart.citydoctor2.parser.ProgressListener;
import de.hft.stuttgart.citydoctor2.utils.Localization; import de.hft.stuttgart.citydoctor2.utils.Localization;
import de.hft.stuttgart.quality.adapter.types.ErrorAdapter;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.scene.chart.XYChart.Data; import javafx.scene.chart.XYChart.Data;
import javafx.scene.chart.XYChart.Series; import javafx.scene.chart.XYChart.Series;
...@@ -29,18 +81,6 @@ import javafx.scene.control.TreeView; ...@@ -29,18 +81,6 @@ import javafx.scene.control.TreeView;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import javafx.stage.FileChooser; import javafx.stage.FileChooser;
import javafx.stage.FileChooser.ExtensionFilter; import javafx.stage.FileChooser.ExtensionFilter;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.citygml4j.core.model.core.CityModel;
import org.xml.sax.SAXParseException;
import java.io.File;
import java.util.*;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Stream;
public class CityDoctorController { public class CityDoctorController {
...@@ -98,40 +138,14 @@ public class CityDoctorController { ...@@ -98,40 +138,14 @@ public class CityDoctorController {
}); });
currentChecker = null; currentChecker = null;
currentConfig = new ParserConfiguration(numberOfRoundingPlaces, useValidation, lowMemory); currentConfig = new ParserConfiguration(numberOfRoundingPlaces, useValidation, lowMemory);
GMLValidationHandler handler = null; model = CityGmlParser.parseCityGmlFile(path, currentConfig, l);
List<String> validationIssues = new ArrayList<>();
if (useValidation) {
handler = new GMLValidationHandler() {
@Override
public void error(SAXParseException exception) {
if (exception.getLineNumber() >= 0) {
String s = "In line " + exception.getLineNumber() + ":";
validationIssues.add(s);
}
validationIssues.add(exception.getMessage());
}
@Override
public void warning(SAXParseException exception) {
error(exception);
}
@Override
public void fatalError(SAXParseException exception) {
error(exception);
}
};
}
model = CityGmlParser.parseCityGmlFile(path, currentConfig, l, handler);
if (!validationIssues.isEmpty()) {
StringJoiner sj = new StringJoiner("\n");
validationIssues.stream().forEach(sj::add);
throw new InvalidGmlFileException(sj.toString());
}
mainWindow.getClickHandler().setConfig(currentConfig); mainWindow.getClickHandler().setConfig(currentConfig);
sourceFile = path; sourceFile = path;
renderer.reset(); renderer.reset();
Platform.runLater(() -> { Platform.runLater(() -> {
// show errors that occured during parsing
updateGlobalErrors();
mainWindow.addFileNameToTitle(path); mainWindow.addFileNameToTitle(path);
mainWindow.getCheckButton().setDisable(false); mainWindow.getCheckButton().setDisable(false);
mainWindow.getLod1Btn().setDisable(false); mainWindow.getLod1Btn().setDisable(false);
...@@ -1099,6 +1113,11 @@ public class CityDoctorController { ...@@ -1099,6 +1113,11 @@ public class CityDoctorController {
for (CheckError e : model.getGlobalErrors()) { for (CheckError e : model.getGlobalErrors()) {
e.accept(globErrVisitor); e.accept(globErrVisitor);
} }
if (model.getGlobalErrors().isEmpty()) {
mainWindow.getGlobalErrorsLabel().setStyle("-fx-text-fill: black;");
} else {
mainWindow.getGlobalErrorsLabel().setStyle("-fx-text-fill: red;");
}
} }
void updateFeatureTrees() { void updateFeatureTrees() {
...@@ -1233,6 +1252,7 @@ public class CityDoctorController { ...@@ -1233,6 +1252,7 @@ public class CityDoctorController {
case LAND -> filterLandTree(searchString); case LAND -> filterLandTree(searchString);
case CITY_FURNITURE -> filterCityFurnitureTree(searchString); case CITY_FURNITURE -> filterCityFurnitureTree(searchString);
case OTHER_CITY_OBJECT -> filterOtherCityObjectsTree(searchString); case OTHER_CITY_OBJECT -> filterOtherCityObjectsTree(searchString);
default -> throw new IllegalArgumentException("selected tab is unknown: " + selectedTab);
} }
......
...@@ -42,6 +42,7 @@ import de.hft.stuttgart.citydoctor2.check.error.SolidSelfIntError; ...@@ -42,6 +42,7 @@ import de.hft.stuttgart.citydoctor2.check.error.SolidSelfIntError;
import de.hft.stuttgart.citydoctor2.check.error.SurfaceUnfragmentedError; import de.hft.stuttgart.citydoctor2.check.error.SurfaceUnfragmentedError;
import de.hft.stuttgart.citydoctor2.check.error.TooFewPolygonsError; import de.hft.stuttgart.citydoctor2.check.error.TooFewPolygonsError;
import de.hft.stuttgart.citydoctor2.check.error.UnknownCheckError; import de.hft.stuttgart.citydoctor2.check.error.UnknownCheckError;
import de.hft.stuttgart.citydoctor2.check.error.XMLValidationError;
public class GlobalErrorVisitor implements ErrorVisitor { public class GlobalErrorVisitor implements ErrorVisitor {
...@@ -221,5 +222,11 @@ public class GlobalErrorVisitor implements ErrorVisitor { ...@@ -221,5 +222,11 @@ public class GlobalErrorVisitor implements ErrorVisitor {
@Override @Override
public void visit(SolidError err) { public void visit(SolidError err) {
} }
@Override
public void visit(XMLValidationError err) {
mainWindow.getGlobalErrorsView().getItems().add(err.getErrorId().getIdString()
+ " - " + err.getMessage());
}
} }
...@@ -45,6 +45,7 @@ import de.hft.stuttgart.citydoctor2.check.error.SurfaceUnfragmentedError; ...@@ -45,6 +45,7 @@ import de.hft.stuttgart.citydoctor2.check.error.SurfaceUnfragmentedError;
import de.hft.stuttgart.citydoctor2.check.error.DegeneratedRingError; import de.hft.stuttgart.citydoctor2.check.error.DegeneratedRingError;
import de.hft.stuttgart.citydoctor2.check.error.TooFewPolygonsError; import de.hft.stuttgart.citydoctor2.check.error.TooFewPolygonsError;
import de.hft.stuttgart.citydoctor2.check.error.UnknownCheckError; import de.hft.stuttgart.citydoctor2.check.error.UnknownCheckError;
import de.hft.stuttgart.citydoctor2.check.error.XMLValidationError;
import de.hft.stuttgart.citydoctor2.datastructure.Edge; import de.hft.stuttgart.citydoctor2.datastructure.Edge;
import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing;
import de.hft.stuttgart.citydoctor2.datastructure.Vertex; import de.hft.stuttgart.citydoctor2.datastructure.Vertex;
...@@ -295,4 +296,9 @@ public class ListErrorVisitor implements ErrorVisitor { ...@@ -295,4 +296,9 @@ public class ListErrorVisitor implements ErrorVisitor {
public void visit(SolidError err) { public void visit(SolidError err) {
// nothing to display // nothing to display
} }
@Override
public void visit(XMLValidationError err) {
// nothing to display
}
} }
...@@ -208,6 +208,8 @@ public class MainWindow extends Application { ...@@ -208,6 +208,8 @@ public class MainWindow extends Application {
@FXML @FXML
private Label availableLabel; private Label availableLabel;
private Label globalErrorsLabel;
private Image north; private Image north;
private Image northFlip; private Image northFlip;
...@@ -310,9 +312,6 @@ public class MainWindow extends Application { ...@@ -310,9 +312,6 @@ public class MainWindow extends Application {
ViewRegistration.registerView(valView); ViewRegistration.registerView(valView);
setupViews(valView); setupViews(valView);
createLanguageSelector();
setLabelsInCorrectLanguage();
Scene scene = new Scene(bp, 1280, 800); Scene scene = new Scene(bp, 1280, 800);
createDropTarget(scene, valView); createDropTarget(scene, valView);
String version = Localization.getText(Localization.VERSION); String version = Localization.getText(Localization.VERSION);
...@@ -544,6 +543,9 @@ public class MainWindow extends Application { ...@@ -544,6 +543,9 @@ public class MainWindow extends Application {
setupSearchButtons(); setupSearchButtons();
setupShowCityComboBox(); setupShowCityComboBox();
createLanguageSelector();
setLabelsInCorrectLanguage();
detailsTabPane.getSelectionModel().selectedIndexProperty() detailsTabPane.getSelectionModel().selectedIndexProperty()
.addListener((ov, oldI, newI) -> Platform.runLater(() -> { .addListener((ov, oldI, newI) -> Platform.runLater(() -> {
...@@ -553,6 +555,11 @@ public class MainWindow extends Application { ...@@ -553,6 +555,11 @@ public class MainWindow extends Application {
errorView.getSelectionModel().getSelectedItem().getValue().visit(renderer); errorView.getSelectionModel().getSelectedItem().getValue().visit(renderer);
} }
})); }));
// setup label of the global error tab for color changes
globalErrorsLabel = new Label(globalErrorsTab.getText());
globalErrorsTab.setGraphic(globalErrorsLabel);
globalErrorsTab.setText("");
} }
private void setupShowCityComboBox() { private void setupShowCityComboBox() {
...@@ -1190,4 +1197,8 @@ public class MainWindow extends Application { ...@@ -1190,4 +1197,8 @@ public class MainWindow extends Application {
public FeatureType getSelectedTab() { public FeatureType getSelectedTab() {
return selectedTab; return selectedTab;
} }
public Label getGlobalErrorsLabel() {
return globalErrorsLabel;
}
} }
...@@ -6,6 +6,7 @@ import java.io.File; ...@@ -6,6 +6,7 @@ import java.io.File;
import java.io.FileReader; import java.io.FileReader;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Properties; import java.util.Properties;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
...@@ -22,6 +23,7 @@ public class Settings { ...@@ -22,6 +23,7 @@ public class Settings {
public static final String FRAME_X = "frameX"; public static final String FRAME_X = "frameX";
public static final String FRAME_Y = "frameY"; public static final String FRAME_Y = "frameY";
public static final String LANGUAGE = "language"; public static final String LANGUAGE = "language";
public static final String CONFIG = "config";
private static Properties props; private static Properties props;
...@@ -30,14 +32,14 @@ public class Settings { ...@@ -30,14 +32,14 @@ public class Settings {
File propFile = new File("GUISettings.properties"); File propFile = new File("GUISettings.properties");
if (propFile.exists()) { if (propFile.exists()) {
try (BufferedReader bis = new BufferedReader(new FileReader(propFile))) { try (BufferedReader bis = new BufferedReader(new FileReader(propFile, StandardCharsets.UTF_8))) {
props.load(bis); props.load(bis);
} catch (IOException e) { } catch (IOException e) {
logger.error("Failed to load settings", e); logger.error("Failed to load settings", e);
} }
} }
Runtime.getRuntime().addShutdownHook(new Thread(() -> { Runtime.getRuntime().addShutdownHook(new Thread(() -> {
try (BufferedWriter bw = new BufferedWriter(new FileWriter(propFile))) { try (BufferedWriter bw = new BufferedWriter(new FileWriter(propFile, StandardCharsets.UTF_8))) {
props.store(bw, "GUI configuration"); props.store(bw, "GUI configuration");
} catch (IOException e) { } catch (IOException e) {
logger.error("Failed to save settings", e); logger.error("Failed to save settings", e);
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>de.hft.stuttgart</groupId> <groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorParent</artifactId> <artifactId>CityDoctorParent</artifactId>
<version>3.18.0</version> <version>3.18.1</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<artifactId>CityDoctorHealer</artifactId> <artifactId>CityDoctorHealer</artifactId>
......
...@@ -156,7 +156,7 @@ public class Healer { ...@@ -156,7 +156,7 @@ public class Healer {
if (configFile == null) { if (configFile == null) {
config = ValidationConfiguration.loadStandardValidationConfig(); config = ValidationConfiguration.loadStandardValidationConfig();
} else { } else {
config = ValidationConfiguration.loadValidationConfig(configFile.getAbsolutePath()); config = ValidationConfiguration.loadValidationConfigFile(configFile.getAbsolutePath());
} }
CityDoctorModel model = CityGmlParser.parseCityGmlFile(in.getAbsolutePath(), config.getParserConfiguration()); CityDoctorModel model = CityGmlParser.parseCityGmlFile(in.getAbsolutePath(), config.getParserConfiguration());
Checker c = new Checker(config, model); Checker c = new Checker(config, model);
...@@ -289,7 +289,7 @@ public class Healer { ...@@ -289,7 +289,7 @@ public class Healer {
private byte[] writeCityGml(AbstractCityObject aco) throws CityGMLWriteException { private byte[] writeCityGml(AbstractCityObject aco) throws CityGMLWriteException {
CityModel model = new CityModel(); CityModel model = new CityModel();
model.getCityObjectMembers().add(new AbstractCityObjectProperty(aco)); model.getCityObjectMembers().add(new AbstractCityObjectProperty(aco));
CityGMLContext context = CityGmlParser.getContext(); CityGMLContext context = CityGmlParser.setupContext();
CityGMLOutputFactory outputFactory = context.createCityGMLOutputFactory(CityGMLVersion.v2_0); CityGMLOutputFactory outputFactory = context.createCityGMLOutputFactory(CityGMLVersion.v2_0);
ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream();
try (CityGMLWriter writer = outputFactory.createCityGMLWriter(out)) { try (CityGMLWriter writer = outputFactory.createCityGMLWriter(out)) {
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>de.hft.stuttgart</groupId> <groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorParent</artifactId> <artifactId>CityDoctorParent</artifactId>
<version>3.18.0</version> <version>3.18.1</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<artifactId>CityDoctorHealerGUI</artifactId> <artifactId>CityDoctorHealerGUI</artifactId>
...@@ -22,10 +22,10 @@ ...@@ -22,10 +22,10 @@
<groupId>de.hft.stuttgart</groupId> <groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorHealer</artifactId> <artifactId>CityDoctorHealer</artifactId>
</dependency> </dependency>
<dependency> <!-- <dependency>
<groupId>de.hft.stuttgart</groupId> <groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorAutoPro</artifactId> <artifactId>CityDoctorAutoPro</artifactId>
</dependency> </dependency> -->
<dependency> <dependency>
<groupId>org.openjfx</groupId> <groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId> <artifactId>javafx-controls</artifactId>
......
...@@ -2,36 +2,33 @@ package de.hft.stuttgart.citydoctor2.healer.gui; ...@@ -2,36 +2,33 @@ package de.hft.stuttgart.citydoctor2.healer.gui;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.EnumMap; import java.util.EnumMap;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;
import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.Check;
import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckError;
import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckId;
import de.hft.stuttgart.citydoctor2.check.RequirementType;
import de.hft.stuttgart.citydoctor2.check.Checker; import de.hft.stuttgart.citydoctor2.check.Checker;
import de.hft.stuttgart.citydoctor2.check.Requirement; import de.hft.stuttgart.citydoctor2.check.Requirement;
import de.hft.stuttgart.citydoctor2.check.RequirementType;
import de.hft.stuttgart.citydoctor2.datastructure.AbstractBuilding; import de.hft.stuttgart.citydoctor2.datastructure.AbstractBuilding;
import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface; import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface;
import de.hft.stuttgart.citydoctor2.datastructure.Building; import de.hft.stuttgart.citydoctor2.datastructure.Building;
import de.hft.stuttgart.citydoctor2.datastructure.Installation;
import de.hft.stuttgart.citydoctor2.datastructure.BuildingPart; import de.hft.stuttgart.citydoctor2.datastructure.BuildingPart;
import de.hft.stuttgart.citydoctor2.datastructure.CityDoctorModel; import de.hft.stuttgart.citydoctor2.datastructure.CityDoctorModel;
import de.hft.stuttgart.citydoctor2.datastructure.CityObject; import de.hft.stuttgart.citydoctor2.datastructure.CityObject;
import de.hft.stuttgart.citydoctor2.datastructure.ConcretePolygon; import de.hft.stuttgart.citydoctor2.datastructure.ConcretePolygon;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry; import de.hft.stuttgart.citydoctor2.datastructure.Geometry;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.datastructure.GeometryType; import de.hft.stuttgart.citydoctor2.datastructure.GeometryType;
import de.hft.stuttgart.citydoctor2.datastructure.GmlId; import de.hft.stuttgart.citydoctor2.datastructure.GmlId;
import de.hft.stuttgart.citydoctor2.datastructure.Installation;
import de.hft.stuttgart.citydoctor2.datastructure.LinkedPolygon; import de.hft.stuttgart.citydoctor2.datastructure.LinkedPolygon;
import de.hft.stuttgart.citydoctor2.datastructure.Lod; import de.hft.stuttgart.citydoctor2.datastructure.Lod;
import de.hft.stuttgart.citydoctor2.datastructure.Opening; import de.hft.stuttgart.citydoctor2.datastructure.Opening;
import de.hft.stuttgart.citydoctor2.datastructure.Polygon; import de.hft.stuttgart.citydoctor2.datastructure.Polygon;
import de.hft.stuttgart.citydoctor2.datastructure.Geometry.Orientation;
import de.hft.stuttgart.citydoctor2.gui.AutoProWindow;
import de.hft.stuttgart.citydoctor2.gui.HighlightController; import de.hft.stuttgart.citydoctor2.gui.HighlightController;
import de.hft.stuttgart.citydoctor2.gui.ListErrorVisitor; import de.hft.stuttgart.citydoctor2.gui.ListErrorVisitor;
import de.hft.stuttgart.citydoctor2.gui.TriangulatedGeometry; import de.hft.stuttgart.citydoctor2.gui.TriangulatedGeometry;
...@@ -86,10 +83,10 @@ public class HealerController { ...@@ -86,10 +83,10 @@ public class HealerController {
if (model == null) { if (model == null) {
return; return;
} }
model.createFeatureStream().forEach(CityObject::prepareForChecking); // model.createFeatureStream().forEach(CityObject::prepareForChecking);
AutoProWindow window = new AutoProWindow(model); // AutoProWindow window = new AutoProWindow(model);
window.setLocationRelativeTo(null); // window.setLocationRelativeTo(null);
window.setVisible(true); // window.setVisible(true);
} }
public void setCurrentModel(CityDoctorModel model) { public void setCurrentModel(CityDoctorModel model) {
......
...@@ -74,6 +74,7 @@ public class HealerToolbar { ...@@ -74,6 +74,7 @@ public class HealerToolbar {
saveBtn.setDisable(true); saveBtn.setDisable(true);
saveImage.setImage(new Image(MainWindow.class.getResourceAsStream("icons/save.png"))); saveImage.setImage(new Image(MainWindow.class.getResourceAsStream("icons/save.png")));
simplyBtn.setOnAction(ae -> controller.showSimplyfication()); simplyBtn.setOnAction(ae -> controller.showSimplyfication());
simplyBtn.setDisable(true);
} }
public HBox getToolBar() { public HBox getToolBar() {
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<parent> <parent>
<groupId>de.hft.stuttgart</groupId> <groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorParent</artifactId> <artifactId>CityDoctorParent</artifactId>
<version>3.18.0</version> <version>3.18.1</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<artifactId>CityDoctorHealerGenetic</artifactId> <artifactId>CityDoctorHealerGenetic</artifactId>
......
...@@ -329,7 +329,7 @@ public class GeneticsGUI extends View { ...@@ -329,7 +329,7 @@ public class GeneticsGUI extends View {
parserConfig); parserConfig);
currentChecker = new Checker(model1); currentChecker = new Checker(model1);
currentChecker.runChecks(); currentChecker.runChecks();
Building building = model1.getBuildings().toList().getFirst(); Building building = model1.getBuildings().findFirst().get();
currentGeometry = building.getGeometries().get(0); currentGeometry = building.getGeometries().get(0);
currentFeature = building; currentFeature = building;
showCurrentGeometry(); showCurrentGeometry();
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>de.hft.stuttgart</groupId> <groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorParent</artifactId> <artifactId>CityDoctorParent</artifactId>
<version>3.18.0</version> <version>3.18.1</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<name>CityDoctorParent</name> <name>CityDoctorParent</name>
<properties> <properties>
...@@ -285,7 +285,6 @@ ...@@ -285,7 +285,6 @@
<dependency> <dependency>
<groupId>org.apache.logging.log4j</groupId> <groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j18-impl</artifactId> <artifactId>log4j-slf4j18-impl</artifactId>
<version>2.18.0</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment