RentalItemFileRepository.java

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

import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;

import io.extact.rms.application.domain.RentalItem;
import io.extact.rms.application.persistence.RentalItemRepository;
import io.extact.rms.application.persistence.GenericRepository.ApiType;
import io.extact.rms.application.persistence.file.converter.EntityArrayConverter;
import io.extact.rms.application.persistence.file.io.FileAccessor;
import io.extact.rms.platform.extension.EnabledIfRuntimeConfig;

@ApplicationScoped
@EnabledIfRuntimeConfig(propertyName = ApiType.PROP_NAME, value = ApiType.FILE)
public class RentalItemFileRepository extends AbstractFileRepository<RentalItem> implements RentalItemRepository {

    @Inject
    public RentalItemFileRepository(FileAccessor fileAccessor, EntityArrayConverter<RentalItem> converter) {
        super(fileAccessor, converter);
    }

    @Override
    public RentalItem findBySerialNo(String serialNo) {
        return this.load().stream()
                .filter(attributes -> attributes[1].equals(serialNo))
                .map(this.getConverter()::toEntity)
                .findFirst()
                .orElse(null);
    }
}