I want to get all the values of one FID, what should I do.
Is there any dictionary?
As you will note from the output, Currency is a Enum (enumerated) type field.
Please refer to the enumtype.def file which comes with the ElektronSDK installation.
You will find it in the Java\etc folder
In the file search for the Enum FID you are interested in e.g.
! ACRONYM FID
! ------- ---
! CURRENCY 15
and below the list of the FIDs that share the same enumerated values, you will find the enum values:
! VALUE DISPLAY MEANING
! ----- ------- ------- 0 " " Not allocated 4 "AFA" Afghanistan afghani (from 1925 until 2003)
8 "ALL" Albanian lek
12 "DZD" Algerian dinar
20 "ADP" Andorran peseta
24 "AON" Angolan new kwanza .... ....
In your code you can obtain the Display string or the numeric value as follows:
System.out.println(fieldEntry.hasEnumDisplay() ? fieldEntry.enumDisplay() : fieldEntry.enumValue());
So,the above snippet checks if a display string is present in the dictionary (normally should be present) and outputs the display string. IF the display string is not available (e.g. out of date dictionary file) then it outputs the numeric value.
When writing a consumer, you should ideally use the default DictionaryType of ChannelDictionary (downloaded from server) to ensure you have the latest.
As I mentioned above, this is the default dictionary type and EMA will automatically download it behind the scenes (for the API to use for decoding fields etc) - unless you change the DicitonaryType to FileDictionary in your EMA config (not recommended).
The files provided in the Java\etc folder can be used for your local reference - but you should obtain the latest whenever there is a new release of the ElektronSDK.