
uk.co.mruoc.nac.api.converter.ApiCsvUserConverter Maven / Gradle / Ivy
package uk.co.mruoc.nac.api.converter;
import com.fasterxml.jackson.databind.MappingIterator;
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
import com.fasterxml.jackson.dataformat.csv.CsvSchema;
import java.io.IOException;
import java.io.InputStream;
import java.io.UncheckedIOException;
import java.util.Collection;
import java.util.Set;
import lombok.RequiredArgsConstructor;
import uk.co.mruoc.nac.api.dto.ApiCsvUser;
import uk.co.mruoc.nac.entities.UpsertUserRequest;
import uk.co.mruoc.nac.entities.UserNameUtils;
@RequiredArgsConstructor
public class ApiCsvUserConverter {
private final CsvMapper mapper;
public ApiCsvUserConverter() {
this(new CsvMapper());
}
public Collection toCreateUserRequests(InputStream inputStream) {
return toCreateUserRequests(toCsvUsers(inputStream));
}
private Collection toCsvUsers(InputStream inputStream) {
try {
CsvSchema schema = mapper.schemaFor(ApiCsvUser.class).withHeader();
MappingIterator iterator =
mapper.readerFor(ApiCsvUser.class).with(schema).readValues(inputStream);
return iterator.readAll();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
private static Collection toCreateUserRequests(Collection lines) {
return lines.stream().map(ApiCsvUserConverter::toCreateUserRequest).toList();
}
private static UpsertUserRequest toCreateUserRequest(ApiCsvUser line) {
return UpsertUserRequest.builder()
.username(line.getUsername())
.name(UserNameUtils.toUserName(line.getFirstName(), line.getLastName()))
.email(line.getEmail())
.emailVerified(line.isEmailVerified())
.groups(Set.of(line.getGroups().split("~")))
.build();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy