CreateActivityCommand.java

package com.wilzwert.myjobs.core.domain.model.activity.command;

import com.wilzwert.myjobs.core.domain.model.activity.ActivityType;
import com.wilzwert.myjobs.core.domain.model.job.JobId;
import com.wilzwert.myjobs.core.domain.model.user.UserId;

/**
 * @author Wilhelm Zwertvaegher
 */

public record CreateActivityCommand(ActivityType activityType, String comment, UserId userId, JobId jobId) {
    public static class Builder {
        private ActivityType activityType;
        private String comment;
        private UserId userId;
        private JobId jobId;


        public Builder() {}

        public Builder(CreateActivityCommand command) {
            this.activityType = command.activityType();
            this.comment = command.comment();
            this.userId = command.userId();
            this.jobId = command.jobId();
        }

        public CreateActivityCommand.Builder comment(String comment) {
            this.comment = comment;
            return this;
        }
        public CreateActivityCommand.Builder userId(UserId userId) {
            this.userId = userId;
            return this;
        }

        public CreateActivityCommand.Builder jobId(JobId jobId) {
            this.jobId = jobId;
            return this;
        }

        public CreateActivityCommand build() {
            return new CreateActivityCommand(activityType, comment, userId, jobId);
        }
    }
}