/*******************************************************************************
* Copyright (c) 2016 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributor:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.examples.ui.bot.test.integration;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.jboss.reddeer.common.logging.Logger;
/**
* This class gathers info of all errors and warnings for all quickstarts. Also
* it is able to report it to system output or write them to files.
*
* @author rhopp
*
*/
public class QuickstartsReporter {
private static Map<Quickstart, List<String>> errors;
private static Map<Quickstart, List<String>> warnings;
private static List<Quickstart> qstarts;
private static List<String> infos;
private static QuickstartsReporter instance = new QuickstartsReporter();
private static final Logger log = Logger.getLogger(QuickstartsReporter.class);
protected QuickstartsReporter() {
errors = new HashMap<Quickstart, List<String>>();
warnings = new HashMap<Quickstart, List<String>>();
qstarts = new ArrayList<Quickstart>();
infos = new ArrayList<String>();
}
public static QuickstartsReporter getInstance() {
return instance;
}
public void addInfo(String infoMessage) {
infos.add(infoMessage);
}
public void addError(Quickstart q, String error) {
if (!qstarts.contains(q)) {
qstarts.add(q);
}
if (!errors.containsKey(q)) {
errors.put(q, new ArrayList<String>());
}
errors.get(q).add(error);
}
public void addWarning(Quickstart q, String warning) {
if (!qstarts.contains(q)) {
qstarts.add(q);
}
if (!warnings.containsKey(q)) {
warnings.put(q, new ArrayList<String>());
}
warnings.get(q).add(warning);
}
public void generateReport() {
for (String info : infos) {
log.info(info);
}
for (Quickstart quickstart : qstarts) {
log.info("QUICKSTART: " + quickstart.getName());
if (errors.containsKey(quickstart)) {
log.info("\tERRORS:");
for (String error : errors.get(quickstart)) {
log.info("\t\t" + error);
}
}
if (warnings.containsKey(quickstart)) {
log.info("\tWARNINGS:");
for (String warning : warnings.get(quickstart)) {
log.info("\t\t" + warning);
}
}
}
}
public void generateAllErrorsFile(File file) {
PrintWriter writer = null;
try {
writer = new PrintWriter(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
for (String info : infos) {
writer.println("INFO: " + info);
}
for (Quickstart q : qstarts) {
if (errors.containsKey(q)) {
writer.println("Errors in quickstart \"" + q.getName() + "\"");
for (String error : errors.get(q)) {
writer.println("\t" + error);
}
writer.println();
}
}
writer.close();
}
public void generateErrorFilesForEachProject(File directory) {
if (!directory.exists()) {
directory.mkdir();
}
if (!directory.isDirectory()) {
throw new IllegalArgumentException();
}
for (Quickstart q : qstarts) {
if (errors.containsKey(q)) {
PrintWriter writer = null;
try {
writer = new PrintWriter(directory.getAbsolutePath() + "/" + q.getName() + ".txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
for (String info : infos) {
writer.println("INFO: " + info);
}
for (String error : errors.get(q)) {
writer.println(error);
}
writer.close();
}
}
}
}