0

I'm trying to map to DynamoDB list of dates in Java

@DynamoDBTypeConverted(converter = LocalDateTimeConverter.class)
private List<LocalDateTime> acquisitionsDates;



public class LocalDateTimeConverter implements DynamoDBTypeConverter<String, LocalDateTime> {

    @Override
    public String convert(LocalDateTime dateTime) {
        return dateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
    }

    @Override
    public LocalDateTime unconvert(String dateTimeStr) {
        return LocalDateTime.parse(dateTimeStr);
    }
}

I have written my own converter but it works only for LocalDateTime but not for the List. Does anyone know how to do it correctly?

Should I write separate converter that will return list of strings where each string will be converted from localdatetime?

piechos
  • 123
  • 2
  • 10

2 Answers2

1

In Interface DynamoDBTypeConverter<S,T> represents S - The DynamoDB standard type, T - The object's field/property type. Use T as List.

public class LocalDateTimeConverter implements DynamoDBTypeConverter<String, List<LocalDateTime>> {

    @Override
    public String convert(List<LocalDateTime> dateTime) {
        //your implementation
    }

    @Override
    public List<LocalDateTime> unconvert(String dateTimeStr) {
        //your implementation
    }
}
0

I wrote converter like below and it works as I wanted ;)

public class ListOfLocalDateTimesConverter implements DynamoDBTypeConverter<List<String>, List<LocalDateTime>> {
@Override
public List<String> convert(List<LocalDateTime> localDateTimes) {
    return localDateTimes
            .stream()
            .map(localDateTime -> localDateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME))
            .collect(Collectors.toList());
}

@Override
public List<LocalDateTime> unconvert(List<String> strings) {
    return strings
            .stream()
            .map(str -> LocalDateTime.parse(str))
            .collect(Collectors.toList());
}

}

piechos
  • 123
  • 2
  • 10