public Object evaluate(final OCommandContext iContext) { return evaluate(null, null, iContext); }
public Object evaluate() { return evaluate(null, null, null); }
@Override public Object resolve(final String iVariable) { return new OSQLPredicate(iVariable).evaluate(context); }
/** * Evaluates a SQL expression against current document by passing a context. The expression can refer to the variables contained * in the context. Example: <code> OCommandContext context = new OBasicCommandContext().setVariable("vat", 20); long amountPlusVat * = doc.eval("amount * (100+$vat) / 100", context); </code> * * @param iExpression SQL expression to evaluate. * * @return The result of expression * * @throws OQueryParsingException in case the expression is not valid */ public Object eval(final String iExpression, final OCommandContext iContext) { return new OSQLPredicate(iExpression).evaluate(this, null, iContext); }
@ConsoleCommand(splitInWords = false, description = "Evaluate a predicate against current record") public void eval(@ConsoleParameter(name = "text", description = "The sql predicate to evaluate") final String iText) { if (iText == null) return; if (currentRecord == null) return; final Object result = new OSQLPredicate(iText).evaluate(currentRecord, null, null); if (result != null) out.println("\n" + result); }
protected Object resolve(final Object content) { if (context == null || content == null) return content; Object value; if (content instanceof String) { String contentAsString = (String) content; if (contentAsString.startsWith("$") && !contentAsString.startsWith(VAR_BEGIN)) { value = context.getVariable(content.toString()); } else { value = OVariableParser.resolveVariables(contentAsString, VAR_BEGIN, VAR_END, variable -> context.getVariable(variable)); } } else { value = content; } if (value instanceof String) { value = OVariableParser .resolveVariables((String) value, "={", "}", variable -> new OSQLPredicate(variable).evaluate(context)); } return value; } }
lastResult = executeCommand(iValue, db); else { lastResult = new OSQLPredicate(iValue).evaluate(context);
@ConsoleCommand(splitInWords = false, description = "Move from current record by evaluating a predicate against current record") public void move(@ConsoleParameter(name = "text", description = "The sql predicate to evaluate") final String iText) { if (iText == null) return; if (currentRecord == null) return; final Object result = new OSQLPredicate(iText).evaluate(currentRecord, null, null); if (result != null) { if (result instanceof OIdentifiable) { setResultset(new ArrayList<OIdentifiable>()); currentRecord = ((OIdentifiable) result).getRecord(); dumpRecordDetails(); } else if (result instanceof List<?>) { setResultset((List<OIdentifiable>) result); dumpResultSet(-1); } else if (result instanceof Iterator<?>) { final List<OIdentifiable> list = new ArrayList<OIdentifiable>(); while (((Iterator) result).hasNext()) list.add(((Iterator<OIdentifiable>) result).next()); setResultset(list); dumpResultSet(-1); } else setResultset(new ArrayList<OIdentifiable>()); } }
Object value = parseValue(parts.get(1), iContext); if (VALUE_NOT_PARSED == value) { value = new OSQLPredicate(parts.get(1)).evaluate(iContext);
public Object execute(Object iThis, final OIdentifiable iRecord, final Object iCurrentResult, final Object[] iParams, OCommandContext iContext) { if (predicate == null) predicate = new OSQLPredicate((String) iParams[0].toString()); final ODocument currentResult = iCurrentResult instanceof ODocument ? (ODocument) iCurrentResult : null; try { return predicate.evaluate(iRecord != null ? iRecord.getRecord() : null, currentResult, iContext); } catch (ArithmeticException e) { OLogManager.instance().error(this, "Division by 0", e); // DIVISION BY 0 return 0; } catch (Exception e) { OLogManager.instance().error(this, "Error during division", e); return null; } }
} else if (letValue instanceof String) { OSQLPredicate pred = new OSQLPredicate(((String) letValue).trim()); varValue = pred.evaluate(iRecord, (ODocument)iRecord, context); } else varValue = letValue;
runtimeParameters[i] = pred.evaluate(iCurrentRecord instanceof ORecord ? (ORecord) iCurrentRecord : null, (ODocument) iCurrentResult, iContext); runtimeParameters[i] = ((OSQLPredicate) configuredParameters[i]).evaluate(iCurrentRecord.getRecord(), (iCurrentRecord instanceof ODocument ? (ODocument) iCurrentResult : null), iContext); else if (configuredParameters[i] instanceof String) {
runtimeParameters[i] = pred.evaluate(iCurrentRecord instanceof ORecord ? (ORecord) iCurrentRecord : null, (ODocument) iCurrentResult, iContext); runtimeParameters[i] = ((OSQLPredicate) configuredParameters[i]).evaluate(iCurrentRecord.getRecord(), (iCurrentRecord instanceof ODocument ? (ODocument) iCurrentResult : null), iContext); else if (configuredParameters[i] instanceof String) {