use of org.apache.maven.doxia.sink.Sink in project maven-plugins by apache.
the class PdfMojo method generateMavenReport.
/**
* Generate the given Maven report only if it is not an external report and the report could be generated.
*
* @param mojoDescriptor not null, to catch linkage error
* @param report could be null
* @param locale not null
* @throws IOException if any
* @throws MojoExecutionException if any
* @see #isValidGeneratedReport(MojoDescriptor, File, String)
* @since 1.1
*/
private void generateMavenReport(MavenReport report, Artifact pluginArtifact, Locale locale) throws IOException, MojoExecutionException {
if (report == null) {
return;
}
String localReportName = report.getName(locale);
if (!report.canGenerateReport()) {
getLog().info("Skipped \"" + localReportName + "\" report.");
getLog().debug("canGenerateReport() was false.");
return;
}
if (report.isExternalReport()) {
getLog().info("Skipped external \"" + localReportName + "\" report.");
getLog().debug("isExternalReport() was false.");
return;
}
for (final MavenReport generatedReport : getGeneratedMavenReports(locale)) {
if (report.getName(locale).equals(generatedReport.getName(locale))) {
if (getLog().isDebugEnabled()) {
getLog().debug(report.getName(locale) + " was already generated.");
}
return;
}
}
File outDir = new File(getGeneratedSiteDirectoryTmp(), "xdoc");
if (!locale.getLanguage().equals(defaultLocale.getLanguage())) {
outDir = new File(new File(getGeneratedSiteDirectoryTmp(), locale.getLanguage()), "xdoc");
}
outDir.mkdirs();
File generatedReport = new File(outDir, report.getOutputName() + ".xml");
String excludes = getDefaultExcludesWithLocales(getAvailableLocales(), getDefaultLocale());
List<String> files = FileUtils.getFileNames(siteDirectory, "*/" + report.getOutputName() + ".*", excludes, false);
if (!locale.getLanguage().equals(defaultLocale.getLanguage())) {
files = FileUtils.getFileNames(new File(siteDirectory, locale.getLanguage()), "*/" + report.getOutputName() + ".*", excludes, false);
}
if (files.size() != 0) {
String displayLanguage = locale.getDisplayLanguage(Locale.ENGLISH);
if (getLog().isInfoEnabled()) {
getLog().info("Skipped \"" + report.getName(locale) + "\" report, file \"" + report.getOutputName() + "\" already exists for the " + displayLanguage + " version.");
}
return;
}
if (getLog().isInfoEnabled()) {
getLog().info("Generating \"" + localReportName + "\" report.");
}
StringWriter sw = new StringWriter();
PdfSink sink = null;
try {
sink = new PdfSink(sw);
org.codehaus.doxia.sink.Sink proxy = (org.codehaus.doxia.sink.Sink) Proxy.newProxyInstance(org.codehaus.doxia.sink.Sink.class.getClassLoader(), new Class[] { org.codehaus.doxia.sink.Sink.class }, new SinkDelegate(sink));
report.generate(proxy, locale);
} catch (MavenReportException e) {
throw new MojoExecutionException("MavenReportException: " + e.getMessage(), e);
} finally {
if (sink != null) {
sink.close();
}
}
writeGeneratedReport(sw.toString(), generatedReport);
if (isValidGeneratedReport(pluginArtifact, generatedReport, localReportName)) {
getGeneratedMavenReports(locale).add(report);
}
}
use of org.apache.maven.doxia.sink.Sink in project felix by apache.
the class BaselineReport method startBaseline.
@Override
protected void startBaseline(final Object context, String generationDate, String bundleName, String currentVersion, String previousVersion) {
final Context ctx = (Context) context;
final Sink sink = ctx.sink;
sink.head();
sink.title();
String title = getBundle(ctx.locale).getString("report.baseline.title");
sink.text(title);
sink.title_();
sink.head_();
sink.body();
sink.section1();
sink.sectionTitle1();
sink.text(title);
sink.sectionTitle1_();
sink.paragraph();
sink.text(getBundle(ctx.locale).getString("report.baseline.bndlink") + " ");
sink.link("http://www.aqute.biz/Bnd/Bnd");
sink.text("Bnd");
sink.link_();
sink.text(".");
sink.paragraph_();
sink.paragraph();
sink.text(getBundle(ctx.locale).getString("report.baseline.bundle") + " ");
sink.figure();
sink.figureGraphics("images/baseline/bundle.gif");
sink.figure_();
sink.text(" ");
sink.bold();
sink.text(bundleName);
sink.bold_();
sink.listItem_();
sink.paragraph();
sink.text(getBundle(ctx.locale).getString("report.baseline.version.current") + " ");
sink.bold();
sink.text(currentVersion);
sink.bold_();
sink.paragraph_();
sink.paragraph();
sink.text(getBundle(ctx.locale).getString("report.baseline.version.comparison") + " ");
sink.bold();
sink.text(comparisonVersion);
sink.bold_();
sink.paragraph_();
sink.paragraph();
sink.text(getBundle(ctx.locale).getString("report.baseline.generationdate") + " ");
sink.bold();
sink.text(generationDate);
sink.bold_();
sink.paragraph_();
sink.section1_();
}
use of org.apache.maven.doxia.sink.Sink in project felix by apache.
the class BaselineReport method startDiff.
@Override
protected void startDiff(final Object context, int depth, String type, String name, String delta, String shortDelta) {
final Context ctx = (Context) context;
final Sink sink = ctx.sink;
if (ctx.currentDepth < depth) {
sink.list();
}
ctx.currentDepth = depth;
sink.listItem();
sink.figure();
sink.figureGraphics("images/baseline/" + type + ".gif");
sink.figure_();
sink.text(" ");
sink.monospaced();
sink.text(name);
sink.monospaced_();
sink.text(" ");
sink.italic();
sink.text(delta);
sink.italic_();
}
use of org.apache.maven.doxia.sink.Sink in project felix by apache.
the class BaselineReport method endPackage.
@Override
protected void endPackage(final Object context) {
final Context ctx = (Context) context;
final Sink sink = ctx.sink;
if (ctx.currentDepth > 0) {
sink.list_();
ctx.currentDepth = 0;
}
sink.listItem_();
sink.list_();
}
use of org.apache.maven.doxia.sink.Sink in project revapi by revapi.
the class ReportAggregateMojo method executeReport.
@Override
protected void executeReport(Locale locale) throws MavenReportException {
if (skip) {
return;
}
if (!canGenerateReport()) {
return;
}
List<MavenProject> dependents = mavenSession.getProjectDependencyGraph().getDownstreamProjects(project, true);
Collections.sort(dependents, (a, b) -> {
String as = a.getArtifact().toString();
String bs = b.getArtifact().toString();
return as.compareTo(bs);
});
Map<MavenProject, ProjectVersions> projectVersions = dependents.stream().collect(Collectors.toMap(Function.identity(), this::getRunConfig));
projectVersions.put(project, getRunConfig(project));
ResourceBundle messages = getBundle(locale);
Sink sink = getSink();
if (generateSiteReport) {
startReport(sink, messages);
}
try {
Analyzer topAnalyzer = prepareAnalyzer(null, project, locale, projectVersions.get(project));
Revapi sharedRevapi = topAnalyzer == null ? null : topAnalyzer.getRevapi();
for (MavenProject p : dependents) {
Analyzer projectAnalyzer = prepareAnalyzer(sharedRevapi, p, locale, projectVersions.get(p));
if (projectAnalyzer != null) {
try (AnalysisResult res = projectAnalyzer.analyze()) {
res.throwIfFailed();
ReportTimeReporter reporter = res.getExtensions().getFirstExtension(ReportTimeReporter.class, null);
if (generateSiteReport && reporter != null) {
reportBody(reporter, projectAnalyzer.getResolvedOldApi(), projectAnalyzer.getResolvedNewApi(), sink, messages);
}
}
}
}
if (generateSiteReport) {
endReport(sink);
}
} catch (Exception e) {
throw new MavenReportException("Failed to generate the report.", e);
}
}
Aggregations