]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.event/src/org/simantics/event/util/EventExporter.java
Merge "Fix column width issues on HiDPI displays. KeyTiSelection fixes."
[simantics/platform.git] / bundles / org.simantics.event / src / org / simantics / event / util / EventExporter.java
index 7c563fe2c42ae17567e391bc1607839ceb57040b..0e34770c5f988a68e8cc1d0deccfb1d2cc2a0f88 100644 (file)
-/*******************************************************************************\r
- * Copyright (c) 2014 Association for Decentralized Information Management\r
- * in Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- *     Semantum Oy - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.event.util;\r
-\r
-import java.io.File;\r
-import java.io.IOException;\r
-import java.io.PrintStream;\r
-import java.util.Collection;\r
-import java.util.Map;\r
-\r
-import org.eclipse.core.runtime.IProgressMonitor;\r
-import org.eclipse.core.runtime.SubMonitor;\r
-import org.simantics.Simantics;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.common.request.ReadRequest;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.event.view.contribution.EventLabelRule;\r
-import org.simantics.event.view.contribution.ProjectEventsRule;\r
-import org.simantics.utils.FileUtils;\r
-import org.simantics.utils.strings.EString;\r
-\r
-/**\r
- * @author Tuukka Lehtonen\r
- */\r
-public class EventExporter {\r
-\r
-       public EventExporter() {\r
-       }\r
-\r
-       /**\r
-        * @param monitor\r
-        *            the progress monitor to use for reporting progress to the\r
-        *            user. It is the caller's responsibility to call done() on the\r
-        *            given monitor. Accepts <code>null</code>, indicating that no\r
-        *            progress should be reported and that the operation cannot be\r
-        *            cancelled.</pre>\r
-        * @param file\r
-        * @param columnSeparator\r
-        * @throws DatabaseException\r
-        * @throws IOException\r
-        */\r
-       public void exportCsv(final IProgressMonitor monitor, File file, final String columnSeparator) throws DatabaseException, IOException {\r
-               final PrintStream out = new PrintStream(file);\r
-               try {\r
-                       Simantics.getSession().syncRequest(new ReadRequest() {\r
-                               @Override\r
-                               public void run(ReadGraph graph) throws DatabaseException {\r
-                                       exportCsv(graph, monitor, out, columnSeparator);\r
-                               }\r
-                       });\r
-               } finally {\r
-                       FileUtils.uncheckedClose(out);\r
-               }\r
-       }\r
-\r
-       /**\r
-        * @param graph\r
-        * @param monitor\r
-        *            the progress monitor to use for reporting progress to the\r
-        *            user. It is the caller's responsibility to call done() on the\r
-        *            given monitor. Accepts <code>null</code>, indicating that no\r
-        *            progress should be reported and that the operation cannot be\r
-        *            cancelled.</pre>\r
-        * @param out\r
-        * @param columnSeparator\r
-        * @throws DatabaseException\r
-        */\r
-       public void exportCsv(ReadGraph graph, IProgressMonitor monitor, PrintStream out, String columnSeparator) throws DatabaseException {\r
-               Collection<?> events = ProjectEventsRule.INSTANCE.getChildren(graph, Simantics.getProjectResource());\r
-               if (events.isEmpty()) {\r
-                       out.println("No visible events recorded.");\r
-                       return;\r
-               }\r
-\r
-               final SubMonitor mon = SubMonitor.convert(monitor, "Export events", events.size());\r
-\r
-               boolean first = true;\r
-               for (Object obj : events) {\r
-                       if (mon.isCanceled())\r
-                               return;\r
-\r
-                       Resource event = (Resource) obj;\r
-                       Map<String, String> labels = EventLabelRule.INSTANCE.getLabel(graph, event, true);\r
-                       if (first) {\r
-                               out.println(EString.implode(labels.keySet(), columnSeparator));\r
-                               first = false;\r
-                       }\r
-                       out.println(EString.implode(labels.values(), columnSeparator));\r
-                       mon.worked(1);\r
-               }\r
-       }\r
-\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2014 Association for Decentralized Information Management
+ * in Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Semantum Oy - initial API and implementation
+ *******************************************************************************/
+package org.simantics.event.util;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.Collection;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
+import org.simantics.Simantics;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.common.request.ReadRequest;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.event.view.contribution.EventLabelRule;
+import org.simantics.event.view.contribution.ProjectEventsRule;
+import org.simantics.utils.strings.EString;
+
+/**
+ * @author Tuukka Lehtonen
+ */
+public class EventExporter {
+
+       /**
+        * SCL API.
+        * 
+        * @param outputFile
+        * @throws DatabaseException
+        * @throws IOException
+        */
+       public static void exportCurrentEvents(String columnSeparator, String outputFile) throws DatabaseException, IOException {
+               new EventExporter().exportCsv(null, new File(outputFile), columnSeparator);
+       }
+
+       /**
+        * SCL API.
+        * 
+        * @param outputFile
+        * @throws DatabaseException
+        * @throws IOException
+        */
+       public static void exportCurrentEventsG(ReadGraph graph, String columnSeparator, String outputFile) throws DatabaseException, IOException {
+               new EventExporter().exportCsv(graph, null, new File(outputFile), columnSeparator);
+       }
+
+       public EventExporter() {
+       }
+
+       /**
+        * @param monitor
+        *            the progress monitor to use for reporting progress to the
+        *            user. It is the caller's responsibility to call done() on the
+        *            given monitor. Accepts <code>null</code>, indicating that no
+        *            progress should be reported and that the operation cannot be
+        *            cancelled.</pre>
+        * @param file
+        * @param columnSeparator
+        * @throws DatabaseException
+        * @throws IOException
+        */
+       public void exportCsv(IProgressMonitor monitor, File file, String columnSeparator) throws DatabaseException, IOException {
+               try (PrintStream out = new PrintStream(file)) {
+                       Simantics.getSession().syncRequest(new ReadRequest() {
+                               @Override
+                               public void run(ReadGraph graph) throws DatabaseException {
+                                       exportCsv(graph, monitor, out, columnSeparator);
+                               }
+                       });
+               }
+       }
+
+       /**
+        * @param graph
+        * @param monitor
+        *            the progress monitor to use for reporting progress to the
+        *            user. It is the caller's responsibility to call done() on the
+        *            given monitor. Accepts <code>null</code>, indicating that no
+        *            progress should be reported and that the operation cannot be
+        *            cancelled.</pre>
+        * @param file
+        * @param columnSeparator
+        * @throws DatabaseException
+        * @throws IOException
+        */
+       public void exportCsv(ReadGraph graph, IProgressMonitor monitor, File file, String columnSeparator) throws DatabaseException, IOException {
+               try (PrintStream out = new PrintStream(file)) {
+                       exportCsv(graph, monitor, out, columnSeparator);
+               }
+       }
+
+       /**
+        * @param graph
+        * @param monitor
+        *            the progress monitor to use for reporting progress to the
+        *            user. It is the caller's responsibility to call done() on the
+        *            given monitor. Accepts <code>null</code>, indicating that no
+        *            progress should be reported and that the operation cannot be
+        *            cancelled.</pre>
+        * @param out
+        * @param columnSeparator
+        * @throws DatabaseException
+        */
+       public void exportCsv(ReadGraph graph, IProgressMonitor monitor, PrintStream out, String columnSeparator) throws DatabaseException {
+               Collection<?> events = ProjectEventsRule.INSTANCE.getChildren(graph, Simantics.getProjectResource());
+               if (events.isEmpty()) {
+                       out.println("No visible events recorded.");
+                       return;
+               }
+
+               final SubMonitor mon = SubMonitor.convert(monitor, "Export events", events.size());
+
+               boolean first = true;
+               for (Object obj : events) {
+                       if (mon.isCanceled())
+                               return;
+
+                       Resource event = (Resource) obj;
+                       Map<String, String> labels = EventLabelRule.INSTANCE.getLabel(graph, event, true);
+                       if (first) {
+                               out.println(EString.implode(labels.keySet(), columnSeparator));
+                               first = false;
+                       }
+                       out.println(EString.implode(labels.values(), columnSeparator));
+                       mon.worked(1);
+               }
+       }
+
+}