// Path: src/main/java/org/openstreetmap/osmaxil/model/VegetationImport.java
// public class VegetationImport extends AbstractImport {
// 
// 	private String genus;
// 
// 	private String species;
// 
// 	private String reference;
// 
// 	private Integer height;
// 	
// 	private Float circumference;
// 	
// 	private Integer plantingYear;
// 
// 	@Override
// 	public String getValueByTagName(String tagName) {
// 		if (ElementTag.GENUS.equals(tagName)) {
// 			return this.genus.toString();
// 		} else if (ElementTag.SPECIES.equals(tagName)) {
// 			return this.species.toString();
// 		}
// 		return null;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "VegetationImport with id=[" + this.id + "], coords=[" + this.latitude + ", " + this.longitude + "], genus=[" + this.genus + "], species=["
// 				+ this.species + "], height=[" + this.height + "], circumference=[" + this.circumference + "] ref=[" + this.reference + "]";
// 	}
// 
// 	public String getReference() {
// 		return reference;
// 	}
// 
// 	public void setReference(String reference) {
// 		this.reference = reference;
// 	}
// 
// 	public String getGenus() {
// 		return genus;
// 	}
// 
// 	public void setGenus(String genus) {
// 		this.genus = genus;
// 	}
// 
// 	public String getSpecies() {
// 		return species;
// 	}
// 
// 	public void setSpecies(String subType) {
// 		this.species = subType;
// 	}
// 
// 	public Integer getHeight() {
// 		return height;
// 	}
// 
// 	public void setHeight(Integer height) {
// 		this.height = height;
// 	}
// 	
// 	public Float getCircumference() {
// 		return circumference;
// 	}
// 
// 	public void setCircumference(Float circumference) {
// 		this.circumference = circumference;
// 	}
// 
// 	public Integer getPlantingYear() {
// 		return plantingYear;
// 	}
// 
// 	public void setPlantingYear(Integer plantingYear) {
// 		this.plantingYear = plantingYear;
// 	}
// }
// 
// Path: src/main/java/org/openstreetmap/osmaxil/util/StringParsingHelper.java
// public class StringParsingHelper {
// 
// 	static protected final Logger LOGGER = Logger.getLogger(Application.class);
// 
// 	// Stupid but useful methods for catching and logging exception individually
// 
// 	static public double parseDouble(String s, String name) {
// 		double result = 0;
// 		try {
// 			result = Double.parseDouble(s);
// 		} catch (Exception e) {
// 			LOGGER.warn("Unable to parse " + name + ": " + e.getMessage());
// 		}
// 		return result;
// 	}
// 
// 	static public int parseInt(String s, String name) {
// 		int result = 0;
// 		try {
// 			result = Integer.parseInt(s);
// 		} catch (Exception e) {
// 			LOGGER.warn("Unable to parse " + name + ": " + e.getMessage());
// 		}
// 		return result;
// 	}
// 
// 	static public float parseFloat(String s, String name) {
// 		float result = 0;
// 		try {
// 			result = Float.parseFloat(s);
// 		} catch (Exception e) {
// 			LOGGER.warn("Unable to parse " + name + ": " + e.getMessage());
// 		}
// 		return result;
// 	}
// }


import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.annotation.PostConstruct;
import org.openstreetmap.osmaxil.model.VegetationImport;
import org.openstreetmap.osmaxil.util.StringParsingHelper;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Repository;
import au.com.bytecode.opencsv.CSVReader;

		this.hasNext = true;
	}

	@Override
	public boolean hasNext() {
		// return this.reader.iterator().hasNext() // doesn't work ?
		return this.hasNext;
	}

	@Override
	public VegetationImport next() {
		String[] row = null;
		try {
			row = this.reader.readNext();
		} catch (IOException e) {
			LOGGER.info("An error has occured while reading CSV: " + e.getMessage());
		}
		if (row == null || row[0] == null) {
			this.hasNext = false;
			return null;
		}
		this.rowCount++;
		VegetationImport tree = new VegetationImport();
		tree.setId(this.rowCount);
		// tree.setGenus(row[1]);
		// tree.setSpecies(row[2]);
		tree.setReference(row[0]);
		String geom = row[3].substring(row[3].indexOf(GEOM_TOKEN) + GEOM_TOKEN.length());
		geom = geom.substring(0, geom.length() - 2);
		String[] coords = geom.split(", ");

// Path: src/main/java/org/openstreetmap/osmaxil/model/VegetationImport.java
// public class VegetationImport extends AbstractImport {
// 
// 	private String genus;
// 
// 	private String species;
// 
// 	private String reference;
// 
// 	private Integer height;
// 	
// 	private Float circumference;
// 	
// 	private Integer plantingYear;
// 
// 	@Override
// 	public String getValueByTagName(String tagName) {
// 		if (ElementTag.GENUS.equals(tagName)) {
// 			return this.genus.toString();
// 		} else if (ElementTag.SPECIES.equals(tagName)) {
// 			return this.species.toString();
// 		}
// 		return null;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "VegetationImport with id=[" + this.id + "], coords=[" + this.latitude + ", " + this.longitude + "], genus=[" + this.genus + "], species=["
// 				+ this.species + "], height=[" + this.height + "], circumference=[" + this.circumference + "] ref=[" + this.reference + "]";
// 	}
// 
// 	public String getReference() {
// 		return reference;
// 	}
// 
// 	public void setReference(String reference) {
// 		this.reference = reference;
// 	}
// 
// 	public String getGenus() {
// 		return genus;
// 	}
// 
// 	public void setGenus(String genus) {
// 		this.genus = genus;
// 	}
// 
// 	public String getSpecies() {
// 		return species;
// 	}
// 
// 	public void setSpecies(String subType) {
// 		this.species = subType;
// 	}
// 
// 	public Integer getHeight() {
// 		return height;
// 	}
// 
// 	public void setHeight(Integer height) {
// 		this.height = height;
// 	}
// 	
// 	public Float getCircumference() {
// 		return circumference;
// 	}
// 
// 	public void setCircumference(Float circumference) {
// 		this.circumference = circumference;
// 	}
// 
// 	public Integer getPlantingYear() {
// 		return plantingYear;
// 	}
// 
// 	public void setPlantingYear(Integer plantingYear) {
// 		this.plantingYear = plantingYear;
// 	}
// }
// 
// Path: src/main/java/org/openstreetmap/osmaxil/util/StringParsingHelper.java
// public class StringParsingHelper {
// 
// 	static protected final Logger LOGGER = Logger.getLogger(Application.class);
// 
// 	// Stupid but useful methods for catching and logging exception individually
// 
// 	static public double parseDouble(String s, String name) {
// 		double result = 0;
// 		try {
// 			result = Double.parseDouble(s);
// 		} catch (Exception e) {
// 			LOGGER.warn("Unable to parse " + name + ": " + e.getMessage());
// 		}
// 		return result;
// 	}
// 
// 	static public int parseInt(String s, String name) {
// 		int result = 0;
// 		try {
// 			result = Integer.parseInt(s);
// 		} catch (Exception e) {
// 			LOGGER.warn("Unable to parse " + name + ": " + e.getMessage());
// 		}
// 		return result;
// 	}
// 
// 	static public float parseFloat(String s, String name) {
// 		float result = 0;
// 		try {
// 			result = Float.parseFloat(s);
// 		} catch (Exception e) {
// 			LOGGER.warn("Unable to parse " + name + ": " + e.getMessage());
// 		}
// 		return result;
// 	}
// }


// Path: src/main/java/org/openstreetmap/osmaxil/plugin/parser/NiceVegetationImportParser2015.java
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.annotation.PostConstruct;
import org.openstreetmap.osmaxil.model.VegetationImport;
import org.openstreetmap.osmaxil.util.StringParsingHelper;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Repository;
import au.com.bytecode.opencsv.CSVReader;

		this.hasNext = true;
	}

	@Override
	public boolean hasNext() {
		// return this.reader.iterator().hasNext() // doesn't work ?
		return this.hasNext;
	}

	@Override
	public VegetationImport next() {
		String[] row = null;
		try {
			row = this.reader.readNext();
		} catch (IOException e) {
			LOGGER.info("An error has occured while reading CSV: " + e.getMessage());
		}
		if (row == null || row[0] == null) {
			this.hasNext = false;
			return null;
		}
		this.rowCount++;
		VegetationImport tree = new VegetationImport();
		tree.setId(this.rowCount);
		// tree.setGenus(row[1]);
		// tree.setSpecies(row[2]);
		tree.setReference(row[0]);
		String geom = row[3].substring(row[3].indexOf(GEOM_TOKEN) + GEOM_TOKEN.length());
		geom = geom.substring(0, geom.length() - 2);
		String[] coords = geom.split(", ");

		tree.setLongitude(StringParsingHelper.parseDouble(coords[0], "lon"));
