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;
017
018 import org.apache.maven.plugin.MojoExecutionException;
019 import org.apache.maven.plugin.MojoFailureException;
020 import org.codehaus.mojo.license.header.transformer.FileHeaderTransformer;
021
022 import java.util.*;
023
024 /**
025 * Displays all the available comment style to box file headers.
026 *
027 * @author themit <chemit@codelutin.com>
028 * @requiresProject false
029 * @requiresDirectInvocation
030 * @goal comment-style-list
031 * @since 1.0
032 */
033 public class CommentStyleListMojo
034 extends AbstractLicenseMojo
035 {
036
037 /**
038 * A flag to display also the content of each license.
039 *
040 * @parameter expression="${detail}"
041 * @since 1.0
042 */
043 private boolean detail;
044
045 /**
046 * All available header transformers.
047 *
048 * @component role="org.codehaus.mojo.license.header.transformer.FileHeaderTransformer"
049 * @since 1.0
050 */
051 private Map<String, FileHeaderTransformer> transformers;
052
053 @Override
054 protected void init()
055 throws Exception
056 {
057 //nothing to do
058 }
059
060 @Override
061 public void doAction()
062 throws MojoExecutionException, MojoFailureException
063 {
064
065 StringBuilder buffer = new StringBuilder();
066 if ( isVerbose() )
067 {
068 buffer.append( "\n\n-------------------------------------------------------------------------------\n" );
069 buffer.append( " license-maven-plugin\n" );
070 buffer.append( "-------------------------------------------------------------------------------\n\n" );
071 }
072 List<String> names = new ArrayList<String>( transformers.keySet() );
073 Collections.sort( names );
074
075 int maxLength = 0;
076 int maxDLength = 0;
077 for ( String name : names )
078 {
079 if ( name.length() > maxLength )
080 {
081 maxLength = name.length();
082 }
083 FileHeaderTransformer transformer = transformers.get( name );
084 if ( transformer.getDescription().length() > maxDLength )
085 {
086 maxDLength = transformer.getDescription().length();
087 }
088 }
089
090 String pattern = " - %1$-" + maxLength + "s : %2$-" + maxDLength + "s, extensions : %3$s\n";
091
092 buffer.append( "List of available comment styles:\n\n" );
093 for ( String transformerName : names )
094 {
095 FileHeaderTransformer transformer = transformers.get( transformerName );
096 buffer.append( String.format( pattern, transformerName, transformer.getDescription(),
097 Arrays.toString( transformer.getDefaultAcceptedExtensions() ) ) );
098 if ( detail )
099 {
100 buffer.append( "\n example : \n" );
101 buffer.append( transformer.boxComment( "header", true ) );
102 buffer.append( '\n' );
103 }
104 }
105
106 getLog().info( buffer.toString() );
107 }
108
109 public boolean isDetail()
110 {
111 return detail;
112 }
113
114 public void setDetail( boolean detail )
115 {
116 this.detail = detail;
117 }
118
119 public Map<String, FileHeaderTransformer> getTransformers()
120 {
121 return transformers;
122 }
123
124 public void setTransformers( Map<String, FileHeaderTransformer> transformers )
125 {
126 this.transformers = transformers;
127 }
128 }