package org.simpleflatmapper.datastax.impl.setter;
import com.datastax.driver.core.SettableByIndexData;
import org.simpleflatmapper.reflect.Setter;
import org.simpleflatmapper.converter.Converter;
import java.util.ArrayList;
import java.util.List;
public class ListWithConverterSettableDataSetter<I, O> implements Setter<SettableByIndexData<?>, List<I>> {
private final int index;
private final Converter<I, O> converter;
public ListWithConverterSettableDataSetter(int index, Converter<I, O> converter) {
this.index = index;
this.converter = converter;
}
@Override
public void set(SettableByIndexData<?> target, List<I> value) throws Exception {
if (value == null) {
target.setToNull(index);
} else {
List<O> list = new ArrayList<O>(value.size());
for(int i = 0; i < value.size(); i++) {
list.add(converter.convert(value.get(i)));
}
target.setList(index, list);
}
}
}