DS-Lab / src / main / java / dslab / protocol / MessageBuilder.java
MessageBuilder.java
Raw
package dslab.protocol;

import dslab.routing.Address;

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

public final class MessageBuilder {
    private List<Address> recipients = new ArrayList<>();
    private Address sender;
    private String subject;
    private String data;
    private String hash;

    private MessageBuilder() {}

    public static MessageBuilder aMessage() {return new MessageBuilder();}

    public static MessageBuilder aMessage(Message message) {
        return new MessageBuilder()
                .sender(message.getSender())
                .recipients(message.getRecipients())
                .subject(message.getSubject())
                .data(message.getData())
                .hash(message.getHash());
    }

    public MessageBuilder recipients(List<Address> recipients) {
        this.recipients = recipients;
        return this;
    }

    public MessageBuilder recipients(Address... recipients) {
        return recipients(List.of(recipients));
    }

    public MessageBuilder recipient(Address recipient) {
        return recipients(recipient);
    }

    public MessageBuilder sender(Address sender) {
        this.sender = sender;
        return this;
    }
    public MessageBuilder subject(String subject) {
        this.subject = subject;
        return this;
    }
    public MessageBuilder data(String data) {
        this.data = data;
        return this;
    }
    public MessageBuilder hash(String hash) {
        this.hash = hash;
        return this;
    }

    public Message build() {
        Message message = new Message();
        message.setRecipients(recipients);
        message.setSender(sender);
        message.setSubject(subject);
        message.setData(data);
        message.setHash(hash);
        return message;
    }
}