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

org.crazyyak.dev.common.fine.FineMessageSetBuilder Maven / Gradle / Ivy

package org.crazyyak.dev.common.fine;

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

/**
* Created by jacobp on 7/29/2014.
*/
public class FineMessageSetBuilder {

  private static final FineMessageSet emptySet = new FineMessageSetImpl();

  public static FineMessageSet empty() {
    return emptySet;
  }

  private final List messages = new ArrayList<>();

  public FineMessageSet build() {
    return new FineMessageSetImpl(messages);
  }

  public FineMessageSetBuilder withMessage(FineMessage message) {
    if (message instanceof FineMessage) {
      messages.add((FineMessage)message);
    } else {
      this.messages.add(FineMessage.withAll(
          message.getText(),
          message.getId(),
          message.getTraitMap()));
    }
    return this;
  }

  public FineMessageSetBuilder withText(String text) {
    messages.add(FineMessage.withAll(text, null, TraitMap.empty()));
    return this;
  }

  public FineMessageSetBuilder withId(String text, String id) {
    messages.add(FineMessage.withAll(text, id, TraitMap.empty()));
    return this;
  }

  public FineMessageSetBuilder withTraits(String text, TraitMap traitMap) {
    messages.add(FineMessage.withAll(text, null, traitMap));
    return this;
  }

  public FineMessageSetBuilder withTraits(String text, Map traitMapArg) {
    TraitMap traitMap = (traitMapArg != null && traitMapArg.size() > 0) ? new TraitMap(traitMapArg) : TraitMap.empty();
    messages.add(FineMessage.withAll(text, null, traitMap));
    return this;
  }

  public FineMessageSetBuilder withTraits(String text, String...traits) {
    TraitMap traitMap = (traits != null && traits.length > 0) ? new TraitMap(traits) : TraitMap.empty();
    messages.add(FineMessage.withAll(text, null, traitMap));
    return this;
  }

  public FineMessageSetBuilder withAll(String text, String id, TraitMap traitMap) {
    messages.add(FineMessage.withAll(text, id, traitMap));
    return this;
  }

  public FineMessageSetBuilder withSet(FineMessageSet fineMsgSet) {
    if (fineMsgSet instanceof FineMessageSetImpl) {
      return withSet(fineMsgSet);
    }

    for (FineMessage message : fineMsgSet.getMessages()) {
      this.withMessage(message);
    }

    return this;
  }

  public FineMessageSetBuilder withImmutableSet(FineMessageSetImpl fineMsgSet) {
    if (fineMsgSet != null) {
      this.messages.addAll(fineMsgSet.getMessages());
    }
    return this;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy