package tmrechnungstool.dto;

import java.util.List;
import tmrechnungstool.tmUtils.TmLog;
import java.util.Collections;
import java.util.Comparator;
import tmrechnungstool.Controller;
import tmrechnungstool.dto.h2.H2_;

/**
 *
 * @author romanov
 */
public class ListeMitLagerbewegung {

    public static final String dateiName = "DATA700";
    private List<XxxDto> liste;
    private Controller controller;

    public ListeMitLagerbewegung(Controller controller) {
        this.controller = controller;
        
        TmLog.log(dateiName + " Loading...");
        liste = H2_Vertraege.load();
        sort();

    }

    public void insertInDb(XxxDto o) {
        liste.add(o);
        H2_Vertraege.insertInDb(o);
        sort();
    }

    public void updateInDb(XxxDto o) {
        H2_Vertraege.updateInDb(o);
        sort(); 
    }
    public void updateInDb(XxxDto o, boolean ohneSort) {
        H2_Vertraege.updateInDb(o);
        if (ohneSort) {
            return;
        }
        sort();
    }
    public void deleteInDb(XxxDto o) {
        liste.remove(o);
        H2_Vertraege.deleteInDb(o);
    }

    public XxxDto getObjByName(String pName) {
        /*
        for (XxxDto iter : liste) {
            if (iter.getVertragsart() != null && iter.getVertragsart().equals(pName)) {
                return iter;
            }
        }*/
        return null;
    }


    public List<XxxDto> getListe() {
        return liste;
    }

    public void setListe(List<XxxDto> liste) {
        this.liste = liste;
    }


    public void sort() {

        Collections.sort(liste, new Comparator<XxxDto>() {

            @Override
            public int compare(XxxDto o1, XxxDto o2) {
                int res = 0;
                int col = 0;// controller.getEinstellungen().getSortierung6();
                boolean abs = false;//controller.getEinstellungen().isSortierung6r();
                if (col == 0) {
                    //ID
                    res = controller.compareStringsMitNummern(o1.getId(), o2.getId());
                }/* else if (col == 1) {
                    //Vertragsnummer
                    res = controller.compareStringsMitNummern(o1.getNummer(), o2.getNummer());
                } else if (col == 2) {
                    //Vertragsart
                    res = controller.compareStrings(o1.getVertragsart(), o2.getVertragsart());
                } else if (col == 3) {
                    //Beginn
                    res = controller.compareDatumsDbFormat(o1.getDtBeginn(), o2.getDtBeginn());
                } else if (col == 4) {
                    //Ende
                    res = controller.compareDatumsDbFormat(o1.getDtKuendZum(), o2.getDtKuendZum());
                } else if (col == 5) {
                    //Letztes Abrechnungsdatum
                    res = controller.compareDatumsDbFormat(o1.getDtLast(), o2.getDtLast());
                } else if (col == 6) {
                    //Nächstes Abrechnungsdatum
                    res = controller.compareDatumsDbFormat(o1.getDtNext(), o2.getDtNext());
                } else if (col == 7) {
                    //Netto
                    res = controller.compareBetrags(
                            TmBetrag.parseDbToTmbetrag_OhneException(o1.getBetragNetto()), TmBetrag.parseDbToTmbetrag_OhneException(o2.getBetragNetto()));
                } else if (col == 8) {
                    //Brutto
                    res = controller.compareBetrags(
                            TmBetrag.parseDbToTmbetrag_OhneException(o1.getBetragBrutto()), TmBetrag.parseDbToTmbetrag_OhneException(o2.getBetragBrutto()));
                } else if (col == 9) {
                    //Kundennummer
                    res = controller.compareStrings(o1.getKundenNr(), o2.getKundenNr());
                } else if (col == 10) {
                    //Kundenname
                    res = controller.compareStrings(o1.getKundenEmp1(), o2.getKundenEmp1());
                } else if (col == 11) {
                    //PLZ
                    res = controller.compareStringsMitNummern(o1.getKundenPlz(), o2.getKundenPlz());
                }*/

                if (!abs) {
                    res = res * -1;
                }
                return res;
            }
        });
    }
}
