public bool Load (XElement XSchema) { SqlInsert = ProcessingInstance.GetTableDefinitionEntry (Name, "SqlInsert"); SqlDelete = ProcessingInstance.GetTableDefinitionEntry (Name, "SqlDelete"); SqlReadable = ProcessingInstance.GetTableDefinitionEntry (Name, "SqlReadable"); String KeyItemName = String.Empty; foreach (XElement XEntityType in XSchema.Nodes ().OfType<XElement> ()) { if (XEntityType.Name.LocalName != "EntityType") continue; if (XEntityType.Attribute ("Name").Value != Name) continue; foreach (XElement XProperty in XEntityType.Nodes ().OfType<XElement> ()) { if (XProperty.Name.LocalName == "Key") { XElement XPropertyRef = XProperty.DescendantNodes ().OfType<XElement> ().First (); if (XPropertyRef.Name.LocalName == "PropertyRef") KeyItemName = XPropertyRef.Attribute ("Name").Value; } if (XProperty.Name.LocalName != "Property") continue; ItemDescription NewItem = new ItemDescription (); NewItem.ProcessingInstance = ProcessingInstance; NewItem.BackLinkTableDescription = this; NewItem.Parent = this; NewItem.Name = XProperty.Attribute("Name").Value; if (NewItem.Name == KeyItemName) NewItem.IsKey = true; NewItem.Type = XProperty.Attribute ("Type").Value; if (XProperty.Attribute ("Nullable") != null) { String Nullable = XProperty.Attribute ("Name").Value; if (String.Compare( Nullable, "false", true) == 0) { NewItem.NullableProperty = false; } } if (XProperty.Attribute ("MaxLength") != null) { String MaxLength = XProperty.Attribute ("MaxLength").Value; NewItem.MaxLength = Convert.ToInt32 (MaxLength); } NewItem.ColumnDescription = ProcessingInstance.GetColumnDefinition (NewItem, Name, NewItem.Name, true); ItemDictionary.Add (NewItem.Name, NewItem); } } GetFillEntries (); return true; }
public WMB.TableContentDefinition GetColumnDefinition(ItemDescription ItemDesc, String TableName, String ColumnName, bool UpdateAble) { DataTable SchemaDataTable = SchemaDataSet.Tables["ExProp_" + TableName]; if (SchemaDataTable == null) { String TableType = GetDataBaseTableType(TableName); DataSet HelpDS = null; if (TableType == "BASE TABLE") { HelpDS = GetCommonDataSet (String.Format(SQL_GET_EXTENDED_COLUMN_PROPERTIES_FOR_TABLE, TableName)); } if (TableType == "VIEW") { HelpDS = GetCommonDataSet (String.Format(SQL_GET_EXTENDED_COLUMN_PROPERTIES_FOR_VIEW, TableName)); ReformatViewExtendedPropertiesToTableExtendedProperties(HelpDS.Tables[0]); } SchemaDataTable = HelpDS.Tables[0]; HelpDS.Tables.Remove(SchemaDataTable); SchemaDataTable.TableName = "ExProp_" + TableName; SchemaDataSet.Tables.Add(SchemaDataTable); } DataRow[] ColoumnAttributes = SchemaDataTable.Select("objname = '" + ColumnName + "'"); if (ColoumnAttributes.Length < 1) return DefaultColumnDefinition; WMB.TableContentDefinition ProcessableColumnDefinition = null; foreach (DataRow AttributeRow in ColoumnAttributes) { String ExtendedAtttributeName = AttributeRow["name"].ToString(); String[] Values = AttributeRow["value"].ToString().Split(';'); WMB.TableContentDefinition NextProcessableColumnDefinition = null; if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_CONNECTOR_ID) { if (Values.Length == 1) { NextProcessableColumnDefinition = new WMB.TableContentDefinition(TableName, ColumnName, Values[0], UpdateAble); } else { String[] AdditionalValues = new String[Values.Length - 1]; int Index = 0; while (Index < (Values.Length - 1)) { AdditionalValues[Index] = Values[Index + 1]; Index++; } NextProcessableColumnDefinition = new WMB.TableContentDefinition(TableName, ColumnName, Values[0], UpdateAble, AdditionalValues); } } if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_ALLOWED_VALUES) { NextProcessableColumnDefinition = new WMB.TableContentDefinition(TableName, ColumnName, Values); } if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_TABLE_COLUMNS) { NextProcessableColumnDefinition = new WMB.TableContentDefinition(TableName, ColumnName, Values); NextProcessableColumnDefinition.m_TypeOfSpecialFieldProcessing = WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_TABLE_COLUMNS; NextProcessableColumnDefinition.m_AllowNewKeysInForeignTable = false; } if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_ALLOWED_TEMPLATES) { NextProcessableColumnDefinition = new WMB.TableContentDefinition(TableName, ColumnName, WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_ALLOWED_TEMPLATES) { m_FieldNameWithAllowedValues = ColumnName }; } if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_IMAGE_LINK_ID) { NextProcessableColumnDefinition = new WMB.TableContentDefinition(TableName, ColumnName, WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_IMAGE_LINK_ID) { m_ForeignConnectionStringName = Values[0], m_ForeignTableName = Values[1], }; } if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_COLOR) { NextProcessableColumnDefinition = new WMB.TableContentDefinition(TableName, ColumnName, WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_COLOR); } if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_IS_LAYOUT_SELECTOR) { NextProcessableColumnDefinition = new WMB.TableContentDefinition(TableName, ColumnName, WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_IS_LAYOUT_SELECTOR); NextProcessableColumnDefinition.m_IsLayoutSelector = true; } if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_ALLOWED_KEYS) { NextProcessableColumnDefinition = new WMB.TableContentDefinition(TableName, ColumnName, Values[0], Values[1], UpdateAble); } if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_PARENT_ID) { NextProcessableColumnDefinition = new WMB.TableContentDefinition(TableName, ColumnName, Values[0], Values[1], Values[2], Values[3]); } if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_DATE_TIME) { NextProcessableColumnDefinition = new WMB.TableContentDefinition(TableName, ColumnName, Values); NextProcessableColumnDefinition.m_TypeOfSpecialFieldProcessing = WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_DATE_TIME; } if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_CONNECTED_VALUE) { NextProcessableColumnDefinition = new WMB.TableContentDefinition(TableName, ColumnName, Values[0], Values[1], UpdateAble); NextProcessableColumnDefinition.m_TypeOfSpecialFieldProcessing = WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_CONNECTED_VALUE; NextProcessableColumnDefinition.m_ConnectedValueControllingTable = Values[2]; NextProcessableColumnDefinition.m_ConnectedValueControllingItem = Values[3]; } if ((ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_DEFAULT_GENERATE_CONTENT) || (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_DO_LOCAL_FILE_SELECTION)) { NextProcessableColumnDefinition = new WMB.TableContentDefinition(TableName, ColumnName, ExtendedAtttributeName); NextProcessableColumnDefinition.m_DefaultFillingMethode = Values[0].Replace(',', ';'); } if (ProcessableColumnDefinition != null) ProcessableColumnDefinition.m_Next = NextProcessableColumnDefinition; else { ProcessableColumnDefinition = NextProcessableColumnDefinition; } } if (ProcessableColumnDefinition == null) ProcessableColumnDefinition = new WMB.TableContentDefinition(ColumnName); foreach (DataRow AttributeRow in ColoumnAttributes) { String ExtendedAtttributeName = AttributeRow["name"].ToString(); String[] Values = AttributeRow["value"].ToString().Split(';'); if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_HELP) { ProcessableColumnDefinition.m_Help = Values[0]; } if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_TOOL_TIP) { ProcessableColumnDefinition.m_ToolTip = Values[0]; } if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_READABLE_NAME) { ProcessableColumnDefinition.m_ReadableName = Values[0]; } if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_DEFAULT_CONTENT) { ProcessableColumnDefinition.m_DefaultContentRules = Values; } if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_COLOR) { ProcessableColumnDefinition.m_DefaultContentRules = new String[] { "Color" }; } if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_IS_LAYOUT_SELECTOR) { ProcessableColumnDefinition.m_IsLayoutSelector = true; if (ItemDesc != null) ItemDesc.IsLayoutSelector = true; } if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_MAX_LENGTH) { ProcessableColumnDefinition.m_MaxLength = Convert.ToInt32(Values[0]); } if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_PREDFINED_CONTENT) { ProcessableColumnDefinition.m_PredefinedContentGroupKeys = String.Join(";", Values); } if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_ALLOW_FOREIGN_KEY_ADD) { ProcessableColumnDefinition.m_AllowNewKeysInForeignTable = true; } if (ExtendedAtttributeName == WMB.TableContentDefinition.SQL_COLUMN_PROPERTY_DO_CONNECTED_VALUE_PROCESSING) { ProcessableColumnDefinition.m_ConnectedValueControllerItem = true; } } return ProcessableColumnDefinition; }