org.nuiton.license.plugin
Class UpdateFileHeaderMojo

java.lang.Object
  extended by org.apache.maven.plugin.AbstractMojo
      extended by org.nuiton.plugin.AbstractPlugin
          extended by org.nuiton.license.plugin.AbstractLicenseMojo
              extended by org.nuiton.license.plugin.AbstractLicenseWithDescriptorMojo
                  extended by org.nuiton.license.plugin.UpdateFileHeaderMojo
All Implemented Interfaces:
org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo, FileHeaderProcessorConfiguration, org.nuiton.plugin.Plugin, org.nuiton.plugin.PluginWithEncoding

public class UpdateFileHeaderMojo
extends AbstractLicenseWithDescriptorMojo
implements FileHeaderProcessorConfiguration

The goal to update (or add) the header on some files described in AbstractLicenseWithDescriptorMojo.descriptor file.

This goal replace the update-header goal which can not deal with Copyright.

This goal use a specific project file descriptor project.xml to describe all files to update for a whole project.

Since:
2.1
Author:
tchemit
Is defined by the goal name:
update-file-header
Requires a Maven project to run:
true

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.nuiton.plugin.Plugin
org.nuiton.plugin.Plugin.InitState, org.nuiton.plugin.Plugin.Packaging
 
Field Summary
protected  boolean addSvnKeyWords
          A flag to add svn:keywords on new header.
protected  boolean clearAfterOperation
          A flag to clear everything after execution.
protected  boolean dryRun
          A flag to test plugin but modify no file.
protected  UpdateFileHeaderFilter filter
           
protected  FileHeader header
          internal default file header
protected  String ignoreTag
          A tag to place on files that will be ignored by the plugin.
protected  String inceptionYear
          Inception year of the project.
protected  String organizationName
          Name of project's organization.
protected  Set<File> processedFiles
          set of processed files
protected  FileHeaderProcessor processor
           
protected  String projectName
          Name of project (or module).
protected  EnumMap<org.nuiton.license.plugin.UpdateFileHeaderMojo.FileState,Set<File>> result
          by file state files treated
protected  boolean skipUpdateLicense
          A flag to skip the goal.
protected  long timestamp
          timestamp used for generation
protected  FileHeaderTransformer transformer
          internal file header transformer
protected  boolean updateCopyright
          A flag to update copyright application time (change copyright last year if required) according to the last commit made on the processed file.
 
Fields inherited from interface org.apache.maven.plugin.Mojo
ROLE
 
Constructor Summary
UpdateFileHeaderMojo()
           
 
Method Summary
protected  void clear()
           
 void doAction()
           
protected  void finalize()
           
protected  void finalizeFile(File file, File processFile)
           
 FileHeader getFileHeader()
           
 Set<File> getFiles(org.nuiton.license.plugin.UpdateFileHeaderMojo.FileState state)
           
 UpdateFileHeaderFilter getFilter()
           
 String getIgnoreTag()
           
 String getInceptionYear()
           
 String getOrganizationName()
           
 Set<File> getProcessedFiles()
           
 FileHeaderProcessor getProcessor()
           
 String getProjectName()
           
 EnumMap<org.nuiton.license.plugin.UpdateFileHeaderMojo.FileState,Set<File>> getResult()
           
 long getTimestamp()
           
 FileHeaderTransformer getTransformer()
           
 void init()
           
 boolean isAddSvnKeyWords()
           
 boolean isClearAfterOperation()
           
 boolean isDryRun()
           
 boolean isSkip()
          When is sets to true, will skip execution.
 boolean isUpdateCopyright()
           
protected  boolean processFile(File file, File processFile)
          Process the given file and save the result in the given processFile.
protected  void processFileEntry(File entryBasedir, String[] paths)
           
protected  void processHeader(Header header)
           
protected  void reportType(org.nuiton.license.plugin.UpdateFileHeaderMojo.FileState state, StringBuilder buffer)
           
 void setAddSvnKeyWords(boolean addSvnKeyWords)
           
 void setClearAfterOperation(boolean clearAfterOperation)
           
 void setDryRun(boolean dryRun)
           
 void setFilter(UpdateFileHeaderFilter filter)
           
 void setHeader(FileHeader header)
           
 void setIgnoreTag(String ignoreTag)
           
 void setInceptionYear(String inceptionYear)
           
 void setOrganizationName(String organizationName)
           
 void setProcessor(FileHeaderProcessor processor)
           
 void setProjectName(String projectName)
           
 void setSkip(boolean skipUpdateLicense)
          Changes internal state skip to execute (or not) goal.
 void setSkipUpdateLicense(boolean skipUpdateLicense)
           
 void setTimestamp(long timestamp)
           
 void setTransformer(FileHeaderTransformer transformer)
           
 void setUpdateCopyright(boolean updateCopyright)
           
 
