]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.document/src/org/simantics/document/export/ExportWikiPdf.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.document / src / org / simantics / document / export / ExportWikiPdf.java
diff --git a/bundles/org.simantics.document/src/org/simantics/document/export/ExportWikiPdf.java b/bundles/org.simantics.document/src/org/simantics/document/export/ExportWikiPdf.java
new file mode 100644 (file)
index 0000000..1737638
--- /dev/null
@@ -0,0 +1,110 @@
+package org.simantics.document.export;\r
+\r
+import java.util.Collection;\r
+import java.util.Collections;\r
+import java.util.List;\r
+\r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.mylyn.wikitext.core.parser.MarkupParser;\r
+import org.eclipse.mylyn.wikitext.mediawiki.core.MediaWikiLanguage;\r
+import org.osgi.service.prefs.Preferences;\r
+import org.simantics.databoard.binding.mutable.Variant;\r
+import org.simantics.databoard.type.RecordType;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.common.request.Queries;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.document.DocumentSettings;\r
+import org.simantics.document.DocumentUtils;\r
+import org.simantics.export.core.ExportContext;\r
+import org.simantics.export.core.error.ExportException;\r
+import org.simantics.export.core.intf.ExportClass;\r
+import org.simantics.export.core.manager.Content;\r
+import org.simantics.export.core.pdf.ExportPdfWriter;\r
+import org.simantics.export.core.pdf.ExportPdfWriter.Page;\r
+import org.simantics.utils.datastructures.MapList;\r
+import org.simantics.utils.page.PageDesc;\r
+\r
+import com.lowagie.text.DocumentException;\r
+\r
+public class ExportWikiPdf implements ExportClass {\r
+\r
+       static RecordType wikiOptions = new RecordType();\r
+       \r
+       MarkupParser markupParser;\r
+       MediaWikiLanguage language;\r
+       \r
+       public ExportWikiPdf() {\r
+               markupParser = new MarkupParser();\r
+               language = new MediaWikiLanguage();\r
+               markupParser.setMarkupLanguage(language);\r
+       }\r
+       \r
+       @Override\r
+       public RecordType options(ExportContext ctx, Collection<String> contentUris) throws ExportException {\r
+               return wikiOptions;\r
+       }\r
+\r
+       @Override\r
+       public List<String> validate(String contentUri, ExportContext context, Variant options) {\r
+               return Collections.emptyList();\r
+       }\r
+\r
+       @Override\r
+       public void export(List<Content> contents, Object handle, ExportContext ctx, Variant options, IProgressMonitor monitor, MapList<Content, Content> attachmentMap) throws ExportException {\r
+               \r
+               final ExportPdfWriter writer = (ExportPdfWriter) handle;\r
+               \r
+               try {\r
+                       \r
+                       for(Content content : contents) {\r
+                               \r
+                               Resource res = ctx.session.syncRequest( Queries.resource(content.url) );\r
+                       \r
+                               StringBuilder wikiSb = new StringBuilder();\r
+                               StringBuilder cssSb = new StringBuilder();\r
+\r
+                               DocumentUtils du = new DocumentUtils();\r
+                               du.getDocumentWikiTextRecursive(ctx.session, res, wikiSb, cssSb);\r
+                               DocumentSettings settings = du.getDocumentSettings(ctx.session, res);\r
+\r
+                               if ( wikiSb.length()>0 ) {\r
+                                       Page page = writer.createPage(PageDesc.A4);\r
+                                       du.print(ctx.session, res, wikiSb.toString(), cssSb.toString(), settings, page.pdfWriter, page.document);\r
+                               }\r
+\r
+                       }\r
+\r
+               } catch (DatabaseException e) {\r
+                       throw new ExportException( e ); \r
+               } catch (DocumentException e) {\r
+                       throw new ExportException( e ); \r
+               }\r
+       }\r
+       \r
+       Content findClosestContent(List<Content> contents, String uri) {\r
+               Content result = null;\r
+               int match = -1;\r
+               for ( Content c : contents ) {\r
+                       if ( uri.startsWith(c.url) ) {\r
+                               if ( c.url.length()>match ) {\r
+                                       match = c.url.length();\r
+                                       result = c;\r
+                               }\r
+                       }\r
+               }\r
+               return result;\r
+       }\r
+\r
+       @Override\r
+       public void fillDefaultPrefs(ExportContext ctx, Variant options) throws ExportException {\r
+       }\r
+\r
+       @Override\r
+       public void savePref(Variant options, Preferences contentScopePrefs, Preferences workspaceScopePrefs) throws ExportException {\r
+       }\r
+\r
+       @Override\r
+       public void loadPref(Variant options, Preferences contentScopeNode, Preferences workspaceScopePrefs) throws ExportException {\r
+       }\r
+       \r
+}\r