001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one
003     * or more contributor license agreements. See the NOTICE file
004     * distributed with this work for additional information
005     * regarding copyright ownership. The ASF licenses this file
006     * to you under the Apache License, Version 2.0 (the  "License");
007     * you may not use this file except in compliance with the License.
008     * You may obtain a copy of the License at
009     *
010     *     http://www.apache.org/licenses/LICENSE-2.0
011     *
012     * Unless required by applicable law or agreed to in writing, software
013     * distributed under the License is distributed on an "AS IS" BASIS,
014     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015     * See the License for the specific language governing permissions and
016     * limitations under the License.
017     */
018    /*
019     * $Id: NodeLocator.java 468653 2006-10-28 07:07:05Z minchau $
020     */
021    
022    package org.apache.xml.dtm.ref;
023    
024    import javax.xml.transform.SourceLocator;
025    
026    /**
027     * <code>NodeLocator</code> maintains information on an XML source
028     * node.
029     *
030     * @author <a href="mailto:ovidiu@cup.hp.com">Ovidiu Predescu</a>
031     * @since May 23, 2001
032     */
033    public class NodeLocator implements SourceLocator
034    {
035      protected String m_publicId;
036      protected String m_systemId;
037      protected int m_lineNumber;
038      protected int m_columnNumber;
039    
040      /**
041       * Creates a new <code>NodeLocator</code> instance.
042       *
043       * @param publicId a <code>String</code> value
044       * @param systemId a <code>String</code> value
045       * @param lineNumber an <code>int</code> value
046       * @param columnNumber an <code>int</code> value
047       */
048      public NodeLocator(String publicId, String systemId,
049                         int lineNumber, int columnNumber)
050      {
051        this.m_publicId = publicId;
052        this.m_systemId = systemId;
053        this.m_lineNumber = lineNumber;
054        this.m_columnNumber = columnNumber;
055      }
056    
057      /**
058       * <code>getPublicId</code> returns the public ID of the node.
059       *
060       * @return a <code>String</code> value
061       */
062      public String getPublicId()
063      {
064        return m_publicId;
065      }
066    
067      /**
068       * <code>getSystemId</code> returns the system ID of the node.
069       *
070       * @return a <code>String</code> value
071       */
072      public String getSystemId()
073      {
074        return m_systemId;
075      }
076    
077      /**
078       * <code>getLineNumber</code> returns the line number of the node.
079       *
080       * @return an <code>int</code> value
081       */
082      public int getLineNumber()
083      {
084        return m_lineNumber;
085      }
086    
087      /**
088       * <code>getColumnNumber</code> returns the column number of the
089       * node.
090       *
091       * @return an <code>int</code> value
092       */
093      public int getColumnNumber()
094      {
095        return m_columnNumber;
096      }
097    
098      /**
099       * <code>toString</code> returns a string representation of this
100       * NodeLocator instance.
101       *
102       * @return a <code>String</code> value
103       */
104      public String toString()
105      {
106        return "file '" + m_systemId
107          + "', line #" + m_lineNumber
108          + ", column #" + m_columnNumber;
109      }
110    }