]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/adapter/SharedOntologyRemover.java
Sync git svn branch with SVN repository r33389.
[simantics/platform.git] / bundles / org.simantics.db.layer0 / src / org / simantics / db / layer0 / adapter / SharedOntologyRemover.java
1 package org.simantics.db.layer0.adapter;\r
2 \r
3 import org.simantics.db.Resource;\r
4 import org.simantics.db.WriteGraph;\r
5 import org.simantics.db.exception.DatabaseException;\r
6 import org.simantics.db.layer0.adapter.impl.EntityRemover;\r
7 import org.simantics.db.layer0.exception.CannotRemoveException;\r
8 import org.simantics.db.layer0.internal.SimanticsInternal;\r
9 import org.simantics.db.layer0.request.ProjectModels;\r
10 import org.simantics.db.layer0.util.Layer0Utils;\r
11 import org.simantics.layer0.Layer0;\r
12 \r
13 /**\r
14  * @author Tuukka Lehtonen\r
15  */\r
16 public class SharedOntologyRemover extends EntityRemover {\r
17 \r
18     public SharedOntologyRemover(Resource resource) {\r
19         super(resource);\r
20     }\r
21 \r
22     @Override\r
23     public void remove(WriteGraph graph) throws DatabaseException {\r
24         \r
25         Layer0 L0 = Layer0.getInstance(graph);\r
26         \r
27         for(Resource ontology : Layer0Utils.listOntologies(graph)) {\r
28                 if(graph.hasStatement(ontology, L0.IsLinkedTo, resource))\r
29                 throw new CannotRemoveException("The shared library is being referenced by " + graph.getURI(ontology));\r
30         }\r
31         \r
32         for(Resource model : graph.syncRequest(new ProjectModels(SimanticsInternal.getProject()))) {\r
33                 if(graph.hasStatement(model, L0.IsLinkedTo, resource))\r
34                 throw new CannotRemoveException("The shared library is being referenced by " + graph.getURI(model));\r
35         }\r
36         \r
37         super.remove(graph);\r
38         \r
39     }\r
40 \r
41 }\r