Methods inherited from class org.nuiton.license.plugin.AbstractLicenseWithDescriptorMojo
buildDefaultFileHeader, checkSkip, getDescriptor, getEncoding, getLicense, getLicenseProjectDescriptor, getLicenseResolver, getLicenseStore, getMainLicense, getTransformer, getTransformers, isKeepBackup, setDescriptor, setEncoding, setKeepBackup, setLicenseProjectDescriptor, setLicenseResolver, setLicenseStore, setTransformers, validateLicenseProjectDescriptor
 
Methods inherited from class org.nuiton.license.plugin.AbstractLicenseMojo
createLicenseStore, getBuildTimestamp, getProject, getSession, isVerbose, setProject, setSession, setVerbose
 
Methods inherited from class org.nuiton.plugin.AbstractPlugin
acceptPackaging, addCompileSourceRoots, addDirectoryToUrlsList, addResourceDir, addTestCompileSourceRoots, addTestResourceDir, addUrlToUrlsList, afterExecute, backupFile, checkEncoding, checkPackaging, checkResource, checkRunOnceDone, copyFile, createDirectoryIfNecessary, createNewFile, deleteFile, execute, getBackupFile, getFileFromBasedir, getFilesToTreate, getFilesToTreateForRoots, getRootProject, getTemplate, hasClassPath, initClassLoader, isExecutionRoot, isFileNewerThanPomFile, rejectPackaging, removeCompileSourceRoots, removeTestCompileSourceRoots, renameFile, writeFile
 
Methods inherited from class org.apache.maven.plugin.AbstractMojo
getLog, getPluginContext, setLog, setPluginContext
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.nuiton.license.plugin.header.FileHeaderProcessorConfiguration
getLog
 
Methods inherited from interface org.nuiton.plugin.Plugin
getProject, isVerbose, setProject, setVerbose
 
Methods inherited from interface org.apache.maven.plugin.Mojo
execute, getLog, setLog
 

Field Detail

projectName

protected String projectName
Name of project (or module).

Will be used as description section of new header.

Since:
2.1
Is defined by:
expression:
${license.projectName}
default-value:
${project.name}
Is required.

organizationName

protected String organizationName
Name of project's organization.

Will be used as copyrigth's holder in new header.

Since:
2.1
Is defined by:
expression:
${license.organizationName}
default-value:
${project.organization.name}
Is required.

inceptionYear

protected String inceptionYear
Inception year of the project.

Will be used as first year of copyright section in new header.

Since:
2.1
Is defined by:
expression:
${license.inceptionYear}
default-value:
${project.inceptionYear}
Is required.

addSvnKeyWords

protected boolean addSvnKeyWords
A flag to add svn:keywords on new header.

Will add svn keywords :

Author, Id, Rev, URL and Date

Since:
2.1
Is defined by:
expression:
${license.addSvnKeyWords}
default-value:
false

updateCopyright

protected boolean updateCopyright
A flag to update copyright application time (change copyright last year if required) according to the last commit made on the processed file.

Since:
2.1
Is defined by:
expression:
${license.updateCopyright}
default-value:
false

ignoreTag

protected String ignoreTag
A tag to place on files that will be ignored by the plugin.

Sometimes, it is necessary to do this when file is under a specific license.

Note: If no sets, will use the default tag %%Ignore-License

Since:
2.1
Is defined by:
expression:
${license.ignoreTag}

skipUpdateLicense

protected boolean skipUpdateLicense
A flag to skip the goal.

Since:
2.1
Is defined by:
expression:
${license.skipUpdateLicense}
default-value:
false

dryRun

protected boolean dryRun
A flag to test plugin but modify no file.

Since:
2.1
Is defined by:
expression:
${dryRun}
default-value:
false

clearAfterOperation

protected boolean clearAfterOperation
A flag to clear everything after execution.

Note: This property should ONLY be used for test purpose.

Since:
2.1
Is defined by:
expression:
${license.clearAfterOperation}
default-value:
true

processor

protected FileHeaderProcessor processor
Since:
2.1
Is a Plexus component defined by:
role:
org.nuiton.processor.Processor
roleHint:
file-header

filter

protected UpdateFileHeaderFilter filter
Since:
2.1
Is a Plexus component defined by:
role:
org.nuiton.license.plugin.header.FileHeaderFilter
roleHint:
update-file-header

transformer

protected FileHeaderTransformer transformer
internal file header transformer


header

