001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    
018    package org.apache.commons.math;
019    
020    import org.apache.commons.math.ConvergenceException;
021    import org.apache.commons.math.exception.util.DummyLocalizable;
022    import org.apache.commons.math.exception.util.Localizable;
023    import org.apache.commons.math.exception.util.LocalizedFormats;
024    
025    /**
026     * Error thrown when a numerical computation exceeds its allowed
027     * number of iterations.
028     *
029     * @version $Revision: 1070725 $ $Date: 2011-02-15 02:31:12 +0100 (mar. 15 f??vr. 2011) $
030     * @since 1.2
031     */
032    public class MaxIterationsExceededException extends ConvergenceException {
033    
034        /** Serializable version identifier. */
035        private static final long serialVersionUID = -7821226672760574694L;
036    
037        /** Maximal number of iterations allowed. */
038        private final int maxIterations;
039    
040        /**
041         * Constructs an exception with a default detail message.
042         * @param maxIterations maximal number of iterations allowed
043         */
044        public MaxIterationsExceededException(final int maxIterations) {
045            super(LocalizedFormats.MAX_ITERATIONS_EXCEEDED, maxIterations);
046            this.maxIterations = maxIterations;
047        }
048    
049        /**
050         * Constructs an exception with specified formatted detail message.
051         * Message formatting is delegated to {@link java.text.MessageFormat}.
052         * @param maxIterations the exceeded maximal number of iterations
053         * @param pattern format specifier
054         * @param arguments format arguments
055         * @deprecated as of 2.2 replaced by {@link #MaxIterationsExceededException(int, Localizable, Object...)}
056         */
057        @Deprecated
058        public MaxIterationsExceededException(final int maxIterations,
059                                              final String pattern, final Object ... arguments) {
060            this(maxIterations, new DummyLocalizable(pattern), arguments);
061        }
062    
063        /**
064         * Constructs an exception with specified formatted detail message.
065         * Message formatting is delegated to {@link java.text.MessageFormat}.
066         * @param maxIterations the exceeded maximal number of iterations
067         * @param pattern format specifier
068         * @param arguments format arguments
069         * @since 2.2
070         */
071        public MaxIterationsExceededException(final int maxIterations,
072                                               final Localizable pattern, final Object ... arguments) {
073            super(pattern, arguments);
074            this.maxIterations = maxIterations;
075        }
076    
077        /** Get the maximal number of iterations allowed.
078         * @return maximal number of iterations allowed
079         */
080        public int getMaxIterations() {
081            return maxIterations;
082        }
083    
084    }