Coverage Report - org.apache.maven.plugin.issues.IssuesReportGenerator
 
Classes in this File Line Coverage Branch Coverage Complexity
IssuesReportGenerator
0%
0/103
0%
0/44
8,4
 
 1  
 package org.apache.maven.plugin.issues;
 2  
 
 3  
 /*
 4  
  * Licensed to the Apache Software Foundation (ASF) under one
 5  
  * or more contributor license agreements.  See the NOTICE file
 6  
  * distributed with this work for additional information
 7  
  * regarding copyright ownership.  The ASF licenses this file
 8  
  * to you under the Apache License, Version 2.0 (the
 9  
  * "License"); you may not use this file except in compliance
 10  
  * with the License.  You may obtain a copy of the License at
 11  
  *
 12  
  *   http://www.apache.org/licenses/LICENSE-2.0
 13  
  *
 14  
  * Unless required by applicable law or agreed to in writing,
 15  
  * software distributed under the License is distributed on an
 16  
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 17  
  * KIND, either express or implied.  See the License for the
 18  
  * specific language governing permissions and limitations
 19  
  * under the License.
 20  
  */
 21  
 
 22  
 import org.apache.maven.doxia.sink.Sink;
 23  
 
 24  
 import java.text.DateFormat;
 25  
 import java.util.List;
 26  
 import java.util.Locale;
 27  
 import java.util.ResourceBundle;
 28  
 
 29  
 /**
 30  
  * Generates a report on issues.
 31  
  *
 32  
  * @author Noriko Kinugasa
 33  
  * @author Dennis Lundberg
 34  
  * @version $Id: org.apache.maven.plugin.issues.IssuesReportGenerator.html 816598 2012-05-08 12:46:49Z hboutemy $
 35  
  * @since 2.4
 36  
  */
 37  
 public class IssuesReportGenerator extends AbstractIssuesReportGenerator
 38  
 {
 39  
     /**
 40  
      * Fallback value that is used if date field are not available.
 41  
      */
 42  
     private static final String NOT_AVAILABLE = "n/a";
 43  
 
 44  
     /**
 45  
      * Holds the id:s for the columns to include in the report, in the order
 46  
      * that they should appear in the report.
 47  
      */
 48  
     private int[] columns;
 49  
 
 50  
     /**
 51  
      * @param includedColumns The id:s of the columns to include in the report
 52  
      */
 53  
     public IssuesReportGenerator( int[] includedColumns )
 54  0
     {
 55  0
         this.columns = includedColumns;
 56  0
     }
 57  
 
 58  
     public void doGenerateEmptyReport( ResourceBundle bundle, Sink sink )
 59  
     {
 60  0
         sinkBeginReport( sink, bundle );
 61  
 
 62  0
         sink.paragraph();
 63  
 
 64  0
         sink.text( bundle.getString( "report.issues.error" ) );
 65  
 
 66  0
         sink.paragraph_();
 67  
 
 68  0
         sinkEndReport( sink );
 69  0
     }
 70  
 
 71  
     public void doGenerateReport( ResourceBundle bundle, Sink sink, List issueList )
 72  
     {
 73  0
         sinkBeginReport( sink, bundle );
 74  
 
 75  0
         constructHeaderRow( sink, issueList, bundle );
 76  
 
 77  
         // Always use the international date format as recommended by the W3C:
 78  
         // http://www.w3.org/QA/Tips/iso-date
 79  
         // This date format is used in the Swedish locale.
 80  0
         constructDetailRows( sink, issueList, bundle, new Locale( "sv" ) );
 81  
 
 82  0
         sinkEndReport( sink );
 83  0
     }
 84  
 
 85  
     private void constructHeaderRow( Sink sink, List issueList, ResourceBundle bundle )
 86  
     {
 87  0
         if ( issueList == null )
 88  
         {
 89  0
             return;
 90  
         }
 91  
 
 92  0
         sink.table();
 93  
 
 94  0
         sink.tableRow();
 95  
 
 96  0
         for ( int columnIndex = 0; columnIndex < columns.length; columnIndex++ )
 97  
         {
 98  0
             switch ( columns[columnIndex] )
 99  
             {
 100  
                 case IssuesReportHelper.COLUMN_ASSIGNEE:
 101  0
                     sinkHeader( sink, bundle.getString( "report.issues.label.assignee" ) );
 102  0
                     break;
 103  
 
 104  
                 case IssuesReportHelper.COLUMN_COMPONENT:
 105  0
                     sinkHeader( sink, bundle.getString( "report.issues.label.component" ) );
 106  0
                     break;
 107  
 
 108  
                 case IssuesReportHelper.COLUMN_CREATED:
 109  0
                     sinkHeader( sink, bundle.getString( "report.issues.label.created" ) );
 110  0
                     break;
 111  
 
 112  
                 case IssuesReportHelper.COLUMN_FIX_VERSION:
 113  0
                     sinkHeader( sink, bundle.getString( "report.issues.label.fixVersion" ) );
 114  0
                     break;
 115  
 
 116  
                 case IssuesReportHelper.COLUMN_ID:
 117  0
                     sinkHeader( sink, bundle.getString( "report.issues.label.id" ) );
 118  0
                     break;
 119  
 
 120  
                 case IssuesReportHelper.COLUMN_KEY:
 121  0
                     sinkHeader( sink, bundle.getString( "report.issues.label.key" ) );
 122  0
                     break;
 123  
 
 124  
                 case IssuesReportHelper.COLUMN_PRIORITY:
 125  0
                     sinkHeader( sink, bundle.getString( "report.issues.label.priority" ) );
 126  0
                     break;
 127  
 
 128  
                 case IssuesReportHelper.COLUMN_REPORTER:
 129  0
                     sinkHeader( sink, bundle.getString( "report.issues.label.reporter" ) );
 130  0
                     break;
 131  
 
 132  
                 case IssuesReportHelper.COLUMN_RESOLUTION:
 133  0
                     sinkHeader( sink, bundle.getString( "report.issues.label.resolution" ) );
 134  0
                     break;
 135  
 
 136  
                 case IssuesReportHelper.COLUMN_STATUS:
 137  0
                     sinkHeader( sink, bundle.getString( "report.issues.label.status" ) );
 138  0
                     break;
 139  
 
 140  
                 case IssuesReportHelper.COLUMN_SUMMARY:
 141  0
                     sinkHeader( sink, bundle.getString( "report.issues.label.summary" ) );
 142  0
                     break;
 143  
 
 144  
                 case IssuesReportHelper.COLUMN_TYPE:
 145  0
                     sinkHeader( sink, bundle.getString( "report.issues.label.type" ) );
 146  0
                     break;
 147  
 
 148  
                 case IssuesReportHelper.COLUMN_UPDATED:
 149  0
                     sinkHeader( sink, bundle.getString( "report.issues.label.updated" ) );
 150  0
                     break;
 151  
 
 152  
                 case IssuesReportHelper.COLUMN_VERSION:
 153  0
                     sinkHeader( sink, bundle.getString( "report.issues.label.version" ) );
 154  0
                     break;
 155  
 
 156  
                 default:
 157  
                     // Do not add a header for this column
 158  
                     break;
 159  
             }
 160  
         }
 161  
 
 162  0
         sink.tableRow_();
 163  0
     }
 164  
 
 165  
     private void constructDetailRows( Sink sink, List issueList, ResourceBundle bundle, Locale locale )
 166  
     {
 167  0
         if ( issueList == null )
 168  
         {
 169  0
             return;
 170  
         }
 171  
 
 172  0
         for ( int idx = 0; idx < issueList.size(); idx++ )
 173  
         {
 174  
             // Use a DateFormat based on the Locale
 175  0
             DateFormat df = DateFormat.getDateInstance( DateFormat.SHORT, locale );
 176  
 
 177  0
             Issue issue = (Issue) issueList.get( idx );
 178  
 
 179  0
             sink.tableRow();
 180  
 
 181  0
             for ( int columnIndex = 0; columnIndex < columns.length; columnIndex++ )
 182  
             {
 183  0
                 switch ( columns[columnIndex] )
 184  
                 {
 185  
                     case IssuesReportHelper.COLUMN_ASSIGNEE:
 186  0
                         sinkCell( sink, issue.getAssignee() );
 187  0
                         break;
 188  
 
 189  
                     case IssuesReportHelper.COLUMN_COMPONENT:
 190  0
                         sinkCell( sink, IssuesReportHelper.printValues( issue.getComponents() ) );
 191  0
                         break;
 192  
 
 193  
                     case IssuesReportHelper.COLUMN_CREATED:
 194  0
                         String created = NOT_AVAILABLE;
 195  0
                         if ( issue.getCreated() != null )
 196  
                         {
 197  0
                             created = df.format( issue.getCreated() );
 198  
                         }
 199  0
                         sinkCell( sink, created );
 200  0
                         break;
 201  
 
 202  
                     case IssuesReportHelper.COLUMN_FIX_VERSION:
 203  0
                         sinkCell( sink, IssuesReportHelper.printValues( issue.getFixVersions() ) );
 204  0
                         break;
 205  
 
 206  
                     case IssuesReportHelper.COLUMN_ID:
 207  0
                         sink.tableCell();
 208  0
                         sink.link( issue.getLink() );
 209  0
                         sink.text( issue.getId() );
 210  0
                         sink.link_();
 211  0
                         sink.tableCell_();
 212  0
                         break;
 213  
 
 214  
                     case IssuesReportHelper.COLUMN_KEY:
 215  0
                         sink.tableCell();
 216  0
                         sink.link( issue.getLink() );
 217  0
                         sink.text( issue.getKey() );
 218  0
                         sink.link_();
 219  0
                         sink.tableCell_();
 220  0
                         break;
 221  
 
 222  
                     case IssuesReportHelper.COLUMN_PRIORITY:
 223  0
                         sinkCell( sink, issue.getPriority() );
 224  0
                         break;
 225  
 
 226  
                     case IssuesReportHelper.COLUMN_REPORTER:
 227  0
                         sinkCell( sink, issue.getReporter() );
 228  0
                         break;
 229  
 
 230  
                     case IssuesReportHelper.COLUMN_RESOLUTION:
 231  0
                         sinkCell( sink, issue.getResolution() );
 232  0
                         break;
 233  
 
 234  
                     case IssuesReportHelper.COLUMN_STATUS:
 235  0
                         sinkCell( sink, issue.getStatus() );
 236  0
                         break;
 237  
 
 238  
                     case IssuesReportHelper.COLUMN_SUMMARY:
 239  0
                         sinkCell( sink, issue.getSummary() );
 240  0
                         break;
 241  
 
 242  
                     case IssuesReportHelper.COLUMN_TYPE:
 243  0
                         sinkCell( sink, issue.getType() );
 244  0
                         break;
 245  
 
 246  
                     case IssuesReportHelper.COLUMN_UPDATED:
 247  0
                         String updated = NOT_AVAILABLE;
 248  0
                         if ( issue.getUpdated() != null )
 249  
                         {
 250  0
                             updated = df.format( issue.getUpdated() );
 251  
                         }
 252  0
                         sinkCell( sink, updated );
 253  0
                         break;
 254  
 
 255  
                     case IssuesReportHelper.COLUMN_VERSION:
 256  0
                         sinkCell( sink, issue.getVersion() );
 257  0
                         break;
 258  
 
 259  
                     default:
 260  
                         // Do not add this column
 261  
                         break;
 262  
                 }
 263  
             }
 264  
 
 265  0
             sink.tableRow_();
 266  
         }
 267  
 
 268  0
         sink.table_();
 269  0
     }
 270  
 }