コード例 #1
0
        public static void StoreChangedMetaData(DeletedMetadataCollection deletedMD, EntityMetadataCollection changedMD)
        {
            int deletedAmount = deletedMD.Count;
            int changedAmount = changedMD.Count;

            Console.WriteLine("*Changed Metadata* \n" + deletedAmount + " deletes found. \n" + changedAmount + " changes found.");

            log("\n* CRM: " + URL + " \n*Changed Metadata* \n" + deletedAmount + " deletes found. \n" + changedAmount + " changes found.", "Results", true, false);
            string[,] _deletedMD  = new string[deletedAmount, 2];
            string[,] _modifiedMD = new string[changedAmount, 2];

            //Parse into Arrays
            //deletes
            int i = 0;

            foreach (var _key in deletedMD.Keys)
            {
                DataCollection <Guid> _tmpGUID;

                if (deletedMD.TryGetValue(_key, out _tmpGUID))
                {
                    Console.WriteLine(_tmpGUID);
                }
                else
                {
                    Console.WriteLine(_key + " not found i deleted metadata!");
                }
            }
            //changes
            for (i = 0; i < changedMD.Count; i++)
            {
                Console.WriteLine("change found to: '" + changedMD[i].SchemaName.ToString() + "' since " + _ClientVersionStamp);
                log("change found to: '" + changedMD[i].SchemaName.ToString() + "' since " + _ClientVersionStamp, "Results", true, false);
            }
        }
コード例 #2
0
        public static void UpdateCache(List <EntityMetadata> entityMetadataList
                                       , IDictionary <Guid, MappingEntity> mappingEntities, string serverStamp,
                                       DeletedMetadataCollection deletedMetadata, bool isTitleCaseLogicalName)
        {
            if (deletedMetadata != null)
            {
                ParseDeleted(entityMetadataList, mappingEntities, serverStamp, deletedMetadata);
            }

            // update modified entities
            var modifiedEntities = entityMetadataList
                                   .Where(entity => entity.MetadataId.HasValue && mappingEntities.ContainsKey(entity.MetadataId.Value)).ToList();

            modifiedEntities.AsParallel().ForAll(entity =>
                                                 GetMappingEntity(entity, serverStamp, mappingEntities[entity.MetadataId.GetValueOrDefault()], isTitleCaseLogicalName));

            var newEntities = entityMetadataList
                              .Where(entity => entity.MetadataId.HasValue && !mappingEntities.ContainsKey(entity.MetadataId.Value)).ToList();

            newEntities.AsParallel().ForAll(entity => mappingEntities
                                            .Add(entity.MetadataId.GetValueOrDefault(), GetMappingEntity(entity, serverStamp, null, isTitleCaseLogicalName)));
        }
コード例 #3
0
ファイル: MetadataQuerySample.cs プロジェクト: weedkiller/crm
        //</snippetaddOptionLabelsToCache>
        //<snippetremoveOptionLabelsFromCache>
        protected void removeOptionLabelsFromCache(DeletedMetadataCollection DeletedMetadata, Boolean showChanges)
        {
            List <OptionSetOption> optionSetOptionsToRemove = new List <OptionSetOption>();

            if (DeletedMetadata.Keys.Contains(DeletedMetadataFilters.OptionSet))
            {
                DataCollection <Guid> optionsetmetadataids = (DataCollection <Guid>)DeletedMetadata[DeletedMetadataFilters.OptionSet];
                foreach (Guid metadataid in optionsetmetadataids)
                {
                    foreach (OptionSetOption oso in _optionLabelList)
                    {
                        if (metadataid == oso.optionsetId)
                        {
                            optionSetOptionsToRemove.Add(oso);
                        }
                    }
                }
            }
            foreach (OptionSetOption option in optionSetOptionsToRemove)
            {
                _optionLabelList.Remove(option);
            }
            if (showChanges)
            {
                if (optionSetOptionsToRemove.Count > 0)
                {
                    Console.WriteLine("{0} Option Labels removed", optionSetOptionsToRemove.Count);
                    Console.WriteLine("{0} Total Option Labels currently cached", _optionLabelList.Count);
                    Console.WriteLine("");
                }
                else
                {
                    Console.WriteLine("No Option Labels removed.");
                    Console.WriteLine("");
                }
            }
        }
