001package jmri.jmrit.ctc.ctcserialdata; 002 003import java.util.ArrayList; 004import java.util.Arrays; 005import jmri.*; 006import jmri.jmrit.ctc.*; 007 008/** 009 * This describes a single line of Call On data. The list of call on rules 010 * for each OS section are in the _mCO_GroupingsList variable in {@link CodeButtonHandlerData}. 011 * 012 * During panel loading, the switch indicator names are saved as strings. Once all of the 013 * data is loaded, the NBHSensors are copied from the related CodeButtonHandlerData. 014 * @author Dave Sand Copyright (C) 2020 015 */ 016public class CallOnData { 017 public NBHSignal _mExternalSignal; 018 public String _mSignalFacingDirection; 019 public String _mSignalAspectToDisplay; 020 public NBHSensor _mCalledOnExternalSensor; 021 public NamedBeanHandle<Block> _mExternalBlock; 022 public ArrayList<NBHSensor> _mSwitchIndicators; // Up to 6 entries 023 public ArrayList<String> _mSwitchIndicatorNames; // Temporary names during XML loading 024 025 public CallOnData() { 026 } 027 028 @Override 029 public String toString() { 030 String formattedString = String.format("%s,%s,%s,%s,%s", 031 _mExternalSignal != null ? _mExternalSignal.getHandleName() : "", 032 _mSignalFacingDirection != null ? _mSignalFacingDirection : "", 033 _mSignalAspectToDisplay != null ? _mSignalAspectToDisplay : "", 034 _mCalledOnExternalSensor != null ? _mCalledOnExternalSensor.getHandleName() : "", 035 _mExternalBlock != null ? _mExternalBlock.getName() : ""); 036 StringBuilder buildString = new StringBuilder(formattedString); 037 _mSwitchIndicators.forEach(sw -> { 038 buildString.append(","); 039 buildString.append(sw.getHandleName()); 040 }); 041 return buildString.toString(); 042 } 043}