com.evasion.plugin.geoloc.dataimport.geoname.GeonameParser Maven / Gradle / Ivy
/*
* To change this template, choose Tools | Templates and open the template in
* the editor.
*/
package com.evasion.plugin.geoloc.dataimport.geoname;
import com.evasion.EntityJPA;
import com.evasion.entity.geolocation.*;
import com.evasion.plugin.geoloc.dataimport.AbstractFileParser;
import com.evasion.plugin.geoloc.dataimport.DesignationCode;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
/**
*
* @author glon-56610
*/
public class GeonameParser extends AbstractFileParser {
public static final String FORMAT = "geoname";
public GeonameParser(File file) {
super(file);
}
@Override
protected EntityJPA traiterLigne(String[] ligne) {
EntityJPA result = null;
if (DesignationCode.ADM1.equals(ligne[GeonameFormat.FEATURE_CODE])) {
result = createRegionAdm(ligne);
} else if (DesignationCode.PPL.equals(ligne[GeonameFormat.FEATURE_CODE]) || DesignationCode.PPLA.equals(ligne[GeonameFormat.FEATURE_CODE])) {
result = createCity(ligne);
}
return result;
}
private AdminDivision createRegionAdm(String[] ligne) {
AdminDivision region = new AdminDivision(ligne[GeonameFormat.ADM1], createPartialCountry(ligne), createLocation(ligne));
region.setName(ligne[GeonameFormat.NAME]);
region.setGeoname(new Geoname(Integer.parseInt(ligne[GeonameFormat.GEONAME_ID]), formatStringToDate(ligne[GeonameFormat.MODIFICATION_DATE])));
return region;
}
private Country createPartialCountry(String[] ligne) {
return new Country(null, ligne[GeonameFormat.COUNTRY_CODE], null);
}
private Location createLocation(String[] ligne) {
Location location = new Location(ligne[GeonameFormat.NAME], Double.parseDouble(ligne[GeonameFormat.LATITUDE]), Double.parseDouble(ligne[GeonameFormat.LONGITUDE]));
if (!ligne[GeonameFormat.ALTITUDE].isEmpty()) {
location.setAltitude(Integer.parseInt(ligne[GeonameFormat.ALTITUDE]));
}
return location;
}
private City createCity(String[] ligne) {
City city = new City(createPartialCountry(ligne), createLocation(ligne));
city.setGeoname(new Geoname(Integer.parseInt(ligne[GeonameFormat.GEONAME_ID]), formatStringToDate(ligne[GeonameFormat.MODIFICATION_DATE])));
return city;
}
@Override
public int getNbrColomnRef() {
return GeonameFormat.SIZE_COLUMN_FILE;
}
@Override
public String separateurColumn() {
return "\t";
}
}