aboutsummaryrefslogtreecommitdiff
path: root/src/uk/org/ury/library/LibraryRequestHandler.java
diff options
context:
space:
mode:
authorMatt Windsor <mattwindsor@btinternet.com>2011-03-21 21:54:31 +0000
committerMatt Windsor <mattwindsor@btinternet.com>2011-03-21 21:54:31 +0000
commitdf7d7981b56a4560c95ea7e9b194080e93398ecf (patch)
treeb3ae4f02d23ae1f7f4951c776ee8d91b0047dd6f /src/uk/org/ury/library/LibraryRequestHandler.java
parent2d073129857a42ab4195cd433c8be152e357033f (diff)
GREAT PACKAGE RESHUFFLE: Everything is now organised into frontend, backend and common (to frontend and backend) packages. Things may have been broken. Doc refresh.
Diffstat (limited to 'src/uk/org/ury/library/LibraryRequestHandler.java')
-rw-r--r--src/uk/org/ury/library/LibraryRequestHandler.java188
1 files changed, 0 insertions, 188 deletions
diff --git a/src/uk/org/ury/library/LibraryRequestHandler.java b/src/uk/org/ury/library/LibraryRequestHandler.java
deleted file mode 100644
index a81851d..0000000
--- a/src/uk/org/ury/library/LibraryRequestHandler.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/**
- *
- */
-package uk.org.ury.library;
-
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.protocol.HttpContext;
-import org.json.simple.JSONValue;
-
-import uk.org.ury.database.DatabaseDriver;
-import uk.org.ury.database.UserClass;
-import uk.org.ury.database.exceptions.ConnectionFailureException;
-import uk.org.ury.database.exceptions.MissingCredentialsException;
-import uk.org.ury.database.exceptions.QueryFailureException;
-import uk.org.ury.library.exceptions.EmptySearchException;
-import uk.org.ury.library.item.LibraryItem;
-import uk.org.ury.protocol.Directive;
-import uk.org.ury.protocol.Status;
-import uk.org.ury.server.AbstractRequestHandler;
-import uk.org.ury.server.Server;
-import uk.org.ury.server.exceptions.BadRequestException;
-import uk.org.ury.server.exceptions.HandleFailureException;
-import uk.org.ury.server.exceptions.HandlerNotFoundException;
-import uk.org.ury.server.exceptions.HandlerSetupFailureException;
-import uk.org.ury.server.exceptions.NotAHandlerException;
-import uk.org.ury.server.exceptions.UnknownFunctionException;
-
-/**
- * A request handler for library queries.
- *
- * @author Matt Windsor
- */
-public class LibraryRequestHandler extends AbstractRequestHandler {
- /**
- * Construct a new LibraryRequestHandler.
- *
- * @param server
- * The instance of the URY server responsible for the request.
- *
- * @param mount
- * The directory to which this handler is to be mounted.
- */
- public LibraryRequestHandler(Server server, String mount) {
- super(server, mount);
- }
-
- /**
- * Perform a library search, populating the response list.
- *
- * @param parameters
- * A key-value map of parameters supplied with the server
- * request. Typically, the function parameter will detail the
- * function that the request handler is expected to perform.
- *
- * @param response
- * The response list to populate.
- *
- * @param server
- * The server providing database resources.
- *
- * @throws HandleFailureException
- * if an error occurs that thwarts the handling of the request.
- */
-
- private void doSearch(Map<String, String> parameters,
- Map<String, Object> response, Server server)
- throws HandleFailureException {
- if (parameters.containsKey("search") == false)
- throw new HandleFailureException("Search term is missing.");
- else if (parameters.get("search") == null)
- throw new HandleFailureException("Search term is null.");
-
- String search = parameters.get("search");
- DatabaseDriver dd = null;
-
- try {
- dd = server.getDatabaseConnection(UserClass.READ_ONLY);
- } catch (MissingCredentialsException e) {
- throw new HandleFailureException(e.getMessage());
- } catch (ConnectionFailureException e) {
- throw new HandleFailureException(e.getMessage());
- }
-
- try {
- List<Map<String, String>> itemArray = new ArrayList<Map<String, String>>();
-
- for (LibraryItem li : LibraryUtils.search(dd, search)) {
- itemArray.add(li.asResponse());
- }
-
- response.put(Directive.ITEMS.toString(), itemArray);
- } catch (QueryFailureException e) {
- throw new HandleFailureException(e.getMessage());
- } catch (EmptySearchException e) {
- throw new HandleFailureException(e.getMessage());
- }
- }
-
- /**
- * Handle a HTTP GET request.
- *
- * @param request
- * The HTTP request.
- *
- * @param response
- * The response that the handler will populate during the
- * handling of the request.
- *
- * @param context
- * The HTTP context.
- *
- * @throws HandlerNotFoundException
- * if the client requested a request handler that could not be
- * found on the class path.
- *
- * @throws HandlerSetupFailureException
- * if the handler was found but could not be set up (eg does not
- * implement appropriate interface or cannot be instantiated).
- *
- * @throws HandleFailureException
- * if an appropriate handler was contacted, but it failed to
- * process the request.
- *
- * @throws BadRequestException
- * if the request was malformed or invalid.
- *
- * @throws NotAHandlerException
- * if the class requested to handle the request is not a
- * handler.
- *
- * @throws UnknownFunctionException
- * if the request is for a path that does not correspond to one
- * of this handler's functions.
- */
- @Override
- public void handleGet(HttpRequest request, HttpResponse response,
- HttpContext context) throws HandlerNotFoundException,
- HandlerSetupFailureException, HandleFailureException,
- BadRequestException, NotAHandlerException, UnknownFunctionException {
- String path;
- String uri = request.getRequestLine().getUri();
- String query = getQueryString(uri);
-
- if (query == null)
- path = uri.toLowerCase(Locale.ENGLISH);
- else
- path = uri.split("\\?" + query)[0].toLowerCase(Locale.ENGLISH);
-
- Map<String, Object> content = new HashMap<String, Object>();
-
- if (path.equals("/library/tracks")) {
- try {
- doSearch(parseQueryString(query), content, server);
- } catch (UnsupportedEncodingException e) {
- throw new HandleFailureException(e.getMessage());
- }
- } else {
- throw new UnknownFunctionException(path);
- }
-
- response.setStatusLine(request.getProtocolVersion(), HttpStatus.SC_OK,
- "OK");
-
- content.put(Directive.STATUS.toString(), Status.OK.toString());
-
- StringEntity entity = null;
-
- try {
- entity = new StringEntity(JSONValue.toJSONString(content));
- } catch (UnsupportedEncodingException e) {
- throw new HandlerSetupFailureException(getClass().getName(), e);
- }
-
- entity.setContentType(HTTP.PLAIN_TEXT_TYPE);
- response.setEntity(entity);
- }
-}