package com.progetto.VEBS.mapper;

import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.io.ParseException;
import org.locationtech.jts.io.WKTReader;

import com.progetto.VEBS.model.dto.PoligonoPopolazioneDTO;
import com.progetto.VEBS.model.entity.PoligonoPopolazione;

public interface PoligonoSezioneCensuaria {
	default PoligonoPopolazioneDTO toDTO(PoligonoPopolazione entity) {
		if ( entity == null ) {
            return null;
        }
		PoligonoPopolazioneDTO poligonoPopolazioneDTO = new PoligonoPopolazioneDTO();
		poligonoPopolazioneDTO.setId(entity.getId());
		poligonoPopolazioneDTO.setData_valutazione(entity.getData_valutazione());
		poligonoPopolazioneDTO.setDensita_per_fascia(entity.getDensita_per_fascia());
		poligonoPopolazioneDTO.setGeometria(entity.getGeometria().toText());
		poligonoPopolazioneDTO.setN_popolazione(entity.getN_popolazione());
		poligonoPopolazioneDTO.setCentroide_x(entity.getCentroide_x());
		poligonoPopolazioneDTO.setCentroide_y(entity.getCentroide_y());
		poligonoPopolazioneDTO.setArea_verde(entity.getArea_verde());
		poligonoPopolazioneDTO.setArea_blu(entity.getArea_blu());
		poligonoPopolazioneDTO.setIncidenza_arborea(entity.getIncidenza_arborea());
        return poligonoPopolazioneDTO;
	}

	
	default PoligonoPopolazione toEntity(PoligonoPopolazioneDTO dto) {
		if ( dto == null ) {
            return null;
        }
		
		PoligonoPopolazione poligonoPopolazione = new PoligonoPopolazione();
		
		WKTReader reader = new WKTReader();
		Geometry geom;
		try {
			geom = reader.read(dto.getGeometria());
			poligonoPopolazione.setGeometria(geom);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		poligonoPopolazione.setId(dto.getId());
		poligonoPopolazione.setData_valutazione(dto.getData_valutazione());
		poligonoPopolazione.setDensita_per_fascia(dto.getDensita_per_fascia());
		poligonoPopolazione.setN_popolazione(dto.getN_popolazione());
		poligonoPopolazione.setCentroide_x(dto.getCentroide_x());
		poligonoPopolazione.setCentroide_y(dto.getCentroide_y());
		poligonoPopolazione.setArea_verde(dto.getArea_verde());
		poligonoPopolazione.setArea_blu(dto.getArea_blu());
		poligonoPopolazione.setIncidenza_arborea(dto.getIncidenza_arborea());
        return poligonoPopolazione;
	}
}
