use crate::csv::deser::{RecordCsv, SemicolonDelimiter};
use crate::csv::stanis::deserialize_comma_f32;
use crate::deser::{RecordAnagraficaNISECI, RecordCampionamentoNISECI, RecordRiferimentoNISECI};
use std::fmt;
#[derive(Debug, serde::Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct VeryItalianRecordRiferimentoNISECI {
pub nome_comune: String,
pub nome_latino: String,
pub codice_specie: String,
pub origine: String,
pub tipo_autoctono: u32,
pub allo_nocivita: u32,
pub specie_attesa: u32,
pub cl_soglia1: u32, pub cl_soglia2: u32, pub cl_soglia3: u32, pub cl_soglia4: u32, #[serde(deserialize_with = "deserialize_comma_f32")]
pub ad_juv_soglia1: f32,
#[serde(deserialize_with = "deserialize_comma_f32")]
pub ad_juv_soglia2: f32,
#[serde(deserialize_with = "deserialize_comma_f32")]
pub ad_juv_soglia3: f32,
#[serde(deserialize_with = "deserialize_comma_f32")]
pub ad_juv_soglia4: f32,
#[serde(deserialize_with = "deserialize_comma_f32")]
pub dens_soglia1: f32,
#[serde(deserialize_with = "deserialize_comma_f32")]
pub dens_soglia2: f32,
}
impl RecordRiferimentoNISECI for VeryItalianRecordRiferimentoNISECI {
fn nome_comune(&self) -> String {
self.nome_comune.clone()
}
fn nome_latino(&self) -> String {
self.nome_latino.clone()
}
fn codice_specie(&self) -> String {
self.codice_specie.clone()
}
fn origine(&self) -> String {
self.origine.clone()
}
fn tipo_autoctono(&self) -> u32 {
self.tipo_autoctono
}
fn allo_nocivita(&self) -> u32 {
self.allo_nocivita
}
fn specie_attesa(&self) -> u32 {
self.specie_attesa
}
fn cl_soglia1(&self) -> u32 {
self.cl_soglia1
}
fn cl_soglia2(&self) -> u32 {
self.cl_soglia2
}
fn cl_soglia3(&self) -> u32 {
self.cl_soglia3
}
fn cl_soglia4(&self) -> u32 {
self.cl_soglia4
}
fn ad_juv_soglia1(&self) -> f32 {
self.ad_juv_soglia1
}
fn ad_juv_soglia2(&self) -> f32 {
self.ad_juv_soglia2
}
fn ad_juv_soglia3(&self) -> f32 {
self.ad_juv_soglia3
}
fn ad_juv_soglia4(&self) -> f32 {
self.ad_juv_soglia4
}
fn dens_soglia1(&self) -> f32 {
self.dens_soglia1
}
fn dens_soglia2(&self) -> f32 {
self.dens_soglia2
}
}
impl RecordCsv for VeryItalianRecordRiferimentoNISECI {
type D = SemicolonDelimiter;
}
impl fmt::Display for VeryItalianRecordRiferimentoNISECI {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let string_representation = format!(
"RecordRiferimentoNISECI: {{ nome_comune: [{}], nome_latino: [{}], codice_specie: [{}], origine: [{}], tipo_autoctono: [{}], allo_nocivita: [{}], specie_attesa: [{}], cl_soglia1: [{}], cl_soglia2: [{}], cl_soglia3: [{}], cl_soglia4: [{}], ad_juv_soglia1: [{}], ad_juv_soglia2: [{}], ad_juv_soglia3: [{}], ad_juv_soglia4: [{}], dens_soglia1: [{}], dens_soglia2: [{}] }}",
self.nome_comune, self.nome_latino, self.codice_specie, self.origine,
self.tipo_autoctono, self.allo_nocivita, self.specie_attesa,
self.cl_soglia1, self.cl_soglia2, self.cl_soglia3, self.cl_soglia4,
self.ad_juv_soglia1, self.ad_juv_soglia2, self.ad_juv_soglia3, self.ad_juv_soglia4,
self.dens_soglia1, self.dens_soglia2
);
write!(f, "{}", string_representation)
}
}
#[derive(Debug, serde::Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct VeryItalianRecordCampionamentoNISECI {
pub data: String,
pub stazione: String,
pub num_passaggio: u32,
pub codice_specie: String,
pub lunghezza: u32,
#[serde(deserialize_with = "deserialize_comma_f32")]
pub peso: f32,
}
impl RecordCampionamentoNISECI for VeryItalianRecordCampionamentoNISECI {
fn data(&self) -> String {
self.data.clone()
}
fn stazione(&self) -> String {
self.stazione.clone()
}
fn num_passaggio(&self) -> u32 {
self.num_passaggio
}
fn codice_specie(&self) -> String {
self.codice_specie.clone()
}
fn lunghezza(&self) -> u32 {
self.lunghezza
}
fn peso(&self) -> f32 {
self.peso
}
}
impl RecordCsv for VeryItalianRecordCampionamentoNISECI {
type D = SemicolonDelimiter;
}
impl fmt::Display for VeryItalianRecordCampionamentoNISECI {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let string_representation = format!(
"RecordCampionamentoNISECI: {{ data: [{}], stazione: [{}], num_passaggio: [{}], codice_specie: [{}], lunghezza: [{}], peso: [{}] }}",
self.data, self.stazione, self.num_passaggio,
self.codice_specie, self.lunghezza, self.peso
);
write!(f, "{}", string_representation)
}
}
#[derive(Debug, serde::Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct VeryItalianRecordAnagraficaNISECI {
pub codice_stazione: String,
pub corpo_idrico: String,
pub regione: String,
pub provincia: String,
pub data: String,
#[serde(deserialize_with = "deserialize_comma_f32")]
pub lunghezza_stazione: f32,
#[serde(deserialize_with = "deserialize_comma_f32")]
pub larghezza_stazione: f32,
pub tipo_comunita: u32,
pub fonte: String,
pub numero_protocollo: String,
pub idro_eco_regione: u32,
pub area_alpina: u32,
pub nome_bacino: String,
}
impl RecordAnagraficaNISECI for VeryItalianRecordAnagraficaNISECI {
fn codice_stazione(&self) -> String {
self.codice_stazione.clone()
}
fn corpo_idrico(&self) -> String {
self.corpo_idrico.clone()
}
fn regione(&self) -> String {
self.regione.clone()
}
fn provincia(&self) -> String {
self.provincia.clone()
}
fn data(&self) -> String {
self.data.clone()
}
fn lunghezza_stazione(&self) -> f32 {
self.lunghezza_stazione
}
fn larghezza_stazione(&self) -> f32 {
self.larghezza_stazione
}
fn tipo_comunita(&self) -> u32 {
self.tipo_comunita
}
fn fonte(&self) -> String {
self.fonte.clone()
}
fn numero_protocollo(&self) -> String {
self.numero_protocollo.clone()
}
fn idro_eco_regione(&self) -> u32 {
self.idro_eco_regione
}
fn area_alpina(&self) -> u32 {
self.area_alpina
}
fn nome_bacino(&self) -> String {
self.nome_bacino.clone()
}
}
impl RecordCsv for VeryItalianRecordAnagraficaNISECI {
type D = SemicolonDelimiter;
}
impl fmt::Display for VeryItalianRecordAnagraficaNISECI {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let string_representation = format!(
"RecordAnagraficaNISECI: {{ codice_stazione: [{}], corpo_idrico: [{}],\
regione: [{}], provincia: [{}], data: [{}], lunghezza_stazione: [{}],\
larghezza_stazione: [{}], tipo_comunita [{}], fonte [{}],\
numero_protocollo: [{}], idro_eco_regione: [{}],\
area_alpina: [{}], nome_bacino: [{}]}}",
self.codice_stazione,
self.corpo_idrico,
self.regione,
self.provincia,
self.data,
self.lunghezza_stazione,
self.larghezza_stazione,
self.tipo_comunita,
self.fonte,
self.numero_protocollo,
self.idro_eco_regione,
self.area_alpina,
self.nome_bacino
);
write!(f, "{}", string_representation)
}
}