001package jmri.jmrit.logixng.actions;
002
003import java.util.Locale;
004import java.util.Map;
005
006import jmri.InstanceManager;
007import jmri.JmriException;
008import jmri.jmrit.logixng.*;
009import jmri.jmrit.logixng.util.LogixNG_SelectString;
010
011/**
012 * Returns from a Module or a ConditionalNG.
013 *
014 * @author Daniel Bergqvist Copyright 2022
015 */
016public class Error extends AbstractDigitalAction {
017
018    private final LogixNG_SelectString _selectMessage =
019            new LogixNG_SelectString(this);
020
021    public Error(String sys, String user) {
022        super(sys, user);
023    }
024
025    @Override
026    public Base getDeepCopy(Map<String, String> systemNames, Map<String, String> userNames) throws JmriException {
027        DigitalActionManager manager = InstanceManager.getDefault(DigitalActionManager.class);
028        String sysName = systemNames.get(getSystemName());
029        String userName = userNames.get(getSystemName());
030        if (sysName == null) sysName = manager.getAutoSystemName();
031        Error copy = new Error(sysName, userName);
032        copy.setComment(getComment());
033        getSelectMessage().copy(copy._selectMessage);
034        return manager.registerAction(copy);
035    }
036
037    public LogixNG_SelectString getSelectMessage() {
038        return _selectMessage;
039    }
040
041    /** {@inheritDoc} */
042    @Override
043    public LogixNG_Category getCategory() {
044        return LogixNG_Category.FLOW_CONTROL;
045    }
046
047    /** {@inheritDoc} */
048    @Override
049    public void execute() throws JmriException {
050        String message = _selectMessage.evaluateValue(getConditionalNG());
051        throw new JmriException(message);
052    }
053
054    @Override
055    public String getShortDescription(Locale locale) {
056        return Bundle.getMessage(locale, "Error_Short");
057    }
058
059    @Override
060    public String getLongDescription(Locale locale) {
061        return Bundle.getMessage(locale, "Error_Long",
062                _selectMessage.getDescription(locale));
063    }
064
065    /** {@inheritDoc} */
066    @Override
067    public void setup() {
068        // Do nothing
069    }
070
071//    private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(WebBrowser.class);
072
073}