All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.crazyyak.dev.common.exceptions.FineRuntimeException Maven / Gradle / Ivy

There is a newer version: 4.1.4
Show newest version
package org.crazyyak.dev.common.exceptions;

import org.crazyyak.dev.common.fine.*;

public class FineRuntimeException extends RuntimeException implements FineMessageAccessing {

  private final FineMessageSet messageSet;

  public FineRuntimeException() {
    super();
    this.messageSet = FineMessageSetBuilder.empty();
  }
  public FineRuntimeException(String message, String...traits) {
    super(message);
    this.messageSet = new FineMessageSetBuilder().withTraits(message, traits).build();
  }
  public FineRuntimeException(Throwable ex, String...traits) {
    super(ex);
    this.messageSet = toMsgSet(ex, traits);
  }
  public FineRuntimeException(String message, Throwable ex, String...traits) {
    super(message, ex);
    this.messageSet = toMsgSet(ex, traits);
  }



  public FineRuntimeException(FineMessage richMessage) {
    super(richMessage.getText());
    this.messageSet = new FineMessageSetBuilder().withMessage(richMessage).build();
  }
  public FineRuntimeException(FineMessage richMessage, String message) {
    super(message);
    this.messageSet = new FineMessageSetBuilder().withMessage(richMessage).build();
  }
  public FineRuntimeException(FineMessage richMessage, Throwable ex) {
    super(richMessage.getText(), ex);
    this.messageSet = new FineMessageSetBuilder().withMessage(richMessage).build();
  }
  public FineRuntimeException(FineMessage richMessage, String message, Throwable ex) {
    super(message, ex);
    this.messageSet = new FineMessageSetBuilder().withMessage(richMessage).build();
  }



  public FineRuntimeException(FineMessageSet messageSet) {
    super(messageSet.toString("; "));
    this.messageSet = new FineMessageSetBuilder().withSet(messageSet).build();
  }
  public FineRuntimeException(FineMessageSet messageSet, String message) {
    super(message);
    this.messageSet = new FineMessageSetBuilder().withSet(messageSet).build();
  }
  public FineRuntimeException(FineMessageSet messageSet, Throwable ex) {
    super(messageSet.toString("; "), ex);
    this.messageSet = new FineMessageSetBuilder().withSet(messageSet).build();
  }
  public FineRuntimeException(FineMessageSet messageSet, String message, Throwable ex) {
    super(message, ex);
    this.messageSet = new FineMessageSetBuilder().withSet(messageSet).build();
  }



  @Override
  public FineMessageSet getMessageSet() {
    return messageSet;
  }

  public String getSummary() {
    return messageSet.toString("; ");
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (!(o instanceof FineRuntimeException)) return false;

    FineRuntimeException that = (FineRuntimeException) o;

    return messageSet.equals(that.messageSet);
  }

  @Override
  public int hashCode() {
    int result = getClass().getName().hashCode();
    result = 31 * result + messageSet.hashCode();
    return result;
  }

  private static FineMessageSet toMsgSet(Throwable ex, String[] traits) {

    FineMessageSetBuilder builder = new FineMessageSetBuilder();

    if (ex instanceof FineMessageAccessing) {
      FineMessageAccessing accessing = (FineMessageAccessing)ex;
      FineMessageSet messageSet = accessing.getMessageSet();
      builder.withSet(messageSet);
    }

    if (traits.length > 0) {
      // They really shouldn't do this, but if they do,
      // we don't want to lose the traits specified.
      builder.withTraits(ex.getMessage(), traits);
    }

    return builder.build();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy