/*
* This file is part of rasdaman community.
*
* Rasdaman community is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Rasdaman community is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with rasdaman community. If not, see .
*
* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann /
rasdaman GmbH.
*
* For more information please see
* or contact Peter Baumann via .
*/
package petascope.wcs.server.exceptions;
//~--- non-JDK imports --------------------------------------------------------
import net.opengis.ows.v_1_0_0.ExceptionReport;
import net.opengis.ows.v_1_0_0.ExceptionType;
//~--- JDK imports ------------------------------------------------------------
import java.util.Arrays;
import petascope.ConfigManager;
/**
* Private Exception superclass for the WCS server.
* This class can return an error report, than can be marshalled into a
* WCS-standard compliant XML structure describing the error that has happened.
*
* @author Andrei Aiordachioaie
*/
public class WCSException extends Exception
{
// private static Logger LOG = LoggerFactory.getLogger(WCSException.class);
/*
private String[] errorCodes =
{
"MissingParameterValue", "InvalidParameterValue", "NoApplicableCode",
"UnsupportedCombination", "NotEnoughStorage",
"MaliciousQuery", "ActionNotSupported", "XmlStructuresError",
"BadResponseHandler", "MultiBandImagesNotSupported", "RasdamanUnavailable",
"ServletConnectionError", "XmlInputNotValid", "InvalidPropertyValue",
"InternalWcpsError", "InternalSqlError", "RasdamanRequestFailed",
"NodeParsingNotImplemented", "IOConnectionError", "InvalidTemporalMetadata",
"InvalidRequestString"
};
*/
private ExceptionType item;
private ExceptionReport report;
private String errorCode;
private String errorDetail = "";
/**
* Default (minimal) constructor
* @param error Error Code
* @param detail Detailed message about the error
*/
protected WCSException(String error, String detail)
{
super();
errorCode = error;
errorDetail = detail;
createReport();
}
/**
* Convenience Constructor
* @param error Error Code
* @param detail Detailed message about the error
* @param e The cause of the current exception.
*/
protected WCSException(String error, String detail, Exception e)
{
super(e);
errorCode = error;
errorDetail = detail;
createReport();
}
private void createReport()
{
report = new ExceptionReport();
report.setLanguage(ConfigManager.WCST_LANGUAGE);
report.setVersion(ConfigManager.WCST_VERSION);
item = new ExceptionType();
item.setExceptionCode(errorCode);
item.setLocator(errorDetail);
report.getException().add(item);
}
/** Return the error code.
*
* @return
*/
public String getErrorCode()
{
return errorCode;
}
/** Return the detailed error message.
*
* @return
*/
public String getErrorDetail()
{
return errorDetail;
}
/**
* Retrieves a data structure that can be later marshalled into a XML
* "ExceptionReport" document.
* @return ExceptionReport object
*/
public ExceptionReport getReport()
{
return report;
}
/**
* Adds text to this exception's detail message.
* @param msg
*/
public void appendErrorDetail(String msg)
{
this.errorDetail += msg;
createReport();
}
@Override
public String getMessage()
{
return this.errorDetail;
}
}