/******************************************************************************* | |
* Copyright (c) 2012, 2015 INRIA, and Mia-Software. | |
* | |
* All rights reserved. This program and the | |
* accompanying materials are 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 | |
* | |
* Contributors: | |
* Guillaume Doux (INRIA) - Initial API and implementation | |
* Grégoire Dupé (Mia-Software) - Bug 482672 - Benchmark command line interface | |
* Grégoire Dupé (Mia-Software) - Bug 482857 - Discoverer Benchmark Report : wrong namespaces | |
******************************************************************************/ | |
package org.eclipse.modisco.infra.discovery.benchmark.core.internal.impl; | |
import java.io.File; | |
import java.util.ArrayList; | |
import java.util.List; | |
import org.eclipse.emf.common.util.URI; | |
import org.eclipse.emf.ecore.EObject; | |
import org.eclipse.emf.ecore.resource.Resource; | |
import org.eclipse.emf.ecore.resource.ResourceSet; | |
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; | |
import org.eclipse.modisco.infra.discovery.benchmark.core.internal.reporting.HtmlReport; | |
import org.eclipse.modisco.infra.discovery.benchmark.core.internal.reporting.internal.BenchmarkChartGeneration; | |
import org.eclipse.modisco.infra.discovery.benchmark.metamodel.internal.benchmark.Benchmark; | |
public final class ReportUtils { | |
private ReportUtils() { | |
// Must not be used | |
} | |
public static void generateReport(final Benchmark benchmark, | |
final File targetFolder, final List<? extends Object> arguments, | |
final boolean measureMemoryUse) throws ReportUtilsException { | |
try { | |
// Generation of the HTML report | |
final HtmlReport report = new HtmlReport(benchmark, targetFolder, arguments); | |
report.doGenerate(null); | |
// Generation of the charts | |
final BenchmarkChartGeneration chartGenerator = | |
new BenchmarkChartGeneration(targetFolder, measureMemoryUse); | |
chartGenerator.generateAll(benchmark); | |
} catch (final Exception e) { | |
throw new ReportUtilsException(e); | |
} | |
} | |
public static void generateReport(final URI benchmarkUri, final File targetFolder, | |
final List<? extends Object> arguments, | |
final boolean measureMemoryUse) throws ReportUtilsException { | |
final ResourceSet resourceSet = new ResourceSetImpl(); | |
final Resource resource = resourceSet.getResource(benchmarkUri, true); | |
final List<Benchmark> benchmarks = new ArrayList<Benchmark>(); | |
for (EObject root : resource.getContents()) { | |
if (root instanceof Benchmark) { | |
final Benchmark benchmark = (Benchmark) root; | |
benchmarks.add(benchmark); | |
} | |
} | |
if (benchmarks.isEmpty()) { | |
final String message = String.format( | |
"The resource '' doen't contains any Benchmark instances at its root.", //$NON-NLS-1$ | |
benchmarkUri.toString()); | |
throw new ReportUtilsException(message); | |
} | |
if (benchmarks.size() == 1) { | |
generateReport(benchmarks.get(0), targetFolder, arguments, | |
measureMemoryUse); | |
} else { | |
for (Benchmark benchmark : benchmarks) { | |
generateReport(benchmark, targetFolder, arguments, | |
measureMemoryUse); | |
} | |
} | |
} | |
public static void generateReport(final File benchmarkFile, final File targetFolder, | |
final List<? extends Object> arguments, | |
final boolean measureMemoryUse) throws ReportUtilsException { | |
final URI uri = URI.createFileURI(benchmarkFile.getAbsolutePath()); | |
generateReport(uri, targetFolder, arguments, measureMemoryUse); | |
} | |
} |