package dk.daoas.adressevedligehold; import java.io.IOException; import org.apache.commons.fileupload.FileItem; import dk.daoas.adressevedligehold.AddressSourceEntry.EntryType; import dk.daoas.adressevedligehold.util.SafeParsers; public class AddressSourceBK extends AbstractAddressSource { public AddressSourceBK(FileItem file) throws Exception { super(file); } @Override public void validate() throws IOException { super.validatNoHeaderLine(13, ';'); } //TODO: Skal csv parsning klares med Apache Commons CSV ? @Override public AddressSourceEntry getNextEntry() throws IOException { String line = br.readLine(); if (line == null) // end of file return null; if (line.trim().equals("")) return null; //System.out.println(line); AddressSourceEntry entry = new AddressSourceEntry( EntryType.TypeSingleAddress); entry.distributor = "BK"; String[] parts = line.split(";"); if (parts.length != 13) { throw new IOException("Not enough fields in CSV file. Found " + parts.length + ", expected 13"); } entry.postnr = Short.parseShort( parts[0]); entry.vejnavn = parts[1].replace("\"", ""); entry.husnr = Short.parseShort( parts[2] ); entry.litra = parts[3].replace("\"", ""); entry.vejkode = SafeParsers.parseShort( parts[4] ); entry.kommunekode = SafeParsers.parseShort( parts[5] ); entry.gadeid = Integer.parseInt( parts[6] ); String ugedage = parts[7].replace("\"", ""); String laesnr = parts[8].replace("\"", ""); //String distnr = parts[9].replace("\"", ""); //Bruges ikke String foede = parts[10].replace("\"", ""); String jobnr = parts[11].replace("\"", ""); String tklaes = parts[12].replace("\"", ""); entry.rute = laesnr; entry.koreliste = "/" + foede + "/" + tklaes + "/" + jobnr; entry.rute = dirigeringsCache.getInstance(entry.rute); entry.koreliste = dirigeringsCache.getInstance(entry.koreliste); switch (ugedage) { case "1234000": entry.ugedage = EntryUgedage.MAN_TOR; break; case "0000500": entry.ugedage = EntryUgedage.FRE; break; case "0000060": entry.ugedage = EntryUgedage.LOR; break; case "0000007": entry.ugedage = EntryUgedage.SON; break; default: throw new IOException("Ukendt ugedag:" + ugedage); } lineCount++; return entry; } @Override public String getDistributor() { return "BK"; } }