1 package org.simantics.modeling.template2d.ui.export;
3 import java.util.Collection;
4 import java.util.Collections;
8 import org.eclipse.core.runtime.IProgressMonitor;
9 import org.eclipse.core.runtime.SubMonitor;
10 import org.osgi.service.prefs.Preferences;
11 import org.simantics.databoard.binding.mutable.Variant;
12 import org.simantics.databoard.type.RecordType;
13 import org.simantics.db.ReadGraph;
14 import org.simantics.db.Resource;
15 import org.simantics.db.exception.DatabaseException;
16 import org.simantics.db.layer0.adapter.CopyHandler;
17 import org.simantics.db.layer0.util.ClipboardUtils;
18 import org.simantics.db.layer0.util.SimanticsClipboard;
19 import org.simantics.db.layer0.util.SimanticsClipboard.Representation;
20 import org.simantics.db.layer0.util.SimanticsClipboardImpl;
21 import org.simantics.db.layer0.util.SimanticsKeys;
22 import org.simantics.db.request.Read;
23 import org.simantics.export.core.ExportContext;
24 import org.simantics.export.core.error.ExportException;
25 import org.simantics.export.core.intf.ExportClass;
26 import org.simantics.export.core.manager.Content;
27 import org.simantics.export.core.manager.TransferableGraphWriter;
28 import org.simantics.export.core.util.ExportQueries;
29 import org.simantics.graph.representation.TransferableGraph1;
30 import org.simantics.utils.datastructures.MapList;
32 public class DrawingTemplateExporter implements ExportClass {
35 public RecordType options(ExportContext context, Collection<String> content) throws ExportException {
36 // TODO Auto-generated method stub
41 public void fillDefaultPrefs(ExportContext ctx, Variant options) throws ExportException {
42 // TODO Auto-generated method stub
46 public void savePref(Variant options, Preferences contentScopeNode, Preferences workbenchScopeNode) throws ExportException {
47 // TODO Auto-generated method stub
51 public void loadPref(Variant options, Preferences contentScopeNode, Preferences workbenchScopeNode) throws ExportException {
52 // TODO Auto-generated method stub
56 public void export(List<Content> contents,
58 ExportContext context,
60 IProgressMonitor monitor,
61 MapList<Content, Content> attachmentMap
62 ) throws ExportException {
64 final TransferableGraphWriter writer = (TransferableGraphWriter) writer_;
65 SubMonitor ss = SubMonitor.convert(monitor, 2);
67 List<Resource> resources = context.session.syncRequest( ExportQueries.toResources2(contents) );
68 SubMonitor subMonitor = ss.split(resources.size());
69 for ( final Resource model : resources ) {
70 // TODO: figure out a way to make the TG go directly into a file
71 // instead of having it all in memory at once.
72 SimanticsClipboard clipboard = context.session.syncRequest(new Read<SimanticsClipboard>() {
74 public SimanticsClipboard perform(ReadGraph graph) throws DatabaseException {
75 CopyHandler ch = graph.adapt( model, CopyHandler.class );
76 SimanticsClipboardImpl clipboard = new SimanticsClipboardImpl();
77 ch.copyToClipboard(graph, clipboard, subMonitor.split(1));
81 SubMonitor subMonitor2 = ss.split(resources.size());
82 for (Set<Representation> object : clipboard.getContents()) {
83 TransferableGraph1 tg = ClipboardUtils.accept(object, SimanticsKeys.KEY_TRANSFERABLE_GRAPH);
84 writer.writeFile(TransferableGraph1.BINDING, tg);
85 subMonitor2.worked(1);
89 } catch (DatabaseException e) {
90 throw new ExportException(e);
96 public List<String> validate(String contentUri, ExportContext context, Variant options) {
97 return Collections.emptyList();