1 package org.simantics.modeling.template2d.ui.export;
\r
3 import java.util.Collection;
\r
4 import java.util.Collections;
\r
5 import java.util.List;
\r
6 import java.util.Set;
\r
8 import org.eclipse.core.runtime.IProgressMonitor;
\r
9 import org.osgi.service.prefs.Preferences;
\r
10 import org.simantics.databoard.binding.mutable.Variant;
\r
11 import org.simantics.databoard.type.RecordType;
\r
12 import org.simantics.db.ReadGraph;
\r
13 import org.simantics.db.Resource;
\r
14 import org.simantics.db.exception.DatabaseException;
\r
15 import org.simantics.db.layer0.adapter.CopyHandler;
\r
16 import org.simantics.db.layer0.util.ClipboardUtils;
\r
17 import org.simantics.db.layer0.util.SimanticsClipboard;
\r
18 import org.simantics.db.layer0.util.SimanticsClipboard.Representation;
\r
19 import org.simantics.db.layer0.util.SimanticsClipboardImpl;
\r
20 import org.simantics.db.layer0.util.SimanticsKeys;
\r
21 import org.simantics.db.request.Read;
\r
22 import org.simantics.export.core.ExportContext;
\r
23 import org.simantics.export.core.error.ExportException;
\r
24 import org.simantics.export.core.intf.ExportClass;
\r
25 import org.simantics.export.core.manager.Content;
\r
26 import org.simantics.export.core.manager.TransferableGraphWriter;
\r
27 import org.simantics.export.core.util.ExportQueries;
\r
28 import org.simantics.graph.representation.TransferableGraph1;
\r
29 import org.simantics.utils.datastructures.MapList;
\r
31 public class DrawingTemplateExporter implements ExportClass {
\r
34 public RecordType options(ExportContext context, Collection<String> content) throws ExportException {
\r
35 // TODO Auto-generated method stub
\r
40 public void fillDefaultPrefs(ExportContext ctx, Variant options) throws ExportException {
\r
41 // TODO Auto-generated method stub
\r
45 public void savePref(Variant options, Preferences contentScopeNode, Preferences workbenchScopeNode) throws ExportException {
\r
46 // TODO Auto-generated method stub
\r
50 public void loadPref(Variant options, Preferences contentScopeNode, Preferences workbenchScopeNode) throws ExportException {
\r
51 // TODO Auto-generated method stub
\r
55 public void export(List<Content> contents,
\r
57 ExportContext context,
\r
59 IProgressMonitor monitor,
\r
60 MapList<Content, Content> attachmentMap
\r
61 ) throws ExportException {
\r
63 final TransferableGraphWriter writer = (TransferableGraphWriter) writer_;
\r
66 List<Resource> resources = context.session.syncRequest( ExportQueries.toResources2(contents) );
\r
67 for ( final Resource model : resources ) {
\r
68 // TODO: figure out a way to make the TG go directly into a file
\r
69 // instead of having it all in memory at once.
\r
70 SimanticsClipboard clipboard = context.session.syncRequest(new Read<SimanticsClipboard>() {
\r
72 public SimanticsClipboard perform(ReadGraph graph) throws DatabaseException {
\r
73 CopyHandler ch = graph.adapt( model, CopyHandler.class );
\r
74 SimanticsClipboardImpl clipboard = new SimanticsClipboardImpl();
\r
75 ch.copyToClipboard(graph, clipboard);
\r
79 for (Set<Representation> object : clipboard.getContents()) {
\r
80 TransferableGraph1 tg = ClipboardUtils.accept(object, SimanticsKeys.KEY_TRANSFERABLE_GRAPH);
\r
81 writer.writeFile(TransferableGraph1.BINDING, tg);
\r
85 } catch (DatabaseException e) {
\r
86 throw new ExportException(e);
\r
92 public List<String> validate(String contentUri, ExportContext context, Variant options) {
\r
93 return Collections.emptyList();
\r