]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling/src/org/simantics/modeling/NewSymbol.java
Sync git svn branch with SVN repository r33366.
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / NewSymbol.java
1 package org.simantics.modeling;\r
2 \r
3 import org.simantics.db.Resource;\r
4 import org.simantics.db.WriteGraph;\r
5 import org.simantics.db.common.CommentMetadata;\r
6 import org.simantics.db.common.request.PossibleIndexRoot;\r
7 import org.simantics.db.common.utils.CommonDBUtils;\r
8 import org.simantics.db.common.utils.NameUtils;\r
9 import org.simantics.db.exception.DatabaseException;\r
10 import org.simantics.diagram.stubs.DiagramResource;\r
11 import org.simantics.layer0.Layer0;\r
12 \r
13 /**\r
14  * @author Tuukka Lehtonen\r
15  */\r
16 public class NewSymbol {\r
17 \r
18         public static Resource createSymbol(WriteGraph graph, Resource componentType) throws DatabaseException {\r
19 \r
20                 ModelingResources MOD = ModelingResources.getInstance(graph);\r
21                 Layer0 L0 = Layer0.getInstance(graph);\r
22                 DiagramResource DIA = DiagramResource.getInstance(graph);\r
23 \r
24                 // New component type\r
25                 CommonDBUtils.selectClusterSet(graph, componentType);\r
26 \r
27                 Resource indexRoot = graph.sync(new PossibleIndexRoot(componentType));\r
28 \r
29                 Resource symbolDiagramType = graph.getPossibleObject(indexRoot, MOD.StructuralModel_HasSymbolDiagramType);\r
30                 if(symbolDiagramType == null) symbolDiagramType = DIA.Composite;\r
31 \r
32                 // Symbol\r
33                 String symbolName = NameUtils.findFreshName(graph, "Symbol", componentType);\r
34                 Resource symbol = new ModelingUtils(graph).createSymbol2(symbolName, symbolDiagramType);\r
35                 graph.claim(componentType, MOD.ComponentTypeToSymbol, symbol);\r
36                 graph.claim(componentType, L0.ConsistsOf, symbol);\r
37 \r
38                 CommentMetadata cm = graph.getMetadata(CommentMetadata.class);\r
39                 graph.addMetadata(cm.add("Created new user component symbol " + symbolName + ", resource " + symbol));\r
40 \r
41                 return componentType;\r
42         }\r
43 \r
44 }