001    package org.apache.maven.tools.plugin.annotations.datamodel;
002    
003    /*
004     * Licensed to the Apache Software Foundation (ASF) under one
005     * or more contributor license agreements.  See the NOTICE file
006     * distributed with this work for additional information
007     * regarding copyright ownership.  The ASF licenses this file
008     * to you under the Apache License, Version 2.0 (the
009     * "License"); you may not use this file except in compliance
010     * with the License.  You may obtain a copy of the License at
011     *
012     *   http://www.apache.org/licenses/LICENSE-2.0
013     *
014     * Unless required by applicable law or agreed to in writing,
015     * software distributed under the License is distributed on an
016     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017     * KIND, either express or implied.  See the License for the
018     * specific language governing permissions and limitations
019     * under the License.
020     */
021    
022    import org.apache.maven.plugins.annotations.Parameter;
023    
024    import java.lang.annotation.Annotation;
025    
026    /**
027     * @author Olivier Lamy
028     * @since 3.0
029     */
030    public class ParameterAnnotationContent
031        extends AnnotatedField
032        implements Parameter
033    {
034    
035        private String alias;
036    
037        private String property;
038    
039        private String defaultValue;
040    
041        private boolean required = false;
042    
043        private boolean readonly = false;
044    
045        private String className;
046    
047        public ParameterAnnotationContent( String fieldName, String className )
048        {
049            super( fieldName );
050            this.className = className;
051        }
052    
053        public ParameterAnnotationContent( String fieldName, String alias, String property, String defaultValue,
054                                           boolean required, boolean readonly, String className )
055        {
056            this( fieldName, className );
057            this.alias = alias;
058            this.property = property;
059            this.defaultValue = defaultValue;
060            this.required = required;
061            this.readonly = readonly;
062        }
063    
064        public String alias()
065        {
066            return alias;
067        }
068    
069        public void alias( String alias )
070        {
071            this.alias = alias;
072        }
073    
074        public String property()
075        {
076            return property;
077        }
078    
079        public void property( String property )
080        {
081            this.property = property;
082        }
083    
084        public String defaultValue()
085        {
086            return defaultValue;
087        }
088    
089        public void defaultValue( String defaultValue )
090        {
091            this.defaultValue = defaultValue;
092        }
093    
094        public boolean required()
095        {
096            return required;
097        }
098    
099        public void required( boolean required )
100        {
101            this.required = required;
102        }
103    
104        public boolean readonly()
105        {
106            return readonly;
107        }
108    
109        public void readonly( boolean readonly )
110        {
111            this.readonly = readonly;
112        }
113    
114        public Class<? extends Annotation> annotationType()
115        {
116            return null;
117        }
118    
119        public String getClassName()
120        {
121            return className;
122        }
123    
124        public void setClassName( String className )
125        {
126            this.className = className;
127        }
128    
129        @Override
130        public String toString()
131        {
132            final StringBuilder sb = new StringBuilder();
133            sb.append( super.toString() );
134            sb.append( "ParameterAnnotationContent" );
135            sb.append( "{alias='" ).append( alias ).append( '\'' );
136            sb.append( ", property='" ).append( property ).append( '\'' );
137            sb.append( ", defaultValue='" ).append( defaultValue ).append( '\'' );
138            sb.append( ", required=" ).append( required );
139            sb.append( ", readonly=" ).append( readonly );
140            sb.append( '}' );
141            return sb.toString();
142        }
143    
144        @Override
145        public boolean equals( Object o )
146        {
147            if ( this == o )
148            {
149                return true;
150            }
151            if ( !( o instanceof ParameterAnnotationContent ) )
152            {
153                return false;
154            }
155    
156            ParameterAnnotationContent that = (ParameterAnnotationContent) o;
157    
158            if ( readonly != that.readonly )
159            {
160                return false;
161            }
162            if ( required != that.required )
163            {
164                return false;
165            }
166    
167            if ( getFieldName() != null ? !getFieldName().equals( that.getFieldName() ) : that.getFieldName() != null )
168            {
169                return false;
170            }
171    
172            if ( alias != null ? !alias.equals( that.alias ) : that.alias != null )
173            {
174                return false;
175            }
176            if ( defaultValue != null ? !defaultValue.equals( that.defaultValue ) : that.defaultValue != null )
177            {
178                return false;
179            }
180            if ( property != null ? !property.equals( that.property ) : that.property != null )
181            {
182                return false;
183            }
184    
185            return true;
186        }
187    
188        @Override
189        public int hashCode()
190        {
191            int result = alias != null ? alias.hashCode() : 0;
192            result = 31 * result + ( getFieldName() != null ? getFieldName().hashCode() : 0 );
193            result = 31 * result + ( property != null ? property.hashCode() : 0 );
194            result = 31 * result + ( defaultValue != null ? defaultValue.hashCode() : 0 );
195            result = 31 * result + ( required ? 1 : 0 );
196            result = 31 * result + ( readonly ? 1 : 0 );
197            return result;
198        }
199    }