]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling/src/org/simantics/modeling/Rename.java
5d8543d213131cab85739580703ef6bad121a411
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / Rename.java
1 package org.simantics.modeling;
2
3 import org.simantics.db.Resource;
4 import org.simantics.db.WriteGraph;
5 import org.simantics.db.common.CommentMetadata;
6 import org.simantics.db.common.utils.NameUtils;
7 import org.simantics.db.exception.DatabaseException;
8 import org.simantics.db.layer0.adapter.impl.EntityNameModifier;
9 import org.simantics.db.layer0.adapter.impl.EntityStringModifierFactory;
10 import org.simantics.layer0.Layer0;
11
12 public class Rename {
13         
14     public static String renameNode (WriteGraph graph, Resource node, String newName) throws DatabaseException {
15         
16         Layer0 L0 = Layer0.getInstance(graph);
17         Resource previousName = graph.getPossibleObject(node, L0.HasName);
18         String nodeName = NameUtils.getSafeName(graph, node);
19         EntityStringModifierFactory factory = new EntityStringModifierFactory(node);
20         EntityNameModifier modifier = (EntityNameModifier) factory.createModifier(graph, L0.HasName, previousName);
21         
22         String error = modifier.isValid(newName);
23         if (error != null) {
24                 return error;
25         }
26         
27         modifier.modify(graph, newName);
28         
29         CommentMetadata cm = graph.getMetadata(CommentMetadata.class);
30         graph.addMetadata(cm.add("Renamed node " + nodeName + ", resource  " + node +  ", to " + newName));
31         
32                 return "Succesfully renamed "+ nodeName + " to " + newName;
33     }
34     
35 }