- try {
- Session session = Simantics.getSession();
- List<Resource> list = new ArrayList<Resource>();
- for(NamedResource nr : plan.models) list.add(nr.getResource());
- session.sync( new CSVParamsQuery(data.history, csv, list) );
- csv.sort();
- } catch (DatabaseException e2) {
- throw new ExecutionException(e2.getMessage(), e2);
- } catch (HistoryException e) {
- throw new ExecutionException(e.getMessage(), e);
- }
-
- try {
- // Ensure all views are built.
- monitor.beginTask("Exporting Time Series as CSV...", IProgressMonitor.UNKNOWN);
- try {
- data.collector.flush();
- if ( !f.exists() ) {
- f.createNewFile();
- } else {
- RandomAccessFile raf = new RandomAccessFile(f, "rw");
- raf.setLength(0);
- raf.close();
- }
-
- FileOutputStream fos = new FileOutputStream(f, true);
- BufferedOutputStream bos = new BufferedOutputStream( fos );
- try {
- PrintStream ps = new PrintStream( bos );
- csv.formulate2( new CSVProgressMonitor( monitor ), ps );
- bos.flush();
- } finally {
- fos.close();
- }
- } catch (HistoryException e) {
- throw new ExecutionException(e.getMessage(), e);
- } catch (IOException e1) {
- throw new ExecutionException(e1.getMessage(), e1);
- }
- monitor.setTaskName("Done");
- } finally {
- monitor.done();
- }
-
+ try {
+ Simantics.getSession().syncRequest(
+ new CSVParamsQuery(data.history, csv,
+ new ArrayList<>(plan.items)) );
+ csv.sort();
+
+ // Ensure all views are built.
+ monitor.beginTask("Exporting Time Series as CSV...", IProgressMonitor.UNKNOWN);
+ data.collector.flush();
+
+ // Truncate existing file it if happens to exist.
+ try (RandomAccessFile raf = new RandomAccessFile(f, "rw")) {
+ raf.setLength(0);
+ }
+
+ // Write CSV
+ try (PrintStream ps = new PrintStream(
+ new BufferedOutputStream(
+ new FileOutputStream(f, true) )))
+ {
+ csv.formulate2( new CSVProgressMonitor( monitor ), ps );
+ ps.flush();
+ }
+
+ monitor.setTaskName("Done");
+ } catch (DatabaseException e2) {
+ throw new ExecutionException(e2.getMessage(), e2);
+ } catch (HistoryException e) {
+ throw new ExecutionException(e.getMessage(), e);
+ } finally {
+ monitor.done();
+ }