com.github.mmauro94.siopeDownloader.datastruct.anagrafiche.Provincia Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of siopeDownloader Show documentation
Show all versions of siopeDownloader Show documentation
Una libreria per scaricare i dati di siope.it
The newest version!
package com.github.mmauro94.siopeDownloader.datastruct.anagrafiche;
import com.github.mmauro94.siopeDownloader.datastruct.AutoMap;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import org.apache.commons.csv.CSVRecord;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@EqualsAndHashCode(of = {"codice"})
public final class Provincia implements GeoItem {
public static final class Map extends AutoMap {
@NotNull
@Override
protected Integer getKey(@NotNull Provincia value) {
return value.getCodice();
}
}
@Getter
private final int codice;
@Getter
@NotNull
private final String nome;
@Getter
@NotNull
private final Regione regione;
private final ArrayList<@NotNull Comune> comuni = new ArrayList<>();
public Provincia(int codice, @NotNull String nome, @NotNull Regione regione) {
this.codice = codice;
this.nome = nome;
this.regione = regione;
regione.addProvincia(this);
}
void addComune(@NotNull Comune comune) {
comuni.add(comune);
}
@NotNull
public static Provincia parse(@NotNull CSVRecord record, @NotNull Regione.Map regioni) {
if (record.size() != 5) {
throw new IllegalArgumentException("Record size != 5");
} else {
final int regione;
try {
regione = Integer.parseInt(record.get(1));
} catch (NumberFormatException nfe) {
throw new IllegalStateException("Invalid regione: " + record.get(1), nfe);
}
final int codice;
try {
codice = Integer.parseInt(record.get(3));
} catch (NumberFormatException nfe) {
throw new IllegalStateException("Invalid codice: " + record.get(3), nfe);
}
final String nome = record.get(4);
if (codice <= 0) {
throw new IllegalArgumentException("Invalid codice: " + codice);
} else if (nome == null || nome.trim().isEmpty()) {
throw new IllegalArgumentException("Invalid nome: " + nome);
}
return new Provincia(codice, nome.trim(), regioni.get(regione));
}
}
@NotNull
public static Provincia.Map parseAll(@NotNull List records, @NotNull Regione.Map regioni) {
return AutoMap.parse(records, x -> parse(x, regioni), Provincia.Map::new);
}
@Override
@NotNull
public Regione getParent() {
return regione;
}
@Override
@NotNull
public Collection<@NotNull Comune> getChildren() {
return getComuni();
}
@NotNull
public List<@NotNull Comune> getComuni() {
return Collections.unmodifiableList(comuni);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy