]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling/src/org/simantics/modeling/ContentDumps.java
687544e78a52d99306436408d0211f23fa157157
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / ContentDumps.java
1 package org.simantics.modeling;
2
3 import java.nio.charset.Charset;
4 import java.nio.charset.StandardCharsets;
5 import java.util.TreeMap;
6 import java.util.TreeSet;
7
8 import org.simantics.databoard.Bindings;
9 import org.simantics.db.ReadGraph;
10 import org.simantics.db.Resource;
11 import org.simantics.db.common.utils.CommonDBUtils;
12 import org.simantics.db.exception.DatabaseException;
13 import org.simantics.db.layer0.variable.Variable;
14 import org.simantics.db.layer0.variable.Variables;
15 import org.simantics.graphfile.ontology.GraphFileResource;
16 import org.simantics.layer0.Layer0;
17 import org.simantics.modeling.utils.ComponentTypeViewerPropertyInfo;
18 import org.simantics.modeling.utils.HeadlessComponentTypePropertiesResultRequest;
19 import org.simantics.structural.stubs.StructuralResource2;
20 import org.simantics.structural2.variables.Connection;
21 import org.simantics.structural2.variables.VariableConnectionPointDescriptor;
22
23 public class ContentDumps {
24     
25     private static Charset UTF8 = StandardCharsets.UTF_8;
26
27     public static byte[] sclModuleContentDump(ReadGraph graph, Resource resource) throws DatabaseException {
28         Layer0 L0 = Layer0.getInstance(graph);
29         String def = graph.getRelatedValue(resource, L0.SCLModule_definition, Bindings.STRING); 
30         return def.getBytes(UTF8);
31     }
32
33     public static byte[] sclScriptContentDump(ReadGraph graph, Resource resource) throws DatabaseException {
34         Layer0 L0 = Layer0.getInstance(graph);
35         String def = graph.getRelatedValue(resource, L0.SCLScript_definition, Bindings.STRING); 
36         return def.getBytes(UTF8);
37     }
38
39     public static byte[] pgraphContentDump(ReadGraph graph, Resource resource) throws DatabaseException {
40         Layer0 L0 = Layer0.getInstance(graph);
41         String def = graph.getRelatedValue(resource, L0.PGraph_definition, Bindings.STRING); 
42         return def.getBytes(UTF8);
43     }
44
45     public static byte[] graphFileContentDump(ReadGraph graph, Resource resource) throws DatabaseException {
46         GraphFileResource GF = GraphFileResource.getInstance(graph);
47         return graph.getRelatedValue(resource, GF.HasFiledata, Bindings.BYTE_ARRAY); 
48     }
49
50     public static byte[] structuralComponentContentDump(ReadGraph graph, Resource resource) throws DatabaseException {
51
52         StringBuilder dump = new StringBuilder();
53
54         Variable v = Variables.getVariable(graph, resource);
55         
56         TreeSet<String> types = new TreeSet<>();
57         for(Resource t : graph.getPrincipalTypes(resource)) {
58             types.add(graph.getURI(t));
59         }
60         for(String uri : types) {
61             dump.append(uri);
62             dump.append("\n");
63         }
64
65         TreeMap<String,Variable> properties = new TreeMap<>();
66         for(Variable property : v.getProperties(graph))
67             properties.put(property.getName(graph), property);
68         for(Variable property : properties.values()) {
69             String possibleValue = property.getPossiblePropertyValue(graph, "HasDisplayValue", Bindings.STRING);
70             if(possibleValue != null) {
71                 dump.append(property.getName(graph));
72                 dump.append(" ");
73                 dump.append(possibleValue);
74                 dump.append("\n");
75             }
76             if(property.getClassifications(graph).contains(StructuralResource2.URIs.ConnectionRelation)) {
77                 dump.append(property.getName(graph));
78                 Connection c = property.getValue(graph);
79                 TreeSet<String> rvis = new TreeSet<>();
80                 for(VariableConnectionPointDescriptor desc : c.getConnectionPointDescriptors(graph, null)) {
81                     rvis.add(desc.getRelativeRVI(graph, v));
82                 }
83                 for(String rvi : rvis) {
84                     dump.append(" ");
85                     dump.append(rvi);
86                 }
87                 dump.append("\n");
88             }
89         }
90         return dump.toString().getBytes(UTF8);
91     }
92
93     public static byte[] genericParameterTypeContentDump(ReadGraph graph, Resource resource) throws DatabaseException {
94
95         Layer0 L0 = Layer0.getInstance(graph);
96         StructuralResource2 STR = StructuralResource2.getInstance(graph);
97         Resource componentType = CommonDBUtils.possibleObjectWithType(graph, resource, L0.PartOf, STR.ComponentType);
98         
99         ComponentTypeViewerPropertyInfo pi = HeadlessComponentTypePropertiesResultRequest.readPropertyInfo(graph, resource, componentType, false);
100         StringBuilder dump = new StringBuilder();
101         dump.append(pi.type);
102         dump.append(" ");
103         dump.append(pi.defaultValue);
104         if(pi.unit != null) {
105             dump.append(" ");
106             dump.append(pi.unit);
107         }
108         dump.append(" ");
109         dump.append(pi.label);
110         if(pi.description != null) {
111             dump.append(" ");
112             dump.append(pi.description);
113         }
114         return dump.toString().getBytes(UTF8);
115         
116     }
117
118 }