package org.springframework.prospring.ticket.service;

/**
 * Klasa bazowa wszystkich wyjątków aplikacji
 */
public class BaseApplicationException extends ApplicationException {

    // kod błędu tego wyjątku.
    private String errorCode;

    /**
     * Konstruktor - tworzy nowy wyjątke aplikacji o podanym kodzie błędu.
     * @param errorCode Kod błędu wyjątku.
     */
    public BaseApplicationException(String errorCode) {
        this(errorCode, errorCode);
    }

    /**
     * Tworzy nowy wyjątek aplikacji.
     * @param errorCode Kod błędu wyjątku
     * @param message Komunikat wyjątku.
     */
    public BaseApplicationException(String errorCode, String message) {
        super(message);
        this.errorCode = errorCode;
    }

    /**
     * Tworzy nowy wyjątek aplikacji.
     * @param errorCode Kod błędu wyjątku.
     * @param cause Przyczyna wyjątku.
     */
    public BaseApplicationException(String errorCode, Throwable cause) {
        this(errorCode, errorCode, cause);
    }

    /**
     * Tworzy nowy wyjątek aplikacji.
     * @param errorCode Kod błędu wyjątku
     * @param message komunikat wyjątku.
     * @param cause Przyczyna wyjątku.
     */
    public BaseApplicationException(String errorCode, String message, Throwable cause) {
        super(message, cause);
        this.errorCode = errorCode;
    }

    /**
     * Zwraca kod błędu wyjątku.
     * @return Kod błędu wyjątku.
     * @see ApplicationException#getErrorCode()
     */
    public String getErrorCode() {
        return errorCode;
    }

}
