package dk.daoas.adressevedligehold; import java.io.IOException; import org.apache.commons.fileupload.FileItem; import dk.daoas.adressevedligehold.AddressSourceEntry.EntryType; public class AddressSourceNS extends AbstractAddressSource { enum NextUgedag { MANDAG,TIRSDAG,ONSDAG,TORSDAG,FREDAG,LORDAG,SONDAG } String parts[]; NextUgedag nextUgedag = NextUgedag.MANDAG; public AddressSourceNS(FileItem file) throws Exception { super(file); } @Override public void validate() throws IOException { super.validatNoHeaderLine(22, ','); } //TODO: Skal csv parsning klares med Apache Commons CSV ? @Override public AddressSourceEntry getNextEntry() throws IOException { if (nextUgedag == NextUgedag.MANDAG) { String line = br.readLine(); if (line == null) // end of file return null; if (line.trim().equals("")) return null; parts = line.split(","); if (parts.length != 22) { throw new IOException("Not enough fields in line " + line); } } AddressSourceEntry entry = new AddressSourceEntry( EntryType.TypeAddressRange ); entry.distributor = "NS"; entry.gadeid = Integer.parseInt( parts[0] ); entry.vejnavn = parts[1].replace("\"", ""); //stednavn = parts[2]; //ukendtt = parts[3]; entry.postnr = Short.parseShort( parts[4] ); entry.rute = dirigeringsCache.getInstance( parts[5].replace("\"", "") ); entry.husnr = Short.parseShort( parts[6] ); entry.litra = parts[7].replace("\"", ""); entry.tilHusnr = Short.parseShort( parts[8] ); entry.tilLitra = parts[9].replace("\"", ""); //sekvens = parts[10] //fradato = parts[11] //tildato = parts[12] //distributor = parts[13] //inspektorkode = parts[21] switch (nextUgedag) { case MANDAG: entry.koreliste = dirigeringsCache.getInstance( parts[14] ); entry.ugedage = EntryUgedage.MAN; nextUgedag = NextUgedag.TIRSDAG; break; case TIRSDAG: entry.koreliste = dirigeringsCache.getInstance( parts[15] ); entry.ugedage = EntryUgedage.TIR; nextUgedag = NextUgedag.ONSDAG; break; case ONSDAG: entry.koreliste = dirigeringsCache.getInstance( parts[16] ); entry.ugedage = EntryUgedage.ONS; nextUgedag = NextUgedag.TORSDAG; break; case TORSDAG: entry.koreliste = dirigeringsCache.getInstance( parts[17] ); entry.ugedage = EntryUgedage.TOR; nextUgedag = NextUgedag.FREDAG; break; case FREDAG: entry.koreliste = dirigeringsCache.getInstance( parts[18] ); entry.ugedage = EntryUgedage.FRE; nextUgedag = NextUgedag.LORDAG; break; case LORDAG: entry.koreliste = dirigeringsCache.getInstance( parts[19] ); entry.ugedage = EntryUgedage.LOR; nextUgedag = NextUgedag.SONDAG; break; case SONDAG: entry.koreliste = dirigeringsCache.getInstance( parts[20] ); entry.ugedage = EntryUgedage.SON; nextUgedag = NextUgedag.MANDAG; break; default: throw new IOException("Ukendt ugedag:" + nextUgedag); } lineCount++; return entry; } @Override public String getDistributor() { return "NS"; } }