ibm-cic/src/main/java/com/ibm_cic/SFFilms.java

75 lines
3.0 KiB
Java

package com.ibm_cic;
import org.apache.commons.io.IOUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;
@Path("")
public class SFFilms {
@GET
@Produces(MediaType.APPLICATION_JSON)
public String getFilms(@QueryParam("filter") String filter) {
// create a new JSONArray for the result
JSONArray result = new JSONArray();
try {
// get the JSON as a string
String jsonString = IOUtils.toString(new URL("https://data.sfgov.org/resource/wwmu-gmzc.json"), Charset.forName("UTF-8"));
// transform the string to a JSON array
JSONArray jsonArray = new JSONArray(jsonString);
// loop through the array and apply the filter
for (int i = 0; i < jsonArray.length(); i++)
{
// create a temporary JSON object with the value at index i
JSONObject tmp = jsonArray.getJSONObject(i);
// create a temporary JSON object for data storage
JSONObject item = new JSONObject();
// check if there is a filter
if(filter == null) { // if we don't have a filter
// we always have a title, so we can spare an if here
item.put("title", tmp.get("title")); // add a title to the temporary object
if(tmp.has("locations")) // check if there is a location
item.put("locations", tmp.get("locations")); // add a location to the temporary object
result.put(item); // add the temporary object to the result array
} else { // if we have a filter
if(tmp.get("title").equals(filter)) { // check if the title matches the filter
item.put("title", tmp.get("title"));
if(tmp.has("locations")) item.put("locations", tmp.get("locations"));
result.put(item); // add the temporary object to the result array
} else if(tmp.has("locations")) // check if there is a location
if(tmp.get("locations").equals(filter)) { // check if the location matches the filter
item.put("title", tmp.get("title"));
item.put("locations", tmp.get("locations"));
result.put(item); // add the temporary object to the result array
}
}
}
} catch(MalformedURLException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
return result.toString(); // return the result as a string
}
}