/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2001-2008, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library 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
* Lesser General Public License for more details.
*/
package org.geotools.referencing.operation.projection;
import org.geotools.measure.Latitude;
import org.geotools.resources.i18n.Errors;
import org.geotools.resources.i18n.ErrorKeys;
import org.opengis.referencing.operation.TransformException;
/**
* Thrown by {@link MapProjection} when a map projection failed.
*
* @since 2.0
* @source $URL$
* @version $Id$
* @author André Gosselin
* @author Martin Desruisseaux (IRD)
*/
public class ProjectionException extends TransformException {
/**
* Serial number for interoperability with different versions.
*/
private static final long serialVersionUID = 3031350727691500915L;
/**
* Constructs a new exception with no detail message.
*/
public ProjectionException() {
}
/**
* Constructs a new exception with the specified detail message.
*
* @param code One of the constants suitable for {@link Errors#format(int)}.
*/
ProjectionException(final int code) {
this(Errors.format(code));
}
/**
* Constructs a new exception with the specified detail message.
*
* @param code One of the constants suitable for {@link Errors#format(int)}.
* @param value An argument value to be formatted.
*/
ProjectionException(final int code, final Object value) {
this(Errors.format(code, value));
}
/**
* Constructs a new exception with a detail message
* formatted for a latitude too close from a pole.
*/
ProjectionException(final double latitude) {
this(Errors.format(ErrorKeys.POLE_PROJECTION_$1, new Latitude(Math.toDegrees(latitude))));
}
/**
* Constructs a new exception with the specified detail message.
*/
public ProjectionException(final String message) {
super(message);
}
/**
* Constructs a new exception with the specified cause.
*
* @since 2.5
*/
public ProjectionException(final Throwable cause) {
super(cause.getLocalizedMessage(), cause);
}
/**
* Constructs a new exception with the specified detail message and cause.
*/
public ProjectionException(final String message, final Throwable cause) {
super(message, cause);
}
}