X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.export.core%2Fsrc%2Forg%2Fsimantics%2Fexport%2Fcore%2Fmanager%2FPublishAction.java;fp=bundles%2Forg.simantics.export.core%2Fsrc%2Forg%2Fsimantics%2Fexport%2Fcore%2Fmanager%2FPublishAction.java;h=1a8645542fac27c7a177ad88aecb6f9b9411366a;hp=0000000000000000000000000000000000000000;hb=969bd23cab98a79ca9101af33334000879fb60c5;hpb=866dba5cd5a3929bbeae85991796acb212338a08 diff --git a/bundles/org.simantics.export.core/src/org/simantics/export/core/manager/PublishAction.java b/bundles/org.simantics.export.core/src/org/simantics/export/core/manager/PublishAction.java new file mode 100644 index 000000000..1a8645542 --- /dev/null +++ b/bundles/org.simantics.export.core/src/org/simantics/export/core/manager/PublishAction.java @@ -0,0 +1,64 @@ +package org.simantics.export.core.manager; + +import java.util.Collections; +import java.util.List; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.simantics.databoard.binding.mutable.Variant; +import org.simantics.export.core.ExportContext; +import org.simantics.export.core.error.ExportException; +import org.simantics.export.core.intf.Publisher; +import org.simantics.export.core.intf.PublisherClass; + +/** + * This action publishes the prepared content into an output location. + * + * @author toni.kalajainen@semantum.fi + */ +public class PublishAction extends ExportAction { + + public String publisherId; + public Variant locationOptions; + public List contents; + + public PublishAction( String publisherId, Variant locationOptions, List contents ) + { + this.publisherId = publisherId; + this.locationOptions = locationOptions; + this.contents = contents; + } + + @Override + public void execute(ExportContext ctx, IProgressMonitor progress, Variant options) throws ExportException { + Publisher publisher = ctx.eep.getPublisher(publisherId); + PublisherClass action = publisher.publisherClass(); + action.publish(ctx, contents, options, locationOptions, progress); + } + + @Override + public String label(ExportContext ctx) { + Publisher publisher = ctx.eep.getPublisher(publisherId); + return publisher.label(); + } + + @Override + public int work(ExportContext ctx) { + return 2; + } + + @Override + public List validate(ExportContext ctx, Variant options) { + try { + Publisher publisher = ctx.eep.getPublisher(publisherId); + PublisherClass action = publisher.publisherClass(); + return action.validate(ctx, contents, options, locationOptions); + } catch (ExportException e) { + return Collections.singletonList( e.getClass().getName()+": "+e.getMessage() ); + } + } + + @Override + public void cleanup(ExportContext ctx, IProgressMonitor progress, Variant options) throws ExportException { + } + +}