objEntity.addRelationship(objRelationship);
}
}
private void convertFetchSpecification(EOEntity entity, DataMap dataMap, String fetchSpecName) {
EOFetchSpecification fetchSpec = entity.fetchSpecificationNamed(fetchSpecName);
SelectQuery query = new SelectQuery(dataMap.getObjEntity(entity.name()));
query.setName(fetchSpecName);
query.setDistinct(fetchSpec.usesDistinct());
query.setFetchingDataRows(fetchSpec.fetchesRawRows());
String qualString = fetchSpec.qualifier().toString();
qualString = qualString.replace(" caseinsensitivelike ", " likeIgnoreCase ");
qualString = qualString.replace(" caseInsensitiveLike ", " likeIgnoreCase ");
qualString = qualString.replace(" AND ", " and ");
qualString = qualString.replace(" OR ", " or ");
if (qualString.contains(" like ") || qualString.contains(" likeIgnoreCase ")) {
qualString = qualString.replace("*", "%");
}
try {
query.setQualifier(Expression.fromString(qualString));
} catch (Exception e) {
System.out.println("unable to parse qualifier for fetchSpec '" + fetchSpecName + "'. qual=" + qualString + "\n" + e.getMessage());
}
query.setFetchLimit(fetchSpec.fetchLimit());
//query.setResolvingInherited(fetchSpec.isDeep());
query.setStatementFetchSize(fetchSpec.fetchLimit());
for (String keyPath : fetchSpec.prefetchingRelationshipKeyPaths()) {
query.addPrefetch(keyPath);
}
for (EOSortOrdering sortOrdering : fetchSpec.sortOrderings()) {
SortOrder order = SortOrder.ASCENDING;
if (sortOrdering.selector().equals(EOSortOrdering.CompareCaseInsensitiveAscending)) {
order = SortOrder.ASCENDING_INSENSITIVE;
} else if (sortOrdering.selector().equals(EOSortOrdering.CompareCaseInsensitiveDescending)) {
order = SortOrder.DESCENDING_INSENSITIVE;