org.apache.sysml.parser.ParseException Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of systemml Show documentation
Show all versions of systemml Show documentation
Declarative Machine Learning
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.sysml.parser;
import java.util.List;
import org.apache.sysml.api.DMLException;
import org.apache.sysml.parser.common.CustomErrorListener;
import org.apache.sysml.parser.common.CustomErrorListener.ParseIssue;
/**
* This exception is thrown when parse issues are encountered.
*
*/
public class ParseException extends DMLException
{
private static final long serialVersionUID = 9199966053655385928L;
/**
* List of issues that happened during parsing. Typically set by the error
* listener.
*/
private List _parseIssues;
/**
* The DML/PyDML script string. Used to display the original lines where the
* parse issues occurred.
*/
private String _scriptString;
/**
* Standard exception message. If no list of parse issues exists, this
* message can be used to display a parse exception message that doesn't
* relate to the list of parse issues.
*/
private String _message;
public ParseException() {
super();
}
public ParseException(String message) {
super(message);
_message = message;
}
public ParseException(String message, Exception e) {
super(message, e);
_message = message;
}
/**
* This constructor takes a list of parse issues that were generated during
* script parsing and the original DML/PyDML script String.
*
* @param parseIssues
* List of parse issues (syntax errors, validation errors, and
* validation warnings) generated during parsing.
* @param scriptString
* The DML/PyDML script String.
*/
public ParseException(List parseIssues, String scriptString) {
super();
_parseIssues = parseIssues;
_scriptString = scriptString;
}
/**
* Obtain the list of parse issues that occurred.
*
* @return the list of parse issues
*/
public List getParseIssues() {
return _parseIssues;
}
/**
* Set the list of parse issues.
*
* @param parseIssues
* the list of parse issues
*/
public void setParseIssues(List parseIssues) {
_parseIssues = parseIssues;
}
/**
* Obtain the original DML/PyDML script string.
*
* @return the original DML/PyDML script string
*/
public String getScriptString() {
return _scriptString;
}
/**
* Set the original DML/PyDML script string.
*
* @param scriptString
* the original DML/PyDML script string
*/
public void setScriptString(String scriptString) {
_scriptString = scriptString;
}
/**
* Does this ParseException contain a list of parse issues?
*
* @return true
if the list of parse issues exists and is
* greater than 0, false
otherwise
*/
public boolean hasParseIssues() {
return (_parseIssues != null && _parseIssues.size() > 0);
}
/**
* Obtain the exception message. If there is a list of parse issues, these
* are used to generate the exception message.
*
*/
@Override
public String getMessage() {
return hasParseIssues() ? generateParseIssuesMessage() :
(_message != null) ? _message : "No parse issue message.";
}
/**
* Generate a message displaying information about the parse issues that
* occurred.
*
* @return String representing the list of parse issues.
*/
private String generateParseIssuesMessage() {
return CustomErrorListener.generateParseIssuesMessage(_scriptString, _parseIssues);
}
}