// Path: src/main/java/org/graylog/plugins/aggregates/history/HistoryAggregateItem.java
// public interface HistoryAggregateItem {
// 	public String getMoment();
// 	
//     public long getNumberOfHits();
//         
// }
// 
// Path: src/main/java/org/graylog/plugins/aggregates/report/schedule/ReportSchedule.java
// public interface ReportSchedule {
// 	
// 	public String getId();
// 	
// 	public String getName();
// 
// 	public String getExpression();
// 
// 	public String getTimespan();
// 	
// 	public boolean isDefaultSchedule();
// 	
// 	public Long getNextFireTime();
// 
// 	public List<String> getReportReceivers();
// }
// 
// Path: src/main/java/org/graylog/plugins/aggregates/rule/Rule.java
// public interface Rule {
// 	
// 	public String getQuery();
// 
// 	public String getField();
// 
// 	public long getNumberOfMatches();
// 
// 	public boolean isMatchMoreOrEqual();
// 
// 	public int getInterval();
// 	
// 	public String getName();
// 	
// 	public boolean isEnabled();
// 	
// 	public String getStreamId();
// 
// 	public boolean isInReport();
// 
// 	public List<String> getReportSchedules();
// 
// 	public String getAlertConditionId();
// 
// 	public boolean shouldRepeatNotifications();
// 
// 	public long getBacklog();
// }


import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.io.OutputStream;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.graylog.plugins.aggregates.history.HistoryAggregateItem;
import org.graylog.plugins.aggregates.report.schedule.ReportSchedule;
import org.graylog.plugins.aggregates.rule.Rule;
import org.jfree.chart.JFreeChart;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.itextpdf.awt.DefaultFontMapper;
import com.itextpdf.text.Document;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfTemplate;
import com.itextpdf.text.pdf.PdfWriter;
package org.graylog.plugins.aggregates.report;


public class ReportFactory {
	private static final Logger LOG = LoggerFactory.getLogger(ReportFactory.class);
	
// Path: src/main/java/org/graylog/plugins/aggregates/history/HistoryAggregateItem.java
// public interface HistoryAggregateItem {
// 	public String getMoment();
// 	
//     public long getNumberOfHits();
//         
// }
// 
// Path: src/main/java/org/graylog/plugins/aggregates/report/schedule/ReportSchedule.java
// public interface ReportSchedule {
// 	
// 	public String getId();
// 	
// 	public String getName();
// 
// 	public String getExpression();
// 
// 	public String getTimespan();
// 	
// 	public boolean isDefaultSchedule();
// 	
// 	public Long getNextFireTime();
// 
// 	public List<String> getReportReceivers();
// }
// 
// Path: src/main/java/org/graylog/plugins/aggregates/rule/Rule.java
// public interface Rule {
// 	
// 	public String getQuery();
// 
// 	public String getField();
// 
// 	public long getNumberOfMatches();
// 
// 	public boolean isMatchMoreOrEqual();
// 
// 	public int getInterval();
// 	
// 	public String getName();
// 	
// 	public boolean isEnabled();
// 	
// 	public String getStreamId();
// 
// 	public boolean isInReport();
// 
// 	public List<String> getReportSchedules();
// 
// 	public String getAlertConditionId();
// 
// 	public boolean shouldRepeatNotifications();
// 
// 	public long getBacklog();
// }


// Path: src/main/java/org/graylog/plugins/aggregates/report/ReportFactory.java
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.io.OutputStream;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.graylog.plugins.aggregates.history.HistoryAggregateItem;
import org.graylog.plugins.aggregates.report.schedule.ReportSchedule;
import org.graylog.plugins.aggregates.rule.Rule;
import org.jfree.chart.JFreeChart;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.itextpdf.awt.DefaultFontMapper;
import com.itextpdf.text.Document;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfTemplate;
import com.itextpdf.text.pdf.PdfWriter;

package org.graylog.plugins.aggregates.report;


public class ReportFactory {
	private static final Logger LOG = LoggerFactory.getLogger(ReportFactory.class);
	
	public static void createReport(Map<Rule, List<HistoryAggregateItem>> series, Map<Rule, ReportSchedule> ruleScheduleMapping, Calendar cal, OutputStream outputStream, String hostname) throws ParseException {		