siddur.solidtrust.azure.AzureDownloader.java Source code

Java tutorial

Introduction

Here is the source code for siddur.solidtrust.azure.AzureDownloader.java

Source

package siddur.solidtrust.azure;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Date;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.log4j.Logger;
import org.odata4j.consumer.ODataConsumer;
import org.odata4j.consumer.ODataConsumers;
import org.odata4j.core.OEntity;

import siddur.solidtrust.FileSystemUtil;
import siddur.solidtrust.entity.AzureCar;
import siddur.solidtrust.util.DateUtil;

//"Aantalcilinders","Aantalstaanplaatsen","Aantalzitplaatsen",
//"BPM","Brandstofverbruikbuitenweg","Brandstofverbruikgecombineerd","Brandstofverbruikstad",
//"Catalogusprijs","Cilinderinhoud","CO2uitstootgecombineerd",
//"Datumaanvangtenaamstelling","DatumeersteafgifteNederland","Datumeerstetoelating",
//"Eerstekleur","G3installatie",
//"Handelsbenaming","Hoofdbrandstof","Inrichting","Kenteken","Laadvermogen",
//"Massaleegvoertuig","Massarijklaar","Maximaleconstructiesnelheid","Maximumtetrekkenmassaautonoomgeremd",
//"Maximumtetrekkenmassageremd","Maximumtetrekkenmassamiddenasgeremd","Maximumtetrekkenmassaongeremd",
//"Maximumtetrekkenmassaopleggergeremd","Merk","Milieuclassificatie",
//"Nevenbrandstof","Retrofitroetfilter",
//"Toegestanemaximummassavoertuig","Tweedekleur",
//"Vermogen","Vermogenbromsnorfiets","VervaldatumAPK","Voertuigsoort",
//"Wachtopkeuren","WAMverzekerdgeregistreerd","Zuinigheidslabel"
public class AzureDownloader {

    private static final Logger log4j = Logger.getLogger(AzureDownloader.class);

    private final static int TIME_OUT = 1000 * 60 * 60 * 10;

    @Deprecated
    public static OEntity findByLicensePlate(String lp) {
        ODataConsumer c = ODataConsumers.create(AzureCarConstants.API_URL);
        OEntity entity = c.getEntity("KENT_VRTG_O_DAT", lp).execute();
        return entity;
    }

    public static long size() {
        File f = new File(FileSystemUtil.getTempDir(), "azure.csv");
        if (f.exists()) {
            return f.length();
        }
        return 0;
    }

    public static File download() throws IOException {
        archeveCSV();

        log4j.info("Downloading csv dataset");
        File f = new File(FileSystemUtil.getTempDir(), "azure.csv");
        if (f.isFile()) {
            f.delete();
        }

        log4j.info(AzureCarConstants.OPENDATA_RWD_CSV_URL_NEW);
        try {
            FileUtils.copyURLToFile(new URL(AzureCarConstants.OPENDATA_RWD_CSV_URL_NEW), f, TIME_OUT, TIME_OUT);
        } catch (Exception e) {
            log4j.warn(e.getMessage(), e);
        }
        log4j.info("Downloaded csv dataset");
        return f;
    }

    public static BufferedReader getReader() throws IOException {
        File f = new File(FileSystemUtil.getTempDir(), "azure.csv");
        log4j.info("Reading azure.csv");
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
        return reader;
    }

    private static void archeveCSV() {
        File f = new File(FileSystemUtil.getTempDir(), "azure.csv");
        if (f.isFile()) {
            Date today = new Date();
            String date = DateUtil.date2String(today);
            File dest = new File(FileSystemUtil.getTempDir(), "azure" + date + ".csv");
            if (!dest.isFile()) {
                log4j.info("archeve yesterday's csv");
                f.renameTo(dest);
            }

            //delete file ten days ago.
            String tenDaysAgo = DateUtil.date2String(DateUtils.addDays(today, -10));
            String file = "azure" + tenDaysAgo + ".csv";
            new File(FileSystemUtil.getTempDir(), file).delete();
            log4j.info("deleted file: " + file);
        }
    }

