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

net.sf.mmm.util.nls.base.AbstractMessage Maven / Gradle / Ivy

/* Copyright (c) The m-m-m Team, Licensed under the Apache License, Version 2.0
 * http://www.apache.org/licenses/LICENSE-2.0 */
package net.sf.mmm.util.nls.base;

import java.util.Locale;
import java.util.UUID;

import net.sf.mmm.util.lang.api.Message;
import net.sf.mmm.util.nls.api.NlsMessage;

/**
 * This is the abstract base implementation of {@link Message}.
 *
 * @author Joerg Hohwiller (hohwille at users.sourceforge.net)
 * @since 7.6.0
 */
public abstract class AbstractMessage implements Message {

  private static final long serialVersionUID = -88269463788978385L;

  private String code;

  private String source;

  private NlsMessage message;

  private UUID uuid;

  private String details;

  /**
   * The constructor for de-serialization in GWT.
   */
  protected AbstractMessage() {

    super();
  }

  /**
   * The constructor.
   *
   * @param code is the {@link #getCode() code}.
   * @param source is the {@link #getSource() source}.
   * @param message is the {@link #getMessage() message}.
   * @param uuid is the {@link #getUuid() uuid}.
   * @param details are the {@link #getDetails() details}.
   */
  public AbstractMessage(String code, Object source, String message, UUID uuid, String details) {

    this(code, source, new NlsMessagePlain(message), uuid, details);
  }

  /**
   * The constructor.
   *
   * @param code is the {@link #getCode() code}.
   * @param source is the {@link #getSource() source}.
   * @param message is the {@link #getMessage() message}.
   * @param uuid is the {@link #getUuid() uuid}.
   * @param details are the {@link #getDetails() details}.
   */
  public AbstractMessage(String code, Object source, NlsMessage message, UUID uuid, String details) {

    super();
    this.code = code;
    if (source == null) {
      this.source = null;
    } else {
      this.source = source.toString();
    }
    this.message = message;
    this.uuid = uuid;
    this.details = details;
  }

  @Override
  public String getCode() {

    return this.code;
  }

  @Override
  public String getSource() {

    return this.source;
  }

  @Override
  public final String getMessage() {

    return getMessage(null);
  }

  @Override
  public String getMessage(Locale locale) {

    if (locale == null) {
      return this.message.getLocalizedMessage();
    } else {
      return this.message.getLocalizedMessage(locale);
    }
  }

  @Override
  public String getDetails() {

    return this.details;
  }

  @Override
  public UUID getUuid() {

    return this.uuid;
  }

  @Override
  public String toString() {

    return getMessage();
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy