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: DOMLocatorImpl.java 1225426 2011-12-29 04:13:08Z mrglavas $
020     */
021    
022    package org.apache.xml.serializer.dom3;
023    
024    import org.w3c.dom.DOMLocator;
025    import org.w3c.dom.Node;
026    
027    
028    /**
029     * <code>DOMLocatorImpl</code> is an implementaion that describes a location (e.g. 
030     * where an error occured).
031     * <p>See also the <a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification</a>.
032     * This class is a copy of the Xerces-2J class org.apache.xerces.dom.DOMLocatorImpl.java v 1.10 
033     *
034     * @author Gopal Sharma, SUN Microsystems Inc.
035     * @version $Id: 
036     * 
037     * @xsl.usage internal
038     */
039    final class DOMLocatorImpl implements DOMLocator {
040        
041        //
042        // Data
043        //
044        
045        /**
046         * The column number where the error occured, 
047         * or -1 if there is no column number available.
048         */
049        private final int fColumnNumber;
050        
051        /**
052         * The line number where the error occured, 
053         * or -1 if there is no line number available.
054         */
055        private final int fLineNumber;
056        
057        /** related data node*/
058        private final Node fRelatedNode;
059        
060        /**
061         * The URI where the error occured, 
062         * or null if there is no URI available.
063         */
064        private final String fUri;
065        
066        /**
067         * The byte offset into the input source this locator is pointing to or -1 
068         * if there is no byte offset available
069         */
070        private final int fByteOffset;
071        
072        /**
073         * The UTF-16, as defined in [Unicode] and Amendment 1 of [ISO/IEC 10646], 
074         * offset into the input source this locator is pointing to or -1 if there 
075         * is no UTF-16 offset available.
076         */
077        private final int fUtf16Offset;
078        
079        //
080        // Constructors
081        //
082        
083        DOMLocatorImpl(){
084            fColumnNumber = -1;
085            fLineNumber = -1;
086            fRelatedNode = null;
087            fUri = null;
088            fByteOffset = -1;
089            fUtf16Offset = -1;
090        }
091        
092        DOMLocatorImpl (int lineNumber, int columnNumber, String uri ){
093            fLineNumber = lineNumber ;
094            fColumnNumber = columnNumber ;
095            fUri = uri;
096            
097            fRelatedNode = null;
098            fByteOffset = -1;
099            fUtf16Offset = -1;
100        } // DOMLocatorImpl (int lineNumber, int columnNumber, String uri )
101        
102        DOMLocatorImpl (int lineNumber, int columnNumber, int utf16Offset, String uri ){
103            fLineNumber = lineNumber ;
104            fColumnNumber = columnNumber ;
105            fUri = uri;
106            fUtf16Offset = utf16Offset;
107            
108    
109            fRelatedNode = null;
110            fByteOffset = -1;
111        } // DOMLocatorImpl (int lineNumber, int columnNumber, int utf16Offset, String uri )
112        
113        DOMLocatorImpl (int lineNumber, int columnNumber, int byteoffset, Node relatedData, String uri ){
114            fLineNumber = lineNumber ;
115            fColumnNumber = columnNumber ;
116            fByteOffset = byteoffset ;
117            fRelatedNode = relatedData ;
118            fUri = uri;
119            
120            fUtf16Offset = -1;
121        } // DOMLocatorImpl (int lineNumber, int columnNumber, int offset, Node errorNode, String uri )
122        
123        DOMLocatorImpl (int lineNumber, int columnNumber, int byteoffset, Node relatedData, String uri, int utf16Offset ){
124            fLineNumber = lineNumber ;
125            fColumnNumber = columnNumber ;
126            fByteOffset = byteoffset ;
127            fRelatedNode = relatedData ;
128            fUri = uri;
129            fUtf16Offset = utf16Offset;
130        } // DOMLocatorImpl (int lineNumber, int columnNumber, int offset, Node errorNode, String uri )
131        
132        
133        /**
134         * The line number where the error occured, or -1 if there is no line 
135         * number available.
136         */
137        public int getLineNumber(){
138            return fLineNumber;
139        }
140        
141        /**
142         * The column number where the error occured, or -1 if there is no column 
143         * number available.
144         */
145        public int getColumnNumber(){
146            return fColumnNumber;
147        }
148        
149        
150        /**
151         * The URI where the error occured, or null if there is no URI available.
152         */
153        public String getUri(){
154            return fUri;
155        }
156        
157        
158        public Node getRelatedNode(){
159            return fRelatedNode;
160        }
161        
162        
163        /**
164         * The byte offset into the input source this locator is pointing to or -1 
165         * if there is no byte offset available
166         */
167        public int getByteOffset(){
168            return fByteOffset;
169        }
170        
171        /**
172         * The UTF-16, as defined in [Unicode] and Amendment 1 of [ISO/IEC 10646], 
173         * offset into the input source this locator is pointing to or -1 if there 
174         * is no UTF-16 offset available.
175         */
176        public int getUtf16Offset(){
177            return fUtf16Offset;
178        }
179        
180    }// class DOMLocatorImpl