# NonDeleteableRecordException.java

    package org.example.customerdao.utility;

    /*
     * This is free and unencumbered software released into the public domain.
     * Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software,
     * either in source code form or as a compiled binary, for any purpose, commercial or
     * non-commercial, and by any means.
     *
     * In jurisdictions that recognize copyright laws, the author or authors of this
     * software dedicate any and all copyright interest in the software to the public domain.
     * We make this dedication for the benefit of the public at large and to the detriment of
     * our heirs and successors. We intend this dedication to be an overt act of relinquishment in
     * perpetuity of all present and future rights to this software under copyright law.
     *
     * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
     * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
     * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES
     * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     *
     * For more information, please refer to: https://unlicense.org/
    */

    import java.io.Serializable;

    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;

    /**
     * The NonDeleteableRecordException class for the <strong>CustomerDAO</strong>.
     *
     * @author Jonathan Earl
     * @version 1.0
     *
     */
    public final class NonDeleteableRecordException extends RuntimeException
       implements Serializable
    {
        private static final long serialVersionUID = 1L;
        private static final Logger LOG = LogManager.getLogger();

        /**
         * Default Constructor.
         *
         * Sets the message to "Unknown Service Error"
         */
        public NonDeleteableRecordException()
        {
            super("Record is not deleteable");
            LOG.error("Record is not deleteable");
        }

        /**
         * Constructor.
         *
         * @param message the message to set
         * @see NonDeleteableRecordException#NonDeleteableRecordException()
         */
        public NonDeleteableRecordException(final String message)
        {
            super(message);
            LOG.error(message);
        }

        /**
         * Throwable Constructor.
         *
         * @param message the message to set
         * @param cause the inner exception
         * @see NonDeleteableRecordException#NonDeleteableRecordException()
         * @see NonDeleteableRecordException#NonDeleteableRecordException(String message)
         */
        public NonDeleteableRecordException(final String message, final Throwable cause)
        {
            super(message, cause);
            LOG.error(message + " - " + cause.getLocalizedMessage());
        }

        /**
         * Throwable Constructor.
         *
         * @param cause the inner exception
         * @see NonDeleteableRecordException#NonDeleteableRecordException()
         * @see NonDeleteableRecordException#NonDeleteableRecordException(String message)
         * @see NonDeleteableRecordException#NonDeleteableRecordException(String message, Throwable cause)
         */
        public NonDeleteableRecordException(final Throwable cause)
        {
            super(cause);
            LOG.error(cause.getLocalizedMessage());
        }
    }