001package net.sf.logdistiller; 002 003/* 004 * Licensed under the Apache 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.apache.org/licenses/LICENSE-2.0 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 017import java.io.IOException; 018import java.io.Writer; 019 020/** 021 * Report formats' base class. 022 */ 023public abstract class ReportFormat 024{ 025 private final String id; 026 027 protected ReportFormat( String id ) 028 { 029 this.id = id; 030 } 031 032 public String getId() 033 { 034 return id; 035 } 036 037 public abstract String getContentType(); 038 039 public abstract String getFileExtension(); 040 041 public abstract void report( LogDistillation ld, Writer output ) 042 throws IOException; 043 044 public abstract void report( LogDistillation.Group group, Writer output ) 045 throws IOException; 046 047 protected int addPluginsGroupReport( LogDistillation.Group group, PluginReport report ) 048 { 049 LogDistillation.Plugin[] plugins = group.getPlugins(); 050 int len = plugins.length; 051 int count = 0; 052 for ( int i = 0; i < len; i++ ) 053 { 054 LogDistillation.Plugin plugin = plugins[i]; 055 if ( plugin.getDefinition().isGroupReportEnabled() ) 056 { 057 plugin.appendGroupReport( report ); 058 count++; 059 } 060 } 061 return count; 062 } 063 064 protected int addPluginsGlobalReport( LogDistillation.Group group, PluginReport report ) 065 { 066 LogDistillation.Plugin[] plugins = group.getPlugins(); 067 int len = plugins.length; 068 int count = 0; 069 for ( int i = 0; i < len; i++ ) 070 { 071 LogDistillation.Plugin plugin = plugins[i]; 072 if ( plugin.getDefinition().isGlobalReportEnabled() ) 073 { 074 plugin.appendGlobalReport( report ); 075 count++; 076 } 077 } 078 return count; 079 } 080 081 public static abstract class PluginReport 082 { 083 public abstract void beginPluginReport( LogDistillation.Plugin plugin, String description ); 084 085 public abstract void addLink( String filename, String description ); 086 087 public abstract void addParam( String param, String value ); 088 089 public abstract void addItem( int count, String description ); 090 091 public abstract void endPluginReport(); 092 } 093}