コード例 #4
0
        private static void ParseDeleted(List <EntityMetadata> entityMetadataList,
                                         IDictionary <Guid, MappingEntity> mappingEntities, string serverStamp
                                         , DeletedMetadataCollection deletedMetadata)
        {
            if (deletedMetadata.ContainsKey(DeletedMetadataFilters.Entity))
            {
                // remove deleted entities
                deletedMetadata[DeletedMetadataFilters.Entity].ToList().ForEach(guid => mappingEntities.Remove(guid));
            }

            if (deletedMetadata.ContainsKey(DeletedMetadataFilters.Attribute))
            {
                // remove deleted fields
                deletedMetadata[DeletedMetadataFilters.Attribute].ToList()
                .ForEach(guid =>
                {
                    var entity =
                        mappingEntities.Values.FirstOrDefault(
                            entityQ => entityQ.Fields.ToList().Any(field => field.MetadataId == guid));

                    if (entity == null)
                    {
                        return;
                    }

                    entity.Fields      = entity.Fields.ToList().Where(field => field.MetadataId != guid).ToArray();
                    entity.Enums       = entity.Enums.ToList().Where(field => field.MetadataId != guid).ToArray();
                    entity.ServerStamp = serverStamp;
                });
            }

            if (deletedMetadata.ContainsKey(DeletedMetadataFilters.Relationship))
            {
                // remove deleted relationships
                deletedMetadata[DeletedMetadataFilters.Relationship].ToList()
                .ForEach(guid =>
                {
                    // 1:N
                    var entity =
                        mappingEntities.Values.FirstOrDefault(
                            entityQ => entityQ.RelationshipsOneToMany.ToList().Any(relation => relation.MetadataId == guid));

                    if (entity != null)
                    {
                        entity.RelationshipsOneToMany =
                            entity.RelationshipsOneToMany.ToList().Where(relation => relation.MetadataId != guid).ToArray();
                        entity.ServerStamp = serverStamp;
                        return;
                    }

                    // N:1
                    entity =
                        mappingEntities.Values.FirstOrDefault(
                            entityQ => entityQ.RelationshipsManyToOne.ToList().Any(relation => relation.MetadataId == guid));

                    if (entity != null)
                    {
                        entity.RelationshipsManyToOne =
                            entity.RelationshipsManyToOne.ToList().Where(relation => relation.MetadataId != guid).ToArray();
                        entity.ServerStamp = serverStamp;
                        return;
                    }

                    // M:N
                    var entities =
                        mappingEntities.Values.Where(
                            entityQ => entityQ.RelationshipsManyToMany.ToList().Any(relation => relation.MetadataId == guid))
                        .ToList();

                    if (entities.Any())
                    {
                        entities.ForEach(entityQ =>
                        {
                            entityQ.RelationshipsManyToMany = entityQ.RelationshipsManyToMany
                                                              .ToList()
                                                              .Where(relation => relation.MetadataId != guid)
                                                              .ToArray();
                            entityQ.ServerStamp = serverStamp;
                        });
                    }
                });
            }
        }
コード例 #5
0
        public static void UpdateCache(List <EntityMetadata> entityMetadataList
                                       , IDictionary <Guid, MappingEntity> mappingEntities, string serverStamp, DeletedMetadataCollection deletedMetadata)
        {
            ParseDeleted(mappingEntities, serverStamp, deletedMetadata);

            // update modified entities
            var modifiedEntities =
                entityMetadataList.Where(entity => entity.MetadataId.HasValue && mappingEntities.ContainsKey(entity.MetadataId.Value)).ToList();

            modifiedEntities.ForEach(
                entity => UpdateMappingEntity(entity, entity.MetadataId.HasValue ? mappingEntities[entity.MetadataId.Value] : null, serverStamp));

            var newEntities = entityMetadataList.Where(entity => entity.MetadataId.HasValue && !mappingEntities.ContainsKey(entity.MetadataId.Value)).ToList();

            newEntities.ForEach(entity => mappingEntities.Add(entity.MetadataId.Value, GetMappingEntity(entity, serverStamp)));
        }
コード例 #6
0
  //</snippetaddOptionLabelsToCache>
  //<snippetremoveOptionLabelsFromCache>
  protected void removeOptionLabelsFromCache(DeletedMetadataCollection DeletedMetadata, Boolean showChanges)
  {
   List<OptionSetOption> optionSetOptionsToRemove = new List<OptionSetOption>();

   if (DeletedMetadata.Keys.Contains(DeletedMetadataFilters.OptionSet))
   {
    DataCollection<Guid> optionsetmetadataids = (DataCollection<Guid>)DeletedMetadata[DeletedMetadataFilters.OptionSet];
    foreach (Guid metadataid in optionsetmetadataids)
    {
     foreach (OptionSetOption oso in _optionLabelList)
     {
      if (metadataid == oso.optionsetId)
      {
       optionSetOptionsToRemove.Add(oso);
      }
     }
    }
   }
   foreach (OptionSetOption option in optionSetOptionsToRemove)
   {
    _optionLabelList.Remove(option);
   }
   if (showChanges)
   {
    if (optionSetOptionsToRemove.Count > 0)
    {
     Console.WriteLine("{0} Option Labels removed", optionSetOptionsToRemove.Count);
     Console.WriteLine("{0} Total Option Labels currently cached", _optionLabelList.Count);
     Console.WriteLine("");
    }
    else
    {
     Console.WriteLine("No Option Labels removed.");
     Console.WriteLine("");
    }

   }
  }