]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.simulation/src/org/simantics/simulation/export/DiscoverExperimentResults.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.simulation / src / org / simantics / simulation / export / DiscoverExperimentResults.java
1 package org.simantics.simulation.export;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.Collection;\r
5 \r
6 import org.simantics.db.ReadGraph;\r
7 import org.simantics.db.Resource;\r
8 import org.simantics.db.exception.DatabaseException;\r
9 import org.simantics.db.layer0.adapter.Instances;\r
10 import org.simantics.db.request.Read;\r
11 import org.simantics.export.core.ExportContext;\r
12 import org.simantics.export.core.error.ExportException;\r
13 import org.simantics.export.core.intf.DiscoverAction;\r
14 import org.simantics.simulation.ontology.SimulationResource;\r
15 \r
16 /**\r
17  * Discovers experiment results\r
18  *\r
19  * @author toni.kalajainen@semantum.fi\r
20  */\r
21 public class DiscoverExperimentResults implements DiscoverAction {\r
22 \r
23         public Read<Collection<String>> discoverRequest(\r
24                         final Collection<String> startLocations) throws ExportException {\r
25                 return new Read<Collection<String>>() {\r
26                         public Collection<String> perform(ReadGraph graph) throws DatabaseException {\r
27                                 SimulationResource SIM = SimulationResource.getInstance(graph);  \r
28                                 \r
29                                 // Ask Indexer\r
30                                 Instances instances = graph.adapt(SIM.Experiment, Instances.class);\r
31                                 ArrayList<String> result = new ArrayList<String>();\r
32                                 for ( String startingLocation : startLocations ) {\r
33                                         Resource sl = graph.getResource( startingLocation );\r
34                                         for ( Resource diagram : instances.find(graph, sl) ) {\r
35                                                 result.add( graph.getURI(diagram) );\r
36                                         }\r
37                                 }\r
38                                 return result;                          \r
39                                 \r
40                                 \r
41                                 // Query\r
42                                 /*\r
43                                 Layer0 L0 = Layer0.getInstance(graph);\r
44                                 TraverseQueryBuilder builder = new TraverseQueryBuilder();\r
45                                 builder.setStartResources( graph.syncRequest( ExportQueries.toResources(startLocations) ) );\r
46                                 builder.followRelation( L0.ConsistsOf );\r
47                                 builder.followInstanceOf( SIM.Experiment );\r
48                                 builder.followAndReturnInstanceOf( SIM.Run );\r
49                                 TraverseResult traverseResult = graph.syncRequest( builder.build() );\r
50                                 return graph.syncRequest( ExportQueries.toUris( traverseResult.result ) );\r
51                                 */                              \r
52                         }\r
53                         \r
54                 };\r
55         }\r
56 \r
57         @Override\r
58         public Collection<String> discoverContent(ExportContext ctx, Collection<String> startLocations) throws ExportException {                \r
59                 try {\r
60                         return ctx.session.syncRequest( discoverRequest(startLocations) );\r
61                 } catch (DatabaseException e) {\r
62                         if ( e.getCause() instanceof ExportException ) throw (ExportException) e.getCause();\r
63                         throw new ExportException( e );\r
64                 }\r
65         }\r
66 \r
67 }\r