1 package org.simantics.spreadsheet.graph;
3 import org.simantics.databoard.Bindings;
4 import org.simantics.databoard.binding.Binding;
5 import org.simantics.databoard.binding.error.BindingConstructionException;
6 import org.simantics.databoard.binding.mutable.Variant;
7 import org.simantics.db.ReadGraph;
8 import org.simantics.db.exception.DatabaseException;
9 import org.simantics.db.layer0.request.VariableRead;
10 import org.simantics.db.layer0.variable.Variable;
11 import org.slf4j.Logger;
12 import org.slf4j.LoggerFactory;
14 public class CellValue extends VariableRead<Object> {
16 private static final Logger LOGGER = LoggerFactory.getLogger(CellValue.class);
18 public CellValue(Variable variable) {
23 public Object perform(ReadGraph graph) throws DatabaseException {
25 Object value = variable.getValue(graph);
26 String propertyName = variable.getName(graph);
28 if("content".equals(propertyName)) {
30 return Variant.ofInstance("Null content: " + variable.getURI(graph));
32 if(value instanceof Variable) {
33 Variable var = (Variable)value;
35 Object value2 = var.getValue(graph);
36 if(value2 instanceof Variant) {
39 if(value2 == null) return Variant.ofInstance("Null value from " + var.getURI(graph));
41 Binding binding = Bindings.getBinding( value2.getClass() );
42 return new Variant(binding, value2);
43 } catch (BindingConstructionException e) {
44 String msg = "Unsupported content " + value2 + " from " + var.getURI(graph);
46 return Variant.ofInstance(msg);
50 if(!(value instanceof Variant)) {
52 Binding binding = Bindings.getBinding( value.getClass() );
53 return new Variant(binding, value);
54 } catch (BindingConstructionException e) {
55 String msg = "Unsupported content " + value + " at " + variable.getURI(graph);
57 return Variant.ofInstance(msg);