package module.decode.p25.reference; import java.util.List; public enum Digit { D0( "0", "A" ), D1( "1", "B" ), D2( "2", "C" ), D3( "3", "D" ), D4( "4", "-" ), D5( "5", "-" ), D6( "6", "-" ), D7( "7", "-" ), D8( "8", "-" ), D9( "9", "-" ), D10( "*", "-" ), D11( "#", "-" ), D12( "-", "-" ), D13( "HOOK FLASH", "-" ), D14( "PAUSE", "-" ), D15( "ESC", "NULL" ), DUNK( "?", "?" ); private String mValue; private String mEscapedValue; private Digit( String value, String escapedValue ) { mValue = value; mEscapedValue = escapedValue; } public String getValue() { return mValue; } public String getEscapedValue() { return mEscapedValue; } public static Digit fromValue( int value ) { if( 0 <= value && value <= 15 ) { return values()[ value ]; } return DUNK; } public static String decode( List<Integer> values ) { StringBuilder sb = new StringBuilder(); boolean escape = false; for( Integer value: values ) { Digit d = Digit.fromValue( value ); if( d == Digit.D15 ) { escape = true; } else if( escape ) { sb.append( d.getEscapedValue() ); escape = false; } else { sb.append( d.getValue() ); } } return sb.toString(); } }