4343import java .nio .channels .FileChannel ;
4444import java .nio .channels .FileChannel .MapMode ;
4545import java .text .DateFormat ;
46+ import java .util .ArrayList ;
4647import java .util .Collection ;
4748import java .util .Date ;
4849import java .util .HashSet ;
4950import java .util .LinkedHashMap ;
51+ import java .util .List ;
5052import java .util .Map .Entry ;
5153import java .util .TimeZone ;
5254import java .util .Vector ;
@@ -968,6 +970,8 @@ public int getEntityId(String entityName) {
968970 protected void loadEntities () {
969971 loadSystems ();
970972
973+ List <Integer > alreadyStartLoadingEntityInfo = new ArrayList <>();
974+
971975 int type = defs .getMessageId ("EntityInfo" );
972976 for (int i = getFirstMessageOfType (type ); i != -1 ; i = getNextMessageOfType (type , i )) {
973977 // Let's check if we already have it
@@ -976,12 +980,13 @@ protected void loadEntities() {
976980 if (!(systemEntityIds .containsKey (src ))) {
977981 systemEntityIds .put (src , new LinkedHashMap <String , Integer >());
978982 systemEntityNames .put (src , new LinkedHashMap <Integer , String >());
979- } else if (!systemEntityIds .get (src ).isEmpty () && !systemEntityNames .get (src ).isEmpty ()) {
983+ } else if (!alreadyStartLoadingEntityInfo . contains ( src ) && ! systemEntityIds .get (src ).isEmpty () && !systemEntityNames .get (src ).isEmpty ()) {
980984 continue ;
981985 }
982986
983- IMCMessage einfo = getMessage ( i );
987+ alreadyStartLoadingEntityInfo . add ( src );
984988
989+ IMCMessage einfo = getMessage (i );
985990 src = einfo .getInteger ("src" );
986991
987992 systemEntityIds .get (src ).put (einfo .getString ("label" ), einfo .getInteger ("id" ));
0 commit comments