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