1 package org.simantics.spreadsheet.graph;
\r
3 import org.simantics.databoard.Bindings;
\r
4 import org.simantics.databoard.binding.Binding;
\r
5 import org.simantics.databoard.binding.error.BindingConstructionException;
\r
6 import org.simantics.databoard.binding.mutable.Variant;
\r
7 import org.simantics.db.ReadGraph;
\r
8 import org.simantics.db.exception.DatabaseException;
\r
9 import org.simantics.db.layer0.request.VariableRead;
\r
10 import org.simantics.db.layer0.variable.Variable;
\r
11 import org.simantics.spreadsheet.common.logging.Logger;
\r
13 public class CellValue extends VariableRead<Object> {
\r
15 public CellValue(Variable variable) {
\r
20 public Object perform(ReadGraph graph) throws DatabaseException {
\r
22 Object value = variable.getValue(graph);
\r
23 String propertyName = variable.getName(graph);
\r
25 if("content".equals(propertyName)) {
\r
27 return Variant.ofInstance("Null content: " + variable.getURI(graph));
\r
29 if(value instanceof Variable) {
\r
30 Variable var = (Variable)value;
\r
32 Object value2 = var.getValue(graph);
\r
33 if(value2 instanceof Variant) {
\r
36 if(value2 == null) return Variant.ofInstance("Null value from " + var.getURI(graph));
\r
38 Binding binding = Bindings.getBinding( value2.getClass() );
\r
39 return new Variant(binding, value2);
\r
40 } catch (BindingConstructionException e) {
\r
41 Logger.defaultLogError(e);
\r
42 return Variant.ofInstance("Unsupported content " + value2 + " from " + var.getURI(graph));
\r
46 if(!(value instanceof Variant)) {
\r
48 Binding binding = Bindings.getBinding( value.getClass() );
\r
49 return new Variant(binding, value);
\r
50 } catch (BindingConstructionException e) {
\r
51 Logger.defaultLogError(e);
\r
52 return Variant.ofInstance("Unsupported content " + value + " at " + variable.getURI(graph));
\r