Exemple #1
0
        private void AdjustEntities()
        {
            // If an entity is marked to be removed but is also in the list
            // to import, don't remove it in the first place.
            List <TR2Entities> cleanedEntities = new List <TR2Entities>();

            foreach (TR2Entities entity in EntitiesToRemove)
            {
                if (_aliasMap.ContainsKey(entity))
                {
                    // Check if we have another alias in the import list different from any
                    // in the current level
                    TR2Entities alias       = TR2EntityUtilities.GetAliasForLevel(LevelName, entity);
                    TR2Entities importAlias = TR2Entities.Lara;
                    foreach (TR2Entities a in _aliasMap[entity])
                    {
                        if (EntitiesToImport.Contains(a))
                        {
                            importAlias = a;
                            break;
                        }
                    }

                    if (alias != importAlias)
                    {
                        cleanedEntities.Add(entity);
                    }
                }
                else if (!EntitiesToImport.Contains(entity))
                {
                    cleanedEntities.Add(entity);
                }
            }
            EntitiesToRemove = cleanedEntities;
        }
Exemple #2
0
        public void LoadTargetsToCache(string recordType)
        {
            var recordsReferenced = new HashSet <string>();

            recordsReferenced.Add(recordType);
            var thisTypeEntities = EntitiesToImport.Where(e => e.LogicalName == recordType);
            var fieldsForImport  = GetFieldsToImport(thisTypeEntities, recordType);

            foreach (var entity in thisTypeEntities)
            {
                foreach (var field in fieldsForImport)
                {
                    var value = entity.GetField(field);
                    if (value is EntityReference entityReference)
                    {
                        var type = entityReference.LogicalName;
                        if (!string.IsNullOrWhiteSpace(type) && !type.Contains(",") && !recordsReferenced.Contains(type))
                        {
                            recordsReferenced.Add(type);
                        }
                    }
                }
            }

            CheckLoadCache(recordsReferenced);
        }