001    // =================== DO NOT EDIT THIS FILE ====================
002    // Generated by Modello 1.7,
003    // any modifications will be overwritten.
004    // ==============================================================
005    
006    package org.apache.maven.model;
007    
008    /**
009     * Class InputLocation.
010     * 
011     * @version $Revision$ $Date$
012     */
013    @SuppressWarnings( "all" )
014    public final class InputLocation
015        implements java.io.Serializable, java.lang.Cloneable, org.apache.maven.model.InputLocationTracker
016    {
017    
018          //--------------------------/
019         //- Class/Member Variables -/
020        //--------------------------/
021    
022        /**
023         * The one-based line number. The value will be non-positive if
024         * unknown.
025         */
026        private int lineNumber = -1;
027    
028        /**
029         * The one-based column number. The value will be non-positive
030         * if unknown.
031         */
032        private int columnNumber = -1;
033    
034        /**
035         * Field source.
036         */
037        private InputSource source;
038    
039        /**
040         * Field locations.
041         */
042        private java.util.Map<Object, InputLocation> locations;
043    
044    
045          //----------------/
046         //- Constructors -/
047        //----------------/
048    
049        public InputLocation(int lineNumber, int columnNumber)
050        {
051            this.lineNumber = lineNumber;
052            this.columnNumber = columnNumber;
053        } //-- org.apache.maven.model.InputLocation(int, int)
054    
055        public InputLocation(int lineNumber, int columnNumber, InputSource source)
056        {
057            this.lineNumber = lineNumber;
058            this.columnNumber = columnNumber;
059            this.source = source;
060        } //-- org.apache.maven.model.InputLocation(int, int, InputSource)
061    
062    
063          //-----------/
064         //- Methods -/
065        //-----------/
066    
067        /**
068         * Method clone.
069         * 
070         * @return InputLocation
071         */
072        public InputLocation clone()
073        {
074            try
075            {
076                InputLocation copy = (InputLocation) super.clone();
077    
078                if ( copy.locations != null )
079                {
080                    copy.locations = new java.util.LinkedHashMap( copy.locations );
081                }
082    
083                return copy;
084            }
085            catch ( java.lang.Exception ex )
086            {
087                throw (java.lang.RuntimeException) new java.lang.UnsupportedOperationException( getClass().getName()
088                    + " does not support clone()" ).initCause( ex );
089            }
090        } //-- InputLocation clone()
091    
092        /**
093         * Get the one-based column number. The value will be
094         * non-positive if unknown.
095         * 
096         * @return int
097         */
098        public int getColumnNumber()
099        {
100            return this.columnNumber;
101        } //-- int getColumnNumber()
102    
103        /**
104         * Get the one-based line number. The value will be
105         * non-positive if unknown.
106         * 
107         * @return int
108         */
109        public int getLineNumber()
110        {
111            return this.lineNumber;
112        } //-- int getLineNumber()
113    
114        /**
115         * 
116         * 
117         * @param key
118         * @return InputLocation
119         */
120        public InputLocation getLocation( Object key )
121        {
122            return ( locations != null ) ? locations.get( key ) : null;
123        } //-- InputLocation getLocation( Object )
124    
125        /**
126         * 
127         * 
128         * @return Map<Object, InputLocation>
129         */
130        public java.util.Map<Object, InputLocation> getLocations()
131        {
132            return locations;
133        } //-- java.util.Map<Object, InputLocation> getLocations()
134    
135        /**
136         * Get the source field.
137         * 
138         * @return InputSource
139         */
140        public InputSource getSource()
141        {
142            return this.source;
143        } //-- InputSource getSource()
144    
145        /**
146         * Method merge.
147         * 
148         * @param target
149         * @param sourceDominant
150         * @param source
151         * @return InputLocation
152         */
153        public static InputLocation merge( InputLocation target, InputLocation source, boolean sourceDominant )
154        {
155            if ( source == null )
156            {
157                return target;
158            }
159            else if ( target == null )
160            {
161                return source;
162            }
163    
164            InputLocation result =
165                new InputLocation( target.getLineNumber(), target.getColumnNumber(), target.getSource() );
166    
167            java.util.Map<Object, InputLocation> locations;
168            java.util.Map<Object, InputLocation> sourceLocations = source.getLocations();
169            java.util.Map<Object, InputLocation> targetLocations = target.getLocations();
170            if ( sourceLocations == null )
171            {
172                locations = targetLocations;
173            }
174            else if ( targetLocations == null )
175            {
176                locations = sourceLocations;
177            }
178            else
179            {
180                locations = new java.util.LinkedHashMap<Object, InputLocation>();
181                locations.putAll( sourceDominant ? targetLocations : sourceLocations );
182                locations.putAll( sourceDominant ? sourceLocations : targetLocations );
183            }
184            result.setLocations( locations );
185    
186            return result;
187        } //-- InputLocation merge( InputLocation, InputLocation, boolean )
188    
189        /**
190         * Method merge.
191         * 
192         * @param target
193         * @param indices
194         * @param source
195         * @return InputLocation
196         */
197        public static InputLocation merge( InputLocation target, InputLocation source, java.util.Collection<Integer> indices )
198        {
199            if ( source == null )
200            {
201                return target;
202            }
203            else if ( target == null )
204            {
205                return source;
206            }
207    
208            InputLocation result =
209                new InputLocation( target.getLineNumber(), target.getColumnNumber(), target.getSource() );
210    
211            java.util.Map<Object, InputLocation> locations;
212            java.util.Map<Object, InputLocation> sourceLocations = source.getLocations();
213            java.util.Map<Object, InputLocation> targetLocations = target.getLocations();
214            if ( sourceLocations == null )
215            {
216                locations = targetLocations;
217            }
218            else if ( targetLocations == null )
219            {
220                locations = sourceLocations;
221            }
222            else
223            {
224                locations = new java.util.LinkedHashMap<Object, InputLocation>();
225                for ( java.util.Iterator<Integer> it = indices.iterator(); it.hasNext(); )
226                {
227                    InputLocation location;
228                    Integer index = it.next();
229                    if ( index.intValue() < 0 )
230                    {
231                        location = sourceLocations.get( Integer.valueOf( ~index.intValue() ) );
232                    }
233                    else
234                    {
235                        location = targetLocations.get( index );
236                    }
237                    locations.put( Integer.valueOf( locations.size() ), location );
238                }
239            }
240            result.setLocations( locations );
241    
242            return result;
243        } //-- InputLocation merge( InputLocation, InputLocation, java.util.Collection )
244    
245        /**
246         * 
247         * 
248         * @param key
249         * @param location
250         */
251        public void setLocation( Object key, InputLocation location )
252        {
253            if ( location != null )
254            {
255                if ( this.locations == null )
256                {
257                    this.locations = new java.util.LinkedHashMap<Object, InputLocation>();
258                }
259                this.locations.put( key, location );
260            }
261        } //-- void setLocation( Object, InputLocation )
262    
263        /**
264         * 
265         * 
266         * @param locations
267         */
268        public void setLocations( java.util.Map<Object, InputLocation> locations )
269        {
270            this.locations = locations;
271        } //-- void setLocations( java.util.Map<Object, InputLocation> )
272    
273        
274                
275    
276        @Override
277        public String toString()
278        {
279            return getLineNumber() + " : " + getColumnNumber() + ", " + getSource();
280        }
281                
282              
283    }