Ejemplo n.º 1
0
        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;
            }
Ejemplo n.º 2
0
		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;
			
			}