001/*
002 * To change this template, choose Tools | Templates
003 * and open the template in the editor.
004 */
005
006package armyc2.c2sd.renderer.utilities;
007
008import java.util.ArrayList;
009
010import armyc2.c2sd.renderer.R;
011
012/**
013 * This class contains keys to the modifiers.  A number of these we feed off of
014 * the symbol code instead of using the property.  But those modifiers remain
015 * for completeness.
016 *
017 * U = units, E = equipment, I= installations, SI = signals intelligence (SIGINT), SO = stability operations, EU = EMS units, EEI = EMS equipment and incidents, EI =
018 * EMS installations.
019 * @author michael.spinelli
020 */
021public class ModifiersUnits {
022
023
024//public static final int SYMBOL_ID = "Symbol ID";
025    //public static final int SOURCE = "Source";
026    //public static final int EDITOR_CLASS_TYPE = "Editor Class Type";
027    //public static final int URN = "URN";
028    //public static final int UIC = "UIC";
029    //public static final int ANGLE_OF_ROTATION = "Angle of Rotation";
030    /**
031     * The innermost part of a symbol that represents a warfighting object
032     * Here for completeness, not actually used as this comes from the
033     * symbol code.
034     * Type: U,E,I,SI,SO,EU,EEI,EI
035     * Length: G
036     */
037    public static final int A_SYMBOL_ICON = 1;
038    /**
039     * A graphic modifier in a unit symbol that identifies command level
040     * We feed off of the symbol code so this isn't used
041     * Type: U,SO
042     * Length: G
043     */
044    public static final int B_ECHELON = 2;
045    /**
046     * A text modifier in an equipment symbol that identifies the number of items present.
047     * Type: E,EEI
048     * Length: 9
049     */
050    public static final int C_QUANTITY = 3;
051    /**
052     * A graphic modifier that identifies a unit or SO symbol as a task force (see 5.3.4.6
053     * and figures 2 and 3).
054     * Type: U,SO
055     * Length: G
056     */
057    public static final int D_TASK_FORCE_INDICATOR = 4;
058    /**
059     * A graphic modifier that displays standard identity, battle dimension, or exercise
060     * amplifying descriptors of an object (see 5.3.1 and table II).
061     * Type: U,E,I,SO,EU,EEI,EI
062     * Length: G
063     */
064    public static final int E_FRAME_SHAPE_MODIFIER = 5;
065    /**
066     * A text modifier in a unit symbol that displays (+) for reinforced, (-) for reduced,(+) reinforced and reduced.
067     * R = reinforced,D = reduced,RD = reinforced and reduced
068     * Type: U,SO
069     * Length: 23
070     */
071    public static final int F_REINFORCED_REDUCED = 6;
072    /**
073     * A text modifier for units, equipment and installations; content is implementation specific.
074     * Type: U,E,I,SI,SO
075     * Length: 20
076     */
077    public static final int G_STAFF_COMMENTS = 7;
078    /**
079     * Text modifier for amplifying free text
080     * Type: U,E,I,SI,SO,EU,EEI,EI
081     * Length: 20
082     */
083    public static final int H_ADDITIONAL_INFO_1 = 8;
084    /**
085     * Text modifier for amplifying free text
086     * Type: U,E,I,SI,SO,EU,EEI,EI
087     * Length: 20
088     */
089    public static final int H1_ADDITIONAL_INFO_2 = 9;
090    /**
091     * Text modifier for amplifying free text
092     * Type: U,E,I,SI,SO,EU,EEI,EI
093     * Length: 20
094     */
095    public static final int H2_ADDITIONAL_INFO_3 = 10;
096    /**
097     * A text modifier for units, equipment, and installations that consists of 
098     * a one letter reliability rating and a one-number credibility rating.
099        Reliability Ratings: A-completely reliable, B-usually reliable, 
100        C-fairly reliable, D-not usually reliable, E-unreliable, 
101        F-reliability cannot be judged.
102        Credibility Ratings: 1-confirmed by other sources,
103        2-probably true, 3-possibly true, 4-doubtfully true,
104        5-improbable, 6-truth cannot be judged.
105        Type: U,E,I,SI,SO,EU,EEI,EI
106        Length: 2
107     */
108    public static final int J_EVALUATION_RATING = 11;
109    /**
110     * A text modifier for units and installations that indicates unit effectiveness or
111     * installation capability.
112     * Type: U,I,SO
113     * Length: 5,5,3
114     */
115    public static final int K_COMBAT_EFFECTIVENESS = 12;
116    /**
117     * A text modifier for hostile equipment; “!� indicates detectable electronic
118     * signatures.
119     * Type: E,SI
120     * Length: 1
121     */
122    public static final int L_SIGNATURE_EQUIP = 13;
123    /**
124     * A text modifier for units that indicates number or title of higher echelon
125     * command (corps are designated by Roman numerals).
126     * Type: U,SI
127     * Length: 21
128     */
129    public static final int M_HIGHER_FORMATION = 14;
130    /**
131     * A text modifier for equipment; letters "ENY" denote hostile symbols.
132     * Type: E
133     * Length: 3
134     */
135    public static final int N_HOSTILE = 15;
136    /**
137     * A text modifier displaying IFF/SIF Identification modes and codes.
138     * Type: U,E,SO
139     * Length: 5
140     */
141    public static final int P_IFF_SIF = 16;
142    /**
143     * A graphic modifier for units and equipment that identifies the direction of
144     * movement or intended movement of an object (see 5.3.4.1 and figures 2 and 3).
145     * Type: U,E,SO,EU,EEI
146     * Length: G
147     */
148    public static final int Q_DIRECTION_OF_MOVEMENT = 17;
149    /**
150     * A graphic modifier for equipment that depicts the mobility of an object (see
151     *   5.3.4.3, figures 2 and 3, and table VI).
152     * We feed off of the symbol code for mobility so this isn't used
153     * Type: E,EEI
154     * Length: G
155     */
156    public static final int R_MOBILITY_INDICATOR = 18;
157    /**
158     * M = Mobile, S = Static, or U = Uncertain.
159     * Type: SI
160     * Length: 1
161     */
162    public static final int R2_SIGNIT_MOBILITY_INDICATOR = 19;
163    /**
164     * Headquarters staff indicator: A graphic modifier for units, equipment, and
165     * installations that identifies a unit as a headquarters (see 5.3.4.8 and figures 2 and
166     * 3).
167     * Offset location indicator: A graphic modifier for units, equipment, and
168     * installations used when placing an object away from its actual location (see
169     * 5.3.4.9 and figures 2 and 3).
170     * Type: U,E,I,SO,EU,EEI,EI
171     * Length: G
172     */
173    public static final int S_HQ_STAFF_OR_OFFSET_INDICATOR = 20;
174    /**
175     * A text modifier for units, equipment, and installations that uniquely identifies a
176     * particular symbol or track number. Identifies acquisitions number when used
177     * with SIGINT symbology.
178     * Type: U,E,I,SI,SO,EU,EEI,EI
179     * Length: 21
180     */
181    public static final int T_UNIQUE_DESIGNATION_1 = 21;
182    /**
183     * A text modifier for units, equipment, and installations that uniquely identifies a
184     * particular symbol or track number. Identifies acquisitions number when used
185     * with SIGINT symbology.
186     * Type: U,E,I,SI,SO,EU,EEI,EI
187     * Length: 21
188     */
189    public static final int T1_UNIQUE_DESIGNATION_2 = 22;
190    /**
191     * A text modifier for equipment that indicates types of equipment.
192     * For Tactical Graphics:
193     * A text modifier that indicates nuclear weapon type.
194     * Type: E,SI,EEI
195     * Length: 24
196     */
197    public static final int V_EQUIP_TYPE = 23;
198    /**
199     * A text modifier for units, equipment, and installations that displays DTG format:
200     * DDHHMMSSZMONYYYY or “O/O� for on order (see 5.5.2.6).
201     * Type: U,E,I,SI,SO,EU,EEI,EI
202     * Length: 16
203     */
204    public static final int W_DTG_1 = 24;
205    /**
206     * A text modifier for units, equipment, and installations that displays DTG format:
207     * DDHHMMSSZMONYYYY or “O/O� for on order (see 5.5.2.6).
208     * Type: U,E,I,SI,SO,EU,EEI,EI
209     * Length: 16
210     */
211    public static final int W1_DTG_2 = 25;
212    /**
213     * A text modifier for units, equipment, and installations, that displays either
214     * altitude flight level, depth for submerged objects; or height of equipment or
215     * structures on the ground. See 5.5.2.5 for content.
216     * Type: U,E,I,SO,EU,EEI,EI
217     * Length: 14
218     */
219    public static final int X_ALTITUDE_DEPTH = 26;
220    /**
221     * A text modifier for units, equipment, and installations that displays a symbol’s
222     * location in degrees, minutes, and seconds (or in UTM or other applicable display
223     * format).
224     * Conforms to decimal
225     *  degrees format:
226     *  xx.dddddhyyy.dddddh
227     *  where
228     *  xx = degrees latitude
229     *  yyy = degrees longitude
230     *  .ddddd = decimal degrees
231     *  h = direction (N, E, S, W)
232     * Type: U,E,I,SI,SO,EU,EEI,EI
233     * Length: 19
234     */
235    public static final int Y_LOCATION = 27;
236    /**
237     * A text modifier for units and equipment that displays velocity as set forth in
238     * MIL-STD-6040.
239     * Type: U,E,SO,EU,EEI
240     * Length: 8
241     */
242    public static final int Z_SPEED = 28;
243    /**
244     * A text modifier for units; indicator is contained inside the frame (see figures 2
245     * and 3); contains the name of the special C2 Headquarters.
246     * Type: U,SO
247     * Length: 9
248     */
249    public static final int AA_SPECIAL_C2_HQ = 29;
250    /**
251     * Feint or dummy indicator: A graphic modifier for units, equipment, and
252     * installations that identifies an offensive or defensive unit intended to draw the
253     * enemy’s attention away from the area of the main attack (see 5.3.4.7 and figures
254     * 2 and 3).
255     * Type: U,E,I,SO
256     * Length: G
257     */
258    public static final int AB_FEINT_DUMMY_INDICATOR = 30;
259    /**
260     * Installation: A graphic modifier for units, equipment, and installations used to
261     * show that a particular symbol denotes an installation (see 5.3.4.5 and figures 2
262     * and 3).
263     * Not used, we feed off of symbol code for this
264     * Type: U,E,I,SO,EU,EEI,EI
265     * Length: G
266     */
267    public static final int AC_INSTALLATION = 31;
268    /**
269     * ELNOT or CENOT
270     * Type: SI
271     * Length: 6
272     */
273    public static final int AD_PLATFORM_TYPE = 32;
274    /**
275     * Equipment teardown time in minutes.
276     * Type: SI
277     * Length: 3
278     */
279    public static final int AE_EQUIPMENT_TEARDOWN_TIME = 33;
280    /**
281     * Example: “Hawk� for Hawk SAM system.
282     * Type: SI
283     * Length: 12
284     */
285    public static final int AF_COMMON_IDENTIFIER = 34;
286    /**
287     * Towed sonar array indicator: A graphic modifier for equipment that indicates the
288     * presence of a towed sonar array (see 5.3.4.4, figures 2 and 3, and table VII).
289     * Type: E
290     * Length: G
291     */
292    public static final int AG_AUX_EQUIP_INDICATOR = 35;
293    /**
294     * A graphic modifier for units and equipment that indicates the area where an
295     * object is most likely to be, based on the object’s last report and the reporting
296     * accuracy of the sensor that detected the object (see 5.3.4.11.1 and figure 4).
297     * Type: E,U,SO,EU,EEI
298     * Length: G
299     */
300    public static final int AH_AREA_OF_UNCERTAINTY = 36;
301    /**
302     * A graphic modifier for units and equipment that identifies where an object
303     * should be located at present, given its last reported course and speed (see
304     * 5.3.4.11.2 and figure 4).
305     * Type: E,U,SO,EU,EEI
306     * Length: G
307     */
308    public static final int AI_DEAD_RECKONING_TRAILER = 37;
309    /**
310     * A graphic modifier for units and equipment that depicts the speed and direction
311     * of movement of an object (see 5.3.4.11.3 and figure 4).
312     * Type: E,U,SO,EU,EEI
313     * Length: G
314     */
315    public static final int AJ_SPEED_LEADER = 38;
316    /**
317     * A graphic modifier for units and equipment that connects two objects and is
318     * updated dynamically as the positions of the objects change (see 5.3.4.11.4 and
319     * figure 4).
320     * Type: U,E,SO
321     * Length: G
322     */
323    public static final int AK_PAIRING_LINE = 39;
324    /**
325     * An optional graphic modifier for equipment or installations that indicates
326     * operational condition or capacity.
327     * Type: E,I,SI,SO,EU,EEI,EI
328     * Length: G
329     */
330    public static final int AL_OPERATIONAL_CONDITION = 40;
331
332    /**
333     * A graphic amplifier placed immediately atop the symbol. May denote, 1)
334     * local/remote status; 2) engagement status; and 3) weapon type.
335     *
336     * Type: U,E,I
337     * Length: G/8
338     */
339    public static final int AO_ENGAGEMENT_BAR = 41;
340    
341    /**
342     * Pulled from the SymbolID.  Not something the user should set directly.
343     */
344    public static final int CC_COUNTRY_CODE = 42;
345    
346    /**
347     * Sonar Classification Confidence level. valid values are 1-5.
348     * Only applies to the 4 subsurface MILCO sea mines
349     */
350    public static final int SCC_SONAR_CLASSIFICATION_CONFIDENCE = 50;
351
352    /**
353     * A generic name label that goes to the right of the symbol and
354     * any existing labels.  If there are no existing labels, it goes right
355     * next to the right side of the symbol.  This is a CPOF label that applies
356     * to all force elements.  This IS NOT a MilStd or USAS Label.  
357     */
358    public static final int CN_CPOF_NAME_LABEL = 60;
359
360
361
362    //public static final int LENGTH = "Length";
363    //public static final int WIDTH = "Width";
364    //public static final int RADIUS = "Radius";
365    //public static final int SEGMENT_DATA = "Segment Data";
366
367    /**
368     * Returns an Arraylist of the modifer names for units
369     * @return
370     */
371    public static ArrayList<Integer> GetModifierList()
372    {
373        ArrayList<Integer> list = new ArrayList<Integer>();
374
375        //list.add(ModifierType.A_SYMBOL_ICON);//graphical, feeds off of symbol code, SIDC positions 3, 5-10
376        //list.add(ModifierType.B_ECHELON);//graphical, feeds off of symbol code, SIDC positions 11-12
377        list.add(C_QUANTITY);
378        //list.add(D_TASK_FORCE_INDICATOR);//graphical, feeds off of symbol code, SIDC positions 11-12
379        //list.add(E_FRAME_SHAPE_MODIFIER);//symbol frame, feeds off of symbol code, SIDC positions 3-4
380        list.add(F_REINFORCED_REDUCED);//R = reinforced, D = reduced, RD = reinforced and reduced
381        list.add(G_STAFF_COMMENTS);
382        list.add(H_ADDITIONAL_INFO_1);
383        list.add(H1_ADDITIONAL_INFO_2);
384        list.add(H2_ADDITIONAL_INFO_3);
385        list.add(J_EVALUATION_RATING);
386        list.add(K_COMBAT_EFFECTIVENESS);
387        list.add(L_SIGNATURE_EQUIP);
388        list.add(M_HIGHER_FORMATION);
389        list.add(N_HOSTILE);
390        list.add(P_IFF_SIF);
391        list.add(Q_DIRECTION_OF_MOVEMENT);//number in mils
392        //list.add(R_MOBILITY_INDICATOR);//graphical, feeds off of symbol code, SIDC positions 11-12
393        list.add(R2_SIGNIT_MOBILITY_INDICATOR);
394        //list.add(S_HQ_STAFF_OR_OFFSET_INDICATOR);//graphical, feeds off of symbol code, SIDC positions 11-12
395        list.add(T_UNIQUE_DESIGNATION_1);
396        list.add(T1_UNIQUE_DESIGNATION_2);
397        list.add(V_EQUIP_TYPE);
398        list.add(W_DTG_1);
399        list.add(W1_DTG_2);
400        list.add(X_ALTITUDE_DEPTH);
401        list.add(Y_LOCATION);
402        list.add(Z_SPEED);
403
404        list.add(AA_SPECIAL_C2_HQ);
405        //list.add(AB_FEINT_DUMMY_INDICATOR);//graphical, feeds off of symbol code, SIDC positions 11-12
406        //list.add(AC_INSTALLATION);//graphical, feeds off of symbol code, SIDC positions 11-12
407        list.add(AD_PLATFORM_TYPE);
408        list.add(AE_EQUIPMENT_TEARDOWN_TIME);
409        list.add(AF_COMMON_IDENTIFIER);
410        list.add(AG_AUX_EQUIP_INDICATOR);
411        list.add(AH_AREA_OF_UNCERTAINTY);
412        list.add(AI_DEAD_RECKONING_TRAILER);
413        list.add(AJ_SPEED_LEADER);
414        list.add(AK_PAIRING_LINE);
415        //list.add(AL_OPERATIONAL_CONDITION);//2525C ////graphical, feeds off of symbol code, SIDC positions 4
416        list.add(AO_ENGAGEMENT_BAR);//2525C
417
418
419
420        return list;
421    }
422
423    /**
424     *
425     * @param modifier like ModifiersTG.C_QUANTITY
426     * @return modifier name based on mofidier constants
427     */
428    public static String getModifierName(int modifier)
429    {
430        switch(modifier)
431        {
432            case A_SYMBOL_ICON:
433                return "Symbol Icon";
434            case B_ECHELON:
435                return "Echelon";
436            case C_QUANTITY:
437                return "Quantity";
438            case D_TASK_FORCE_INDICATOR:
439                return "Task Force Indicator";
440            case E_FRAME_SHAPE_MODIFIER:
441                return "Frame Shape Modifier";
442            case F_REINFORCED_REDUCED:
443                return "Reinforce Reduced";
444            case G_STAFF_COMMENTS:
445                return "Staff Comments";
446            case H_ADDITIONAL_INFO_1:
447                return "Additional Info 1";
448            case H1_ADDITIONAL_INFO_2:
449                return "Additional Info 2";
450            case H2_ADDITIONAL_INFO_3:
451                return "Additional Info 3";
452            case J_EVALUATION_RATING:
453                return "Evaluation Rating";
454            case K_COMBAT_EFFECTIVENESS:
455                return "Combat Effectiveness";
456            case L_SIGNATURE_EQUIP:
457                return "Signature Equipment";
458            case M_HIGHER_FORMATION:
459                return "Higher Formation";
460            case N_HOSTILE:
461                return "Hostile";
462            case P_IFF_SIF:
463                return "IFF SIF";
464            case Q_DIRECTION_OF_MOVEMENT:
465                return "Direction of Movement";
466            case R_MOBILITY_INDICATOR:
467                return "Mobility Indicator";
468            case R2_SIGNIT_MOBILITY_INDICATOR:
469                return "Signals Intelligence Mobility Indicator";
470            case S_HQ_STAFF_OR_OFFSET_INDICATOR:
471                return "HQ Staff / Offset Indicator";
472            case T_UNIQUE_DESIGNATION_1:
473                return "Unique Designation 1";
474            case T1_UNIQUE_DESIGNATION_2:
475                return "Unique Designation 2";
476            case V_EQUIP_TYPE:
477                return "Equipment Type";
478            case W_DTG_1:
479                return "Date Time Group 1";
480            case W1_DTG_2:
481                return "Date Time Group 2";
482            case X_ALTITUDE_DEPTH:
483                return "Altitude Depth";
484            case Y_LOCATION:
485                return "Location";
486            case Z_SPEED:
487                return "Speed";
488            case AA_SPECIAL_C2_HQ:
489                return "Special C2 HQ";
490            case AB_FEINT_DUMMY_INDICATOR:
491                return "Feint Dummy Indicator";
492            case AC_INSTALLATION:
493                return "Installation";
494            case AD_PLATFORM_TYPE:
495                return "Platform Type";
496            case AE_EQUIPMENT_TEARDOWN_TIME:
497                return "Equipment Teardown Time";
498            case AF_COMMON_IDENTIFIER:
499                return "Common Identifier";
500            case AG_AUX_EQUIP_INDICATOR:
501                return "Auxiliary Equipment Indicator";
502            case AH_AREA_OF_UNCERTAINTY:
503                return "Area of Uncertainty";
504            case AI_DEAD_RECKONING_TRAILER:
505                return "Dead Reckoning Trailer";
506            case AJ_SPEED_LEADER:
507                return "Speed Leader";
508            case AK_PAIRING_LINE:
509                return "Pairing Line";
510            case AL_OPERATIONAL_CONDITION:
511                return "Operational Condition";
512            case AO_ENGAGEMENT_BAR:
513                return "Engagement Bar";//*/
514            case SCC_SONAR_CLASSIFICATION_CONFIDENCE:
515                return "Sonar Classification Confidence";
516            default:
517                return "";
518
519        }
520    }
521
522    /**
523     *
524     * @param modifier like ModifiersUnits.C_QUANTITY
525     * @return modifier name based on mofidier constants
526     */
527    public static String getModifierLetterCode(int modifier) {
528        switch (modifier) {
529            case A_SYMBOL_ICON:
530                return "A";
531            case B_ECHELON:
532                return "B";
533            case C_QUANTITY:
534                return "C";
535            case D_TASK_FORCE_INDICATOR:
536                return "D";
537            case E_FRAME_SHAPE_MODIFIER:
538                return "E";
539            case F_REINFORCED_REDUCED:
540                return "F";
541            case G_STAFF_COMMENTS:
542                return "G";
543            case H_ADDITIONAL_INFO_1:
544                return "H";
545            case H1_ADDITIONAL_INFO_2:
546                return "H1";
547            case H2_ADDITIONAL_INFO_3:
548                return "H2";
549            case J_EVALUATION_RATING:
550                return "J";
551            case K_COMBAT_EFFECTIVENESS:
552                return "K";
553            case L_SIGNATURE_EQUIP:
554                return "L";
555            case M_HIGHER_FORMATION:
556                return "M";
557            case N_HOSTILE:
558                return "N";
559            case P_IFF_SIF:
560                return "P";
561            case Q_DIRECTION_OF_MOVEMENT:
562                return "Q";
563            case R_MOBILITY_INDICATOR:
564                return "R";
565            case R2_SIGNIT_MOBILITY_INDICATOR:
566                return "R2";
567            case S_HQ_STAFF_OR_OFFSET_INDICATOR:
568                return "S";
569            case T_UNIQUE_DESIGNATION_1:
570                return "T";
571            case T1_UNIQUE_DESIGNATION_2:
572                return "T1";
573            case V_EQUIP_TYPE:
574                return "V";
575            case W_DTG_1:
576                return "W";
577            case W1_DTG_2:
578                return "W1";
579            case X_ALTITUDE_DEPTH:
580                return "X";
581            case Y_LOCATION:
582                return "Y";
583            case Z_SPEED:
584                return "Z";
585            case AA_SPECIAL_C2_HQ:
586                return "AA";
587            case AB_FEINT_DUMMY_INDICATOR:
588                return "AB";
589            case AC_INSTALLATION:
590                return "AC";
591            case AD_PLATFORM_TYPE:
592                return "AD";
593            case AE_EQUIPMENT_TEARDOWN_TIME:
594                return "AE";
595            case AF_COMMON_IDENTIFIER:
596                return "AF";
597            case AG_AUX_EQUIP_INDICATOR:
598                return "AG";
599            case AH_AREA_OF_UNCERTAINTY:
600                return "AH";
601            case AI_DEAD_RECKONING_TRAILER:
602                return "AI";
603            case AJ_SPEED_LEADER:
604                return "AJ";
605            case AK_PAIRING_LINE:
606                return "AK";
607            case AL_OPERATIONAL_CONDITION:
608                return "AL";
609            case AO_ENGAGEMENT_BAR:
610                return "AO";
611            case SCC_SONAR_CLASSIFICATION_CONFIDENCE:
612                return "SCC";
613            default:
614                return "";
615
616        }
617    }
618
619    /**
620     * go from "T" or "T1" to integer constant values 9 and 10
621     * @param modLetter
622     * @return
623     */
624    public static int getModifierKey(String modLetter) {
625        switch (modLetter) {
626            case "A":
627                return A_SYMBOL_ICON;
628            case "B":
629                return B_ECHELON;
630            case "C":
631                return C_QUANTITY;
632            case "D":
633                return D_TASK_FORCE_INDICATOR;
634            case "E":
635                return E_FRAME_SHAPE_MODIFIER;
636            case "F":
637                return F_REINFORCED_REDUCED;
638            case "G":
639                return G_STAFF_COMMENTS;
640            case "H":
641                return H_ADDITIONAL_INFO_1;
642            case "H1":
643                return H1_ADDITIONAL_INFO_2;
644            case "H2":
645                return H2_ADDITIONAL_INFO_3;
646            case "J":
647                return J_EVALUATION_RATING;
648            case "K":
649                return K_COMBAT_EFFECTIVENESS;
650            case "L":
651                return L_SIGNATURE_EQUIP;
652            case "M":
653                return M_HIGHER_FORMATION;
654            case "N":
655                return N_HOSTILE;
656            case "P":
657                return P_IFF_SIF;
658            case "Q":
659                return Q_DIRECTION_OF_MOVEMENT;
660            case "R":
661                return R_MOBILITY_INDICATOR;
662            case "R2":
663                return R2_SIGNIT_MOBILITY_INDICATOR;
664            case "S":
665                return S_HQ_STAFF_OR_OFFSET_INDICATOR;
666            case "T":
667                return T_UNIQUE_DESIGNATION_1;
668            case "T1":
669                return T1_UNIQUE_DESIGNATION_2;
670            case "V":
671                return V_EQUIP_TYPE;
672            case "W":
673                return W_DTG_1;
674            case "W1":
675                return W1_DTG_2;
676            case "X":
677                return X_ALTITUDE_DEPTH;
678            case "Y":
679                return Y_LOCATION;
680            case "Z":
681                return Z_SPEED;
682            case "AA":
683                return AA_SPECIAL_C2_HQ;
684            case "AB":
685                return AB_FEINT_DUMMY_INDICATOR;
686            case "AC":
687                return AC_INSTALLATION;
688            case "AD":
689                return AD_PLATFORM_TYPE;
690            case "AE":
691                return AE_EQUIPMENT_TEARDOWN_TIME;
692            case "AF":
693                return AF_COMMON_IDENTIFIER;
694            case "AG":
695                return AG_AUX_EQUIP_INDICATOR;
696            case "AH":
697                return AH_AREA_OF_UNCERTAINTY;
698            case "AI":
699                return AI_DEAD_RECKONING_TRAILER;
700            case "AJ":
701                return AJ_SPEED_LEADER;
702            case "AK":
703                return AK_PAIRING_LINE;
704            case "AL":
705                return AL_OPERATIONAL_CONDITION;
706            case "AO":
707                return AO_ENGAGEMENT_BAR;
708            case "SCC":
709                return SCC_SONAR_CLASSIFICATION_CONFIDENCE;
710            default:
711                return -1;
712
713        }
714    }
715
716}