DtoFormatter.java

package io.extact.rms.client.console.ui;

import static io.extact.rms.client.console.ui.ClientConstants.*;

import io.extact.rms.client.api.dto.RentalItemClientDto;
import io.extact.rms.client.api.dto.ReservationClientDto;
import io.extact.rms.client.api.dto.UserAccountClientDto;

public interface DtoFormatter<T> {

    String format(T dto);

    static class RentalItemFormatter implements DtoFormatter<RentalItemClientDto> {
        @Override
        public String format(RentalItemClientDto dto) {
            return String.format("[%s]%s シリアル番号:%s",
                    dto.getId(),
                    dto.getItemName(),
                    dto.getSerialNo());
        }
    }

    static class ReservationFormatter implements DtoFormatter<ReservationClientDto> {
        @Override
        public String format(ReservationClientDto dto) {
            return String.format("[%s] %s - %s %s %s %s",
                    dto.getId(),
                    DATETIME_FORMAT.format(dto.getStartDateTime()),
                    DATETIME_FORMAT.format(dto.getEndDateTime()),
                    dto.getRentalItemDto().getItemName(),
                    dto.getUserAccountDto().getUserName(),
                    dto.getNote());
        }
    }

    static class UserAccountFormatter implements DtoFormatter<UserAccountClientDto> {
        @Override
        public String format(UserAccountClientDto dto) {
            return String.format("[%s] %s/%s %s %s",
                    dto.getId(),
                    dto.getLoginId(),
                    dto.getPassword(),
                    dto.getUserName(),
                    dto.getUserType());
        }
    }
}