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.*; 018import java.util.*; 019 020public class PublishHelper 021{ 022 private final LogDistillation ld; 023 024 private final List<String> publishers; 025 026 public PublishHelper( LogDistillation ld ) 027 { 028 this( ld, new ArrayList<String>() ); 029 } 030 031 public PublishHelper( LogDistillation ld, List<String> publishers ) 032 { 033 this.ld = ld; 034 this.publishers = publishers; 035 } 036 037 public int publish() 038 throws IOException, Publisher.PublishException 039 { 040 int published = publishGlobal(); 041 042 LogDistillation.Group[] groups = ld.getGroups(); 043 int count = groups.length; 044 for ( int i = 0; i < count; i++ ) 045 { 046 LogDistillation.Group group = groups[i]; 047 if ( ( !group.isSkip() ) && ( group.getEventCount() > 0 ) ) 048 { 049 published += publishGroup( group ); 050 } 051 } 052 return published; 053 } 054 055 public int publishGlobal() 056 throws IOException, Publisher.PublishException 057 { 058 LogDistiller.Report[] reports = ld.getDefinition().getOutput().getReports(); 059 int count = reports.length; 060 int published = 0; 061 for ( int i = 0; i < count; i++ ) 062 { 063 LogDistiller.Report report = reports[i]; 064 Publisher publisher = Publishers.getPublisher( report.getPublisher() ); 065 if ( isPublisherEnabled( publisher ) ) 066 { 067 publisher.publish( ld, report ); 068 published++; 069 } 070 } 071 return published; 072 } 073 074 public int publishGroup( LogDistillation.Group group ) 075 throws IOException, Publisher.PublishException 076 { 077 LogDistiller.Report[] reports = group.getDefinition().getReports(); 078 int count = reports.length; 079 int published = 0; 080 for ( int i = 0; i < count; i++ ) 081 { 082 LogDistiller.Report report = reports[i]; 083 Publisher publisher = Publishers.getPublisher( report.getPublisher() ); 084 if ( isPublisherEnabled( publisher ) ) 085 { 086 publisher.publish( group, report ); 087 published++; 088 } 089 } 090 return published; 091 } 092 093 private boolean isPublisherEnabled( Publisher publisher ) 094 { 095 return ( publisher != null ) && ( ( publishers == null ) || publishers.contains( publisher.getId() ) ); 096 } 097}