public static Object getValue(final Object iObject) { if (iObject == null) return null; if (iObject instanceof OSQLFilterItem) return ((OSQLFilterItem) iObject).getValue(null, null, null); return iObject; }
public static Object getValue(final Object iObject, final ORecord iRecord, final OCommandContext iContext) { if (iObject == null) return null; if (iObject instanceof OSQLFilterItem) return ((OSQLFilterItem) iObject).getValue(iRecord, null, iContext); else if (iObject instanceof String) { final String s = ((String) iObject).trim(); if (iRecord != null & !s.isEmpty() && !OIOUtils.isStringContent(iObject) && !Character.isDigit(s.charAt(0))) // INTERPRETS IT return ODocumentHelper.getFieldValue(iRecord, s, iContext); } return iObject; }
public Object execute(Object iThis, final OIdentifiable iCurrentRecord, Object iCurrentResult, final Object[] iParams, final OCommandContext iContext) { Object value = iParams[0]; if (value instanceof OSQLFilterItem) value = ((OSQLFilterItem) value).getValue(iCurrentRecord, iCurrentResult, iContext); if (OMultiValue.isMultiValue(value)) value = OMultiValue.getFirstValue(value); return value; }
public Object execute(Object iThis, final OIdentifiable iCurrentRecord, Object iCurrentResult, final Object[] iParams, final OCommandContext iContext) { Object value = iParams[0]; if (value instanceof OSQLFilterItem) value = ((OSQLFilterItem) value).getValue(iCurrentRecord, iCurrentResult, iContext); if (OMultiValue.isMultiValue(value)) value = OMultiValue.getLastValue(value); return value; }
@Override public ORID getEndRidRange(Object iLeft, Object iRight) { final Iterable<?> ridCollection; final int ridSize; if (iRight instanceof OSQLFilterItemField && ODocumentHelper.ATTRIBUTE_RID.equals(((OSQLFilterItemField) iRight).getRoot())) { if (iLeft instanceof OSQLFilterItem) iLeft = ((OSQLFilterItem) iLeft).getValue(null, null, null); ridCollection = OMultiValue.getMultiValueIterable(iLeft, false); ridSize = OMultiValue.getSize(iLeft); } else if (iLeft instanceof OSQLFilterItemField && ODocumentHelper.ATTRIBUTE_RID .equals(((OSQLFilterItemField) iLeft).getRoot())) { if (iRight instanceof OSQLFilterItem) iRight = ((OSQLFilterItem) iRight).getValue(null, null, null); ridCollection = OMultiValue.getMultiValueIterable(iRight, false); ridSize = OMultiValue.getSize(iRight); } else return null; final List<ORID> rids = addRangeResults(ridCollection, ridSize); return rids == null ? null : Collections.max(rids); }
@Override public ORID getBeginRidRange(Object iLeft, Object iRight) { final Iterable<?> ridCollection; final int ridSize; if (iRight instanceof OSQLFilterItemField && ODocumentHelper.ATTRIBUTE_RID.equals(((OSQLFilterItemField) iRight).getRoot())) { if (iLeft instanceof OSQLFilterItem) iLeft = ((OSQLFilterItem) iLeft).getValue(null, null, null); ridCollection = OMultiValue.getMultiValueIterable(iLeft); ridSize = OMultiValue.getSize(iLeft); } else if (iLeft instanceof OSQLFilterItemField && ODocumentHelper.ATTRIBUTE_RID .equals(((OSQLFilterItemField) iLeft).getRoot())) { if (iRight instanceof OSQLFilterItem) iRight = ((OSQLFilterItem) iRight).getValue(null, null, null); ridCollection = OMultiValue.getMultiValueIterable(iRight); ridSize = OMultiValue.getSize(iRight); } else return null; final List<ORID> rids = addRangeResults(ridCollection, ridSize); return rids == null ? null : Collections.min(rids); }
private Object extractValue(ODocument record, OPair<String, Object> entry) { Object value = entry.getValue(); if (value instanceof OSQLFilterItem) value = ((OSQLFilterItem) value).getValue(record, null, context); else if (value instanceof OCommandRequest) value = ((OCommandRequest) value).execute(record, null, context); if (value instanceof OIdentifiable && ((OIdentifiable) value).getIdentity().isPersistent()) // USE ONLY THE RID TO AVOID CONCURRENCY PROBLEM WITH OLD VERSIONS value = ((OIdentifiable) value).getIdentity(); return value; }
public static Object resolveFieldValue(final ODocument iDocument, final String iFieldName, final Object iFieldValue, final OCommandParameters iArguments, final OCommandContext iContext) { if (iFieldValue instanceof OSQLFilterItemField) { final OSQLFilterItemField f = (OSQLFilterItemField) iFieldValue; if (f.getRoot().equals("?")) // POSITIONAL PARAMETER return iArguments.getNext(); else if (f.getRoot().startsWith(":")) // NAMED PARAMETER return iArguments.getByName(f.getRoot().substring(1)); } if (iFieldValue instanceof ODocument && !((ODocument) iFieldValue).getIdentity().isValid()) // EMBEDDED DOCUMENT ODocumentInternal.addOwner((ODocument) iFieldValue, iDocument); // can't use existing getValue with iContext if (iFieldValue == null) return null; if (iFieldValue instanceof OSQLFilterItem) return ((OSQLFilterItem) iFieldValue).getValue(iDocument, null, iContext); return iFieldValue; }
inParams = (Collection<Object>) inKeyValue; else if (inKeyValue instanceof OSQLFilterItem) inParams = (Collection<Object>) ((OSQLFilterItem) inKeyValue).getValue(null, null, iContext); else inParams = Collections.singleton(inKeyValue); inParams = (Collection<Object>) inKeyValue; else if (inKeyValue instanceof OSQLFilterItem) inParams = (Collection<Object>) ((OSQLFilterItem) inKeyValue).getValue(null, null, iContext); else throw new IllegalArgumentException("Key '" + inKeyValue + "' is not valid");
@Override public Object execute(Object iThis, OIdentifiable iCurrentRecord, Object iCurrentResult, Object[] iParams, OCommandContext iContext) { final String seqName; if (configuredParameters != null && configuredParameters.length > 0 && configuredParameters[0] instanceof OSQLFilterItem)//old stuff seqName = (String) ((OSQLFilterItem) configuredParameters[0]).getValue(iCurrentRecord, iCurrentResult, iContext); else seqName = "" + iParams[0]; OSequence result = ODatabaseRecordThreadLocal.instance().get().getMetadata().getSequenceLibrary().getSequence(seqName); if (result == null) { throw new OCommandExecutionException("Sequence not found: " + seqName); } return result; }
Object fieldValue; if (expandTarget instanceof OSQLFilterItem) { fieldValue = ((OSQLFilterItem) expandTarget).getValue(id.getRecord(), null, context); } else if (expandTarget instanceof OSQLFunctionRuntime) { fieldValue = ((OSQLFunctionRuntime) expandTarget).getResult();
private void processFields(Iterator<Object> target) { final ODocument doc = this.target.getRecord(); while (target.hasNext()) { Object field = target.next(); final Object fieldValue; if (field instanceof OSQLFilterItem) fieldValue = ((OSQLFilterItem) field).getValue(doc, null, null); else fieldValue = doc.rawField(field.toString()); if (fieldValue != null) { final OTraverseAbstractProcess<?> subProcess; if (fieldValue instanceof Iterator<?> || OMultiValue.isMultiValue(fieldValue)) { final Iterator<?> coll; if (fieldValue instanceof ORecordLazyMultiValue) coll = ((ORecordLazyMultiValue) fieldValue).rawIterator(); else coll = OMultiValue.getMultiValueIterator(fieldValue, false); subProcess = new OTraverseMultiValueProcess(command, (Iterator<Object>) coll, getPath().appendField(field.toString())); } else if (fieldValue instanceof OIdentifiable && ((OIdentifiable) fieldValue).getRecord() instanceof ODocument) { subProcess = new OTraverseRecordProcess(command, (ODocument) ((OIdentifiable) fieldValue).getRecord(), getPath() .appendField(field.toString())); } else continue; command.getContext().push(subProcess); } } }
private boolean handleIncrementEntries(final ODocument record) { boolean updated = false; // BIND VALUES TO INCREMENT if (!incrementEntries.isEmpty()) { for (OPair<String, Object> entry : incrementEntries) { final Number prevValue = record.field(entry.getKey()); Number current; if (entry.getValue() instanceof OSQLFilterItem) current = (Number) ((OSQLFilterItem) entry.getValue()).getValue(record, null, context); else if (entry.getValue() instanceof Number) current = (Number) entry.getValue(); else throw new OCommandExecutionException("Increment value is not a number (" + entry.getValue() + ")"); if (prevValue == null) // NO PREVIOUS VALUE: CONSIDER AS 0 record.field(entry.getKey(), current); else // COMPUTING INCREMENT record.field(entry.getKey(), OType.increment(prevValue, current)); } updated = true; } return updated; }
f.setValue(((OSQLFunctionRuntime) f.getValue()).getValue(to, null, context)); } else if (f.getValue() instanceof OSQLFilterItem) { f.setValue(((OSQLFilterItem) f.getValue()).getValue(to, null, context));