Java tutorial
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); } }