public OSQLFilterItemField(final OBaseParser iQueryToParse, final String iName, final OClass iClass) { super(iQueryToParse, iName); collate = getCollateForField(iClass, iName); if (iClass != null) { collatePreset = true; } }
public OSQLFilterItemField(final String iName, final OClass iClass) { this.name = OIOUtils.getStringContent(iName); collate = getCollateForField(iClass, name); if (iClass != null) { collatePreset = true; } }
public Object getValue(final OIdentifiable iRecord, final Object iCurrentResult, final OCommandContext iContext) { if (iRecord == null) throw new OCommandExecutionException("expression item '" + name + "' cannot be resolved because current record is NULL"); if (preLoadedFields != null && preLoadedFields.size() == 1) { if ("@rid".equalsIgnoreCase(preLoadedFields.iterator().next())) return iRecord.getIdentity(); } final ODocument doc = (ODocument) iRecord.getRecord(); if (preLoadedFieldsArray == null && preLoadedFields != null && preLoadedFields.size() > 0 && preLoadedFields.size() < 5) { // TRANSFORM THE SET IN ARRAY ONLY THE FIRST TIME AND IF FIELDS ARE MORE THAN ONE, OTHERWISE GO WITH THE DEFAULT BEHAVIOR preLoadedFieldsArray = new String[preLoadedFields.size()]; preLoadedFields.toArray(preLoadedFieldsArray); } // UNMARSHALL THE SINGLE FIELD if (preLoadedFieldsArray != null && !doc.deserializeFields(preLoadedFieldsArray)) return null; final Object v = stringValue == null ? doc.rawField(name) : stringValue; if (!collatePreset && doc != null) { OClass schemaClass = doc.getSchemaClass(); if (schemaClass != null) { collate = getCollateForField(schemaClass, name); } } return transformValue(iRecord, iContext, v); }