int resultMode = search.getResultMode();
if (resultMode == ISearch.RESULT_AUTO) {
int count = 0;
Iterator<Field> fieldItr = search.getFields().iterator();
while (fieldItr.hasNext()) {
Field field = fieldItr.next();
if (field.getKey() != null && !field.getKey().equals("")) {
resultMode = ISearch.RESULT_MAP;
break;
}
count++;
}
if (resultMode == ISearch.RESULT_AUTO) {
if (count > 1)
resultMode = ISearch.RESULT_ARRAY;
else
resultMode = ISearch.RESULT_SINGLE;
}
}
switch (resultMode) {
case ISearch.RESULT_ARRAY:
if (!(results.get(0) instanceof Object[])) {
List<Object[]> rArray = new ArrayList<Object[]>(results.size());
for (Object result : results) {
rArray.add(new Object[] { result });
}
return rArray;
} else {
return results;
}
case ISearch.RESULT_LIST:
List<List> rList = new ArrayList<List>(results.size());
if (results.get(0) instanceof Object[]) {
for (Object[] result : (List<Object[]>) results) {
List list = new ArrayList(result.length);
for (Object o : result) {
list.add(o);
}
rList.add(list);
}
} else {
for (Object result : results) {
List list = new ArrayList(1);
list.add(result);
rList.add(list);
}
}
return rList;
case ISearch.RESULT_MAP:
List<String> keyList = new ArrayList<String>();
Iterator<Field> fieldItr = search.getFields().iterator();
while (fieldItr.hasNext()) {
Field field = fieldItr.next();
if (field.getKey() != null && !field.getKey().equals("")) {
keyList.add(field.getKey());
} else {
keyList.add(field.getProperty());
}
}
List<Map<String, Object>> rMap = new ArrayList<Map<String, Object>>(results.size());
if (results.get(0) instanceof Object[]) {