/* * Copyright (c) 2012, the Last.fm Java Project and Committers All rights * reserved. Redistribution and use of this software in source and binary forms, * with or without modification, are permitted provided that the following * conditions are met: - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. THIS SOFTWARE IS * PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.cyanogenmod.eleven.lastfm; import org.w3c.dom.Document; /** * The Result class contains the response sent by the server, i.e. * the status (either ok or failed), an error code and message if failed and the * xml response sent by the server. * * @author Janni Kovacs */ public class Result { public enum Status { OK, FAILED } protected Status status; protected String errorMessage = null; protected int errorCode = -1; protected int httpErrorCode = -1; protected Document resultDocument; /** * @param resultDocument */ protected Result(final Document resultDocument) { status = Status.OK; this.resultDocument = resultDocument; } /** * @param errorMessage */ protected Result(final String errorMessage) { status = Status.FAILED; this.errorMessage = errorMessage; } /** * @param resultDocument * @return */ static Result createOkResult(final Document resultDocument) { return new Result(resultDocument); } /** * @param httpErrorCode * @param errorMessage * @return */ static Result createHttpErrorResult(final int httpErrorCode, final String errorMessage) { final Result r = new Result(errorMessage); r.httpErrorCode = httpErrorCode; return r; } /** * @param errorCode * @param errorMessage * @return */ static Result createRestErrorResult(final int errorCode, final String errorMessage) { final Result r = new Result(errorMessage); r.errorCode = errorCode; return r; } /** * Returns if the operation was successful. Same as * getStatus() == Status.OK. * * @return true if the operation was successful */ public boolean isSuccessful() { return status == Status.OK; } public int getErrorCode() { return errorCode; } public int getHttpErrorCode() { return httpErrorCode; } public Status getStatus() { return status; } public Document getResultDocument() { return resultDocument; } public String getErrorMessage() { return errorMessage; } public DomElement getContentElement() { if (!isSuccessful()) { return null; } return new DomElement(resultDocument.getDocumentElement()).getChild("*"); } @Override public String toString() { return "Result[isSuccessful=" + isSuccessful() + ", errorCode=" + errorCode + ", httpErrorCode=" + httpErrorCode + ", errorMessage=" + errorMessage + ", status=" + status + "]"; } }