in odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/ScenarioDataSource.java [217:278]
public Object readData(final EdmFunctionImport function, final Map<String, Object> parameters,
final Map<String, Object> keys) throws ODataNotImplementedException, ODataNotFoundException, EdmException {
if (function.getName().equals("EmployeeSearch")) {
if (parameters.get("q") == null) {
throw new ODataNotFoundException(null);
} else {
final List<Employee> found = searchEmployees((String) parameters.get("q"));
if (null == keys || keys.isEmpty()) {
return found;
} else {
for (final Employee employee : found) {
if (employee.getId().equals(keys.get("EmployeeId"))) {
return employee;
}
}
}
throw new ODataNotFoundException(ODataNotFoundException.ENTITY);
}
} else if (function.getName().equals("AllLocations")) {
return Arrays.asList(getLocations().keySet().toArray());
} else if (function.getName().equals("AllUsedRoomIds")) {
List<String> data = new ArrayList<String>();
for (final Room room : dataContainer.getRooms()) {
if (!room.getEmployees().isEmpty()) {
data.add(room.getId());
}
}
if (data.isEmpty()) {
throw new ODataNotFoundException(null);
} else {
return data;
}
} else if (function.getName().equals("MaximalAge")) {
return getOldestEmployee().getAge();
} else if (function.getName().equals("MostCommonLocation")) {
return getMostCommonLocation();
} else if (function.getName().equals("ManagerPhoto")) {
if (parameters.get("Id") == null) {
throw new ODataNotFoundException(ODataNotFoundException.ENTITY);
}
for (final Manager manager : dataContainer.getManagers()) {
if (manager.getId().equals(parameters.get("Id"))) {
return new BinaryData(manager.getImage(), manager.getImageType());
}
}
throw new ODataNotFoundException(ODataNotFoundException.ENTITY);
} else if (function.getName().equals("AddEmployee")) {
return null;
} else if (function.getName().equals("OldestEmployee")) {
return getOldestEmployee();
} else {
throw new ODataNotImplementedException();
}
}