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.slf4j.Logger;
\r
12 import org.slf4j.LoggerFactory;
\r
14 public class CellValue extends VariableRead<Object> {
\r
16 private static final Logger LOGGER = LoggerFactory.getLogger(CellValue.class);
\r
18 public CellValue(Variable variable) {
\r
23 public Object perform(ReadGraph graph) throws DatabaseException {
\r
25 Object value = variable.getValue(graph);
\r
26 String propertyName = variable.getName(graph);
\r
28 if("content".equals(propertyName)) {
\r
30 return Variant.ofInstance("Null content: " + variable.getURI(graph));
\r
32 if(value instanceof Variable) {
\r
33 Variable var = (Variable)value;
\r
35 Object value2 = var.getValue(graph);
\r
36 if(value2 instanceof Variant) {
\r
39 if(value2 == null) return Variant.ofInstance("Null value from " + var.getURI(graph));
\r
41 Binding binding = Bindings.getBinding( value2.getClass() );
\r
42 return new Variant(binding, value2);
\r
43 } catch (BindingConstructionException e) {
\r
44 String msg = "Unsupported content " + value2 + " from " + var.getURI(graph);
\r
45 LOGGER.error(msg, e);
\r
46 return Variant.ofInstance(msg);
\r
50 if(!(value instanceof Variant)) {
\r
52 Binding binding = Bindings.getBinding( value.getClass() );
\r
53 return new Variant(binding, value);
\r
54 } catch (BindingConstructionException e) {
\r
55 String msg = "Unsupported content " + value + " at " + variable.getURI(graph);
\r
56 LOGGER.error(msg, e);
\r
57 return Variant.ofInstance(msg);
\r