001package armyc2.c5isr.renderer.utilities; 002 003import android.content.Context; 004import android.os.Build; 005 006import java.io.BufferedReader; 007import java.io.InputStream; 008import java.io.InputStreamReader; 009import java.util.ArrayList; 010import java.util.HashMap; 011import java.util.List; 012import java.util.Map; 013import java.util.logging.Level; 014 015import armyc2.c5isr.renderer.R; 016 017/** 018 * Class that holds all the {@link MSInfo} objects with symbol information 019 */ 020public class MSLookup { 021 022 private static MSLookup _instance = null; 023 private static Boolean _initCalled = false; 024 025 private static Map<String, MSInfo> _MSLookupD = null; 026 private static Map<String, MSInfo> _MSLookup6D = null; 027 private static Map<String, MSInfo> _MSLookupE = null; 028 private static Map<String, MSInfo> _MSLookup6E = null; 029 private String TAG = "MSLookup"; 030 private List<String> _IDListD = null; 031 private List<String> _IDList6D = null; 032 private List<String> _IDListE = null; 033 private List<String> _IDList6E = null; 034 035 036 /* 037 * Holds SymbolDefs for all symbols. (basicSymbolID, Description, MinPoint, MaxPoints, etc...) Call 038 * getInstance(). 039 * 040 */ 041 private MSLookup() { 042 // init(null); 043 // _initCalled=true; 044 } 045 046 public static synchronized MSLookup getInstance() { 047 if (_instance == null) { 048 _instance = new MSLookup(); 049 } 050 051 return _instance; 052 } 053 054 public final synchronized void init(Context context) 055 { 056 if (_initCalled == false) 057 { 058 _MSLookupD = new HashMap<>(); 059 _MSLookup6D = new HashMap<>(); 060 _MSLookupE = new HashMap<>(); 061 _MSLookup6E = new HashMap<>(); 062 _IDListD = new ArrayList<>(); 063 _IDList6D = new ArrayList<>(); 064 _IDListE = new ArrayList<>(); 065 _IDList6E = new ArrayList<>(); 066 067 try 068 { 069 InputStream isD = context.getResources().openRawResource(R.raw.msd); 070 InputStream isE = context.getResources().openRawResource(R.raw.mse); 071 072 BufferedReader brD = new BufferedReader(new InputStreamReader(isD)); 073 populateLookup(brD, SymbolID.Version_2525Dch1); 074 brD.close(); 075 076 BufferedReader brE = new BufferedReader(new InputStreamReader(isE)); 077 populateLookup(brE, SymbolID.Version_2525E); 078 brE.close(); 079 080 _initCalled = true; 081 } 082 catch (Exception e) 083 { 084 System.out.println(e.getMessage()); 085 } 086 } 087 } 088 089 private void populateLookup(BufferedReader br, int version) 090 { 091 Map<String, MSInfo> lookup; 092 List<String> list; 093 String[] temp = null; 094 String delimiter = "\t"; 095 096 try 097 { 098 099 String id = null; 100 String ss = null; 101 int intSS = 0; 102 String e = null; 103 String et = null; 104 String est = null; 105 String ec = null; 106 String ver = null; 107 String g = null; 108 String dr = null; 109 String m = null; 110 String[] modifiers = null; 111 112 String line = br.readLine(); 113 while (line != null) { 114 //parse first line 115 temp = line.split(delimiter); 116 117 if(temp.length < 6) 118 ec = "000000"; 119 else 120 ec = temp[4]; 121 if(ec.equals("0")) 122 ec = "000000"; 123 124 if(temp.length < 4) 125 est = ""; 126 else 127 est = temp[3]; 128 if(temp.length < 3) 129 et = ""; 130 else if(est.equals("")) 131 et = temp[2]; 132 if(temp.length < 2) 133 e = ""; 134 else if(et.equals("")) 135 e = temp[1]; 136 137 if(!temp[0].equals("")) 138 ss = temp[0]; 139 140 if (!temp[5].equals("")) 141 ver = temp[5]; 142 143 id = ss + ec; 144 145 intSS = Integer.parseInt(ss); 146 if(!ec.equals("000000")) 147 { 148 if (temp.length >= 8) 149 {//Control Measures and METOCS 150 if(temp.length >= 9) 151 { 152 m = temp[8];//modifiers 153 if(m != null && !m.equals("")) 154 //m = m.replace("\"",""); 155 modifiers = m.split(","); 156 else 157 modifiers = null; 158 } 159 g = temp[6];//geometry 160 dr = temp[7];//draw rule 161 162 //multi points 163 String[] verArr = ver.split(","); 164 for(String v : verArr) 165 { 166 addToLookup(new MSInfo(Integer.parseInt(v), ss, e, et, est, ec, g, dr, populateModifierList(modifiers))); 167 } 168 } 169 else 170 {//Everything else 171 //single points 172 String[] verArr = ver.split(","); 173 for(String v : verArr) 174 { 175 addToLookup(new MSInfo(Integer.parseInt(v), ss, e, et, est, ec, populateModifierList(ss, ec, Integer.parseInt(v)))); 176 } 177 } 178 addToList(ver, id); 179 } 180 else if(intSS != SymbolID.SymbolSet_ControlMeasure && 181 intSS != SymbolID.SymbolSet_Atmospheric && 182 intSS != SymbolID.SymbolSet_Oceanographic && 183 intSS != SymbolID.SymbolSet_MeteorologicalSpace) 184 { 185 String[] verArr = ver.split(","); 186 for(String v : verArr) 187 { 188 addToLookup(new MSInfo(Integer.parseInt(v), ss, e, et, est, ec, populateModifierList(ss, ec, Integer.parseInt(v)))); 189 } 190 addToList(ver, id); 191 } 192 193 modifiers = null; 194 195 //read next line for next loop 196 line = br.readLine(); 197 } 198 } 199 catch(Exception exc) 200 { 201 System.out.println(exc.getMessage()); 202 } 203 204 } 205 206 private void addToLookup(MSInfo msi) 207 { 208 int version = msi.getVersion(); 209 if(version==SymbolID.Version_2525Dch1) 210 _MSLookupD.put(msi.getBasicSymbolID(), msi); 211 if(version==SymbolID.Version_APP6D) 212 _MSLookup6D.put(msi.getBasicSymbolID(), msi); 213 if(version==SymbolID.Version_2525Ech1) 214 _MSLookupE.put(msi.getBasicSymbolID(), msi); 215 if(version==SymbolID.Version_APP6Ech2) 216 _MSLookup6E.put(msi.getBasicSymbolID(), msi); 217 } 218 219 private boolean addCustomToLookupAndList(MSInfo msi) 220 { 221 boolean success = false; 222 int version = msi.getVersion(); 223 if(version==SymbolID.Version_2525Dch1) { 224 if(!_MSLookupD.containsKey(msi.getBasicSymbolID())) { 225 _MSLookupD.put(msi.getBasicSymbolID(), msi); 226 _IDListD.add(msi.getBasicSymbolID()); 227 success = true; 228 } 229 } 230 if(version==SymbolID.Version_APP6D){ 231 if (!_MSLookup6D.containsKey(msi.getBasicSymbolID())) { 232 _MSLookup6D.put(msi.getBasicSymbolID(), msi); 233 _IDList6D.add(msi.getBasicSymbolID()); 234 success = true; 235 } 236 } 237 if(version==SymbolID.Version_2525Ech1){ 238 if(!_MSLookupE.containsKey(msi.getBasicSymbolID())) { 239 _MSLookupE.put(msi.getBasicSymbolID(), msi); 240 _IDListE.add(msi.getBasicSymbolID()); 241 success = true; 242 } 243 } 244 if(version==SymbolID.Version_APP6Ech2) { 245 if(!_MSLookup6E.containsKey(msi.getBasicSymbolID())) { 246 _MSLookup6E.put(msi.getBasicSymbolID(), msi); 247 _IDList6E.add(msi.getBasicSymbolID()); 248 success = true; 249 } 250 } 251 return success; 252 } 253 254 private void addToList(String versions, String basicSymbolID) 255 { 256 if(versions.contains(String.valueOf(SymbolID.Version_2525Dch1))) 257 _IDListD.add(basicSymbolID); 258 if(versions.contains(String.valueOf(SymbolID.Version_APP6D))) 259 _IDList6D.add(basicSymbolID); 260 if(versions.contains(String.valueOf(SymbolID.Version_2525Ech1))) 261 _IDListE.add(basicSymbolID); 262 if(versions.contains(String.valueOf(SymbolID.Version_APP6Ech2))) 263 _IDList6E.add(basicSymbolID); 264 } 265 266 private ArrayList<String> populateModifierList(String[] modifiers) 267 { 268 ArrayList<String> mods = new ArrayList<String>(); 269 if(modifiers != null && modifiers.length > 0) 270 { 271 for (String mod : modifiers) 272 { 273 mods.add(Modifiers.getModifierKey(mod)); 274 } 275 } 276 return mods; 277 } 278 279 private ArrayList<String> populateModifierList(String symbolSet, String ec, int version) 280 { 281 int ss = Integer.valueOf(symbolSet); 282 ArrayList<String> modifiers = new ArrayList<String>(); 283 284 if(version >= SymbolID.Version_2525E) 285 { 286 switch (ss) { 287 case SymbolID.SymbolSet_LandUnit: 288 case SymbolID.SymbolSet_LandCivilianUnit_Organization: 289 modifiers.add(Modifiers.A_SYMBOL_ICON); 290 modifiers.add(Modifiers.B_ECHELON); 291 modifiers.add(Modifiers.C_QUANTITY); 292 modifiers.add(Modifiers.D_TASK_FORCE_INDICATOR); 293 modifiers.add(Modifiers.F_REINFORCED_REDUCED); 294 modifiers.add(Modifiers.G_STAFF_COMMENTS); 295 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 296 modifiers.add(Modifiers.J_EVALUATION_RATING); 297 modifiers.add(Modifiers.K_COMBAT_EFFECTIVENESS); 298 modifiers.add(Modifiers.L_SIGNATURE_EQUIP); 299 modifiers.add(Modifiers.M_HIGHER_FORMATION); 300 modifiers.add(Modifiers.P_IFF_SIF_AIS); 301 modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 302 modifiers.add(Modifiers.S_HQ_STAFF_INDICATOR); 303 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 304 modifiers.add(Modifiers.W_DTG_1); 305 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 306 modifiers.add(Modifiers.Y_LOCATION); 307 modifiers.add(Modifiers.Z_SPEED); 308 if(ss==SymbolID.SymbolSet_LandUnit && ec.equals("110000")) 309 modifiers.add(Modifiers.AA_SPECIAL_C2_HQ); 310 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 311 modifiers.add(Modifiers.AD_PLATFORM_TYPE); 312 modifiers.add(Modifiers.AE_EQUIPMENT_TEARDOWN_TIME); 313 modifiers.add(Modifiers.AF_COMMON_IDENTIFIER); 314 modifiers.add(Modifiers.AH_AREA_OF_UNCERTAINTY); 315 modifiers.add(Modifiers.AI_DEAD_RECKONING_TRAILER); 316 modifiers.add(Modifiers.AK_PAIRING_LINE); 317 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 318 modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 319 modifiers.add(Modifiers.AQ_GUARDED_UNIT); 320 modifiers.add(Modifiers.AS_COUNTRY); 321 break; 322 case SymbolID.SymbolSet_LandEquipment: 323 case SymbolID.SymbolSet_SignalsIntelligence_Land: 324 modifiers.add(Modifiers.A_SYMBOL_ICON); 325 modifiers.add(Modifiers.C_QUANTITY); 326 modifiers.add(Modifiers.G_STAFF_COMMENTS); 327 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 328 modifiers.add(Modifiers.J_EVALUATION_RATING); 329 modifiers.add(Modifiers.K_COMBAT_EFFECTIVENESS); 330 modifiers.add(Modifiers.L_SIGNATURE_EQUIP); 331 modifiers.add(Modifiers.N_HOSTILE); 332 modifiers.add(Modifiers.P_IFF_SIF_AIS); 333 modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 334 modifiers.add(Modifiers.R_MOBILITY_INDICATOR); 335 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 336 modifiers.add(Modifiers.V_EQUIP_TYPE); 337 modifiers.add(Modifiers.W_DTG_1); 338 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 339 modifiers.add(Modifiers.Y_LOCATION); 340 modifiers.add(Modifiers.Z_SPEED); 341 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 342 modifiers.add(Modifiers.AD_PLATFORM_TYPE); 343 modifiers.add(Modifiers.AE_EQUIPMENT_TEARDOWN_TIME); 344 modifiers.add(Modifiers.AF_COMMON_IDENTIFIER); 345 modifiers.add(Modifiers.AG_AUX_EQUIP_INDICATOR); 346 modifiers.add(Modifiers.AH_AREA_OF_UNCERTAINTY); 347 modifiers.add(Modifiers.AI_DEAD_RECKONING_TRAILER); 348 modifiers.add(Modifiers.AK_PAIRING_LINE); 349 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 350 modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 351 modifiers.add(Modifiers.AQ_GUARDED_UNIT); 352 modifiers.add(Modifiers.AS_COUNTRY); 353 break; 354 case SymbolID.SymbolSet_LandInstallation: 355 modifiers.add(Modifiers.A_SYMBOL_ICON); 356 modifiers.add(Modifiers.C_QUANTITY); 357 modifiers.add(Modifiers.G_STAFF_COMMENTS); 358 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 359 modifiers.add(Modifiers.J_EVALUATION_RATING); 360 modifiers.add(Modifiers.K_COMBAT_EFFECTIVENESS); 361 modifiers.add(Modifiers.P_IFF_SIF_AIS); 362 modifiers.add(Modifiers.S_HQ_STAFF_INDICATOR); 363 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 364 modifiers.add(Modifiers.W_DTG_1); 365 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 366 modifiers.add(Modifiers.Y_LOCATION); 367 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 368 modifiers.add(Modifiers.AE_EQUIPMENT_TEARDOWN_TIME); 369 modifiers.add(Modifiers.AH_AREA_OF_UNCERTAINTY); 370 modifiers.add(Modifiers.AI_DEAD_RECKONING_TRAILER); 371 modifiers.add(Modifiers.AK_PAIRING_LINE); 372 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 373 //modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 374 modifiers.add(Modifiers.AQ_GUARDED_UNIT); 375 modifiers.add(Modifiers.AS_COUNTRY); 376 break; 377 case SymbolID.SymbolSet_DismountedIndividuals: 378 modifiers.add(Modifiers.A_SYMBOL_ICON); 379 modifiers.add(Modifiers.G_STAFF_COMMENTS); 380 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 381 modifiers.add(Modifiers.J_EVALUATION_RATING); 382 modifiers.add(Modifiers.K_COMBAT_EFFECTIVENESS); 383 modifiers.add(Modifiers.M_HIGHER_FORMATION); 384 modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 385 modifiers.add(Modifiers.P_IFF_SIF_AIS); 386 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 387 modifiers.add(Modifiers.V_EQUIP_TYPE); 388 modifiers.add(Modifiers.W_DTG_1); 389 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 390 modifiers.add(Modifiers.Y_LOCATION); 391 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 392 modifiers.add(Modifiers.AF_COMMON_IDENTIFIER); 393 modifiers.add(Modifiers.AS_COUNTRY); 394 modifiers.add(Modifiers.AV_LEADERSHIP); 395 break; 396 case SymbolID.SymbolSet_Space: 397 case SymbolID.SymbolSet_SpaceMissile: 398 case SymbolID.SymbolSet_Air: 399 case SymbolID.SymbolSet_AirMissile: 400 modifiers.add(Modifiers.A_SYMBOL_ICON); 401 modifiers.add(Modifiers.B_ECHELON); 402 modifiers.add(Modifiers.C_QUANTITY); 403 modifiers.add(Modifiers.G_STAFF_COMMENTS); 404 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 405 modifiers.add(Modifiers.J_EVALUATION_RATING); 406 modifiers.add(Modifiers.P_IFF_SIF_AIS); 407 //modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 408 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 409 modifiers.add(Modifiers.V_EQUIP_TYPE); 410 modifiers.add(Modifiers.W_DTG_1); 411 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 412 modifiers.add(Modifiers.Y_LOCATION); 413 modifiers.add(Modifiers.Z_SPEED); 414 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 415 modifiers.add(Modifiers.AD_PLATFORM_TYPE); 416 modifiers.add(Modifiers.AF_COMMON_IDENTIFIER); 417 modifiers.add(Modifiers.AJ_SPEED_LEADER); 418 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 419 modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 420 modifiers.add(Modifiers.AR_SPECIAL_DESIGNATOR); 421 modifiers.add(Modifiers.AS_COUNTRY); 422 break; 423 case SymbolID.SymbolSet_SeaSurface: 424 modifiers.add(Modifiers.A_SYMBOL_ICON); 425 modifiers.add(Modifiers.G_STAFF_COMMENTS); 426 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 427 modifiers.add(Modifiers.P_IFF_SIF_AIS); 428 //modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 429 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 430 modifiers.add(Modifiers.V_EQUIP_TYPE); 431 modifiers.add(Modifiers.Y_LOCATION); 432 modifiers.add(Modifiers.Z_SPEED); 433 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 434 modifiers.add(Modifiers.AG_AUX_EQUIP_INDICATOR); 435 modifiers.add(Modifiers.AJ_SPEED_LEADER); 436 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 437 modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 438 modifiers.add(Modifiers.AQ_GUARDED_UNIT); 439 modifiers.add(Modifiers.AR_SPECIAL_DESIGNATOR); 440 modifiers.add(Modifiers.AS_COUNTRY); 441 break; 442 case SymbolID.SymbolSet_SeaSubsurface: 443 modifiers.add(Modifiers.A_SYMBOL_ICON); 444 modifiers.add(Modifiers.G_STAFF_COMMENTS); 445 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 446 modifiers.add(Modifiers.P_IFF_SIF_AIS); 447 //modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 448 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 449 modifiers.add(Modifiers.V_EQUIP_TYPE); 450 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 451 modifiers.add(Modifiers.Y_LOCATION); 452 modifiers.add(Modifiers.Z_SPEED); 453 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 454 modifiers.add(Modifiers.AJ_SPEED_LEADER); 455 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 456 modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 457 modifiers.add(Modifiers.AQ_GUARDED_UNIT); 458 modifiers.add(Modifiers.AR_SPECIAL_DESIGNATOR); 459 modifiers.add(Modifiers.AS_COUNTRY); 460 break; 461 case SymbolID.SymbolSet_Activities: 462 modifiers.add(Modifiers.A_SYMBOL_ICON); 463 modifiers.add(Modifiers.C_QUANTITY); 464 modifiers.add(Modifiers.G_STAFF_COMMENTS); 465 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 466 modifiers.add(Modifiers.J_EVALUATION_RATING); 467 modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 468 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 469 modifiers.add(Modifiers.W_DTG_1); 470 modifiers.add(Modifiers.Y_LOCATION); 471 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 472 modifiers.add(Modifiers.AS_COUNTRY); 473 break; 474 case SymbolID.SymbolSet_CyberSpace: 475 modifiers.add(Modifiers.A_SYMBOL_ICON); 476 modifiers.add(Modifiers.B_ECHELON); 477 modifiers.add(Modifiers.F_REINFORCED_REDUCED); 478 modifiers.add(Modifiers.G_STAFF_COMMENTS); 479 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 480 modifiers.add(Modifiers.K_COMBAT_EFFECTIVENESS); 481 modifiers.add(Modifiers.L_SIGNATURE_EQUIP); 482 modifiers.add(Modifiers.M_HIGHER_FORMATION); 483 modifiers.add(Modifiers.S_HQ_STAFF_INDICATOR); 484 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 485 modifiers.add(Modifiers.V_EQUIP_TYPE); 486 modifiers.add(Modifiers.W_DTG_1); 487 modifiers.add(Modifiers.Y_LOCATION); 488 modifiers.add(Modifiers.AS_COUNTRY); 489 break; 490 /*case SymbolID.SymbolSet_SignalsIntelligence_Air: 491 case SymbolID.SymbolSet_SignalsIntelligence_Land: 492 case SymbolID.SymbolSet_SignalsIntelligence_SeaSurface: 493 case SymbolID.SymbolSet_SignalsIntelligence_SeaSubsurface: 494 case SymbolID.SymbolSet_SignalsIntelligence_Space: 495 modifiers.add(Modifiers.A_SYMBOL_ICON); 496 modifiers.add(Modifiers.D_TASK_FORCE_INDICATOR); 497 modifiers.add(Modifiers.G_STAFF_COMMENTS); 498 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 499 modifiers.add(Modifiers.J_EVALUATION_RATING); 500 modifiers.add(Modifiers.M_HIGHER_FORMATION); 501 modifiers.add(Modifiers.R2_SIGNIT_MOBILITY_INDICATOR); 502 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 503 modifiers.add(Modifiers.V_EQUIP_TYPE); 504 modifiers.add(Modifiers.W1_DTG_2); 505 modifiers.add(Modifiers.Y_LOCATION); 506 modifiers.add(Modifiers.AD_PLATFORM_TYPE);//like equipment 507 modifiers.add(Modifiers.AE_EQUIPMENT_TEARDOWN_TIME);//like equipment 508 modifiers.add(Modifiers.AF_COMMON_IDENTIFIER);//like equipment 509 break;*/ 510 511 case SymbolID.SymbolSet_ControlMeasure: 512 //values come from files during MSLookup load 513 break; 514 case SymbolID.SymbolSet_Atmospheric: 515 //Tropopause low, Tropopause high 516 if ((ec.equals("110102")) || (ec.equals("110202")) || 517 (ec.equals("162200"))) 518 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 519 else if (ec.equals("140200")) 520 modifiers.add(Modifiers.AN_AZIMUTH); 521 break; 522 case SymbolID.SymbolSet_MineWarfare: 523 case SymbolID.SymbolSet_Oceanographic: 524 case SymbolID.SymbolSet_MeteorologicalSpace: 525 default://no modifiers 526 527 } 528 } 529 else if(version == SymbolID.Version_2525Dch1) 530 { 531 switch (ss) { 532 case SymbolID.SymbolSet_LandUnit: 533 case SymbolID.SymbolSet_LandCivilianUnit_Organization: 534 modifiers.add(Modifiers.A_SYMBOL_ICON); 535 modifiers.add(Modifiers.B_ECHELON); 536 modifiers.add(Modifiers.D_TASK_FORCE_INDICATOR); 537 modifiers.add(Modifiers.F_REINFORCED_REDUCED); 538 modifiers.add(Modifiers.G_STAFF_COMMENTS); 539 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 540 modifiers.add(Modifiers.J_EVALUATION_RATING); 541 modifiers.add(Modifiers.K_COMBAT_EFFECTIVENESS); 542 modifiers.add(Modifiers.M_HIGHER_FORMATION); 543 modifiers.add(Modifiers.P_IFF_SIF_AIS); 544 modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 545 modifiers.add(Modifiers.S_HQ_STAFF_INDICATOR); 546 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 547 modifiers.add(Modifiers.W_DTG_1); 548 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 549 modifiers.add(Modifiers.Y_LOCATION); 550 modifiers.add(Modifiers.Z_SPEED); 551 if(ss==SymbolID.SymbolSet_LandUnit && ec.equals("110000")) 552 modifiers.add(Modifiers.AA_SPECIAL_C2_HQ); 553 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 554 modifiers.add(Modifiers.AH_AREA_OF_UNCERTAINTY); 555 modifiers.add(Modifiers.AI_DEAD_RECKONING_TRAILER); 556 modifiers.add(Modifiers.AK_PAIRING_LINE); 557 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 558 modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 559 modifiers.add(Modifiers.AS_COUNTRY); 560 break; 561 case SymbolID.SymbolSet_LandEquipment: 562 case SymbolID.SymbolSet_SignalsIntelligence_Land: 563 modifiers.add(Modifiers.A_SYMBOL_ICON); 564 modifiers.add(Modifiers.C_QUANTITY); 565 modifiers.add(Modifiers.G_STAFF_COMMENTS); 566 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 567 modifiers.add(Modifiers.J_EVALUATION_RATING); 568 modifiers.add(Modifiers.L_SIGNATURE_EQUIP); 569 modifiers.add(Modifiers.N_HOSTILE); 570 modifiers.add(Modifiers.P_IFF_SIF_AIS); 571 modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 572 modifiers.add(Modifiers.R_MOBILITY_INDICATOR); 573 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 574 modifiers.add(Modifiers.V_EQUIP_TYPE); 575 modifiers.add(Modifiers.W_DTG_1); 576 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 577 modifiers.add(Modifiers.Y_LOCATION); 578 modifiers.add(Modifiers.Z_SPEED); 579 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 580 modifiers.add(Modifiers.AD_PLATFORM_TYPE); 581 modifiers.add(Modifiers.AE_EQUIPMENT_TEARDOWN_TIME); 582 modifiers.add(Modifiers.AF_COMMON_IDENTIFIER); 583 modifiers.add(Modifiers.AG_AUX_EQUIP_INDICATOR); 584 modifiers.add(Modifiers.AH_AREA_OF_UNCERTAINTY); 585 modifiers.add(Modifiers.AI_DEAD_RECKONING_TRAILER); 586 modifiers.add(Modifiers.AK_PAIRING_LINE); 587 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 588 modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 589 modifiers.add(Modifiers.AQ_GUARDED_UNIT); 590 modifiers.add(Modifiers.AR_SPECIAL_DESIGNATOR); 591 modifiers.add(Modifiers.AS_COUNTRY); 592 break; 593 case SymbolID.SymbolSet_LandInstallation: 594 modifiers.add(Modifiers.A_SYMBOL_ICON); 595 modifiers.add(Modifiers.G_STAFF_COMMENTS); 596 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 597 modifiers.add(Modifiers.J_EVALUATION_RATING); 598 modifiers.add(Modifiers.K_COMBAT_EFFECTIVENESS); 599 modifiers.add(Modifiers.P_IFF_SIF_AIS); 600 modifiers.add(Modifiers.S_HQ_STAFF_INDICATOR); 601 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 602 modifiers.add(Modifiers.W_DTG_1); 603 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 604 modifiers.add(Modifiers.Y_LOCATION); 605 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 606 modifiers.add(Modifiers.AH_AREA_OF_UNCERTAINTY); 607 modifiers.add(Modifiers.AI_DEAD_RECKONING_TRAILER); 608 modifiers.add(Modifiers.AK_PAIRING_LINE); 609 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 610 modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 611 modifiers.add(Modifiers.AS_COUNTRY); 612 break; 613 case SymbolID.SymbolSet_Space: 614 case SymbolID.SymbolSet_SpaceMissile: 615 case SymbolID.SymbolSet_SignalsIntelligence_Space: 616 modifiers.add(Modifiers.A_SYMBOL_ICON); 617 modifiers.add(Modifiers.G_STAFF_COMMENTS); 618 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 619 modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 620 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 621 modifiers.add(Modifiers.V_EQUIP_TYPE); 622 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 623 modifiers.add(Modifiers.Z_SPEED); 624 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 625 modifiers.add(Modifiers.AJ_SPEED_LEADER); 626 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 627 modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 628 modifiers.add(Modifiers.AS_COUNTRY); 629 break; 630 case SymbolID.SymbolSet_Air: 631 case SymbolID.SymbolSet_AirMissile: 632 case SymbolID.SymbolSet_SignalsIntelligence_Air: 633 modifiers.add(Modifiers.A_SYMBOL_ICON); 634 modifiers.add(Modifiers.G_STAFF_COMMENTS); 635 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 636 modifiers.add(Modifiers.P_IFF_SIF_AIS);//air only 637 modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 638 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 639 modifiers.add(Modifiers.V_EQUIP_TYPE); 640 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 641 modifiers.add(Modifiers.Z_SPEED); 642 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 643 modifiers.add(Modifiers.AJ_SPEED_LEADER); 644 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 645 modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 646 modifiers.add(Modifiers.AS_COUNTRY); 647 break; 648 case SymbolID.SymbolSet_SeaSurface: 649 case SymbolID.SymbolSet_SignalsIntelligence_SeaSurface: 650 modifiers.add(Modifiers.A_SYMBOL_ICON); 651 modifiers.add(Modifiers.G_STAFF_COMMENTS); 652 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 653 modifiers.add(Modifiers.P_IFF_SIF_AIS); 654 modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 655 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 656 modifiers.add(Modifiers.V_EQUIP_TYPE); 657 modifiers.add(Modifiers.Y_LOCATION); 658 modifiers.add(Modifiers.Z_SPEED); 659 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 660 modifiers.add(Modifiers.AJ_SPEED_LEADER); 661 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 662 modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 663 modifiers.add(Modifiers.AQ_GUARDED_UNIT); 664 modifiers.add(Modifiers.AR_SPECIAL_DESIGNATOR); 665 modifiers.add(Modifiers.AS_COUNTRY); 666 break; 667 case SymbolID.SymbolSet_SeaSubsurface: 668 case SymbolID.SymbolSet_SignalsIntelligence_SeaSubsurface: 669 modifiers.add(Modifiers.A_SYMBOL_ICON); 670 modifiers.add(Modifiers.AG_AUX_EQUIP_INDICATOR); 671 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 672 modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 673 modifiers.add(Modifiers.AR_SPECIAL_DESIGNATOR); 674 modifiers.add(Modifiers.G_STAFF_COMMENTS); 675 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 676 modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 677 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 678 modifiers.add(Modifiers.V_EQUIP_TYPE); 679 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 680 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 681 modifiers.add(Modifiers.AJ_SPEED_LEADER); 682 modifiers.add(Modifiers.AS_COUNTRY); 683 break; 684 case SymbolID.SymbolSet_Activities: 685 modifiers.add(Modifiers.A_SYMBOL_ICON); 686 modifiers.add(Modifiers.G_STAFF_COMMENTS); 687 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 688 modifiers.add(Modifiers.J_EVALUATION_RATING); 689 modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 690 modifiers.add(Modifiers.W_DTG_1); 691 modifiers.add(Modifiers.Y_LOCATION); 692 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 693 modifiers.add(Modifiers.AS_COUNTRY); 694 break; 695 case SymbolID.SymbolSet_CyberSpace: 696 modifiers.add(Modifiers.A_SYMBOL_ICON); 697 modifiers.add(Modifiers.B_ECHELON); 698 modifiers.add(Modifiers.D_TASK_FORCE_INDICATOR); 699 modifiers.add(Modifiers.F_REINFORCED_REDUCED); 700 modifiers.add(Modifiers.G_STAFF_COMMENTS); 701 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 702 modifiers.add(Modifiers.K_COMBAT_EFFECTIVENESS); 703 modifiers.add(Modifiers.L_SIGNATURE_EQUIP); 704 modifiers.add(Modifiers.M_HIGHER_FORMATION); 705 modifiers.add(Modifiers.S_HQ_STAFF_INDICATOR); 706 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 707 modifiers.add(Modifiers.V_EQUIP_TYPE); 708 modifiers.add(Modifiers.W_DTG_1); 709 modifiers.add(Modifiers.Y_LOCATION); 710 modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 711 modifiers.add(Modifiers.AS_COUNTRY); 712 break; 713 /*case SymbolID.SymbolSet_SignalsIntelligence_Air: 714 case SymbolID.SymbolSet_SignalsIntelligence_Land: 715 case SymbolID.SymbolSet_SignalsIntelligence_SeaSurface: 716 case SymbolID.SymbolSet_SignalsIntelligence_SeaSubsurface: 717 case SymbolID.SymbolSet_SignalsIntelligence_Space: 718 modifiers.add(Modifiers.A_SYMBOL_ICON); 719 modifiers.add(Modifiers.D_TASK_FORCE_INDICATOR); 720 modifiers.add(Modifiers.G_STAFF_COMMENTS); 721 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 722 modifiers.add(Modifiers.J_EVALUATION_RATING); 723 modifiers.add(Modifiers.M_HIGHER_FORMATION); 724 modifiers.add(Modifiers.R2_SIGNIT_MOBILITY_INDICATOR); 725 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 726 modifiers.add(Modifiers.V_EQUIP_TYPE); 727 modifiers.add(Modifiers.W1_DTG_2); 728 modifiers.add(Modifiers.Y_LOCATION); 729 modifiers.add(Modifiers.AD_PLATFORM_TYPE);//like equipment 730 modifiers.add(Modifiers.AE_EQUIPMENT_TEARDOWN_TIME);//like equipment 731 modifiers.add(Modifiers.AF_COMMON_IDENTIFIER);//like equipment 732 break;*/ 733 734 case SymbolID.SymbolSet_ControlMeasure: 735 //values come from files during MSLookup load 736 break; 737 case SymbolID.SymbolSet_Atmospheric: 738 //Tropopause low, Tropopause high 739 if ((ec.equals("110102")) || (ec.equals("110202")) || 740 (ec.equals("162200"))) 741 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 742 else if (ec.equals("140200")) 743 modifiers.add(Modifiers.AN_AZIMUTH); 744 break; 745 case SymbolID.SymbolSet_MineWarfare: 746 case SymbolID.SymbolSet_Oceanographic: 747 case SymbolID.SymbolSet_MeteorologicalSpace: 748 default://no modifiers 749 750 } 751 } 752 else if(version == SymbolID.Version_APP6D) 753 { 754 switch (ss) { 755 case SymbolID.SymbolSet_LandUnit: 756 case SymbolID.SymbolSet_LandCivilianUnit_Organization: 757 modifiers.add(Modifiers.A_SYMBOL_ICON); 758 modifiers.add(Modifiers.B_ECHELON); 759 modifiers.add(Modifiers.C_QUANTITY); 760 modifiers.add(Modifiers.D_TASK_FORCE_INDICATOR); 761 modifiers.add(Modifiers.F_REINFORCED_REDUCED); 762 modifiers.add(Modifiers.G_STAFF_COMMENTS); 763 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 764 modifiers.add(Modifiers.J_EVALUATION_RATING); 765 modifiers.add(Modifiers.K_COMBAT_EFFECTIVENESS); 766 modifiers.add(Modifiers.L_SIGNATURE_EQUIP); 767 modifiers.add(Modifiers.M_HIGHER_FORMATION); 768 modifiers.add(Modifiers.P_IFF_SIF_AIS); 769 modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 770 modifiers.add(Modifiers.S_HQ_STAFF_INDICATOR); 771 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 772 modifiers.add(Modifiers.W_DTG_1); 773 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 774 modifiers.add(Modifiers.Y_LOCATION); 775 modifiers.add(Modifiers.Z_SPEED); 776 if(ss==SymbolID.SymbolSet_LandUnit && ec.equals("110000")) 777 modifiers.add(Modifiers.AA_SPECIAL_C2_HQ); 778 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 779 modifiers.add(Modifiers.AD_PLATFORM_TYPE); 780 modifiers.add(Modifiers.AE_EQUIPMENT_TEARDOWN_TIME); 781 modifiers.add(Modifiers.AF_COMMON_IDENTIFIER); 782 modifiers.add(Modifiers.AH_AREA_OF_UNCERTAINTY); 783 modifiers.add(Modifiers.AI_DEAD_RECKONING_TRAILER); 784 modifiers.add(Modifiers.AK_PAIRING_LINE); 785 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 786 modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 787 modifiers.add(Modifiers.AS_COUNTRY); 788 break; 789 case SymbolID.SymbolSet_LandEquipment: 790 case SymbolID.SymbolSet_SignalsIntelligence_Land: 791 modifiers.add(Modifiers.A_SYMBOL_ICON); 792 modifiers.add(Modifiers.C_QUANTITY); 793 modifiers.add(Modifiers.G_STAFF_COMMENTS); 794 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 795 modifiers.add(Modifiers.J_EVALUATION_RATING); 796 modifiers.add(Modifiers.K_COMBAT_EFFECTIVENESS); 797 modifiers.add(Modifiers.L_SIGNATURE_EQUIP); 798 modifiers.add(Modifiers.M_HIGHER_FORMATION); 799 modifiers.add(Modifiers.N_HOSTILE); 800 modifiers.add(Modifiers.P_IFF_SIF_AIS); 801 modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 802 modifiers.add(Modifiers.R_MOBILITY_INDICATOR); 803 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 804 modifiers.add(Modifiers.V_EQUIP_TYPE); 805 modifiers.add(Modifiers.W_DTG_1); 806 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 807 modifiers.add(Modifiers.Y_LOCATION); 808 modifiers.add(Modifiers.Z_SPEED); 809 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 810 modifiers.add(Modifiers.AD_PLATFORM_TYPE); 811 modifiers.add(Modifiers.AE_EQUIPMENT_TEARDOWN_TIME); 812 modifiers.add(Modifiers.AF_COMMON_IDENTIFIER); 813 modifiers.add(Modifiers.AG_AUX_EQUIP_INDICATOR); 814 modifiers.add(Modifiers.AH_AREA_OF_UNCERTAINTY); 815 modifiers.add(Modifiers.AI_DEAD_RECKONING_TRAILER); 816 modifiers.add(Modifiers.AK_PAIRING_LINE); 817 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 818 modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 819 modifiers.add(Modifiers.AQ_GUARDED_UNIT); 820 modifiers.add(Modifiers.AS_COUNTRY); 821 break; 822 case SymbolID.SymbolSet_LandInstallation: 823 modifiers.add(Modifiers.A_SYMBOL_ICON); 824 modifiers.add(Modifiers.C_QUANTITY); 825 modifiers.add(Modifiers.G_STAFF_COMMENTS); 826 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 827 modifiers.add(Modifiers.J_EVALUATION_RATING); 828 modifiers.add(Modifiers.K_COMBAT_EFFECTIVENESS); 829 modifiers.add(Modifiers.P_IFF_SIF_AIS); 830 modifiers.add(Modifiers.S_HQ_STAFF_INDICATOR); 831 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 832 modifiers.add(Modifiers.W_DTG_1); 833 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 834 modifiers.add(Modifiers.Y_LOCATION); 835 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 836 modifiers.add(Modifiers.AE_EQUIPMENT_TEARDOWN_TIME); 837 modifiers.add(Modifiers.AH_AREA_OF_UNCERTAINTY); 838 modifiers.add(Modifiers.AI_DEAD_RECKONING_TRAILER); 839 modifiers.add(Modifiers.AK_PAIRING_LINE); 840 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 841 modifiers.add(Modifiers.AS_COUNTRY); 842 break; 843 case SymbolID.SymbolSet_DismountedIndividuals: 844 modifiers.add(Modifiers.A_SYMBOL_ICON); 845 modifiers.add(Modifiers.C_QUANTITY); 846 modifiers.add(Modifiers.G_STAFF_COMMENTS); 847 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 848 modifiers.add(Modifiers.J_EVALUATION_RATING); 849 modifiers.add(Modifiers.K_COMBAT_EFFECTIVENESS); 850 modifiers.add(Modifiers.M_HIGHER_FORMATION); 851 modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 852 modifiers.add(Modifiers.P_IFF_SIF_AIS); 853 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 854 modifiers.add(Modifiers.V_EQUIP_TYPE); 855 modifiers.add(Modifiers.W_DTG_1); 856 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 857 modifiers.add(Modifiers.Y_LOCATION); 858 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 859 modifiers.add(Modifiers.AF_COMMON_IDENTIFIER); 860 modifiers.add(Modifiers.AS_COUNTRY); 861 modifiers.add(Modifiers.AV_LEADERSHIP); 862 break; 863 case SymbolID.SymbolSet_Space: 864 case SymbolID.SymbolSet_SpaceMissile: 865 modifiers.add(Modifiers.A_SYMBOL_ICON); 866 modifiers.add(Modifiers.G_STAFF_COMMENTS); 867 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 868 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 869 modifiers.add(Modifiers.V_EQUIP_TYPE); 870 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 871 modifiers.add(Modifiers.Z_SPEED); 872 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 873 modifiers.add(Modifiers.AJ_SPEED_LEADER); 874 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 875 modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 876 modifiers.add(Modifiers.AS_COUNTRY); 877 break; 878 case SymbolID.SymbolSet_Air: 879 case SymbolID.SymbolSet_AirMissile: 880 modifiers.add(Modifiers.A_SYMBOL_ICON); 881 modifiers.add(Modifiers.G_STAFF_COMMENTS); 882 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 883 modifiers.add(Modifiers.P_IFF_SIF_AIS);//air only 884 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 885 modifiers.add(Modifiers.V_EQUIP_TYPE); 886 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 887 modifiers.add(Modifiers.Z_SPEED); 888 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 889 modifiers.add(Modifiers.AJ_SPEED_LEADER); 890 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 891 modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 892 modifiers.add(Modifiers.AS_COUNTRY); 893 break; 894 case SymbolID.SymbolSet_SeaSurface: 895 modifiers.add(Modifiers.A_SYMBOL_ICON); 896 modifiers.add(Modifiers.G_STAFF_COMMENTS); 897 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 898 modifiers.add(Modifiers.P_IFF_SIF_AIS); 899 //modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 900 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 901 modifiers.add(Modifiers.V_EQUIP_TYPE); 902 modifiers.add(Modifiers.Y_LOCATION); 903 modifiers.add(Modifiers.Z_SPEED); 904 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 905 modifiers.add(Modifiers.AJ_SPEED_LEADER); 906 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 907 modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 908 modifiers.add(Modifiers.AQ_GUARDED_UNIT); 909 modifiers.add(Modifiers.AR_SPECIAL_DESIGNATOR); 910 modifiers.add(Modifiers.AS_COUNTRY); 911 break; 912 case SymbolID.SymbolSet_SeaSubsurface: 913 modifiers.add(Modifiers.A_SYMBOL_ICON); 914 modifiers.add(Modifiers.G_STAFF_COMMENTS); 915 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 916 //modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 917 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 918 modifiers.add(Modifiers.V_EQUIP_TYPE); 919 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 920 modifiers.add(Modifiers.Y_LOCATION); 921 modifiers.add(Modifiers.Z_SPEED); 922 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 923 modifiers.add(Modifiers.AJ_SPEED_LEADER); 924 modifiers.add(Modifiers.AL_OPERATIONAL_CONDITION); 925 modifiers.add(Modifiers.AO_ENGAGEMENT_BAR); 926 modifiers.add(Modifiers.AQ_GUARDED_UNIT); 927 modifiers.add(Modifiers.AR_SPECIAL_DESIGNATOR); 928 modifiers.add(Modifiers.AS_COUNTRY); 929 break; 930 case SymbolID.SymbolSet_Activities: 931 modifiers.add(Modifiers.A_SYMBOL_ICON); 932 modifiers.add(Modifiers.C_QUANTITY); 933 modifiers.add(Modifiers.G_STAFF_COMMENTS); 934 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 935 modifiers.add(Modifiers.J_EVALUATION_RATING); 936 modifiers.add(Modifiers.Q_DIRECTION_OF_MOVEMENT); 937 modifiers.add(Modifiers.W_DTG_1); 938 modifiers.add(Modifiers.Y_LOCATION); 939 modifiers.add(Modifiers.AB_FEINT_DUMMY_INDICATOR); 940 modifiers.add(Modifiers.AS_COUNTRY); 941 break; 942 case SymbolID.SymbolSet_CyberSpace: 943 modifiers.add(Modifiers.A_SYMBOL_ICON); 944 modifiers.add(Modifiers.B_ECHELON); 945 modifiers.add(Modifiers.F_REINFORCED_REDUCED); 946 modifiers.add(Modifiers.G_STAFF_COMMENTS); 947 modifiers.add(Modifiers.H_ADDITIONAL_INFO_1); 948 modifiers.add(Modifiers.K_COMBAT_EFFECTIVENESS); 949 modifiers.add(Modifiers.L_SIGNATURE_EQUIP); 950 modifiers.add(Modifiers.M_HIGHER_FORMATION); 951 modifiers.add(Modifiers.S_HQ_STAFF_INDICATOR); 952 modifiers.add(Modifiers.T_UNIQUE_DESIGNATION_1); 953 modifiers.add(Modifiers.V_EQUIP_TYPE); 954 modifiers.add(Modifiers.W_DTG_1); 955 modifiers.add(Modifiers.Y_LOCATION); 956 modifiers.add(Modifiers.AS_COUNTRY); 957 break; 958 959 case SymbolID.SymbolSet_ControlMeasure: 960 //values come from files during MSLookup load 961 break; 962 case SymbolID.SymbolSet_Atmospheric: 963 //Tropopause low, Tropopause high 964 if ((ec.equals("110102")) || (ec.equals("110202")) || 965 (ec.equals("162200"))) 966 modifiers.add(Modifiers.X_ALTITUDE_DEPTH); 967 else if (ec.equals("140200")) 968 modifiers.add(Modifiers.AN_AZIMUTH); 969 break; 970 case SymbolID.SymbolSet_MineWarfare: 971 case SymbolID.SymbolSet_Oceanographic: 972 case SymbolID.SymbolSet_MeteorologicalSpace: 973 default://no modifiers 974 break; 975 976 } 977 } 978 979 if(ss == SymbolID.SymbolSet_SignalsIntelligence_Air || 980 ss == SymbolID.SymbolSet_SignalsIntelligence_Land || 981 ss == SymbolID.SymbolSet_SignalsIntelligence_SeaSurface || 982 ss == SymbolID.SymbolSet_SignalsIntelligence_SeaSubsurface || 983 ss == SymbolID.SymbolSet_SignalsIntelligence_Space) 984 modifiers.add(Modifiers.R2_SIGNIT_MOBILITY_INDICATOR); 985 986 return modifiers; 987 } 988 989 /** 990 * 991 * @param symbolID Full 20-30 digits from the symbol code 992 * @return 993 */ 994 public MSInfo getMSLInfo(String symbolID) 995 { 996 int length = symbolID.length(); 997 998 if(length >= 20 && length <= 30) 999 { 1000 int version = SymbolID.getVersion(symbolID); 1001 return getMSLInfo(SymbolUtilities.getBasicSymbolID(symbolID), version); 1002 } 1003 else 1004 return null; 1005 } 1006 1007 /** 1008 * 1009 * @param basicID id SymbolSet + Entity code like 50110100 1010 * @param version like SymbolID.Version_2525Dch1 1011 * @return 1012 */ 1013 public MSInfo getMSLInfo(String basicID, int version) 1014 { 1015 int length = basicID.length(); 1016 if (length == 8) { 1017 if (version == SymbolID.Version_2525E || version == SymbolID.Version_2525Ech1) 1018 return _MSLookupE.get(basicID); 1019 else if (version == SymbolID.Version_APP6Ech2 || version == SymbolID.Version_APP6Ech1) 1020 return _MSLookup6E.get(basicID); 1021 else if (version == SymbolID.Version_APP6D) 1022 return _MSLookup6D.get(basicID); 1023 else if (version == SymbolID.Version_2525Dch1) 1024 return _MSLookupD.get(basicID); 1025 else 1026 return null; 1027 } 1028 else if (length >= 20 && length <= 30)//probably got a full id instead of a basic ID. 1029 { 1030 return getMSLInfo(SymbolUtilities.getBasicSymbolID(basicID), version); 1031 } else 1032 return null; 1033 } 1034 1035 /** 1036 * returns a list of all the keys in the order they are listed in the MilStd 2525D document. 1037 * @return 1038 */ 1039 public List<String> getIDList(int version) 1040 { 1041 if (version == SymbolID.Version_2525E || version == SymbolID.Version_2525Ech1) 1042 return _IDListE; 1043 else if (version == SymbolID.Version_APP6D) 1044 return _IDList6D; 1045 else if (version == SymbolID.Version_2525Dch1) 1046 return _IDListD; 1047 else if (version == SymbolID.Version_APP6Ech1 || version == SymbolID.Version_APP6Ech2) 1048 return _IDList6E; 1049 else//default to 2525Dch1 1050 return _IDListD; 1051 } 1052 1053 /* 1054 * For use only by MilStdIconRenderer.addCustomSymbol() 1055 * @param msInfo 1056 * @return 1057 */ 1058 public boolean addCustomSymbol(MSInfo msInfo) 1059 { 1060 boolean success = false; 1061 try 1062 { 1063 if(msInfo != null) 1064 success = addCustomToLookupAndList(msInfo); 1065 else 1066 ErrorLogger.LogMessage("Attempt to add custom msInfo with null object.",Level.INFO,false); 1067 if(msInfo != null && !success) 1068 ErrorLogger.LogMessage("Symbol Set and Entity Code combination already exist: " + msInfo.getBasicSymbolID(),Level.INFO,false); 1069 } 1070 catch(Exception e) 1071 { 1072 ErrorLogger.LogException("MSLookup", "addCustomSymbol",e); 1073 } 1074 return success; 1075 } 1076}