    //azure csv, replaced by opendata csv
    //41 + 1 fields
    @Deprecated
    public static AzureCar convert(List<String> list) {
        AzureCar c = new AzureCar();
        int i = 0;
        String s = null;

        s = list.get(i++);
        c.setNumOfCylinders(getShort(s));

        s = list.get(i++);
        c.setNumOfStandingPlace(getShort(s));

        s = list.get(i++);
        c.setNumOfSittingPlace(getShort(s));

        s = list.get(i++);
        c.setBpm(getInt(s));

        s = list.get(i++);
        c.setFuelUseOfHignway(getFloat(s));

        s = list.get(i++);
        c.setFuelUseOfCity(getFloat(s));

        s = list.get(i++);
        c.setFuelUseOfCombined(getFloat(s));

        s = list.get(i++);
        c.setNewPrice(getInt(s));

        s = list.get(i++);
        c.setVolumeOfCylinder(getInt(s));

        s = list.get(i++);
        c.setCo2(getShort(s));

        s = list.get(i++);
        c.setDateRegistedOnName(getDate(s));

        s = list.get(i++);
        c.setDateRegistedOnHolland(getDate(s));

        s = list.get(i++);
        c.setDateOfBuild(getDate(s));

        s = list.get(i++);
        c.setFirstColor(s);

        s = list.get(i++);
        c.setG3GassInstallation(s);

        s = list.get(i++);
        c.setType(s);

        s = list.get(i++);
        c.setFuelType(s);

        s = list.get(i++);
        c.setArrangement(s);

        s = list.get(i++);
        c.setLicensePlate(s);

        s = list.get(i++);
        c.setLoadCapacity(getInt(s));

        s = list.get(i++);
        c.setMassOfEmptyVehicle(getInt(s));

        s = list.get(i++);
        c.setMassOfDriveReady(getInt(s));

        s = list.get(i++);
        c.setMaximumConstructionSpeed(getShort(s));

        s = list.get(i++);
        c.setMaximumMassOfPullingAutoBrake(getInt(s));

        s = list.get(i++);
        c.setMaximumMassOfPullingBrake(getInt(s));

        s = list.get(i++);
        c.setMaximumMassOfPullingMidaxelBrake(getInt(s));

        s = list.get(i++);
        c.setMaximumMassOfPullingNotBrake(getInt(s));

        s = list.get(i++);
        c.setMaximumMassOfPullingTrailer(getInt(s));

        s = list.get(i++);
        c.setBrand(s);

        s = list.get(i++);
        c.setEnviromentClassification(s);

        s = list.get(i++);
        c.setSecondFuel(s);

        s = list.get(i++);
        c.setDieselFilter(s);

        s = list.get(i++);
        c.setMaximumMassOfPullingAllowed(getInt(s));

        s = list.get(i++);
        c.setSecondColor(s);

        s = list.get(i++);
        c.setPower(getShort(s));

        //Vermogenbromsnorfiets
        i++;

        s = list.get(i++);
        c.setDateOfNextInspection(getDate(s));

        s = list.get(i++);
        c.setVehicleType(s);

        s = list.get(i++);
        c.setWaitingForMot(s);

        s = list.get(i++);
        c.setRegisteredInsurance(s);

        s = list.get(i++);
        c.setEconomicalLabel(s);

        return c;
    }

