/// <summary> /// Loads the property metadata for the current type into the schema. /// </summary> /// <param name="type">The type.</param> /// <param name="itemTypeMeta">The properties.</param> private void LoadProperties(ItemType type, IReadOnlyItem itemTypeMeta) { var props = itemTypeMeta.Relationships("Property"); Property newProp = null; foreach (var prop in props) { newProp = new Property(prop.Property("name").Value); newProp.Id = prop.Id(); newProp.Label = prop.Property("label").Value; newProp.SetType(prop.Property("data_type").Value); newProp.Precision = prop.Property("prec").AsInt(-1); newProp.Scale = prop.Property("scale").AsInt(-1); newProp.StoredLength = prop.Property("stored_length").AsInt(-1); var foreign = prop.Property("foreign_property").AsItem(); if (foreign.Exists) { newProp.ForeignLinkPropName = prop.Property("data_source").KeyedName().Value; newProp.ForeignPropName = foreign.Property("name").Value; newProp.ForeignTypeName = foreign.SourceId().KeyedName().Value; } newProp.DataSource = prop.Property("data_source").Value; if (newProp.Type == PropertyType.item && newProp.Name == "data_source" && type.Name == "Property") { newProp.Restrictions.AddRange(new string[] { "ItemType", "List", "Property" }); } else if (newProp.Type == PropertyType.item && prop.Property("data_source").Attribute("name").HasValue()) { newProp.Restrictions.Add(prop.Property("data_source").Attribute("name").Value); } newProp.Visibility = (prop.Property("is_hidden").AsBoolean(false) ? PropertyVisibility.None : PropertyVisibility.MainGrid) | (prop.Property("is_hidden2").AsBoolean(false) ? PropertyVisibility.None : PropertyVisibility.RelationshipGrid); newProp.SortOrder = prop.Property("sort_order").AsInt(int.MaxValue); newProp.ColumnWidth = prop.Property("column_width").AsInt(100); newProp.IsRequired = prop.Property("is_required").AsBoolean(false); newProp.ReadOnly = prop.Property("readonly").AsBoolean(false); //default_value,column_width,is_required,readonly type.Properties.Add(newProp.Name, newProp); } }
internal static Property FromItem(IReadOnlyItem prop, ItemType type) { var newProp = new Property(prop.Property("name").Value) { Id = prop.Id(), Label = prop.Property("label").Value, Precision = prop.Property("prec").AsInt(-1), Scale = prop.Property("scale").AsInt(-1), StoredLength = prop.Property("stored_length").AsInt(-1), Description = prop.Property("help_text").AsString(null) ?? prop.Property("help_tooltip").AsString(null) }; newProp.SetType(prop.Property("data_type").Value); var foreign = prop.Property("foreign_property").AsItem(); if (foreign.Exists) { newProp.ForeignLinkPropName = prop.Property("data_source").KeyedName().Value; newProp.ForeignPropName = foreign.Property("name").Value; newProp.ForeignTypeName = foreign.SourceId().KeyedName().Value; } newProp.DataSource = prop.Property("data_source").Value; if (newProp.Type == PropertyType.item && newProp.Name == "data_source" && type.Name == "Property") { newProp.Restrictions.AddRange(new string[] { "ItemType", "List", "Property" }); } else if (newProp.Type == PropertyType.item && prop.Property("data_source").Attribute("name").HasValue()) { newProp.Restrictions.Add(prop.Property("data_source").Attribute("name").Value); } newProp.Visibility = (prop.Property("is_hidden").AsBoolean(false) ? PropertyVisibility.None : PropertyVisibility.MainGrid) | (prop.Property("is_hidden2").AsBoolean(false) ? PropertyVisibility.None : PropertyVisibility.RelationshipGrid); newProp.SortOrder = prop.Property("sort_order").AsInt(int.MaxValue); newProp.ColumnWidth = prop.Property("column_width").AsInt(100); newProp.IsRequired = prop.Property("is_required").AsBoolean(false); newProp.ReadOnly = prop.Property("readonly").AsBoolean(false); return(newProp); }
internal static Property FromItem(IReadOnlyItem prop, ItemType type, Func <string, string> getName = null) { var newProp = new Property() { Applicable = true, Name = prop.Property("name").Value, Id = prop.Id(), Label = prop.Property("label").Value, Precision = prop.Property("prec").AsInt(-1), Scale = prop.Property("scale").AsInt(-1), StoredLength = prop.Property("stored_length").AsInt(-1), Description = prop.Property("help_text").AsString(null) ?? prop.Property("help_tooltip").AsString(null), ClassPath = prop.Property("class_path").Value, DefaultSearch = prop.Property("default_search").Value, Pattern = prop.Property("pattern").Value, KeyedNameOrder = prop.Property("keyed_name_order").AsInt(), OrderBy = prop.Property("order_by").AsInt(), }; if (_propertyHelp.TryGetValue(newProp.Name, out var stdDescription)) { newProp.Core = true; newProp.Description = newProp.Description ?? stdDescription; } if (prop.Property("default_value").HasValue()) { newProp.DefaultValue = prop.Property("default_value").Value; } newProp.SetType(prop.Property("data_type").Value); var foreign = prop.Property("foreign_property").AsItem(); if (foreign.Exists) { newProp.ForeignLinkPropName = prop.Property("data_source").KeyedName().Value ?? prop.Property("data_source").AsItem().Property("name").Value; newProp.ForeignPropName = foreign.Property("name").Value ?? foreign.Property("keyed_name").Value; newProp.ForeignTypeName = foreign.SourceId().KeyedName().Value ?? foreign.SourceId().AsItem().Property("name").Value; } newProp.DataSource = prop.Property("data_source").Value; if (newProp.Type == PropertyType.item && newProp.Name == "data_source" && type.Name == "Property") { newProp.Restrictions.AddRange(new string[] { "ItemType", "List", "Property" }); } else if (prop.Property("data_source").Attribute("name").HasValue() || prop.Property("data_source").KeyedName().HasValue()) { newProp.Restrictions.Add(prop.Property("data_source").Attribute("name").Value ?? prop.Property("data_source").KeyedName().Value); } else if (prop.Property("data_source").HasValue() && !string.IsNullOrEmpty(prop.Property("data_source").Value)) { var name = getName?.Invoke(prop.Property("data_source").Value); if (!string.IsNullOrEmpty(name)) { newProp.Restrictions.Add(name); } } newProp.Visibility = (prop.Property("is_hidden").AsBoolean(false) ? PropertyVisibility.None : PropertyVisibility.MainGrid) | (prop.Property("is_hidden2").AsBoolean(false) ? PropertyVisibility.None : PropertyVisibility.RelationshipGrid); newProp.SortOrder = prop.Property("sort_order").AsInt(int.MaxValue); newProp.ColumnWidth = prop.Property("column_width").AsInt(100); newProp.IsRequired = prop.Property("is_required").AsBoolean(false); newProp.ReadOnly = prop.Property("readonly").AsBoolean(false); switch (newProp.Name) { case "classification": newProp.Applicable = type.ClassPaths.Any() || type.IsPolymorphic || type.IsFederated; break; case "config_id": case "generation": case "is_current": case "major_rev": case "minor_rev": case "new_version": case "release_date": newProp.Applicable = type.IsVersionable || type.IsPolymorphic || type.IsFederated; break; case "current_state": case "is_released": case "state": newProp.Applicable = type.HasLifeCycle || type.IsPolymorphic || type.IsFederated; break; case "related_id": newProp.Applicable = prop.Property("data_source").HasValue(); break; } return(newProp); }
/// <summary> /// Loads the property metadata for the current type into the schema. /// </summary> /// <param name="type">The type.</param> /// <param name="itemTypeMeta">The properties.</param> private void LoadProperties(ItemType type, IReadOnlyItem itemTypeMeta) { var props = itemTypeMeta.Relationships("Property"); Property newProp = null; foreach (var prop in props) { newProp = new Property(prop.Property("name").Value); newProp.Label = prop.Property("label").Value; newProp.SetType(prop.Property("data_type").Value); newProp.Precision = prop.Property("prec").AsInt(-1); newProp.Scale = prop.Property("scale").AsInt(-1); newProp.StoredLength = prop.Property("stored_length").AsInt(-1); var foreign = prop.Property("foreign_property").AsItem(); if (foreign.Exists) { newProp.ForeignLinkPropName = prop.Property("data_source").KeyedName().Value; newProp.ForeignPropName = foreign.Property("name").Value; newProp.ForeignTypeName = foreign.SourceId().KeyedName().Value; } newProp.DataSource = prop.Property("data_source").Value; if (newProp.Type == PropertyType.item && prop.Property("data_source").Attribute("name").HasValue()) { newProp.Restrictions.Add(prop.Property("data_source").Attribute("name").Value); } newProp.Visibility = (prop.Property("is_hidden").AsBoolean(false) ? PropertyVisibility.None : PropertyVisibility.MainGrid) | (prop.Property("is_hidden2").AsBoolean(false) ? PropertyVisibility.None : PropertyVisibility.RelationshipGrid); newProp.SortOrder = prop.Property("sort_order").AsInt(int.MaxValue); newProp.ColumnWidth = prop.Property("column_width").AsInt(100); newProp.IsRequired = prop.Property("is_required").AsBoolean(false); newProp.ReadOnly = prop.Property("readonly").AsBoolean(false); //default_value,column_width,is_required,readonly type.Properties.Add(newProp.Name, newProp); } }