package org.texttechnologylab.project.gruppe_05_1.xml.mdb;

import org.texttechnologylab.project.gruppe_05_1.domain.mdb.BiografischeAngaben;
import org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils;
import org.texttechnologylab.project.gruppe_05_1.util.Logger;
import org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations;
import org.w3c.dom.Node;

public class BiografischeAngaben_File_Impl extends BiografischeAngaben implements XmlOperations {
    @Override
    public BiografischeAngaben fromXmlNode(Node node) {
        Node current = node.getFirstChild();
        Node child;
        BiografischeAngaben bio = new BiografischeAngaben_File_Impl();
        while (null != current) {
            child = current.getFirstChild();
            switch (current.getNodeName()) {
                case "GEBURTSDATUM":
                    bio.setGeburtsdatum(null == child ? null : GeneralUtils.parseDate(child.getNodeValue()));
                    break;

                case "GEBURTSORT":
                    bio.setGeburtsort(null == child ? null : child.getNodeValue());
                    break;

                case "GEBURTSLAND":
                    bio.setGeburtsland(null == child ? null : child.getNodeValue());
                    break;

                case "STERBEDATUM":
                    bio.setSterbedatum(null == child ? null : GeneralUtils.parseDate(child.getNodeValue()));
                    break;

                case "GESCHLECHT":
                    bio.setGender(null == child ? null : child.getNodeValue());
                    break;

                case "FAMILIENSTAND":
                    bio.setFamilienstand(null == child ? null : child.getNodeValue());
                    break;

                case "RELIGION":
                    bio.setReligion(null == child ? null : child.getNodeValue());
                    break;

                case "BERUF":
                    bio.setBeruf(null == child ? null : child.getNodeValue());
                    break;

                case "PARTEI_KURZ":
                    bio.setParteiKuerzel(null == child ? null : child.getNodeValue());
                    break;

                case "VITA_KURZ":
                    bio.setVitaKurz(null == child ? null : child.getNodeValue());
                    break;

                case "VEROEFFENTLICHUNGSPFLICHTIGES":
                    bio.setVeroeffentlichungspflichtiges(null == child ? null : child.getNodeValue());
                    break;

                case "#text":
                    break;

                default:
                    Logger.error("Node name does not match anything known in BiografischeAngaben: " + current.getNodeName());
            }

            current = current.getNextSibling();
        }

        return bio;
    }
}
