]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.diagram.profile/src/org/simantics/diagram/profile/view/CreateProfileAction.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.diagram.profile / src / org / simantics / diagram / profile / view / CreateProfileAction.java
1 package org.simantics.diagram.profile.view;\r
2 \r
3 import org.simantics.Simantics;\r
4 import org.simantics.browsing.ui.swt.ModelledActionImpl;\r
5 import org.simantics.db.Resource;\r
6 import org.simantics.db.WriteGraph;\r
7 import org.simantics.db.common.request.WriteRequest;\r
8 import org.simantics.db.common.utils.NameUtils;\r
9 import org.simantics.db.common.utils.OrderedSetUtils;\r
10 import org.simantics.db.exception.DatabaseException;\r
11 import org.simantics.diagram.Logger;\r
12 import org.simantics.diagram.stubs.DiagramResource;\r
13 import org.simantics.layer0.Layer0;\r
14 \r
15 public class CreateProfileAction extends ModelledActionImpl<Resource> {\r
16 \r
17         public CreateProfileAction(Resource configuration) {\r
18                 super(configuration);\r
19         }\r
20         \r
21         public void run(final Resource runtimeDiagram) {\r
22 \r
23                 try {\r
24                 \r
25                         Simantics.getSession().syncRequest(new WriteRequest() {\r
26         \r
27                                 @Override\r
28                                 public void perform(WriteGraph graph) throws DatabaseException {\r
29         \r
30                                         Layer0 L0 = Layer0.getInstance(graph);\r
31                                         DiagramResource DIA = DiagramResource.getInstance(graph);\r
32                                 String modelURI = graph.getPossibleRelatedValue((Resource)runtimeDiagram, DIA.RuntimeDiagram_HasModelURI);\r
33                                 if (modelURI == null) return;\r
34                                 \r
35                                 Resource model = graph.getPossibleResource(modelURI);\r
36                                 if(model == null) return;\r
37                                 \r
38                                 String name = NameUtils.findFreshName(graph, "Profile", model, L0.ConsistsOf);\r
39 \r
40                                 Resource list = OrderedSetUtils.create(graph, DIA.Profile);\r
41 \r
42                                 Resource profile = graph.newResource();\r
43                                 graph.claim(profile, L0.InstanceOf, null, DIA.Profile);\r
44                                 graph.claimLiteral(profile, L0.HasName, name);\r
45                                 graph.claim(profile, DIA.HasEntries, null, list);\r
46                                 graph.claim(model, L0.ConsistsOf, profile);\r
47                                 //graph.claim(model, DIA.HasProfile, profile);\r
48         \r
49                                 }\r
50         \r
51                         });\r
52                 \r
53                 } catch (DatabaseException e) {\r
54 \r
55                         Logger.defaultLogError(e);\r
56                         \r
57                 }\r
58 \r
59         }\r
60 \r
61 }\r