--- /dev/null
+package org.simantics.export.core.manager;\r
+\r
+import java.util.Collections;\r
+import java.util.List;\r
+\r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.simantics.databoard.binding.mutable.Variant;\r
+import org.simantics.export.core.ExportContext;\r
+import org.simantics.export.core.error.ExportException;\r
+import org.simantics.export.core.intf.Publisher;\r
+import org.simantics.export.core.util.ExporterUtils;\r
+\r
+/**\r
+ * Checks if publish location exists, if not, creates one.\r
+ *\r
+ * @author toni.kalajainen@semantum.fi\r
+ */\r
+public class CreatePublishLocationAction extends ExportAction {\r
+\r
+ String publisherId;\r
+ \r
+ public CreatePublishLocationAction(String publisherId) \r
+ {\r
+ this.publisherId = publisherId;\r
+ }\r
+ \r
+ @Override\r
+ public void execute(ExportContext ctx, IProgressMonitor progress, Variant options) throws ExportException {\r
+ // Get publisher options\r
+ Publisher publisher = ctx.eep.getPublisher( publisherId );\r
+ Variant locationOptions = ExporterUtils.getPublisherLocationOptions(ctx, publisherId, options);\r
+ if ( locationOptions == null ) return;\r
+ boolean exists = publisher.publisherClass().locationExists(ctx, locationOptions);\r
+ \r
+ if ( !exists ) {\r
+ publisher.publisherClass().createLocation(ctx, locationOptions);\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public String label(ExportContext ctx) {\r
+ Publisher publisher = ctx.eep.getPublisher( publisherId );\r
+ String label = publisher.label();\r
+ return "Assert "+label+" location exists.";\r
+ }\r
+\r
+ @Override\r
+ public int work(ExportContext ctx) {\r
+ return 1;\r
+ }\r
+\r
+ @Override\r
+ public List<String> validate(ExportContext ctx, Variant options) {\r
+ return Collections.emptyList();\r
+ }\r
+\r
+ @Override\r
+ public void cleanup(ExportContext ctx, IProgressMonitor progress, Variant options) throws ExportException {\r
+ }\r
+\r
+}\r