@Override public void run() { StringBuffer outputString = new StringBuffer(); String query = ""; try { // get the query BufferedReader inputQuery = new BufferedReader(new InputStreamReader(querySocket.getInputStream())); query = inputQuery.readLine(); while (inputQuery.ready()) { query += "\n"; query += inputQuery.readLine(); } // Decides what function the query is referring to. // Calls the appropriate method and gets the results. if (query.contains(randomReview)) { String RestaurantName = query.substring(randomReview.length() + 2, query.length() - 2); outputString = new StringBuffer(dblocal.randomReview(RestaurantName)); } else if (query.contains(getRestaurant)) { String businessID = query.substring(getRestaurant.length() + 2, query.length() - 2); outputString = new StringBuffer(dblocal.getRestaurant(businessID)); } else if (query.contains(addRestaurant)) { String JSOnstring = query.substring(getRestaurant.length() + 2, query.length() - 2); outputString = new StringBuffer(dblocal.addRestaurant(JSOnstring)); } else if (query.contains(addUser)) { String JSOnstring = query.substring(addUser.length() + 2, query.length() - 2); outputString = new StringBuffer(dblocal.addUser(JSOnstring)); } else if (query.contains(addReview)) { String JSOnstring = query.substring(addReview.length() + 2, query.length() - 2); outputString = new StringBuffer(dblocal.addReview(JSOnstring)); } else { Set<Restaurant> getQuery = new HashSet<Restaurant>(); getQuery = dblocal.query(query); for (Restaurant restaurant : getQuery) { outputString.append(restaurant.getJSONString()); } } // sends the result back to the socket PrintWriter outputQuery = new PrintWriter(new OutputStreamWriter(querySocket.getOutputStream())); outputQuery.println(outputString); // closes the stream outputQuery.close(); inputQuery.close(); } catch (IOException e1) { e1.printStackTrace(); } }