X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling.ui%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fui%2Fexpression%2FBasicExpression.java;h=484ae053fd202432e02c8b58603678ec39488114;hb=f102c41489c2cbd78116d513cd0e351434bb43eb;hp=e2ac33516362c5e7256a48be7ad42db1470b003f;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/expression/BasicExpression.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/expression/BasicExpression.java index e2ac33516..484ae053f 100644 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/expression/BasicExpression.java +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/expression/BasicExpression.java @@ -1,72 +1,72 @@ -package org.simantics.modeling.ui.expression; - -import org.simantics.basicexpression.Expressions; -import org.simantics.databoard.binding.Binding; -import org.simantics.databoard.Bindings; -import org.simantics.db.ReadGraph; -import org.simantics.db.Resource; -import org.simantics.db.WriteGraph; -import org.simantics.db.exception.DatabaseException; -import org.simantics.db.layer0.variable.EquationExpression; -import org.simantics.db.layer0.variable.Expression; -import org.simantics.db.layer0.variable.Variable; -import org.simantics.utils.datastructures.Triple; - -public class BasicExpression implements Expression, EquationExpression { - - final private Resource expression; - - public BasicExpression(Resource expression) { - this.expression = expression; - } - - @Override - public T evaluate(ReadGraph graph, Variable property, Binding binding) throws DatabaseException { - return evaluate(graph, property); - } - - @SuppressWarnings("unchecked") - @Override - public T evaluate(ReadGraph graph, Variable property) throws DatabaseException { - - String expressionString = graph.getValue(expression, Bindings.STRING); - BasicExpressionVisitor visitor = new BasicExpressionVisitor(graph, property); - Expressions.evaluate(expressionString, visitor); - return (T)visitor.getResult(); - - } - - @Override - public void invert(WriteGraph graph, Variable property, T value, Binding binding) throws DatabaseException { - - String expressionString = graph.getValue(expression, Bindings.STRING); - InvertBasicExpressionVisitor visitor = new InvertBasicExpressionVisitor(); - Expressions.evaluate(expressionString, visitor); - Object pair = visitor.getResult(); - if(pair instanceof Triple) { - @SuppressWarnings("unchecked") - Triple data = (Triple)pair; - if(Math.abs(data.first) > 1e-9) { - Double inverted = ((Double)value - data.second) / data.first; - String target = data.third; - Variable targetVariable = property.browse(graph, target); -// System.out.println("invert: " + target + " = " + property.browse(graph, target).getURI(graph)); - targetVariable.setValue(graph, inverted, binding); - } - } - - } - - @Override - public boolean isInvertible(ReadGraph graph, Variable property) throws DatabaseException { - - String expressionString = graph.getValue(expression, Bindings.STRING); - InvertBasicExpressionVisitor visitor = new InvertBasicExpressionVisitor(); - Expressions.evaluate(expressionString, visitor); - Object value = visitor.getResult(); - if(value instanceof Triple) return true; - else return false; - - } - -} +package org.simantics.modeling.ui.expression; + +import org.simantics.basicexpression.Expressions; +import org.simantics.databoard.binding.Binding; +import org.simantics.databoard.Bindings; +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.WriteGraph; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.layer0.variable.EquationExpression; +import org.simantics.db.layer0.variable.Expression; +import org.simantics.db.layer0.variable.Variable; +import org.simantics.utils.datastructures.Triple; + +public class BasicExpression implements Expression, EquationExpression { + + final private Resource expression; + + public BasicExpression(Resource expression) { + this.expression = expression; + } + + @Override + public T evaluate(ReadGraph graph, Variable property, Binding binding) throws DatabaseException { + return evaluate(graph, property); + } + + @SuppressWarnings("unchecked") + @Override + public T evaluate(ReadGraph graph, Variable property) throws DatabaseException { + + String expressionString = graph.getValue(expression, Bindings.STRING); + BasicExpressionVisitor visitor = new BasicExpressionVisitor(graph, property); + Expressions.evaluate(expressionString, visitor); + return (T)visitor.getResult(); + + } + + @Override + public void invert(WriteGraph graph, Variable property, T value, Binding binding) throws DatabaseException { + + String expressionString = graph.getValue(expression, Bindings.STRING); + InvertBasicExpressionVisitor visitor = new InvertBasicExpressionVisitor(); + Expressions.evaluate(expressionString, visitor); + Object pair = visitor.getResult(); + if(pair instanceof Triple) { + @SuppressWarnings("unchecked") + Triple data = (Triple)pair; + if(Math.abs(data.first) > 1e-9) { + Double inverted = ((Double)value - data.second) / data.first; + String target = data.third; + Variable targetVariable = property.browse(graph, target); +// System.out.println("invert: " + target + " = " + property.browse(graph, target).getURI(graph)); + targetVariable.setValue(graph, inverted, binding); + } + } + + } + + @Override + public boolean isInvertible(ReadGraph graph, Variable property) throws DatabaseException { + + String expressionString = graph.getValue(expression, Bindings.STRING); + InvertBasicExpressionVisitor visitor = new InvertBasicExpressionVisitor(); + Expressions.evaluate(expressionString, visitor); + Object value = visitor.getResult(); + if(value instanceof Triple) return true; + else return false; + + } + +}