/** * Assign the right TARGET if found. * * @param iArgs Parameters to bind * @return true if the target has been recognized, otherwise false */ protected boolean assignTarget(final Map<Object, Object> iArgs) { parameters = iArgs; if (parsedTarget == null) return true; if (iArgs != null && iArgs.size() > 0 && compiledFilter != null) compiledFilter.bindParameters(iArgs); if (target == null) { if (parsedTarget.getTargetClasses() != null) searchInClasses(); else if (parsedTarget.getTargetIndexValues() != null) { target = new IndexValuesIterator( parsedTarget.getTargetIndexValues(), parsedTarget.isTargetIndexValuesAsc()); } else if (parsedTarget.getTargetClusters() != null) searchInClusters(); else if (parsedTarget.getTargetRecords() != null) { if (!lazyIteration && parsedTarget.getTargetQuery() != null) { // EXECUTE THE QUERY TO ALLOW DISTRIB EXECUTION target = ((Iterable<? extends OIdentifiable>) getDatabase() .command(new OCommandSQL(parsedTarget.getTargetQuery())) .execute(iArgs)) .iterator(); } else if (parsedTarget.getTargetRecords() instanceof OIterableRecordSource) { target = ((OIterableRecordSource) parsedTarget.getTargetRecords()).iterator(iArgs); } else { target = parsedTarget.getTargetRecords().iterator(); } } else if (parsedTarget.getTargetVariable() != null) { final Object var = getContext().getVariable(parsedTarget.getTargetVariable()); if (var == null) { target = Collections.EMPTY_LIST.iterator(); return true; } else if (var instanceof OIdentifiable) { final ArrayList<OIdentifiable> list = new ArrayList<OIdentifiable>(); list.add((OIdentifiable) var); target = list.iterator(); } else if (var instanceof Iterable<?>) target = ((Iterable<? extends OIdentifiable>) var).iterator(); } else return false; } return true; }