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 */
017package org.apache.commons.math4.exception;
018
019import org.apache.commons.math4.exception.util.Localizable;
020import org.apache.commons.math4.exception.util.LocalizedFormats;
021
022/**
023 * Exception to be thrown when two dimensions differ.
024 *
025 * @since 2.2
026 */
027public class DimensionMismatchException extends MathIllegalNumberException {
028    /** Serializable version Id. */
029    private static final long serialVersionUID = -8415396756375798143L;
030    /** Correct dimension. */
031    private final int dimension;
032
033    /**
034     * Construct an exception from the mismatched dimensions.
035     *
036     * @param specific Specific context information pattern.
037     * @param wrong Wrong dimension.
038     * @param expected Expected dimension.
039     */
040    public DimensionMismatchException(Localizable specific,
041                                      int wrong,
042                                      int expected) {
043        super(specific, Integer.valueOf(wrong), Integer.valueOf(expected));
044        dimension = expected;
045    }
046
047    /**
048     * Construct an exception from the mismatched dimensions.
049     *
050     * @param wrong Wrong dimension.
051     * @param expected Expected dimension.
052     */
053    public DimensionMismatchException(int wrong,
054                                      int expected) {
055        this(LocalizedFormats.DIMENSIONS_MISMATCH_SIMPLE, wrong, expected);
056    }
057
058    /**
059     * @return the expected dimension.
060     */
061    public int getDimension() {
062        return dimension;
063    }
064}