/******************************************************************************* * GenPlay, Einstein Genome Analyzer * Copyright (C) 2009, 2014 Albert Einstein College of Medicine * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * Authors: Julien Lajugie <julien.lajugie@einstein.yu.edu> * Nicolas Fourel <nicolas.fourel@einstein.yu.edu> * Eric Bouhassira <eric.bouhassira@einstein.yu.edu> * * Website: <http://genplay.einstein.yu.edu> ******************************************************************************/ package edu.yu.einstein.genplay.exception.report; /** * The {@link ReportBuilder} can generate a report about any {@link Throwable}. * A report can be separated in different sub-parts but there are two main parts: * - the header: context information about GenPlay, Java, System... * - the content: information about the error. * * @author Nicolas Fourel * @version 0.1 */ public class ReportBuilder { protected final static String DEFAULT_VALUE = "unknown"; private static int REPORT_COUNT = 0; private final ReportHeaderBuilder headerBuilder; // The header report builders. private final ReportExceptionBuilder exceptionBuilder; // The exeception report builders. private String report; // The report /** * Constructor of {@link ReportBuilder} */ public ReportBuilder () { headerBuilder = new ReportHeaderBuilder(); exceptionBuilder = new ReportExceptionBuilder(); } /** * Initializes the report * @param thread a thread * @param throwable an exception * @param message error message to display */ public void initializeReport (Thread thread, Throwable throwable, String message) { REPORT_COUNT++; headerBuilder.initializeReport(); if (thread != null) { exceptionBuilder.initializeReport(thread, throwable); } else if (throwable != null) { exceptionBuilder.initializeReport(throwable); } report = "== REPORT #" + REPORT_COUNT + "\n"; report += "== REPORT HEADER\n"; report += headerBuilder.getReport(); report += "\n\n"; report += "== REPORT EXCEPTION CONTENT\n"; report += exceptionBuilder.getReport(); } /** * @return the report */ public String getReport () { return report; } /** * @param title a title * @return the formatted title */ protected static String getTitle (String title) { return "" + title + "\n"; } /** * @param title a title * @param value a value for the title * @return a formatted title/value string */ protected static String getInformation (String title, Object value) { if (value == null) { return ""; } return ("- " + title + ": " + value.toString() + "\n"); } }