001package jmri.jmrit.logixng.actions.configurexml;
002
003import jmri.InstanceManager;
004import jmri.configurexml.JmriConfigureXmlException;
005import jmri.jmrit.logixng.DigitalActionManager;
006import jmri.jmrit.logixng.actions.Error;
007import jmri.jmrit.logixng.util.configurexml.LogixNG_SelectStringXml;
008
009import org.jdom2.Element;
010
011/**
012 * Handle XML configuration for ActionLightXml objects.
013 *
014 * @author Bob Jacobsen Copyright: Copyright (c) 2004, 2008, 2010
015 * @author Daniel Bergqvist Copyright (C) 2022
016 */
017public class ErrorXml extends jmri.managers.configurexml.AbstractNamedBeanManagerConfigXML {
018
019    public ErrorXml() {
020    }
021
022    /**
023     * Default implementation for storing the contents of an Error
024     *
025     * @param o Object to store, of type Error
026     * @return Element containing the complete info
027     */
028    @Override
029    public Element store(Object o) {
030        Error p = (Error) o;
031
032        Element element = new Element("Error");
033        element.setAttribute("class", this.getClass().getName());
034        element.addContent(new Element("systemName").addContent(p.getSystemName()));
035
036        storeCommon(p, element);
037
038        var selectMessageXml = new LogixNG_SelectStringXml();
039        element.addContent(selectMessageXml.store(p.getSelectMessage(), "error-message"));
040
041        return element;
042    }
043
044    @Override
045    public boolean load(Element shared, Element perNode) throws JmriConfigureXmlException {
046        String sys = getSystemName(shared);
047        String uname = getUserName(shared);
048        Error h = new Error(sys, uname);
049
050        loadCommon(h, shared);
051
052        var selectMessageXml = new LogixNG_SelectStringXml();
053        selectMessageXml.load(shared.getChild("error-message"), h.getSelectMessage());
054
055        Element elem = shared.getChild("message");  // NOI18N
056        if (elem != null) {
057            h.getSelectMessage().setValue(elem.getValue());
058        }
059
060        InstanceManager.getDefault(DigitalActionManager.class).registerAction(h);
061        return true;
062    }
063
064//    private final static org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(ErrorXml.class);
065}