--- /dev/null
+package org.simantics.debug.graphical.model;\r
+\r
+import java.util.ArrayList;\r
+\r
+import org.simantics.databoard.Bindings;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.Statement;\r
+import org.simantics.db.common.utils.NameUtils;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.debug.graphical.LabelingPreferences;\r
+import org.simantics.layer0.Layer0;\r
+\r
+public class NodeData {\r
+ Resource resource; \r
+ String[] labels;\r
+ ArrayList<Statement> statements = new ArrayList<Statement>();\r
+ \r
+ public NodeData(Resource resource) {\r
+ this.resource = resource;\r
+ }\r
+\r
+ public String[] getLabels() {\r
+ return labels;\r
+ }\r
+ \r
+ public void updateData(ReadGraph g, LabelingPreferences pref) throws DatabaseException {\r
+ Layer0 L0 = Layer0.getInstance(g);\r
+ \r
+ Resource name = null;\r
+ Resource label = null;\r
+ ArrayList<Resource> types = new ArrayList<Resource>(); \r
+ ArrayList<Resource> tags = new ArrayList<Resource>();\r
+ \r
+ statements.clear();\r
+ for(Statement stat : g.getStatements(resource, L0.IsWeaklyRelatedTo)) {\r
+ if(stat.getSubject().equals(resource)) {\r
+ Resource predicate = stat.getPredicate();\r
+ if(predicate.equals(L0.InstanceOf))\r
+ types.add(stat.getObject());\r
+ else if(predicate.equals(L0.HasName))\r
+ name = stat.getObject();\r
+ else if(predicate.equals(L0.HasLabel))\r
+ label = stat.getObject();\r
+ else if(resource.equals(stat.getObject()))\r
+ tags.add(predicate);\r
+ else if(g.isSubrelationOf(predicate, L0.HasNext) ||\r
+ g.isSubrelationOf(predicate, L0.HasPrevious))\r
+ ;\r
+ else\r
+ statements.add(stat);\r
+ }\r
+ }\r
+\r
+ { // Compute labels\r
+ ArrayList<String> labels = new ArrayList<String>(4);\r
+ labels.add("$" + resource.getResourceId());\r
+ if(name != null)\r
+ labels.add((String)g.getValue(name, Bindings.STRING));\r
+ if(label != null)\r
+ labels.add((String)g.getValue(label, Bindings.STRING));\r
+ for(Resource type : types)\r
+ labels.add(": " + NameUtils.getSafeName(g, type));\r
+ for(Resource tag : tags)\r
+ labels.add("TAG " + NameUtils.getSafeName(g, tag));\r
+ this.labels = labels.toArray(new String[labels.size()]);\r
+ }\r
+ }\r
+ \r
+ public Resource getResource() {\r
+ return resource;\r
+ }\r
+ \r
+ public ArrayList<Statement> getStatements() {\r
+ return statements;\r
+ }\r
+ \r
+ public void setStatements(ArrayList<Statement> statements) {\r
+ this.statements = statements;\r
+ }\r
+}\r