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}