Package com.cedarsolutions.shared.domain

Source Code of com.cedarsolutions.shared.domain.ErrorDescription

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
*              C E D A R
*          S O L U T I O N S       "Software done right."
*           S O F T W A R E
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright (c) 2013 Kenneth J. Pronovici.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the Apache License, Version 2.0.
* See LICENSE for more information about the licensing terms.
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Author   : Kenneth J. Pronovici <pronovic@ieee.org>
* Language : Java 6
* Project  : Common Java Functionality
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
package com.cedarsolutions.shared.domain;

import java.util.ArrayList;
import java.util.List;

import com.flipthebird.gwthashcodeequals.EqualsBuilder;
import com.flipthebird.gwthashcodeequals.HashCodeBuilder;

/**
* Describes an error to be displayed to a user.
* @author Kenneth J. Pronovici <pronovic@ieee.org>
*/
public class ErrorDescription extends TranslatableDomainObject {

    /** Serialization version number, which can be important to the GAE back-end. */
    private static final long serialVersionUID = 1L;

    /** Error message to be displayed. */
    private String message;

    /** Exception related to the error, or null. */
    private Throwable exception;

    /** Supporting text related to the error, if any. */
    private List<String> supportingTextItems;

    /** Create an empty error description. */
    public ErrorDescription() {
        this.message = null;
        this.exception = null;
        this.supportingTextItems = new ArrayList<String>();
    }

    /**
     * Create an error description.
     * @param message Error message
     */
    public ErrorDescription(String message) {
        this(message, null, (String) null);
    }

    /**
     * Create an error description.
     * @param message     Error message
     * @param exception   Exception, or null
     */
    public ErrorDescription(String message, Throwable exception) {
        this(message, exception, (String) null);
    }

    /**
     * Create an error description.
     * @param message             Error message
     * @param supportingTextItem  Supporting text item, or null
     */
    public ErrorDescription(String message, String supportingTextItem) {
        this(message, null, supportingTextItem);
    }

    /**
     * Create an error description.
     * @param message             Error message
     * @param exception           Exception, or null
     * @param supportingTextItem  Supporting text item, or null
     */
    public ErrorDescription(String message, Throwable exception, String supportingTextItem) {
        this();
        this.message = message;
        this.exception = exception;
        if (supportingTextItem != null) {
            this.supportingTextItems.add(supportingTextItem);
        }
    }

    /**
     * Create an error description.
     * @param message              Error message
     * @param supportingTextItems  List of supporting text items, or null
     */
    public ErrorDescription(String message, List<String> supportingTextItems) {
        this(message, null, supportingTextItems);
    }

    /**
     * Create an error description.
     * @param message              Error message
     * @param exception            Exception, or null
     * @param supportingTextItems  List of supporting text items, or null
     */
    public ErrorDescription(String message, Throwable exception, List<String> supportingTextItems) {
        this();
        this.message = message;
        this.exception = exception;
        if (supportingTextItems != null) {
            this.supportingTextItems.addAll(supportingTextItems);
        }
    }

    /** Compare this object to another object. */
    @Override
    public boolean equals(Object obj) {
        ErrorDescription other = (ErrorDescription) obj;
        return new EqualsBuilder()
                    .append(this.message, other.message)
                    .append(getExceptionClass(this.exception), getExceptionClass(other.exception))
                    .append(getExceptionMessage(this.exception), getExceptionMessage(other.exception))
                    .append(this.supportingTextItems, other.supportingTextItems)
                    .isEquals();
    }

    /** Generate a hash code for this object. */
    @Override
    public int hashCode() {
        return new HashCodeBuilder()
                    .append(this.message)
                    .append(getExceptionClass(this.exception))
                    .append(getExceptionMessage(this.exception))
                    .append(this.supportingTextItems)
                    .toHashCode();
    }

    /** Get the class for an exception, null-safe. */
    @SuppressWarnings("rawtypes")
    private static Class getExceptionClass(Throwable exception) {
        return exception == null ? null : exception.getClass();
    }

    /** Get the message for an exception, null-safe. */
    private static String getExceptionMessage(Throwable exception) {
        return exception == null ? null : exception.getMessage();
    }

    public String getMessage() {
        return this.message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Throwable getException() {
        return this.exception;
    }

    public void setException(Throwable exception) {
        this.exception = exception;
    }

    public List<String> getSupportingTextItems() {
        return this.supportingTextItems;
    }

    public void setSupportingTextItems(List<String> supportingTextItems) {
        this.supportingTextItems = supportingTextItems;
    }

}
TOP

Related Classes of com.cedarsolutions.shared.domain.ErrorDescription

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.