1 package org.simantics.document.linking.report;
\r
3 import java.text.DateFormat;
\r
4 import java.util.ArrayList;
\r
5 import java.util.List;
\r
6 import java.util.Map;
\r
8 import org.simantics.db.ReadGraph;
\r
9 import org.simantics.db.Resource;
\r
10 import org.simantics.db.common.utils.NameUtils;
\r
11 import org.simantics.db.exception.DatabaseException;
\r
12 import org.simantics.document.linking.report.Document.TextSize;
\r
13 import org.simantics.document.linking.report.TableColumn.Alignment;
\r
14 import org.simantics.document.linking.report.templates.CustomizableContentProvider;
\r
15 import org.simantics.document.linking.report.templates.ReportWriter;
\r
16 import org.simantics.document.linking.report.templates.custom.CustomizableContent;
\r
19 public abstract class DocumentTitlePage implements DocumentElement{
\r
22 public void writeTitle(ReadGraph graph, Map<Object, Object> context) throws Exception {
\r
23 ReportWriter<?> reportWriter = (ReportWriter<?>)context.get(ReportWriter.class);
\r
24 CustomizableContent content = null;
\r
25 if (reportWriter instanceof CustomizableContentProvider) {
\r
26 content = ((CustomizableContentProvider)reportWriter).getContent("Title");
\r
28 if (content == null)
\r
29 writeTitle(getDefaultLines(graph, (Resource)context.get("model"), (String)context.get("DocumentName")));
\r
32 List<DocumentLine> lines = content.getLines(graph, (Resource)context.get("model"), context);
\r
37 protected abstract void writeTitle(List<DocumentLine> lines) throws Exception;
\r
40 public List<DocumentLine> getDefaultLines(ReadGraph graph, Resource model, String documentName) throws DatabaseException{
\r
41 List<DocumentLine> result = new ArrayList<DocumentLine>();
\r
43 String modelName = NameUtils.getSafeLabel(graph, model);
\r
44 if (modelName.length() == 0)
\r
45 modelName = NameUtils.getSafeName(graph, model);
\r
47 java.util.Date date = new java.util.Date(System.currentTimeMillis());
\r
48 String dateString = DateFormat.getDateTimeInstance().format(date);
\r
50 result.add(new DocumentLine(modelName, Alignment.class, Alignment.CENTER, TextSize.class, TextSize.HUGE));
\r
51 result.add(new DocumentLine(documentName, Alignment.class, Alignment.CENTER, TextSize.class, TextSize.HUGE));
\r
52 result.add(new DocumentLine(dateString, Alignment.class, Alignment.CENTER, TextSize.class, TextSize.LARGE));
\r