package no.valg.valgnatt.database.forberedvalg.konvertering;

import java.util.ArrayList;
import java.util.List;

public class Endringer {
    private List<Endring> endringsliste = new ArrayList<>();

    public void leggTil(int endringsår, String ny, String gammel) {
        endringsliste.add(new Endring(endringsår, ny, gammel));
    }

    public List<String> finnGamle(int valgår, String ny) {
        List<String> gamle = new ArrayList<>();
        return finnGamle(valgår, ny, gamle);
    }

    private List<String> finnGamle(int valgår, String ny, List<String> gamle) {
        for (Endring e : endringsliste) {
            if (e.getEndringsår() <= valgår && e.getNy().equals(ny)) {
                String gammel = e.getGammel();
                if (finnGamle(valgår, gammel, gamle).size() == gamle.size()) {
                    gamle.add(gammel);
                }
            }
        }
        return gamle;
    }


    public List<String> finnNye(int valgår, String gammel) {
        List<String> nye = new ArrayList<>();
        return finnNye(valgår, gammel, nye);
    }

    private List<String> finnNye(int valgår, String gammel, List<String> nye) {
        for (Endring e : endringsliste) {
            if (e.getEndringsår() <= valgår && e.getGammel().equals(gammel)) {
                String ny = e.getNy();
                if (finnNye(valgår, ny, nye).size() == nye.size()) {
                    nye.add(ny);
                }
            }
        }
        return nye;
    }


}
