package com.tevinjeffrey.rmp.client; import com.tevinjeffrey.rmp.common.Parameter; import com.tevinjeffrey.rmp.common.Professor; import java.util.HashMap; import java.util.Map; import rx.Observable; import rx.functions.Func1; public class RMPClient { private final ClientService mClientService; public RMPClient(ClientService clientService) { this.mClientService = clientService; } public Observable<Professor> findProfessor(Parameter parameter) { return mClientService.findProfessor(makeParameters(parameter)) .filter(new Func1<Professor, Boolean>() { @Override public Boolean call(Professor professor) { return professor != null; } }); } public static Map<String, String> makeParameters(final Parameter params) { Map<String, String> map = new HashMap<>(); map.put("first", params.firstName); map.put("last", params.lastName); map.put("subject", params.department); map.put("course", params.courseNumber); map.put("city", params.location); return map; } }