    //opendata csv
    //55 + 1 fields
    @Deprecated //replaced by convert2
    public static AzureCar convert1(List<String> list) {
        AzureCar c = new AzureCar();
        int i = 0;
        String s = null;

        //Kenteken
        s = list.get(i++);
        c.setLicensePlate(s);

        //Voertuigsoort
        s = list.get(i++);
        c.setVehicleType(s);

        //Merk
        s = list.get(i++);
        c.setBrand(s);

        //Handelsbenaming
        s = list.get(i++);
        c.setType(s);

        //Vervaldatum APK
        s = list.get(i++);
        c.setDateOfNextInspection(getDate2(s));

        //Datum tenaamstelling
        s = list.get(i++);
        c.setDateRegistedOnName(getDate2(s));

        //Bruto BPM
        s = list.get(i++);
        c.setBpm(getInt(s));

        //Inrichting
        s = list.get(i++);
        c.setArrangement(s);

        //Aantal zitplaatsen
        s = list.get(i++);
        c.setNumOfSittingPlace(getShort(s));

        //Eerste kleur
        s = list.get(i++);
        c.setFirstColor(s);

        //Tweede kleur
        s = list.get(i++);
        c.setSecondColor(s);

        //Aantal cilinders
        s = list.get(i++);
        c.setNumOfCylinders(getShort(s));

        //Cilinderinhoud
        s = list.get(i++);
        c.setVolumeOfCylinder(getInt(s));

        //Massa ledig voertuig
        s = list.get(i++);
        c.setMassOfEmptyVehicle(getInt(s));

        //Toegestane maximum massa voertuig
        s = list.get(i++);
        c.setMaximumMassOfPullingAllowed(getInt(s));

        //Massa rijklaar
        s = list.get(i++);
        c.setMassOfDriveReady(getInt(s));

        //Maximum massa trekken ongeremd
        s = list.get(i++);
        c.setMaximumMassOfPullingNotBrake(getInt(s));

        //Maximum trekken massa geremd
        s = list.get(i++);
        c.setMaximumMassOfPullingTrailer(getInt(s));

        //Retrofit roetfilter
        s = list.get(i++);
        c.setDieselFilter(s);

        //Zuinigheidslabel
        s = list.get(i++);
        c.setEconomicalLabel(s);

        //Datum eerste toelating
        s = list.get(i++);
        c.setDateOfBuild(getDate2(s));

        //Datum eerste afgifte Nederland
        s = list.get(i++);
        c.setDateRegistedOnHolland(getDate2(s));

        //Wacht op keuren
        s = list.get(i++);
        c.setWaitingForMot(s);

        //Catalogusprijs
        s = list.get(i++);
        c.setNewPrice(getInt(s));

        //WAM verzekerd
        s = list.get(i++);
        c.setRegisteredInsurance(s);

        //Maximale constructiesnelheid (brom/snorfiets)
        i++;

        //Laadvermogen
        s = list.get(i++);
        c.setLoadCapacity(getInt(s));

        //Oplegger geremd
        //Aanhangwagen autonoom geremd
        //Aanhangwagen middenas geremd
        //Vermogen (brom/snorfiets)
        //Aantal staanplaatsen
        //Aantal deuren
        //Aantal wielen
        //Afstand hart koppeling tot achterzijde voertuig
        //Afstand voorzijde voertuig tot hart koppeling
        //Afwijkende maximum snelheid
        //Lengte
        //Breedte
        //Europese voertuigcategorie
        //Europese voertuigcategorie toevoeging
        //Europese uitvoeringcategorie toevoeging
        i += 15;

        //Plaats chassisnummer
        s = list.get(i++);
        c.setChassisnummer(s);

        //Technische max. massa voertuig
        //Type
        //Type gasinstallatie
        //Typegoedkeuringsnummer
        i += 4;

        //Variant
        s = list.get(i++);
        c.setVariant(s);

        //Uitvoering
        s = list.get(i++);
        c.setUitvoering(s);

        //Volgnummer wijziging EU typegoedkeuring
        //Vermogen massarijklaar
        //Wielbasis
        //Export indicator
        //Openstaande terugroepactie indicator
        //Vervaldatum tachograaf
        //API Gekentekende_voertuigen_assen
        //API Gekentekende_voertuigen_brandstof
        //API Gekentekende_voertuigen_carrosserie
        //API Gekentekende_voertuigen_carrosserie_specifiek
        //API Gekentekende_voertuigen_voertuigklasse

        return c;
    }

