public static string CreateEntityAndAttributeDescription(EntityIntellisenseData entity, AttributeIntellisenseData attribute) { List <string> lines = new List <string>(); if (entity.IsIntersectEntity) { lines.Add("IntersectEntity"); if (entity.ManyToManyRelationships != null) { var relations = entity.ManyToManyRelationships.Values.Where(r => string.Equals(r.IntersectEntityName, entity.EntityLogicalName, StringComparison.InvariantCultureIgnoreCase)); foreach (var rel in relations.OrderBy(r => r.Entity1Name).ThenBy(r => r.Entity2Name).ThenBy(r => r.Entity1IntersectAttributeName).ThenBy(r => r.Entity2IntersectAttributeName)) { lines.Add(string.Format("{0} - {1}", rel.Entity1Name, rel.Entity2Name)); } } } CreateFileHandler.FillLabelEntity(lines, true, entity.DisplayName, entity.DisplayCollectionName, entity.Description); lines.Add(string.Empty); lines.Add(string.Format("Attribute:\t{0}", GetDisplayTextAttribute(entity.EntityLogicalName, attribute))); FillDescriptionAttribute(lines, attribute); return(string.Join(System.Environment.NewLine, lines)); }
private HashSet <string> GetRefererenceAttributes(EntityIntellisenseData entityData, HashSet <string> commonEntities) { HashSet <string> result = new HashSet <string>(); if (!string.IsNullOrEmpty(entityData.EntityPrimaryIdAttribute)) { if (commonEntities.Contains(entityData.EntityLogicalName)) { result.Add(entityData.EntityPrimaryIdAttribute); } } if (entityData.Attributes != null) { foreach (var attr in entityData.Attributes.Values) { if (!string.Equals(entityData.EntityPrimaryIdAttribute, attr.LogicalName, StringComparison.InvariantCultureIgnoreCase)) { if (attr.AttributeType == AttributeTypeCode.Uniqueidentifier) { result.Add(attr.LogicalName); } } } } if (entityData.ManyToOneRelationships != null) { foreach (var item in entityData.ManyToOneRelationships.Values) { if (commonEntities.Contains(item.TargetEntityName)) { result.Add(item.BaseAttributeName); } } } if (entityData.IsIntersectEntity && entityData.ManyToManyRelationships != null) { foreach (var item in entityData.ManyToManyRelationships.Values) { if (commonEntities.Contains(item.Entity1Name)) { result.Add(item.Entity1IntersectAttributeName); } if (commonEntities.Contains(item.Entity2Name)) { result.Add(item.Entity2IntersectAttributeName); } } } return(result); }
public static string GetDisplayTextEntityAndAttribute(EntityIntellisenseData entityData, AttributeIntellisenseData attribute) { StringBuilder result = new StringBuilder(); result.AppendFormat("{0}.{1}", entityData.EntityLogicalName, attribute.LogicalName); { string temp = CreateFileHandler.GetLocalizedLabel(entityData.DisplayName); if (!string.IsNullOrEmpty(temp)) { result.AppendFormat(" - {0}", temp); } if (entityData.IsIntersectEntity) { result.Append(" - IntersectEntity"); } } { string temp = CreateFileHandler.GetLocalizedLabel(attribute.DisplayName); if (!string.IsNullOrEmpty(temp)) { result.AppendFormat(" - {0}", temp); } if (attribute.IsPrimaryIdAttribute.GetValueOrDefault()) { result.Append(" - PrimaryId"); } if (attribute.IsPrimaryNameAttribute.GetValueOrDefault()) { result.Append(" - PrimaryName"); } } if (attribute.AttributeType.HasValue) { result.AppendFormat(" - {0}", attribute.AttributeType.ToString()); } return(result.ToString()); }
public static List <string> GetCompareValuesForEntity(EntityIntellisenseData entityData) { List <string> result = GetCompareValues(entityData.DisplayName); result.Add(entityData.EntityLogicalName); if (entityData.IsIntersectEntity) { result.Add("IntersectEntity"); } if (entityData.ObjectTypeCode.HasValue) { result.Add(entityData.ObjectTypeCode.Value.ToString()); } return(result); }
public static string GetDisplayTextEntity(EntityIntellisenseData entityData) { StringBuilder result = new StringBuilder(entityData.EntityLogicalName); string temp = CreateFileHandler.GetLocalizedLabel(entityData.DisplayName); if (!string.IsNullOrEmpty(temp)) { result.AppendFormat(" - {0}", temp); } if (entityData.IsIntersectEntity) { result.Append(" - IntersectEntity"); } return(result.ToString()); }
private string GetEntityPrimaryIdAttribute(string entityName) { EntityIntellisenseData entityData = GetEntityIntellisenseData(entityName); if (entityData != null) { if (!string.IsNullOrEmpty(entityData.EntityPrimaryIdAttribute)) { return(entityData.EntityPrimaryIdAttribute); } if (entityData.IsActivityEntity.GetValueOrDefault()) { return("activityid"); } } return(string.Empty); }
private HashSet <string> GetReferencedEntities(EntityIntellisenseData entityData) { HashSet <string> result = new HashSet <string>(StringComparer.InvariantCultureIgnoreCase); if (!string.IsNullOrEmpty(entityData.EntityPrimaryIdAttribute)) { result.Add(entityData.EntityLogicalName); } if (entityData.ManyToOneRelationships != null) { foreach (var item in entityData.ManyToOneRelationships.Values) { if (!string.IsNullOrEmpty(item.TargetEntityName)) { result.Add(item.TargetEntityName); } } } if (entityData.IsIntersectEntity) { if (entityData.ManyToManyRelationships != null) { foreach (var item in entityData.ManyToManyRelationships.Values) { if (!string.IsNullOrEmpty(item.Entity1Name)) { result.Add(item.Entity1Name); } if (!string.IsNullOrEmpty(item.Entity2Name)) { result.Add(item.Entity2Name); } } } } return(result); }
private void FillMultiLinkForEntity(IList <CompletionSet> completionSets, ITrackingSpan applicableTo, ConnectionIntellisenseData intellisenseData, EntityIntellisenseData entityData) { TupleList <string, string> childEntities = new TupleList <string, string>(); if (entityData.OneToManyRelationships != null) { foreach (var item in entityData.OneToManyRelationships.Values) { childEntities.Add(item.ChildEntityName, item.ChildEntityAttributeName); } } if (!entityData.IsIntersectEntity.GetValueOrDefault() && entityData.ManyToManyRelationships != null) { foreach (var item in entityData.ManyToManyRelationships.Values) { if (string.Equals(entityData.EntityLogicalName, item.Entity1Name, StringComparison.InvariantCultureIgnoreCase)) { childEntities.Add(item.IntersectEntityName, item.Entity1IntersectAttributeName); } else if (string.Equals(entityData.EntityLogicalName, item.Entity2Name, StringComparison.InvariantCultureIgnoreCase)) { childEntities.Add(item.IntersectEntityName, item.Entity2IntersectAttributeName); } } } List <CrmCompletion> list = new List <CrmCompletion>(); foreach (var relation in childEntities.OrderBy(e => e.Item1).ThenBy(e => e.Item2)) { if (intellisenseData.Entities.ContainsKey(relation.Item1)) { var childEntityData = intellisenseData.Entities[relation.Item1]; if (childEntityData.Attributes != null && childEntityData.Attributes.ContainsKey(relation.Item2)) { var childAttribute = childEntityData.Attributes[relation.Item2]; List <string> compareValues = CrmIntellisenseCommon.GetCompareValuesForEntity(childEntityData); compareValues.Add(relation.Item2); var insertText = string.Format("multi {0} {1}", relation.Item2, relation.Item1); list.Add(CreateCompletion(CrmIntellisenseCommon.GetDisplayTextEntityAndAttribute(childEntityData, childAttribute), insertText, CrmIntellisenseCommon.CreateEntityAndAttributeDescription(childEntityData, childAttribute), _defaultGlyph, compareValues)); } } } if (list.Count > 0) { completionSets.Add(new CrmCompletionSet(SourceNameMoniker, "Child Entities", applicableTo, list, Enumerable.Empty <CrmCompletion>())); } }
private void FillEntityIntellisenseDataAttributes(IList <CompletionSet> completionSets, ITrackingSpan applicableTo, EntityIntellisenseData entityData) { if (entityData == null || entityData.Attributes == null ) { return; } List <CrmCompletion> list = new List <CrmCompletion>(); string entityDescription = CrmIntellisenseCommon.GetDisplayTextEntity(entityData); foreach (var attribute in entityData.AttributesOrdered()) { string attributeDescription = CrmIntellisenseCommon.GetDisplayTextAttribute(entityData.EntityLogicalName, attribute); List <string> compareValues = CrmIntellisenseCommon.GetCompareValuesForAttribute(attribute); list.Add(CreateCompletion(attributeDescription, attribute.LogicalName, CrmIntellisenseCommon.CreateAttributeDescription(entityDescription, attribute), _defaultGlyph, compareValues)); } if (list.Count > 0) { completionSets.Add(new CrmCompletionSet(SourceNameMoniker, string.Format("{0} Attributes", entityData.EntityLogicalName), applicableTo, list, Enumerable.Empty <CrmCompletion>())); } }