/// <summary> /// Allows for Specified Attribute Nmaes to be used to set the generated attribute name /// </summary> /// <param name="entityMetadata">The entity metadata.</param> /// <param name="attributeMetadata">The attribute metadata.</param> /// <param name="services">The services.</param> /// <returns></returns> public string GetNameForAttribute(EntityMetadata entityMetadata, AttributeMetadata attributeMetadata, IServiceProvider services) { HashSet <string> specifiedNames; string attributeName; if (EntityAttributeSpecifiedNames.TryGetValue(entityMetadata.LogicalName.ToLower(), out specifiedNames) && specifiedNames.Any(s => string.Equals(s, attributeMetadata.LogicalName, StringComparison.OrdinalIgnoreCase))) { attributeName = specifiedNames.First(s => string.Equals(s, attributeMetadata.LogicalName, StringComparison.OrdinalIgnoreCase)); } else { attributeName = DefaultService.GetNameForAttribute(entityMetadata, attributeMetadata, services); } return(attributeName); }
private string GetNameForAttribute(EntityMetadata entityMetadata, AttributeMetadata attributeMetadata, IServiceProvider services, bool camelCase) { string attributeName; if (EntityAttributeSpecifiedNames.TryGetValue(entityMetadata.LogicalName.ToLower(), out var specifiedNames) && specifiedNames.Any(s => string.Equals(s, attributeMetadata.LogicalName, StringComparison.OrdinalIgnoreCase))) { attributeName = specifiedNames.First(s => string.Equals(s, attributeMetadata.LogicalName, StringComparison.OrdinalIgnoreCase)); } else { attributeName = DefaultService.GetNameForAttribute(entityMetadata, attributeMetadata, services); attributeName = camelCase ? CamelCaser.Case(attributeName) : attributeName; } return(attributeName); }
/// <summary> /// Provide a new implementation for finding a name for an OptionSet. If the /// OptionSet is not global, we want the name to be the concatenation of the Entity's /// name and the Attribute's name. Otherwise, we can use the default implementation. /// </summary> public string GetNameForOptionSet(EntityMetadata entityMetadata, OptionSetMetadataBase optionSetMetadata, IServiceProvider services) { if (UseDeprecatedOptionSetNaming) { return(DefaultService.GetNameForOptionSet(entityMetadata, optionSetMetadata, services)); } // Ensure that the OptionSet is not global before using the custom implementation. if (optionSetMetadata.IsGlobal.HasValue && !optionSetMetadata.IsGlobal.Value) { // Find the attribute which uses the specified OptionSet. var attribute = (from a in entityMetadata.Attributes where a.AttributeType == AttributeTypeCode.Picklist && ((EnumAttributeMetadata)a).OptionSet.MetadataId == optionSetMetadata.MetadataId select a).FirstOrDefault(); // Check for null, since statuscode attributes on custom entities are not global, // but their optionsets are not included in the attribute metadata of the entity, either. if (attribute == null) { if (optionSetMetadata.OptionSetType.GetValueOrDefault() == OptionSetType.Status && DefaultService.GetNameForOptionSet(entityMetadata, optionSetMetadata, services).EndsWith("statuscode")) { return(string.Format(LocalOptionSetFormat, DefaultService.GetNameForEntity(entityMetadata, services), "StatusCode")); } } else { // Concatenate the name of the entity and the name of the attribute // together to form the OptionSet name. return(string.Format(LocalOptionSetFormat, DefaultService.GetNameForEntity(entityMetadata, services), DefaultService.GetNameForAttribute(entityMetadata, attribute, services))); } } var name = DefaultService.GetNameForOptionSet(entityMetadata, optionSetMetadata, services); name = UpdateCasingForGlobalOptionSets(name, optionSetMetadata); return(name); }