cleanup
[cdmlib.git] / cdmlib-remote / src / main / java / eu / etaxonomy / cdm / remote / controller / HttpStatusMessage.java
1 /**
2 * Copyright (C) 2009 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9 package eu.etaxonomy.cdm.remote.controller;
10
11 import java.io.IOException;
12
13 import javax.servlet.http.HttpServletResponse;
14
15 import org.apache.commons.lang.StringUtils;
16 import org.apache.logging.log4j.LogManager;
17 import org.apache.logging.log4j.Logger;
18
19 /**
20 * @author a.kohlbecker
21 * @since 06.04.2009
22 */
23 public class HttpStatusMessage {
24
25 private static final Logger logger = LogManager.getLogger();
26
27 public final static HttpStatusMessage UUID_MISSING = new HttpStatusMessage(HttpServletResponse.SC_BAD_REQUEST, "missing uuid parameter");
28 public final static HttpStatusMessage UUID_INVALID = new HttpStatusMessage(HttpServletResponse.SC_BAD_REQUEST, "invalid uuid");
29 public final static HttpStatusMessage UUID_NOT_FOUND = new HttpStatusMessage(HttpServletResponse.SC_NOT_FOUND, "uuid not found");
30 public final static HttpStatusMessage UUID_REFERENCES_WRONG_TYPE = new HttpStatusMessage(HttpServletResponse.SC_NOT_FOUND, "uuid references wrong type");
31
32 public final static HttpStatusMessage PROPERTY_NOT_FOUND = new HttpStatusMessage(HttpServletResponse.SC_NOT_FOUND, "property not found");
33
34 public final static HttpStatusMessage INTERNAL_ERROR = new HttpStatusMessage(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "internal server error");
35
36 public final static HttpStatusMessage ACCESS_DENIED = new HttpStatusMessage(HttpServletResponse.SC_FORBIDDEN, "access denied");
37 public final static HttpStatusMessage SUBTREE_FILTER_INVALID = new HttpStatusMessage(HttpServletResponse.SC_NOT_FOUND, "invalid uuid for subtree filter");
38
39 private int statusCode;
40
41 private final String message;
42
43 private HttpStatusMessage(int statusCode, String message) {
44 this.statusCode = statusCode;
45 this.message = message;
46 }
47
48 /**
49 * create a new HttpStatusMessage
50 */
51 public static HttpStatusMessage create(String statusMessage, int statusCode) {
52 return new HttpStatusMessage(statusCode, statusMessage);
53 }
54
55 public int getStatusCode() {
56 return statusCode;
57 }
58
59 public HttpStatusMessage setStatusCode(int statusCode) {
60 this.statusCode = statusCode;
61 return this;
62 }
63
64 public String getMessage() {
65 return message;
66 }
67
68 @Override
69 public String toString() {
70 return StringUtils.leftPad(Integer.toString(statusCode), 3, "0") + message;
71 }
72
73 public void send(HttpServletResponse response) throws IOException{
74 send(response, null);
75 }
76
77 public void send(HttpServletResponse response, String message) throws IOException{
78 message = getMessage() + ((message == null)? "": ". " + message);
79 logger.info("HTTP " + getStatusCode() + " : " + message);
80 response.sendError(getStatusCode(), message);
81 }
82 }