/** * Converts nested ColumnFilter.f values from a column ID to the corresponding SQL field name. * * @param filters * @param entities * @return A copy of filters with field names in place of the column IDs. * @see ColumnFilter#f */ private static NestedColumnFilters convertColumnIdsToFieldNames( NestedColumnFilters filters, Map<Integer, DataEntity> entities) { if (filters == null) return null; NestedColumnFilters result = new NestedColumnFilters(); if (filters.cond != null) { result.cond = new ColumnFilter(); result.cond.v = filters.cond.v; result.cond.r = filters.cond.r; result.cond.f = entities .get(((Number) filters.cond.f).intValue()) .privateMetadata .get(PrivateMetadata.SQLCOLUMN); } else { NestedColumnFilters[] in = (filters.and != null ? filters.and : filters.or); NestedColumnFilters[] out = new NestedColumnFilters[in.length]; for (int i = 0; i < in.length; i++) out[i] = convertColumnIdsToFieldNames(in[i], entities); if (filters.and == in) result.and = out; else result.or = out; } return result; }