1 package org.simantics.debug.graphical.model;
\r
3 import java.util.ArrayList;
\r
5 import org.simantics.databoard.Bindings;
\r
6 import org.simantics.db.ReadGraph;
\r
7 import org.simantics.db.Resource;
\r
8 import org.simantics.db.Statement;
\r
9 import org.simantics.db.common.utils.NameUtils;
\r
10 import org.simantics.db.exception.DatabaseException;
\r
11 import org.simantics.debug.graphical.LabelingPreferences;
\r
12 import org.simantics.layer0.Layer0;
\r
14 public class NodeData {
\r
17 ArrayList<Statement> statements = new ArrayList<Statement>();
\r
19 public NodeData(Resource resource) {
\r
20 this.resource = resource;
\r
23 public String[] getLabels() {
\r
27 public void updateData(ReadGraph g, LabelingPreferences pref) throws DatabaseException {
\r
28 Layer0 L0 = Layer0.getInstance(g);
\r
30 Resource name = null;
\r
31 Resource label = null;
\r
32 ArrayList<Resource> types = new ArrayList<Resource>();
\r
33 ArrayList<Resource> tags = new ArrayList<Resource>();
\r
36 for(Statement stat : g.getStatements(resource, L0.IsWeaklyRelatedTo)) {
\r
37 if(stat.getSubject().equals(resource)) {
\r
38 Resource predicate = stat.getPredicate();
\r
39 if(predicate.equals(L0.InstanceOf))
\r
40 types.add(stat.getObject());
\r
41 else if(predicate.equals(L0.HasName))
\r
42 name = stat.getObject();
\r
43 else if(predicate.equals(L0.HasLabel))
\r
44 label = stat.getObject();
\r
45 else if(resource.equals(stat.getObject()))
\r
46 tags.add(predicate);
\r
47 else if(g.isSubrelationOf(predicate, L0.HasNext) ||
\r
48 g.isSubrelationOf(predicate, L0.HasPrevious))
\r
51 statements.add(stat);
\r
56 ArrayList<String> labels = new ArrayList<String>(4);
\r
57 labels.add("$" + resource.getResourceId());
\r
59 labels.add((String)g.getValue(name, Bindings.STRING));
\r
61 labels.add((String)g.getValue(label, Bindings.STRING));
\r
62 for(Resource type : types)
\r
63 labels.add(": " + NameUtils.getSafeName(g, type));
\r
64 for(Resource tag : tags)
\r
65 labels.add("TAG " + NameUtils.getSafeName(g, tag));
\r
66 this.labels = labels.toArray(new String[labels.size()]);
\r
70 public Resource getResource() {
\r
74 public ArrayList<Statement> getStatements() {
\r
78 public void setStatements(ArrayList<Statement> statements) {
\r
79 this.statements = statements;
\r