package de.rwth.idsg.bikeman.web.rest.dto.util;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import de.rwth.idsg.bikeman.web.rest.dto.modify.CardAccountBaseDTO;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Wolfgang Kluth on 23/02/16.
*/
public class CardAccountBatchDeserializer extends JsonDeserializer<List<CardAccountBaseDTO>> {
private final static String CSV_SEPARATOR = ",";
@Override
public List<CardAccountBaseDTO> deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
throws IOException {
String rawBatch = jsonParser.getText();
List<CardAccountBaseDTO> cardAccounts = new ArrayList<>();
// convert string into hashmap
String lines[] = rawBatch.split("\\r?\\n");
for (String line : lines) {
String[] idAndPin = line.split(CSV_SEPARATOR);
if (idAndPin.length != 2) {
throw new IOException("CSV-String has not the right format: " + rawBatch);
}
CardAccountBaseDTO cardAccountBaseDTO = new CardAccountBaseDTO();
cardAccountBaseDTO.setCardId(idAndPin[0]);
cardAccountBaseDTO.setCardPin(idAndPin[1]);
cardAccounts.add(cardAccountBaseDTO);
}
return cardAccounts;
}
}