Coverage Report - org.apache.maven.plugin.docck.HelpMojo
 
Classes in this File Line Coverage Branch Coverage Complexity
HelpMojo
0%
0/95
0%
0/54
4,333
 
 1  
 package org.apache.maven.plugin.docck;
 2  
 
 3  
 import java.util.ArrayList;
 4  
 import java.util.Iterator;
 5  
 import java.util.List;
 6  
 
 7  
 import org.apache.maven.plugin.AbstractMojo;
 8  
 import org.apache.maven.plugin.MojoExecutionException;
 9  
 
 10  
 /**
 11  
  * Display help information on maven-docck-plugin.<br/> Call <pre>  mvn docck:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</pre> to display parameter details.
 12  
  *
 13  
  * @version generated on Sun Nov 02 23:11:24 CET 2008
 14  
  * @author org.apache.maven.tools.plugin.generator.PluginHelpGenerator (version 2.4.3)
 15  
  * @goal help
 16  
  * @requiresProject false
 17  
  */
 18  0
 public class HelpMojo
 19  
     extends AbstractMojo
 20  
 {
 21  
     /**
 22  
      * If <code>true</code>, display all settable properties for each goal.
 23  
      * 
 24  
      * @parameter expression="${detail}" default-value="false"
 25  
      */
 26  
     private boolean detail;
 27  
 
 28  
     /**
 29  
      * The name of the goal for which to show help. If unspecified, all goals will be displayed.
 30  
      * 
 31  
      * @parameter expression="${goal}"
 32  
      */
 33  
     private java.lang.String goal;
 34  
 
 35  
     /**
 36  
      * The maximum length of a display line, should be positive.
 37  
      * 
 38  
      * @parameter expression="${lineLength}" default-value="80"
 39  
      */
 40  
     private int lineLength;
 41  
 
 42  
     /**
 43  
      * The number of spaces per indentation level, should be positive.
 44  
      * 
 45  
      * @parameter expression="${indentSize}" default-value="2"
 46  
      */
 47  
     private int indentSize;
 48  
 
 49  
 
 50  
     /** {@inheritDoc} */
 51  
     public void execute()
 52  
         throws MojoExecutionException
 53  
     {
 54  0
         if ( lineLength <= 0 )
 55  
         {
 56  0
             getLog().warn( "The parameter 'lineLength' should be positive, using '80' as default." );
 57  0
             lineLength = 80;
 58  
         }
 59  0
         if ( indentSize <= 0 )
 60  
         {
 61  0
             getLog().warn( "The parameter 'indentSize' should be positive, using '2' as default." );
 62  0
             indentSize = 2;
 63  
         }
 64  
 
 65  0
         StringBuffer sb = new StringBuffer();
 66  
 
 67  0
         append( sb, "org.apache.maven.plugins:maven-docck-plugin:1.0", 0 );
 68  0
         append( sb, "", 0 );
 69  
 
 70  0
         append( sb, "Maven Documentation Checker Plugin 1.0", 0 );
 71  0
         append( sb, "Checks for violations of the Plugin Documentation Standard.", 1 );
 72  0
         append( sb, "", 0 );
 73  
 
 74  0
         if ( goal == null || goal.length() <= 0 )
 75  
         {
 76  0
             append( sb, "This plugin has 2 goals:", 0 );
 77  0
             append( sb, "", 0 );
 78  
         }
 79  
 
 80  0
         if ( goal == null || goal.length() <= 0 || "check".equals( goal ) )
 81  
         {
 82  0
             append( sb, "docck:check", 0 );
 83  0
             append( sb, "Checks a plugin\'s documentation for the standard minimums.", 1 );
 84  0
             append( sb, "", 0 );
 85  0
             if ( detail )
 86  
             {
 87  0
                 append( sb, "Available parameters:", 1 );
 88  0
                 append( sb, "", 0 );
 89  
 
 90  0
                 append( sb, "offline", 2 );
 91  0
                 append( sb, "Sets whether this plugin is running in offline or online mode. Also useful when you don\'t want to verify http URLs.", 3 );
 92  0
                 append( sb, "", 0 );
 93  
 
 94  0
                 append( sb, "output", 2 );
 95  0
                 append( sb, "An optional location where the results will be written to. If this is not specified the results will be written to the console.", 3 );
 96  0
                 append( sb, "", 0 );
 97  
 
 98  0
                 append( sb, "siteDirectory (Default: src/site)", 2 );
 99  0
                 append( sb, "Directory where the site source for the project is located.", 3 );
 100  0
                 append( sb, "", 0 );
 101  
             }
 102  
         }
 103  
 
 104  0
         if ( goal == null || goal.length() <= 0 || "help".equals( goal ) )
 105  
         {
 106  0
             append( sb, "docck:help", 0 );
 107  0
             append( sb, "Display help information on maven-docck-plugin.\nCall\n\u00a0\u00a0mvn\u00a0docck:help\u00a0-Ddetail=true\u00a0-Dgoal=<goal-name>\nto display parameter details.", 1 );
 108  0
             append( sb, "", 0 );
 109  0
             if ( detail )
 110  
             {
 111  0
                 append( sb, "Available parameters:", 1 );
 112  0
                 append( sb, "", 0 );
 113  
 
 114  0
                 append( sb, "detail (Default: false)", 2 );
 115  0
                 append( sb, "If true, display all settable properties for each goal.", 3 );
 116  0
                 append( sb, "", 0 );
 117  
 
 118  0
                 append( sb, "goal", 2 );
 119  0
                 append( sb, "The name of the goal for which to show help. If unspecified, all goals will be displayed.", 3 );
 120  0
                 append( sb, "", 0 );
 121  
 
 122  0
                 append( sb, "lineLength (Default: 80)", 2 );
 123  0
                 append( sb, "The maximum length of a display line, should be positive.", 3 );
 124  0
                 append( sb, "", 0 );
 125  
 
 126  0
                 append( sb, "indentSize (Default: 2)", 2 );
 127  0
                 append( sb, "The number of spaces per indentation level, should be positive.", 3 );
 128  0
                 append( sb, "", 0 );
 129  
             }
 130  
         }
 131  
 
 132  0
         if ( getLog().isInfoEnabled() )
 133  
         {
 134  0
             getLog().info( sb.toString() );
 135  
         }
 136  0
     }
 137  
 
 138  
     /**
 139  
      * <p>Repeat a String <code>n</code> times to form a new string.</p>
 140  
      *
 141  
      * @param str String to repeat
 142  
      * @param repeat number of times to repeat str
 143  
      * @return String with repeated String
 144  
      * @throws NegativeArraySizeException if <code>repeat < 0</code>
 145  
      * @throws NullPointerException if str is <code>null</code>
 146  
      */
 147  
     private static String repeat( String str, int repeat )
 148  
     {
 149  0
         StringBuffer buffer = new StringBuffer( repeat * str.length() );
 150  
 
 151  0
         for ( int i = 0; i < repeat; i++ )
 152  
         {
 153  0
             buffer.append( str );
 154  
         }
 155  
 
 156  0
         return buffer.toString();
 157  
     }
 158  
 
 159  
     /** 
 160  
      * Append a description to the buffer by respecting the indentSize and lineLength parameters.
 161  
      * <b>Note</b>: The last character is always a new line.
 162  
      * 
 163  
      * @param sb The buffer to append the description, not <code>null</code>.
 164  
      * @param description The description, not <code>null</code>.
 165  
      * @param indent The base indentation level of each line, must not be negative.
 166  
      */
 167  
     private void append( StringBuffer sb, String description, int indent )
 168  
     {
 169  0
         for ( Iterator it = toLines( description, indent, indentSize, lineLength ).iterator(); it.hasNext(); )
 170  
         {
 171  0
             sb.append( it.next().toString() ).append( '\n' );
 172  
         }
 173  0
     }
 174  
 
 175  
     /** 
 176  
      * Splits the specified text into lines of convenient display length.
 177  
      * 
 178  
      * @param text The text to split into lines, must not be <code>null</code>.
 179  
      * @param indent The base indentation level of each line, must not be negative.
 180  
      * @param indentSize The size of each indentation, must not be negative.
 181  
      * @param lineLength The length of the line, must not be negative.
 182  
      * @return The sequence of display lines, never <code>null</code>.
 183  
      * @throws NegativeArraySizeException if <code>indent < 0</code>
 184  
      */
 185  
     private static List toLines( String text, int indent, int indentSize, int lineLength )
 186  
     {
 187  0
         List lines = new ArrayList();
 188  
 
 189  0
         String ind = repeat( "\t", indent );
 190  0
         String[] plainLines = text.split( "(\r\n)|(\r)|(\n)" );
 191  0
         for ( int i = 0; i < plainLines.length; i++ )
 192  
         {
 193  0
             toLines( lines, ind + plainLines[i], indentSize, lineLength );
 194  
         }
 195  
 
 196  0
         return lines;
 197  
     }
 198  
 
 199  
     /** 
 200  
      * Adds the specified line to the output sequence, performing line wrapping if necessary.
 201  
      * 
 202  
      * @param lines The sequence of display lines, must not be <code>null</code>.
 203  
      * @param line The line to add, must not be <code>null</code>.
 204  
      * @param indentSize The size of each indentation, must not be negative.
 205  
      * @param lineLength The length of the line, must not be negative.
 206  
      */
 207  
     private static void toLines( List lines, String line, int indentSize, int lineLength )
 208  
     {
 209  0
         int lineIndent = getIndentLevel( line );
 210  0
         StringBuffer buf = new StringBuffer( 256 );
 211  0
         String[] tokens = line.split( " +" );
 212  0
         for ( int i = 0; i < tokens.length; i++ )
 213  
         {
 214  0
             String token = tokens[i];
 215  0
             if ( i > 0 )
 216  
             {
 217  0
                 if ( buf.length() + token.length() >= lineLength )
 218  
                 {
 219  0
                     lines.add( buf.toString() );
 220  0
                     buf.setLength( 0 );
 221  0
                     buf.append( repeat( " ", lineIndent * indentSize ) );
 222  
                 }
 223  
                 else
 224  
                 {
 225  0
                     buf.append( ' ' );
 226  
                 }
 227  
             }
 228  0
             for ( int j = 0; j < token.length(); j++ )
 229  
             {
 230  0
                 char c = token.charAt( j );
 231  0
                 if ( c == '\t' )
 232  
                 {
 233  0
                     buf.append( repeat( " ", indentSize - buf.length() % indentSize ) );
 234  
                 }
 235  0
                 else if ( c == '\u00A0' )
 236  
                 {
 237  0
                     buf.append( ' ' );
 238  
                 }
 239  
                 else
 240  
                 {
 241  0
                     buf.append( c );
 242  
                 }
 243  
             }
 244  
         }
 245  0
         lines.add( buf.toString() );
 246  0
     }
 247  
 
 248  
     /** 
 249  
      * Gets the indentation level of the specified line.
 250  
      * 
 251  
      * @param line The line whose indentation level should be retrieved, must not be <code>null</code>.
 252  
      * @return The indentation level of the line.
 253  
      */
 254  
     private static int getIndentLevel( String line )
 255  
     {
 256  0
         int level = 0;
 257  0
         for ( int i = 0; i < line.length() && line.charAt( i ) == '\t'; i++ )
 258  
         {
 259  0
             level++;
 260  
         }
 261  0
         for ( int i = level + 1; i <= level + 4 && i < line.length(); i++ )
 262  
         {
 263  0
             if ( line.charAt( i ) == '\t' )
 264  
             {
 265  0
                 level++;
 266  0
                 break;
 267  
             }
 268  
         }
 269  0
         return level;
 270  
     }
 271  
 }