ReservationArrayConverter.java

package io.extact.rms.application.persistence.file.converter;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

import io.extact.rms.application.domain.Reservation;

public class ReservationArrayConverter implements EntityArrayConverter<Reservation> {

    private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm");
    public static final ReservationArrayConverter INSTANCE = new ReservationArrayConverter();

    @Override
    public Reservation toEntity(String[] attributes) {

        var reservationId = Integer.parseInt(attributes[0]);
        var startDateTime = LocalDateTime.parse(attributes[1], DATE_TIME_FORMATTER);
        var endDateTime = LocalDateTime.parse(attributes[2], DATE_TIME_FORMATTER);
        var note = attributes[3];
        var rentalItemId = Integer.parseInt(attributes[4]);
        var userAccountId = Integer.parseInt(attributes[5]);

        return Reservation.of(reservationId, startDateTime, endDateTime, note, rentalItemId, userAccountId);
    }

    @Override
    public String[] toArray(Reservation reservation) {

        var reservationAttributes = new String[6];

        reservationAttributes[0] = String.valueOf(reservation.getId());
        reservationAttributes[1] = DATE_TIME_FORMATTER.format(reservation.getStartDateTime());
        reservationAttributes[2] = DATE_TIME_FORMATTER.format(reservation.getEndDateTime());
        reservationAttributes[3] = reservation.getNote();
        reservationAttributes[4] = String.valueOf(reservation.getRentalItemId());
        reservationAttributes[5] = String.valueOf(reservation.getUserAccountId());

        return reservationAttributes;
    }
}