]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling/scl/Simantics/Query.scl
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.modeling / scl / Simantics / Query.scl
1 include "Simantics/DB"\r
2 include "Simantics/Ontologies"\r
3 include "Simantics/Variables"\r
4 include "Spreadsheet/All"\r
5 \r
6 createSCLQueryAction :: Resource -> <Proc> ()\r
7 createSCLQueryAction res = do\r
8   syncWrite (\() -> createSCLQueryDefault res) \r
9   ()\r
10 \r
11 createSCLQueryTypeAction :: Resource -> <Proc> ()\r
12 createSCLQueryTypeAction res = do\r
13   syncWrite (\() -> createSCLQueryTypeDefault res) \r
14   ()\r
15 \r
16 createSCLQueryDefault :: Resource -> Resource -> <WriteGraph> Resource\r
17 createSCLQueryDefault library queryType = createSCLQuery library queryType $ findFreshEscapedName "Query" library \r
18 \r
19 createSCLQuery :: Resource -> Resource -> String -> <WriteGraph> Resource\r
20 createSCLQuery library queryType name = do\r
21     markUndoPoint ()\r
22     module = newResource ()\r
23     claim module L0.InstanceOf queryType\r
24     claimRelatedValue module L0.HasName name\r
25     claim module L0.PartOf library\r
26     sheet = createSheet module "Sheet"\r
27     range = createRange sheet SHEET.ExpressionRange "Range1" "queryCells $ sheetQueryValue self input"\r
28     addCommentMetadata ("Created SCL Query " + name)\r
29     module\r
30 \r
31 createSCLQueryTypeDefault :: Resource -> <WriteGraph> Resource\r
32 createSCLQueryTypeDefault library = createSCLQueryType library $ findFreshEscapedName "QueryType" library \r
33 \r
34 createSCLQueryType :: Resource -> String -> <WriteGraph> Resource\r
35 createSCLQueryType library name = do\r
36     markUndoPoint ()\r
37     queryType = newResource ()\r
38     claim queryType L0.Inherits MOD.SCLQuery\r
39     claimRelatedValue queryType L0.HasName name\r
40     claimAssertion MOD.SCLQuery.values $ createSCLValueIndependent MOD.SCLQuery.Value "[]"\r
41     claim queryType L0.PartOf library\r
42     addCommentMetadata ("Created SCL Query Type " + name)\r
43     queryType\r
44 \r
45 queryValue :: Variable -> Variable -> <ReadGraph> a\r
46 queryValue variable input = do\r
47     untypedValue $ browse (makeProxyVariable variable input) "#values" \r
48 \r
49 sheetQueryVariable :: Variable -> Variable -> <ReadGraph> Variable\r
50 sheetQueryVariable self input = do\r
51     query = variableParent $ proxyVariableBase self\r
52     makeProxyVariable query input\r
53 \r
54 sheetQueryValue :: Variable -> Variable -> <ReadGraph> a\r
55 sheetQueryValue self input = do\r
56     var = sheetQueryVariable self input\r
57     untypedValue $ browse var "#values"\r
58 \r
59 importJava "org.simantics.db.layer0.variable.ProxyVariables" where\r
60     inputVariable :: Variable -> <ReadGraph> Variable\r
61     sessionVariable :: Variable -> <ReadGraph> Variable\r
62     proxyVariableBase :: Variable -> <ReadGraph> Variable\r
63     makeProxyVariable :: Variable -> Variable -> <ReadGraph> Variable\r
64