/**
 * The contents of this file are subject to the license and copyright
 * detailed in the LICENSE and NOTICE files at the root of the source
 * tree and available online at
 *
 * http://www.dspace.org/license/
 */
package org.dspace.app.bulkedit;

/**
 * Metadata importer exception
 *
 * @author Stuart Lewis
 */
public class MetadataImportInvalidHeadingException extends Exception
{
    /** The type of error (schema or element) */
    private int type;

    /** The bad heading */
    private String badHeading;

    /** The column number */
    private int column;

    /** Error with the schema */
    public static final int SCHEMA = 0;

    /** Error with the element */
    public static final int ELEMENT = 1;

    /** Error with a missing header */
    public static final int MISSING = 98;

    /** Error with the whole entry */
    public static final int ENTRY = 99;


    /**
     * Instantiate a new MetadataImportInvalidHeadingException
     *
     * @param message the error message
     * @param theType the type of the error
     * @param theColumn column number
     */
    public MetadataImportInvalidHeadingException(String message, int theType, int theColumn)
    {
        super(message);
        badHeading = message;
        type = theType;
        column = theColumn;
    }

    /**
     * Get the type of the exception
     *
     *  @return the type of the exception
     */
    public String getType()
    {
        return "" + type;
    }

    /**
     * Get the heading that was invalid
     *
     * @return the invalid heading
     */
    public String getBadHeader()
    {
        return badHeading;
    }

    /**
     * Get the column number that was invalid
     *
     * @return the invalid column number
     */
    public int getColumn()
    {
        return column;
    }

    /**
     * Get the exception message
     *
     * @return The exception message
     */
    @Override
    public String getMessage()
    {
        if (type == SCHEMA)
        {
            return "Unknown metadata schema in column " + column + ": " + badHeading;
        } else if (type == ELEMENT)
        {
            return "Unknown metadata element in column " + column + ": " + badHeading;
        } else if (type == MISSING)
        {
            return "Row with missing header: column " + column;
        } else
        {
            return "Bad metadata declaration in column" + column + ": " + badHeading;
        }
    }
}
