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