protected FileHeader header
internal default file header


timestamp

protected long timestamp
timestamp used for generation


processedFiles

protected Set<File> processedFiles
set of processed files


result

protected EnumMap<org.nuiton.license.plugin.UpdateFileHeaderMojo.FileState,Set<File>> result
by file state files treated

Constructor Detail

UpdateFileHeaderMojo

public UpdateFileHeaderMojo()
Method Detail

init

public void init()
          throws Exception
Overrides:
init in class AbstractLicenseWithDescriptorMojo
Throws:
Exception

doAction

public void doAction()
              throws Exception
Specified by:
doAction in class org.nuiton.plugin.AbstractPlugin
Throws:
Exception

processHeader

protected void processHeader(Header header)
                      throws IOException
Throws:
IOException

processFileEntry

protected void processFileEntry(File entryBasedir,
                                String[] paths)
                         throws IOException
Throws:
IOException

processFile

protected boolean processFile(File file,
                              File processFile)
                       throws IOException
Process the given file and save the result in the given processFile.

Parameters:
file - the file to process
processFile - the ouput processed file
Returns:
true if processFile can be finalize, otherwise need to be delete
Throws:
IOException - if any pb while treatment

finalizeFile

protected void finalizeFile(File file,
                            File processFile)
                     throws IOException
Throws:
IOException

finalize

protected void finalize()
                 throws Throwable
Overrides:
finalize in class Object
Throws:
Throwable

clear

protected void clear()

reportType

protected void reportType(org.nuiton.license.plugin.UpdateFileHeaderMojo.FileState state,
                          StringBuilder buffer)

isClearAfterOperation

public boolean isClearAfterOperation()

getTimestamp

public long getTimestamp()

getProjectName

public String getProjectName()

getInceptionYear

public String getInceptionYear()

getOrganizationName

public String getOrganizationName()

isUpdateCopyright

public boolean isUpdateCopyright()

getIgnoreTag

public String getIgnoreTag()

isDryRun

public boolean isDryRun()

getFilter

public UpdateFileHeaderFilter getFilter()

getFileHeader

public FileHeader getFileHeader()
Specified by:
getFileHeader in interface FileHeaderProcessorConfiguration
Returns:
the current file header to use

getTransformer

public FileHeaderTransformer getTransformer()
Specified by:
getTransformer in interface FileHeaderProcessorConfiguration
Returns:
the current file transformer to use

isSkip

public boolean isSkip()
Description copied from class: AbstractLicenseWithDescriptorMojo
When is sets to true, will skip execution.

This will take effects in method AbstractLicenseWithDescriptorMojo.checkSkip(). So the method AbstractPlugin.doAction() will never be invoked.

Specified by:
isSkip in class AbstractLicenseWithDescriptorMojo
Returns:
true if goal will not be executed

getProcessedFiles

public Set<File> getProcessedFiles()

getResult

public EnumMap<org.nuiton.license.plugin.UpdateFileHeaderMojo.FileState,Set<File>> getResult()

getFiles

public Set<File> getFiles(org.nuiton.license.plugin.UpdateFileHeaderMojo.FileState state)

isAddSvnKeyWords

public boolean isAddSvnKeyWords()

getProcessor

public FileHeaderProcessor getProcessor()

setSkip

public void setSkip(boolean skipUpdateLicense)
Description copied from class: AbstractLicenseWithDescriptorMojo
Changes internal state skip to execute (or not) goal.

Specified by:
setSkip in class AbstractLicenseWithDescriptorMojo
Parameters:
skipUpdateLicense - new state value

setDryRun

public void setDryRun(boolean dryRun)

setTimestamp

public void setTimestamp(long timestamp)

setProjectName

public void setProjectName(String projectName)

setSkipUpdateLicense

public void setSkipUpdateLicense(boolean skipUpdateLicense)

setInceptionYear

public void setInceptionYear(String inceptionYear)

setOrganizationName

public void setOrganizationName(String organizationName)

setUpdateCopyright

public void setUpdateCopyright(boolean updateCopyright)

setIgnoreTag

public void setIgnoreTag(String ignoreTag)

setAddSvnKeyWords

public void setAddSvnKeyWords(boolean addSvnKeyWords)

setClearAfterOperation

public void setClearAfterOperation(boolean clearAfterOperation)

setTransformer

public void setTransformer(FileHeaderTransformer transformer)

setHeader

public void setHeader(FileHeader header)

setProcessor

public void setProcessor(FileHeaderProcessor processor)

setFilter

public void setFilter(UpdateFileHeaderFilter filter)


Copyright © 2008-2010 CodeLutin. All Rights Reserved.