001 /**
002 * Copyright 2010-2012 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.codehaus.mojo.license.header;
017
018
019 import org.codehaus.mojo.license.header.transformer.FileHeaderTransformer;
020
021 /**
022 * Implementation of {@link FileHeaderFilter} to update an incoming header.
023 *
024 * @author tchemit <chemit@codelutin.com>
025 * @plexus.component role="org.codehaus.mojo.license.header.FileHeaderFilter" role-hint="update-file-header"
026 * @since 1.0
027 */
028 public class UpdateFileHeaderFilter
029 extends FileHeaderFilter
030 {
031
032 /**
033 * Flag sets to {@code true} if description can be updated.
034 */
035 protected boolean updateDescription;
036
037 /**
038 * Flag set to {@code true} if license can be updated.
039 */
040 protected boolean updateLicense;
041
042 /**
043 * Flag sets to {@code true} if copyright can be updated.
044 */
045 protected boolean updateCopyright;
046
047 public UpdateFileHeaderFilter()
048 {
049 }
050
051 @Override
052 protected FileHeader getNewHeader( FileHeader oldHeader )
053 {
054
055 FileHeader result = new FileHeader();
056
057 FileHeader newHeader = getFileHeader();
058
059 FileHeaderTransformer transformer = getTransformer();
060
061 boolean modified = false;
062
063 // by default, reuse the old header
064 result.setDescription( oldHeader.getDescription() );
065 result.setCopyrightFirstYear( oldHeader.getCopyrightFirstYear() );
066 result.setCopyrightLastYear( oldHeader.getCopyrightLastYear() );
067 result.setCopyrightHolder( oldHeader.getCopyrightHolder() );
068 result.setLicense( oldHeader.getLicense() );
069
070 if ( isUpdateDescription() && !transformer.isDescriptionEquals( oldHeader, newHeader ) )
071 {
072
073 // can update description and it has changed
074
075 if ( log.isDebugEnabled() )
076 {
077 log.debug( "description has changed from [" + oldHeader.getDescription() + "] to [" +
078 newHeader.getDescription() + "]" );
079 }
080
081 // description has changed, mark header to be updated
082 modified = true;
083
084 // use the new description
085 result.setDescription( newHeader.getDescription() );
086 }
087
088 if ( isUpdateCopyright() && !transformer.isCopyrightEquals( oldHeader, newHeader ) )
089 {
090
091 // can update copyright and it has changed
092
093 if ( log.isDebugEnabled() )
094 {
095 log.debug(
096 "copyright has changed from [" + oldHeader.getCopyright() + "] to [" + newHeader.getCopyright() +
097 "]" );
098 }
099
100 // description has changed, mark header to be updated
101 modified = true;
102
103 // use the new copyright
104 result.setCopyrightFirstYear( newHeader.getCopyrightFirstYear() );
105 result.setCopyrightLastYear( newHeader.getCopyrightLastYear() );
106 result.setCopyrightHolder( newHeader.getCopyrightHolder() );
107 }
108
109 if ( isUpdateLicense() && !transformer.isLicenseEquals( oldHeader, newHeader ) )
110 {
111
112 // can update license and it has changed
113
114 if ( log.isDebugEnabled() )
115 {
116 log.debug(
117 "license has changed from [" + oldHeader.getLicense() + "] to [" + newHeader.getLicense() + "]" );
118 }
119
120 // description has changed, mark header to be updated
121 modified = true;
122
123 // use the new license
124 result.setLicense( newHeader.getLicense() );
125 }
126
127 if ( !modified )
128 {
129
130 // nothing has to be updated, so return a {@code null} result
131 result = null;
132 }
133
134 return result;
135 }
136
137 public boolean isUpdateCopyright()
138 {
139 return updateCopyright;
140 }
141
142 public void setUpdateCopyright( boolean updateCopyright )
143 {
144 this.updateCopyright = updateCopyright;
145 }
146
147 public boolean isUpdateDescription()
148 {
149 return updateDescription;
150 }
151
152 public void setUpdateDescription( boolean updateDescription )
153 {
154 this.updateDescription = updateDescription;
155 }
156
157 public boolean isUpdateLicense()
158 {
159 return updateLicense;
160 }
161
162 public void setUpdateLicense( boolean updateLicense )
163 {
164 this.updateLicense = updateLicense;
165 }
166 }