Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/exports/AbstractChartGenerator.java @ 9311:7c7f73e5e01e
Moved chart metadata line to top of chart. Minor cleanup.
author | gernotbelger |
---|---|
date | Thu, 26 Jul 2018 11:16:06 +0200 |
parents | 4082b8429353 |
children | 094ed9d1f2ad |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/exports/AbstractChartGenerator.java Thu Jul 26 11:08:11 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/exports/AbstractChartGenerator.java Thu Jul 26 11:16:06 2018 +0200 @@ -21,6 +21,8 @@ import java.io.OutputStream; import java.text.DateFormat; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Locale; @@ -30,10 +32,13 @@ import javax.xml.xpath.XPathConstants; +import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; +import org.dive4elements.artifactdatabase.CollectionCallContext; import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; import org.dive4elements.artifactdatabase.state.Settings; import org.dive4elements.artifacts.Artifact; +import org.dive4elements.artifacts.ArtifactCollection; import org.dive4elements.artifacts.ArtifactNamespaceContext; import org.dive4elements.artifacts.CallContext; import org.dive4elements.artifacts.CallMeta; @@ -67,6 +72,7 @@ import org.jfree.data.Range; import org.jfree.data.general.Series; import org.jfree.data.xy.XYDataset; +import org.jfree.ui.HorizontalAlignment; import org.jfree.ui.RectangleInsets; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -467,22 +473,72 @@ } } + protected final void generateTitles(final JFreeChart chart) { + /* add metadata title before real title */ + addMetadataSubtitle(chart); + + /* add the real chart title, but as subtitle after the metadata */ + final String chartTitle = getChartTitle(this.context); + if (chartTitle != null) { + final TextTitle title = new TextTitle(chartTitle, JFreeChart.DEFAULT_TITLE_FONT); + chart.addSubtitle(title); + } + + addSubtitles(this.context, chart); + } + + /** * Adds a metadata sub-title to the chart if it gets exported */ - protected final void addMetadataSubtitle(final CallContext context, final JFreeChart chart) { + protected final void addMetadataSubtitle(final JFreeChart chart) { if ((!isExport() || !isExportMetadata())) return; + final Collection<String> metadata = buildMetadata(); + final String text = StringUtils.join(metadata, " - "); + + /** The default font. */ + final Font titleFont = new Font("SansSerif", Font.ITALIC, 10); + + final TextTitle subtitle = new TextTitle(text, titleFont); + subtitle.setHorizontalAlignment(HorizontalAlignment.LEFT); + subtitle.setMargin(new RectangleInsets(10,10,10,10)); + + chart.addSubtitle(subtitle); + } + + private Collection<String> buildMetadata() { + + final CallMeta meta = this.context.getMeta(); + + if (!(this.context instanceof CollectionCallContext)) { + /* should never happen */ + return Collections.emptyList(); + } + + final CollectionCallContext ccc = (CollectionCallContext) this.context; + final ArtifactCollection collection = ccc.getCollection(); + + final List<String> subtitles = new ArrayList<>(); + + /* version */ final String version = FLYS.VERSION; - final String user = CalculationUtils.findArtifactUser(context, getArtifact()); - final Locale locale = Resources.getLocale(context.getMeta()); + subtitles.add(Resources.getMsg(meta, "chart.subtitle.metadata.version", "default", version)); + + /* user */ + // REMARK: the use inside the collection is a fake user and hence we cant use it here. + // final User user = collection.getUser(); + final String userName = CalculationUtils.findArtifactUser(this.context, getArtifact()); + subtitles.add(Resources.getMsg(meta, "chart.subtitle.metadata.user", "default", userName)); + + /* creation date */ + final Locale locale = Resources.getLocale(meta); final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale); final String dateText = df.format(new Date()); + subtitles.add(Resources.getMsg(meta, "chart.subtitle.metadata.creationdate", "default", dateText)); - final String text = Resources.getMsg(context.getMeta(), "chart.subtitle.metadata", "default", version, user, dateText); - - chart.addSubtitle(new TextTitle(text)); + return subtitles; } private boolean isExportMetadata() {