/** * (C) Copyright IBM Corp. 2010, 2015 * * Licensed 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 com.ibm.bi.dml.parser; import java.util.ArrayList; public class DMLParseException extends ParseException { /** * The version identifier for this Serializable class. * Increment only if the <i>serialized</i> form of the * class changes. */ private static final long serialVersionUID = 1L; private String _filename; private ArrayList<DMLParseException> _exceptionList; public ArrayList<DMLParseException> getExceptionList(){ return _exceptionList; } public DMLParseException(String fname){ super(); _filename = fname; _exceptionList = new ArrayList<DMLParseException>(); } public DMLParseException(String fname, String msg){ super(msg); _filename = fname; _exceptionList = new ArrayList<DMLParseException>(); _exceptionList.add(this); } public DMLParseException(String fname, Exception e){ super(); _filename = fname; _exceptionList = new ArrayList<DMLParseException>(); String newMsg = e.getMessage(); if (e instanceof ParseException && !(e instanceof DMLParseException)){ ParseException parseEx = (ParseException)e; int beginLine = -1, beginColumn = -1; String errorToken = null; if (parseEx.currentToken != null){ beginLine = parseEx.currentToken.beginLine; beginColumn = parseEx.currentToken.beginColumn; errorToken = parseEx.currentToken.image; newMsg = "ERROR: " + _filename + " -- line " + beginLine + ", column " + beginColumn + " -- " + "Parsing error around token \"" + errorToken + "\""; } else { newMsg = "ERROR: " + _filename + " -- line " + beginLine + ", column " + beginColumn + " -- " + "Parsing error with unspecified token"; } } _exceptionList.add(new DMLParseException(_filename, newMsg)); } public int size(){ return _exceptionList.size(); } public void add(Exception e){ if (e instanceof DMLParseException) _exceptionList.addAll(((DMLParseException)e).getExceptionList()); else _exceptionList.add(new DMLParseException(this._filename, e)); } }