--- /dev/null
+package org.simantics.db.layer0.variable;\r
+\r
+import org.simantics.databoard.type.Datatype;\r
+import org.simantics.utils.ObjectUtils;\r
+\r
+/**\r
+ * @author Tuukka Lehtonen\r
+ */\r
+public class VariableReference {\r
+\r
+ public final RVI variableId;\r
+\r
+ public final Datatype datatype;\r
+\r
+ public String label;\r
+\r
+ public static VariableReference of(RVI variableId, Datatype datatype, String label) {\r
+ return new VariableReference(variableId, datatype, label);\r
+ }\r
+\r
+ public VariableReference(RVI variableId, Datatype datatype, String label) {\r
+ if (variableId == null)\r
+ throw new NullPointerException("null variable reference");\r
+ this.variableId = variableId;\r
+ this.datatype = datatype;\r
+ this.label = label;\r
+ }\r
+ \r
+ public RVI getVariableId() {\r
+ return variableId;\r
+ }\r
+\r
+ public Datatype getDatatype() {\r
+ return datatype;\r
+ }\r
+\r
+ public String getLabel() {\r
+ return label;\r
+ }\r
+\r
+ @Override\r
+ public int hashCode() {\r
+ return ObjectUtils.hashCode(datatype) * 31 + variableId.hashCode();\r
+ }\r
+\r
+ @Override\r
+ public boolean equals(Object obj) {\r
+ if (this == obj)\r
+ return true;\r
+ if (obj == null)\r
+ return false;\r
+ if (getClass() != obj.getClass())\r
+ return false;\r
+ VariableReference other = (VariableReference) obj;\r
+ return variableId.equals(other.variableId) && ObjectUtils.objectEquals(datatype, other.datatype);\r
+// && ObjectUtils.objectEquals(label, other.label);\r
+ }\r
+\r
+ @Override\r
+ public String toString() {\r
+ StringBuilder sb = new StringBuilder();\r
+ sb.append(variableId);\r
+ if (datatype != null)\r
+ sb.append(" : ").append(datatype.toSingleLineString());\r
+ if (label != null)\r
+ sb.append(" (").append(label).append(")");\r
+ return sb.toString();\r
+ }\r
+\r
+}\r