001package jmri.jmrit.logixng.actions.configurexml; 002 003import jmri.InstanceManager; 004import jmri.configurexml.JmriConfigureXmlException; 005import jmri.jmrit.logixng.DigitalActionManager; 006import jmri.jmrit.logixng.NamedTable; 007import jmri.jmrit.logixng.TableRowOrColumn; 008import jmri.jmrit.logixng.actions.ActionListenOnBeansTable; 009import jmri.jmrit.logixng.actions.NamedBeanType; 010import jmri.jmrit.logixng.util.configurexml.LogixNG_SelectNamedBeanXml; 011 012import org.jdom2.Attribute; 013import org.jdom2.Element; 014 015/** 016 * Handle XML configuration for ActionListenOnBeansTable objects. 017 * 018 * @author Bob Jacobsen Copyright: Copyright (c) 2004, 2008, 2010 019 * @author Daniel Bergqvist Copyright (C) 2019 020 */ 021public class ActionListenOnBeansTableXml extends jmri.managers.configurexml.AbstractNamedBeanManagerConfigXML { 022 023 public ActionListenOnBeansTableXml() { 024 } 025 026 /** 027 * Default implementation for storing the contents of a SE8cSignalHead 028 * 029 * @param o Object to store, of type TripleTurnoutSignalHead 030 * @return Element containing the complete info 031 */ 032 @Override 033 public Element store(Object o) { 034 ActionListenOnBeansTable p = (ActionListenOnBeansTable) o; 035 036 Element element = new Element("ActionListenOnBeansTable"); 037 element.setAttribute("class", this.getClass().getName()); 038 element.addContent(new Element("systemName").addContent(p.getSystemName())); 039 040 storeCommon(p, element); 041 042 var selectNamedBeanXml = new LogixNG_SelectNamedBeanXml<NamedTable>(); 043 element.addContent(selectNamedBeanXml.store(p.getSelectNamedBean(), "namedBean")); 044 045 element.addContent(new Element("rowOrColumnName").addContent(p.getRowOrColumnName())); 046 element.addContent(new Element("tableRowOrColumn").addContent(p.getTableRowOrColumn().name())); 047 048 element.setAttribute("includeCellsWithoutHeader", 049 p.getIncludeCellsWithoutHeader() ? "yes" : "no"); // NOI18N 050 051 element.addContent(new Element("namedBeanType").addContent(p.getNamedBeanType().name())); 052 053 element.addContent(new Element("localVariableNamedBean").addContent(p.getLocalVariableNamedBean())); 054 element.addContent(new Element("localVariableEvent").addContent(p.getLocalVariableEvent())); 055 element.addContent(new Element("localVariableNewValue").addContent(p.getLocalVariableNewValue())); 056 057 element.setAttribute("listenOnAllProperties", 058 p.getListenOnAllProperties()? "yes" : "no"); // NOI18N 059 060 return element; 061 } 062 063 @Override 064 public boolean load(Element shared, Element perNode) throws JmriConfigureXmlException { 065 066 String sys = getSystemName(shared); 067 String uname = getUserName(shared); 068 ActionListenOnBeansTable h = new ActionListenOnBeansTable(sys, uname); 069 070 loadCommon(h, shared); 071 072 var selectNamedBeanXml = new LogixNG_SelectNamedBeanXml<NamedTable>(); 073 selectNamedBeanXml.load(shared.getChild("namedBean"), h.getSelectNamedBean()); 074 selectNamedBeanXml.loadLegacy(shared, h.getSelectNamedBean(), "table", null, null, null, null); 075 076 Element tableRowOrColumnElement = shared.getChild("tableRowOrColumn"); 077 TableRowOrColumn tableRowOrColumn = 078 TableRowOrColumn.valueOf(tableRowOrColumnElement.getTextTrim()); 079 h.setTableRowOrColumn(tableRowOrColumn); 080 081 Element rowOrColumnName = shared.getChild("rowOrColumnName"); 082 if (rowOrColumnName != null) { 083 h.setRowOrColumnName(rowOrColumnName.getTextTrim()); 084 } 085 086 String includeCellsWithoutHeader = "no"; 087 Attribute attribute = shared.getAttribute("includeCellsWithoutHeader"); 088 if (attribute != null) { // NOI18N 089 includeCellsWithoutHeader = attribute.getValue(); // NOI18N 090 } 091 h.setIncludeCellsWithoutHeader("yes".equals(includeCellsWithoutHeader)); 092 093 Element namedBeanTypeElement = shared.getChild("namedBeanType"); 094 NamedBeanType namedBeanType = 095 NamedBeanType.valueOf(namedBeanTypeElement.getTextTrim()); 096 h.setNamedBeanType(namedBeanType); 097 098 Element variableName = shared.getChild("localVariableNamedBean"); 099 if (variableName != null) { 100 h.setLocalVariableNamedBean(variableName.getTextTrim()); 101 } 102 103 variableName = shared.getChild("localVariableEvent"); 104 if (variableName != null) { 105 h.setLocalVariableEvent(variableName.getTextTrim()); 106 } 107 108 variableName = shared.getChild("localVariableNewValue"); 109 if (variableName != null) { 110 h.setLocalVariableNewValue(variableName.getTextTrim()); 111 } 112 113 String listenOnAllProperties = "no"; 114 attribute = shared.getAttribute("listenOnAllProperties"); 115 if (attribute != null) { // NOI18N 116 listenOnAllProperties = attribute.getValue(); // NOI18N 117 } 118 h.setListenOnAllProperties("yes".equals(listenOnAllProperties)); 119 120 InstanceManager.getDefault(DigitalActionManager.class).registerAction(h); 121 return true; 122 } 123 124// private final static org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(ActionListenOnBeansTableXml.class); 125}