001package jmri.util.startup.configurexml; 002 003import jmri.util.startup.PerformScriptModel; 004 005import jmri.util.startup.StartupActionsManager; 006import jmri.InstanceManager; 007import jmri.util.FileUtil; 008 009import org.jdom2.Element; 010import org.slf4j.Logger; 011import org.slf4j.LoggerFactory; 012 013/** 014 * Handle XML persistence of PerformScriptModel objects 015 * 016 * @author Bob Jacobsen Copyright: Copyright (c) 2003 017 * @author Ken Cameron Copyright: Copyright (c) 2014 018 * @see jmri.util.startup.PerformScriptModelFactory 019 */ 020public class PerformScriptModelXml extends jmri.configurexml.AbstractXmlAdapter { 021 022 public PerformScriptModelXml() { 023 } 024 025 /** 026 * Default implementation for storing the model contents 027 * 028 * @param o Object to store, of type PerformActonModel 029 * @return Element containing the complete info 030 */ 031 @Override 032 public Element store(Object o) { 033 Element e = new Element("perform"); 034 PerformScriptModel g = (PerformScriptModel) o; 035 036 e.setAttribute("name", FileUtil.getPortableFilename(g.getFileName())); 037 e.setAttribute("type", "ScriptFile"); 038 e.setAttribute("class", this.getClass().getName()); 039 return e; 040 } 041 042 /** 043 * Object should be loaded after basic GUI constructed 044 * 045 * @return true to defer loading 046 * @see jmri.configurexml.AbstractXmlAdapter#loadDeferred() 047 * @see jmri.configurexml.XmlAdapter#loadDeferred() 048 */ 049 @Override 050 public boolean loadDeferred() { 051 return true; 052 } 053 054 @Override 055 public boolean load(Element shared, Element perNode) { 056 boolean result = true; 057 String fileName = shared.getAttribute("name").getValue(); 058 fileName = FileUtil.getAbsoluteFilename(fileName); 059 PerformScriptModel m = new PerformScriptModel(); 060 m.setFileName(fileName); 061 InstanceManager.getDefault(StartupActionsManager.class).addAction(m); 062 return result; 063 } 064 065 // initialize logging 066// private final static Logger log = LoggerFactory.getLogger(PerformScriptModelXml.class); 067 068}