    public static AzureCar convert2(List<String> list) {
        AzureCar c = new AzureCar();
        int i = 0;
        String s = null;

        //Aanhangwagen autonoom geremd
        //Aanhangwagen middenas geremd
        i += 2;

        //Aantal cilinders
        s = list.get(i++);
        c.setNumOfCylinders(getShort(s));

        //Aantal deuren
        //Aantal staanplaatsen
        //Aantal wielen
        i += 3;

        //Aantal zitplaatsen
        s = list.get(i++);
        c.setNumOfSittingPlace(getShort(s));

        //Afstand hart koppeling tot achterzijde voertuig
        //Afstand voorzijde voertuig tot hart koppeling
        //Afwijkende maximum snelheid
        //Breedte
        i += 4;

        //Bruto BPM
        s = list.get(i++);
        c.setBpm(getInt(s));

        //Catalogusprijs
        s = list.get(i++);
        c.setNewPrice(getInt(s));

        //Cilinderinhoud
        s = list.get(i++);
        c.setVolumeOfCylinder(getInt(s));

        //Datum eerste afgifte Nederland
        s = list.get(i++);
        c.setDateRegistedOnHolland(getDate2(s));

        //Datum eerste toelating
        s = list.get(i++);
        c.setDateOfBuild(getDate2(s));

        //Datum tenaamstelling
        s = list.get(i++);
        c.setDateRegistedOnName(getDate2(s));

        //Eerste kleur
        s = list.get(i++);
        c.setFirstColor(s);

        //Europese uitvoeringcategorie toevoeging
        //Europese voertuigcategorie
        //Europese voertuigcategorie toevoeging
        //Export indicator
        i += 4;

        //Handelsbenaming
        s = list.get(i++);
        c.setType(s);

        //Inrichting
        s = list.get(i++);
        c.setArrangement(s);

        //Kenteken
        s = list.get(i++);
        c.setLicensePlate(s);

        //Laadvermogen
        s = list.get(i++);
        c.setLoadCapacity(getInt(s));

        //Lengte
        i++;

        //Massa ledig voertuig
        s = list.get(i++);
        c.setMassOfEmptyVehicle(getInt(s));

        //Massa rijklaar
        s = list.get(i++);
        c.setMassOfDriveReady(getInt(s));

        //Maximale constructiesnelheid (brom/snorfiets)
        i++;

        //Maximum massa trekken ongeremd
        s = list.get(i++);
        c.setMaximumMassOfPullingNotBrake(getInt(s));

        //Maximum trekken massa geremd
        s = list.get(i++);
        c.setMaximumMassOfPullingTrailer(getInt(s));

        //Merk
        s = list.get(i++);
        c.setBrand(s);

        //Openstaande terugroepactie indicator
        //Oplegger geremd
        i += 2;

        //Plaats chassisnummer
        s = list.get(i++);
        c.setChassisnummer(s);

        //Retrofit roetfilter
        s = list.get(i++);
        c.setDieselFilter(s);

        //Technische max. massa voertuig
        i++;

        //Toegestane maximum massa voertuig
        s = list.get(i++);
        c.setMaximumMassOfPullingAllowed(getInt(s));

        //Tweede kleur
        s = list.get(i++);
        c.setSecondColor(s);

        //Type
        //Type gasinstallatie
        //Typegoedkeuringsnummer
        i += 3;

        //Uitvoering
        s = list.get(i++);
        c.setUitvoering(s);

        //Variant
        s = list.get(i++);
        c.setVariant(s);

        //Vermogen (brom/snorfiets)
        //Vermogen massarijklaar
        i += 2;

        //Vervaldatum APK
        s = list.get(i++);
        c.setDateOfNextInspection(getDate2(s));

        //Vervaldatum tachograaf
        i++;

        //Voertuigsoort
        s = list.get(i++);
        c.setVehicleType(s);

        //Volgnummer wijziging EU typegoedkeuring
        i++;

        //Wacht op keuren
        s = list.get(i++);
        c.setWaitingForMot(s);

        //WAM verzekerd
        s = list.get(i++);
        c.setRegisteredInsurance(s);

        //Wielbasis
        i++;

        //Zuinigheidslabel
        s = list.get(i++);
        c.setEconomicalLabel(s);

        return c;
    }

    private static short getShort(String s) {
        if (StringUtils.isEmpty(s)) {
            return 0;
        }
        return Short.parseShort(s);
    }

    private static Date getDate(String s) {
        if (StringUtils.isEmpty(s)) {
            return null;
        }
        return DateUtil.string2Date(s);
    }

    private static Date getDate2(String s) {
        if (StringUtils.isEmpty(s)) {
            return null;
        }
        return DateUtil.string2Date3(s);
    }

    private static float getFloat(String s) {
        if (StringUtils.isEmpty(s)) {
            return 0;
        }
        return Float.parseFloat(s);
    }

    private static int getInt(String s) {
        if (StringUtils.isEmpty(s)) {
            return 0;
        }
        return Integer.parseInt(s);
    }

}