/*-
* 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();
}
}