/*- * Copyright 2020 Beuth Hochschule für Technik Berlin, Hochschule für Technik Stuttgart * * This file is part of CityDoctor2. * * CityDoctor2 is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * CityDoctor2 is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with CityDoctor2. If not, see . */ package de.hft.stuttgart.citydoctor2.check; import java.io.Serializable; import java.util.Optional; import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.quality.model.ValidationError; /** * Abstract container class for all errors. If your check creates a new error, * implement a new class from this one. This class has entry points for * reporting, healing and general access, which will need to be implemented to * properly function. * * @author Matthias Betz * */ public interface CheckError extends Serializable { /** * Getter for the error type * * @return the error type */ public ErrorType getType(); /** * Getter for the error id * * @return the error id */ public ErrorId getErrorId(); /** * The gml feature in which the error occured * * @return the gml feature */ public GmlElement getFeature(); /** * A general visitor will have a look at this error. Visitor pattern. * * @param errorVisitor the visitor, call {@link ErrorVisitor#visit(CheckError)}) * on this. */ public void accept(ErrorVisitor errorVisitor); /** * Visitor pattern for the healing methods. Call * {@link HealingMethod#visit(CheckError, ModificationListener)} in the * implementation and return the boolean. * * @param method the healing method visitor * @param l a modification listener when a healing method changes something * @return true if the healing method changed something in the model */ public boolean accept(HealingMethod method, ModificationListener l); /** * This method functions as interface to various reporting places. The * implementor of the error decides which information is written into the report * or shown on the GUI. * * @param report */ public void report(ErrorReport report); public default Optional convertToQualityAdeDatastructure() { return Optional.empty(); } }