001package jmri.jmrit.logixng.tools.debugger.configurexml;
002
003import java.util.List;
004
005import jmri.jmrit.logixng.*;
006import jmri.jmrit.logixng.SymbolTable.InitialValueType;
007import jmri.jmrit.logixng.configurexml.MaleSocketXml;
008
009import org.jdom2.Element;
010
011// import jmri.jmrit.logixng.implementation.AbstractMaleSocket;
012
013/**
014 * Handle XML configuration for AbstractDebuggerMaleSocket objects.
015 *
016 * @author Bob Jacobsen Copyright: Copyright (c) 2004, 2008, 2010
017 * @author Daniel Bergqvist Copyright (C) 2019
018 */
019public class AbstractDebuggerMaleSocketXml
020        extends jmri.managers.configurexml.AbstractNamedBeanManagerConfigXML
021        implements MaleSocketXml {
022
023    public AbstractDebuggerMaleSocketXml() {
024    }
025    
026    /**
027     * Default implementation for storing the contents of a ActionMany
028     *
029     * @param o Object to store, of type ActionMany
030     * @return Element containing the complete info
031     */
032    @Override
033    public Element store(Object o) {
034//        AbstractMaleSocket maleSocket = (AbstractMaleSocket) o;
035        
036        Element element = new Element("AbstractDebuggerMaleSocket");
037        element.setAttribute("class", this.getClass().getName());
038/*        
039        element.addContent(new Element("errorHandling").addContent(maleSocket.getErrorHandlingType().name()));
040        for (SymbolTable.VariableData data : maleSocket.getLocalVariables()) {
041            Element elementVariable = new Element("localVariable");
042            elementVariable.addContent(new Element("name").addContent(data._name));
043            elementVariable.addContent(new Element("type").addContent(data._initalValueType.name()));
044            elementVariable.addContent(new Element("data").addContent(data._initialValueData));
045            element.addContent(elementVariable);
046        }
047*/        
048        return element;
049    }
050    
051    @Override
052    public boolean load(Element shared, Element perNode) {
053        return false;
054    }
055    
056    @Override
057    public boolean load(Element maleSocketElement, MaleSocket maleSocket) {
058/*        
059        Element errorHandlingElement = maleSocketElement.getChild("errorHandling");
060        if (errorHandlingElement != null) {
061            maleSocket.setErrorHandlingType(MaleSocket.ErrorHandlingType
062                    .valueOf(errorHandlingElement.getTextTrim()));
063        }
064        
065        List<Element> localVariableList = maleSocketElement.getChildren("localVariable");  // NOI18N
066        log.debug("Found " + localVariableList.size() + " male sockets");  // NOI18N
067        
068        for (Element e : localVariableList) {
069            Element elementName = e.getChild("name");
070            
071            InitialValueType type = null;
072            Element elementType = e.getChild("type");
073            if (elementType != null) {
074                type = InitialValueType.valueOf(elementType.getTextTrim());
075            }
076            
077            Element elementData = e.getChild("data");
078            
079            if (elementName == null) throw new IllegalArgumentException("Element 'name' does not exists");
080            if (type == null) throw new IllegalArgumentException("Element 'type' does not exists");
081            if (elementData == null) throw new IllegalArgumentException("Element 'data' does not exists");
082            
083            maleSocket.addLocalVariable(elementName.getTextTrim(), type, elementData.getTextTrim());
084        }
085*/        
086        return true;
087    }
088    
089//    private final static org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(AbstractDebuggerMaleSocketXml.class);
090}