UserAccountResourceDto.java

package io.extact.rms.external.webapi.dto;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.eclipse.microprofile.openapi.annotations.media.Schema;

import lombok.Getter;
import lombok.Setter;

import io.extact.rms.application.domain.UserAccount;
import io.extact.rms.application.domain.UserAccount.UserType;
import io.extact.rms.application.domain.constraint.Contact;
import io.extact.rms.application.domain.constraint.LoginId;
import io.extact.rms.application.domain.constraint.Passowrd;
import io.extact.rms.application.domain.constraint.PhoneNumber;
import io.extact.rms.application.domain.constraint.RmsId;
import io.extact.rms.application.domain.constraint.UserName;
import io.extact.rms.application.domain.constraint.UserTypeConstraint;

@Schema(description = "ユーザDTO")
@Getter
@Setter
public class UserAccountResourceDto {

    @RmsId
    @Schema(required = true)
    private Integer id;

    @LoginId
    @Schema(required = true)
    private String loginId;

    @Passowrd
    @Schema(required = true)
    private String password;

    @UserName
    @Schema(required = false)
    private String userName;

    @PhoneNumber
    @Schema(required = false)
    private String phoneNumber;

    @Contact
    @Schema(required = false)
    private String contact;

    @UserTypeConstraint
    @Schema(required = true)
    private UserType userType;

    public static UserAccountResourceDto toDto(UserAccount entity) {
        if (entity == null) {
            return null;
        }
        var dto = new UserAccountResourceDto();
        dto.setId(entity.getId());
        dto.setLoginId(entity.getLoginId());
        dto.setPassword(entity.getPassword());
        dto.setUserName(entity.getUserName());
        dto.setPhoneNumber(entity.getPhoneNumber());
        dto.setContact(entity.getContact());
        dto.setUserType(entity.getUserType().name());
        return dto;
    }

    public UserAccount toEntity() {
        return UserAccount.of(id, loginId, password, userName, phoneNumber, contact, userType);
    }

    // original getter
    public String getUserType() {
        return userType.name();
    }

    // original setter
    public void setUserType(String userType) {
        this.userType = UserType.valueOf(userType);
    }

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
    }
}