001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.commons.jexl2;
018
019
020 /**
021 * Little class to carry in info such as a url/file name, line and column for
022 * information error reporting from the uberspector implementations.
023 * @version $Id: DebugInfo.java 885553 2009-11-30 19:28:40Z henrib $
024 */
025 public class DebugInfo implements JexlInfo {
026 /** line number. */
027 private final int line;
028 /** column number. */
029 private final int column;
030 /** name. */
031 private final String name;
032 /**
033 * Create info.
034 * @param tn template name
035 * @param l line number
036 * @param c column
037 */
038 public DebugInfo(String tn, int l, int c) {
039 name = tn;
040 line = l;
041 column = c;
042 }
043
044 /**
045 * Formats this info in the form 'name@line:column'.
046 * @return the formatted info
047 */
048 @Override
049 public String toString() {
050 StringBuilder sb = new StringBuilder(name != null? name : "");
051 if (line > 0) {
052 sb.append("@");
053 sb.append(line);
054 if (column > 0) {
055 sb.append(":");
056 sb.append(column);
057 }
058 }
059 return sb.toString();
060 }
061
062 /** {@inheritDoc} */
063 public String debugString() {
064 return toString();
065 }
066
067 /**
068 * Gets the file/script/url name.
069 * @return template name
070 */
071 public String getName() {
072 return name;
073 }
074
075 /**
076 * Gets the line number.
077 * @return line number.
078 */
079 public int getLine() {
080 return line;
081 }
082
083 /**
084 * Gets the column number.
085 * @return the column.
086 */
087 public int getColumn() {
088 return column;
089 }
090 }