-package org.simantics.document.linking.ge;\r
-\r
-import java.util.Map;\r
-\r
-import org.simantics.browsing.ui.model.labels.LabelRule;\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.db.layer0.variable.Variable;\r
-import org.simantics.document.linking.ontology.DocumentLink;\r
-import org.simantics.document.linking.utils.SourceLinkUtil;\r
-import org.simantics.layer0.Layer0;\r
-import org.simantics.utils.datastructures.ArrayMap;\r
-\r
-public class VariableLabelRule implements LabelRule {\r
- \r
- @Override\r
- public boolean isCompatible(Class<?> contentType) {\r
- return contentType.equals(Variable.class);\r
- }\r
- \r
- @Override\r
- public Map<String, String> getLabel(ReadGraph graph, Object content)\r
- throws DatabaseException {\r
- Variable variable = (Variable) content;\r
-\r
- Resource node = variable.getPossibleRepresents(graph);\r
- \r
- if (node == null)\r
- return null;\r
- \r
- Layer0 l0 = Layer0.getInstance(graph);\r
- DocumentLink sl = DocumentLink.getInstance(graph);\r
- \r
- String keys[] = Constants.SOURCE_COLUMN_KEYS;\r
- String labels[] = new String[keys.length];\r
- \r
- if (graph.isInstanceOf(node, sl.Source)) {\r
- Resource reference = SourceLinkUtil.getReferredDocument(graph, node);\r
- String comment = graph.getPossibleRelatedValue(node, sl.hasSourceComment);\r
- labels[0] = "";\r
- labels[1] = "";\r
- labels[3] = comment != null ? comment : "";\r
- \r
- if (reference != null) {\r
- if (SourceLinkUtil.isValidReference(graph, reference)) {\r
- labels[2] = NameUtils.getSafeLabel(graph, reference);\r
- } else {\r
- labels[2] = "Deleted reference";\r
- }\r
- \r
- } else {\r
- if (graph.getPossibleRelatedValue(node, sl.hasSourceReferenceURI, Bindings.STRING) != null) {\r
- labels[2] = "Reference does not exist";\r
- } else {\r
- labels[2] = "Reference has not been set";\r
- }\r
- }\r
- \r
- } else if (graph.isInstanceOf(node, l0.Literal) || graph.isInstanceOf(node, l0.SCLValue)) {\r
- Statement propertyOwner = graph.getPossibleStatement(node, l0.PropertyOf);\r
- Resource propertyRelation = null;\r
- boolean defaultValue = false;\r
- if (propertyOwner != null) {\r
- propertyRelation = graph.getInverse(propertyOwner.getPredicate());\r
- \r
- \r
- } else {\r
- Resource objectInverse = graph.getPossibleObject(node, l0.HasObjectInverse);\r
- if (objectInverse != null) {\r
- propertyRelation = graph.getPossibleObject(objectInverse, l0.HasPredicate);\r
- defaultValue = true;\r
- } \r
- }\r
- if (propertyRelation != null) {\r
- String propName = graph.getPossibleRelatedValue2(propertyRelation, l0.HasLabel);\r
- if (propName == null || propName.length() == 0)\r
- propName = graph.getRelatedValue(propertyRelation, l0.HasName); \r
- labels[0] = propName;\r
- \r
- \r
- } else {\r
- labels[0] = "";\r
- }\r
- \r
- if (graph.hasValue(node)) {\r
- Object value = graph.getValue(node);\r
- labels[1] = SourceLinkUtil.getValueString(value);\r
- } else if (!graph.isInstanceOf(node, l0.SCLValue)){\r
- labels[1] = "No Value";\r
- } else {\r
- labels[1] = "";\r
- }\r
- \r
- if (defaultValue) {\r
- labels[1] +=" (default)";\r
- }\r
- labels[2] = "";\r
- labels[3] = "";\r
- \r
- } else {\r
-\r
- labels[0] = NameUtils.getSafeLabel(graph, node);//graph.getRelatedValue(node, l0.HasName);\r
- if (labels[0].length() == 0)\r
- labels[0] = NameUtils.getSafeName(graph, node);//graph.getRelatedValue(node, l0.HasName);\r
- labels[1] = "";\r
- labels[2] = "";\r
- labels[3] = "";\r
- \r
- \r
- }\r
- return ArrayMap.make(keys, labels);\r
- }\r
-\r
-}\r
+package org.simantics.document.linking.ge;
+
+import java.util.Map;
+
+import org.simantics.browsing.ui.model.labels.LabelRule;
+import org.simantics.databoard.Bindings;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.Statement;
+import org.simantics.db.common.utils.NameUtils;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.variable.Variable;
+import org.simantics.document.linking.ontology.DocumentLink;
+import org.simantics.document.linking.utils.SourceLinkUtil;
+import org.simantics.layer0.Layer0;
+import org.simantics.utils.datastructures.ArrayMap;
+
+public class VariableLabelRule implements LabelRule {
+
+ @Override
+ public boolean isCompatible(Class<?> contentType) {
+ return contentType.equals(Variable.class);
+ }
+
+ @Override
+ public Map<String, String> getLabel(ReadGraph graph, Object content)
+ throws DatabaseException {
+ Variable variable = (Variable) content;
+
+ Resource node = variable.getPossibleRepresents(graph);
+
+ if (node == null)
+ return null;
+
+ Layer0 l0 = Layer0.getInstance(graph);
+ DocumentLink sl = DocumentLink.getInstance(graph);
+
+ String keys[] = Constants.SOURCE_COLUMN_KEYS;
+ String labels[] = new String[keys.length];
+
+ if (graph.isInstanceOf(node, sl.Source)) {
+ Resource reference = SourceLinkUtil.getReferredDocument(graph, node);
+ String comment = graph.getPossibleRelatedValue(node, sl.hasSourceComment);
+ labels[0] = "";
+ labels[1] = "";
+ labels[3] = comment != null ? comment : "";
+
+ if (reference != null) {
+ if (SourceLinkUtil.isValidReference(graph, reference)) {
+ labels[2] = NameUtils.getSafeLabel(graph, reference);
+ } else {
+ labels[2] = "Deleted reference";
+ }
+
+ } else {
+ if (graph.getPossibleRelatedValue(node, sl.hasSourceReferenceURI, Bindings.STRING) != null) {
+ labels[2] = "Reference does not exist";
+ } else {
+ labels[2] = "Reference has not been set";
+ }
+ }
+
+ } else if (graph.isInstanceOf(node, l0.Literal) || graph.isInstanceOf(node, l0.SCLValue)) {
+ Statement propertyOwner = graph.getPossibleStatement(node, l0.PropertyOf);
+ Resource propertyRelation = null;
+ boolean defaultValue = false;
+ if (propertyOwner != null) {
+ propertyRelation = graph.getInverse(propertyOwner.getPredicate());
+
+
+ } else {
+ Resource objectInverse = graph.getPossibleObject(node, l0.HasObjectInverse);
+ if (objectInverse != null) {
+ propertyRelation = graph.getPossibleObject(objectInverse, l0.HasPredicate);
+ defaultValue = true;
+ }
+ }
+ if (propertyRelation != null) {
+ String propName = graph.getPossibleRelatedValue2(propertyRelation, l0.HasLabel);
+ if (propName == null || propName.length() == 0)
+ propName = graph.getRelatedValue(propertyRelation, l0.HasName);
+ labels[0] = propName;
+
+
+ } else {
+ labels[0] = "";
+ }
+
+ if (graph.hasValue(node)) {
+ Object value = graph.getValue(node);
+ labels[1] = SourceLinkUtil.getValueString(value);
+ } else if (!graph.isInstanceOf(node, l0.SCLValue)){
+ labels[1] = "No Value";
+ } else {
+ labels[1] = "";
+ }
+
+ if (defaultValue) {
+ labels[1] +=" (default)";
+ }
+ labels[2] = "";
+ labels[3] = "";
+
+ } else {
+
+ labels[0] = NameUtils.getSafeLabel(graph, node);//graph.getRelatedValue(node, l0.HasName);
+ if (labels[0].length() == 0)
+ labels[0] = NameUtils.getSafeName(graph, node);//graph.getRelatedValue(node, l0.HasName);
+ labels[1] = "";
+ labels[2] = "";
+ labels[3] = "";
+
+
+ }
+ return ArrayMap.make(keys, labels);
+ }
+
+}