package ch.vorburger.el.engine;
import java.util.List;
import org.eclipse.emf.ecore.resource.Resource.Diagnostic;
import org.eclipse.xtext.diagnostics.AbstractDiagnostic;
import org.eclipse.xtext.diagnostics.ExceptionDiagnostic;
import org.eclipse.xtext.validation.Issue;
/**
* Error occurring during the loading/parsing of an expression.
*
* @author Michael Vorburger
*/
public class ExpressionParsingException extends ExpressionException {
private static final long serialVersionUID = 4478847668512127612L;
public ExpressionParsingException(String message, String expressionAsString) {
super(message, expressionAsString);
}
public ExpressionParsingException(String message, String expressionAsString, Throwable t) {
super(message, expressionAsString, t);
}
public ExpressionParsingException addDiagnosticErrors(List<Diagnostic> errors) {
for (Diagnostic emfDiagnosticError : errors) {
if (emfDiagnosticError instanceof AbstractDiagnostic) {
AbstractDiagnostic e = (AbstractDiagnostic) emfDiagnosticError;
this.getErrors().add(new ExpressionError(e.getMessage(), e.getLine(), e.getOffset(), e.getLength()));
} else if (emfDiagnosticError instanceof ExceptionDiagnostic) {
ExceptionDiagnostic e = (ExceptionDiagnostic) emfDiagnosticError;
this.getErrors().add(new ExpressionError(e.getMessage(), e.getLine(), e.getOffset(), e.getLength(), e.getException()));
} else {
this.getErrors().add(new ExpressionError(emfDiagnosticError.getMessage(), -1, -1, -1));
}
}
return this;
}
public ExpressionParsingException addValidationIssues(Iterable<Issue> validationErrors) {
for (Issue validationError : validationErrors) {
this.getErrors().add(new ExpressionError(validationError.getMessage(), validationError.getLineNumber(), validationError.getOffset(), validationError.getLength()));
}
return this;
}
}