    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&#064;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    }