package com.progetto.VEBS.mapper;

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

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

@Mapper(componentModel = "spring")
public interface PoligonoSezioneCensuaria {
	default PoligonoSezioneCensuariaDTO toDTO(PoligonoSezioneCensuaria entity) {
		if ( entity == null ) {
            return null;
        }
		PoligonoSezioneCensuariaDTO poligonoSezioneCensuariaDTO = new PoligonoSezioneCensuariaDTO();
		poligonoSezioneCensuariaDTO.setId(entity.getId());
		poligonoSezioneCensuariaDTO.setCodice_regione(entity.getCodice_regione());
		poligonoSezioneCensuariaDTO.setCodice_procom(entity.getCodice_procom());
		poligonoSezioneCensuariaDTO.setGeometria(entity.getGeometria().toText());
		poligonoSezioneCensuariaDTO.setCodice_sez(entity.getCodice_sez());
		poligonoSezioneCensuariaDTO.setCodice_tipo_s(entity.getCodice_tipo_s());
		poligonoSezioneCensuariaDTO.setTipo_localita(entity.getTipo_localita());
		poligonoSezioneCensuariaDTO.setPopolazione(entity.getPopolazione());
		poligonoSezioneCensuariaDTO.setFamiglie(entity.getFamiglie());
		poligonoSezioneCensuariaDTO.setAbitanti(entity.getAbitanti());
		poligonoSezioneCensuariaDTO.setEdifici(entity.getEdifici());
		poligonoSezioneCensuariaDTO.setPerimetro(entity.getPerimetro());
		poligonoSezioneCensuariaDTO.setArea(entity.getArea());
        return poligonoSezioneCensuariaDTO;
	}

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