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 with a ValidationErrorException. 013 * 014 * @author Daniel Bergqvist Copyright 2025 015 * @since 5.15.1 016 */ 017public class ValidationError extends AbstractDigitalAction { 018 019 private final LogixNG_SelectString _selectMessage = new LogixNG_SelectString(this); 020 021 public ValidationError(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 ValidationError copy = new ValidationError(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 ValidationErrorException(message); 052 } 053 054 @Override 055 public String getShortDescription(Locale locale) { 056 return Bundle.getMessage(locale, "ValidationError_Short"); 057 } 058 059 @Override 060 public String getLongDescription(Locale locale) { 061 return Bundle.getMessage(locale, "ValidationError_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(ValidationError.class); 072 073}