]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.simulation/src/org/simantics/simulation/export/ExportSubscriptionCSV.java
Fixed subscription item data file searching to use groupItemId as well
[simantics/platform.git] / bundles / org.simantics.simulation / src / org / simantics / simulation / export / ExportSubscriptionCSV.java
index 7c69c1a2eb67f3b7a9aa2433cc4011abc2a18dfa..9abae29d2271c0b17de30e92d87b0f9e590311b2 100644 (file)
-package org.simantics.simulation.export;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Collections;\r
-import java.util.List;\r
-\r
-import org.eclipse.core.runtime.IProgressMonitor;\r
-import org.simantics.Simantics;\r
-import org.simantics.databoard.binding.error.BindingException;\r
-import org.simantics.databoard.binding.mutable.Variant;\r
-import org.simantics.databoard.util.Bean;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.export.core.ExportContext;\r
-import org.simantics.export.core.error.ExportException;\r
-import org.simantics.export.core.intf.ExportClass;\r
-import org.simantics.export.core.manager.Content;\r
-import org.simantics.history.History;\r
-import org.simantics.history.HistoryException;\r
-import org.simantics.history.HistoryManager;\r
-import org.simantics.history.ItemManager;\r
-import org.simantics.history.util.subscription.SamplingFormat;\r
-import org.simantics.simulation.experiment.IExperiment;\r
-import org.simantics.simulation.experiment.IHistoryExperiment;\r
-import org.simantics.simulation.export.CSVItemsQuery.CSVItem;\r
-import org.simantics.simulation.project.ExperimentManager;\r
-import org.simantics.simulation.project.IExperimentManager;\r
-import org.simantics.utils.datastructures.MapList;\r
-\r
-public class ExportSubscriptionCSV extends ExperimentExportClass implements ExportClass {\r
-       \r
-       @Override\r
-       public void export(List<Content> contents, \r
-                       Object writer_,\r
-                       ExportContext context, \r
-                       Variant options,\r
-                       IProgressMonitor monitor, \r
-                       MapList<Content, Content> attachmentMap\r
-                       ) throws ExportException {\r
-               \r
-               // Flush all experiments, just in case.\r
-               IExperimentManager em = Simantics.getProject().getHint( ExperimentManager.KEY_EXPERIMENT_MANAGER );\r
-               if ( em != null ) {\r
-                       for (IExperiment exp : em.getExperiments()) {\r
-                               if ( exp instanceof IHistoryExperiment ) {\r
-                                       IHistoryExperiment he = (IHistoryExperiment) exp;\r
-                                       try {\r
-                                               he.flushHistory();\r
-                                       } catch (HistoryException e) {\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-               \r
-               CSVWriter writer = (CSVWriter) writer_;         \r
-               List<HistoryManager> historiesToClose = new ArrayList<HistoryManager>(); \r
-               try {\r
-                       List<ModelRef> models = ExperimentExportClass.getResult(context, options, true);\r
-                       \r
-                       // Label format is the following\r
-                       // "MODEL EXPERIMENT/RUN ITEM" \r
-                       // MODEL is omited, if itemCount <= 1\r
-                       // RUN is omited, if runCount <= 1 \r
-                       int runCount = 0;\r
-                       int modelCount = models.size();\r
-                       for (ModelRef model : models) runCount += model.enabledRunCount();\r
-\r
-                       List<CSVItem> items = new ArrayList<CSVItem>();\r
-                       for (Content content : contents) {\r
-                               items.addAll( context.session.syncRequest( new CSVItemsQuery( content.url ) ) );\r
-                       }\r
-\r
-                       // \r
-                       for (ModelRef model : models) {\r
-                               for (ExperimentRef experiment : model.experiments) {\r
-                                       if ( experiment.runs.isEmpty() ) continue;                                      \r
-                                       for (RunRef run : experiment.runs) {                                            \r
-                                               if ( run.historyFolder == null || !run.historyFolder.exists() ) continue;\r
-                       \r
-                                               HistoryManager history = History.openFileHistory( run.historyFolder );\r
-                                               historiesToClose.add( history );\r
-                                       ItemManager im = new ItemManager( history.getItems() );\r
-                                               \r
-                                               for ( CSVItem item : items ) {\r
-                                                       if ( !item.modelUri.equals( model.uri ) ) continue;\r
-                                                       StringBuilder labelBuilder = new StringBuilder();\r
-                                                       labelBuilder.append( item.label );\r
-                                                       if ( modelCount>1 ) {\r
-                                                               labelBuilder.append(" (");\r
-                                                               labelBuilder.append(model.label);\r
-                                                               labelBuilder.append(")");\r
-                                                       }\r
-                                                       if ( runCount>1 ) {\r
-                                                               labelBuilder.append(" (");\r
-                                                               labelBuilder.append( experiment.label );\r
-                                                               labelBuilder.append( "\\" );\r
-                                                               labelBuilder.append( run.label );\r
-                                                               labelBuilder.append(")");\r
-                                                       }\r
-                                                       \r
-                                       List<Bean> historyItems = im.search("variableId", item.variableReference);\r
-                                       Collections.sort(historyItems, SamplingFormat.INTERVAL_COMPARATOR);\r
-                                       if (items.isEmpty()) continue;\r
-                                       Bean config = historyItems.get(0);\r
-                                       String historyId = (String) config.getFieldUnchecked("id");\r
-                                                                                                               \r
-                                                       writer.addItem(history, historyId, labelBuilder.toString(), item.variableReference, item.unit);\r
-                                               }\r
-                                               \r
-                                       }\r
-                               }\r
-                       }\r
-                                       \r
-               } catch (DatabaseException e) {\r
-                       throw new ExportException( e );\r
-               } catch (HistoryException e) {\r
-                       throw new ExportException( e );\r
-               } catch (BindingException e) {\r
-                       throw new ExportException( e );\r
-               } finally {\r
-                       for (HistoryManager history : historiesToClose) history.close();\r
-               }\r
-               \r
-       }\r
-\r
-       @Override\r
-       public List<String> validate(String contentUri, ExportContext context, Variant options) {\r
-               return Collections.emptyList();\r
-       }\r
-       \r
-}\r
-\r
+package org.simantics.simulation.export;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.simantics.Simantics;
+import org.simantics.databoard.binding.error.BindingException;
+import org.simantics.databoard.binding.mutable.Variant;
+import org.simantics.databoard.util.Bean;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.export.core.ExportContext;
+import org.simantics.export.core.error.ExportException;
+import org.simantics.export.core.intf.ExportClass;
+import org.simantics.export.core.manager.Content;
+import org.simantics.history.History;
+import org.simantics.history.HistoryException;
+import org.simantics.history.HistoryManager;
+import org.simantics.history.ItemManager;
+import org.simantics.history.util.subscription.SamplingFormat;
+import org.simantics.simulation.experiment.IExperiment;
+import org.simantics.simulation.experiment.IHistoryExperiment;
+import org.simantics.simulation.export.CSVItemsQuery.CSVItem;
+import org.simantics.simulation.project.ExperimentManager;
+import org.simantics.simulation.project.IExperimentManager;
+import org.simantics.utils.datastructures.MapList;
+
+public class ExportSubscriptionCSV extends ExperimentExportClass implements ExportClass {
+       
+       @Override
+       public void export(List<Content> contents, 
+                       Object writer_,
+                       ExportContext context, 
+                       Variant options,
+                       IProgressMonitor monitor, 
+                       MapList<Content, Content> attachmentMap
+                       ) throws ExportException {
+               
+               // Flush all experiments, just in case.
+               IExperimentManager em = Simantics.getProject().getHint( ExperimentManager.KEY_EXPERIMENT_MANAGER );
+               if ( em != null ) {
+                       for (IExperiment exp : em.getExperiments()) {
+                               if ( exp instanceof IHistoryExperiment ) {
+                                       IHistoryExperiment he = (IHistoryExperiment) exp;
+                                       try {
+                                               he.flushHistory();
+                                       } catch (HistoryException e) {
+                                       }
+                               }
+                       }
+               }
+               
+               CSVWriter writer = (CSVWriter) writer_;         
+               List<HistoryManager> historiesToClose = new ArrayList<HistoryManager>(); 
+               try {
+                       List<ModelRef> models = ExperimentExportClass.getResult(context, options, true);
+                       
+                       // Label format is the following
+                       // "MODEL EXPERIMENT/RUN ITEM" 
+                       // MODEL is omited, if itemCount <= 1
+                       // RUN is omited, if runCount <= 1 
+                       int runCount = 0;
+                       int modelCount = models.size();
+                       for (ModelRef model : models) runCount += model.enabledRunCount();
+
+                       List<CSVItem> items = new ArrayList<CSVItem>();
+                       for (Content content : contents) {
+                               items.addAll( context.session.syncRequest( new CSVItemsQuery( content.url ) ) );
+                       }
+
+                       // 
+                       for (ModelRef model : models) {
+                               for (ExperimentRef experiment : model.experiments) {
+                                       if ( experiment.runs.isEmpty() ) continue;                                      
+                                       for (RunRef run : experiment.runs) {                                            
+                                               if ( run.historyFolder == null || !run.historyFolder.exists() ) continue;
+                       
+                                               HistoryManager history = History.openFileHistory( run.historyFolder );
+                                               historiesToClose.add( history );
+                                       ItemManager im = new ItemManager( history.getItems() );
+                                               
+                                               for ( CSVItem item : items ) {
+                                                       if ( !item.modelUri.equals( model.uri ) ) continue;
+                                                       StringBuilder labelBuilder = new StringBuilder();
+                                                       labelBuilder.append( item.label );
+                                                       if ( modelCount>1 ) {
+                                                               labelBuilder.append(" (");
+                                                               labelBuilder.append(model.label);
+                                                               labelBuilder.append(")");
+                                                       }
+                                                       if ( runCount>1 ) {
+                                                               labelBuilder.append(" (");
+                                                               labelBuilder.append( experiment.label );
+                                                               labelBuilder.append( "\\" );
+                                                               labelBuilder.append( run.label );
+                                                               labelBuilder.append(")");
+                                                       }
+                                                       
+                                       List<Bean> historyItems = im.search("groupItemId", item.groupItemId, "variableId", item.variableReference);
+                                       Collections.sort(historyItems, SamplingFormat.INTERVAL_COMPARATOR);
+                                       if (items.isEmpty()) continue;
+                                       Bean config = historyItems.get(0);
+                                       String historyId = (String) config.getFieldUnchecked("id");
+                                                                                                               
+                                                       writer.addItem(history, historyId, labelBuilder.toString(), item.variableReference, item.unit);
+                                               }
+                                               
+                                       }
+                               }
+                       }
+                                       
+               } catch (DatabaseException e) {
+                       throw new ExportException( e );
+               } catch (HistoryException e) {
+                       throw new ExportException( e );
+               } catch (BindingException e) {
+                       throw new ExportException( e );
+               } finally {
+                       for (HistoryManager history : historiesToClose) history.close();
+               }
+               
+       }
+
+       @Override
+       public List<String> validate(String contentUri, ExportContext context, Variant options) {
+               return Collections.emptyList();
+       }
+       
+}
+