Example #1
0
        private void BuildPropertySets(DataTable table, Dictionary <int, PropertySetType> propertySetTypes)
        {
            List <NodeTypeInfo> ntiList = new List <NodeTypeInfo>();

            foreach (DataRow row in table.Rows)
            {
                int             id              = TypeConverter.ToInt32(row["PropertySetID"]);
                int             parentID        = row["ParentID"] is DBNull ? 0 : TypeConverter.ToInt32(row["ParentID"]);
                string          name            = TypeConverter.ToString(row["Name"]);
                string          className       = row["ClassName"] is DBNull ? null : TypeConverter.ToString(row["ClassName"]);
                PropertySetType propertySetType = propertySetTypes[TypeConverter.ToInt32(row["PropertySetTypeID"])];
                switch (propertySetType)
                {
                case PropertySetType.NodeType:
                    ntiList.Add(new NodeTypeInfo(id, parentID, name, className));
                    break;

                case PropertySetType.ContentListType:
                    CreateContentListType(id, name);
                    break;

                default:
                    throw new InvalidSchemaException(String.Concat(SR.Exceptions.Schema.Msg_UnknownPropertySetType, propertySetType));
                }
            }
            while (ntiList.Count > 0)
            {
                for (int i = ntiList.Count - 1; i >= 0; i--)
                {
                    NodeTypeInfo nti    = ntiList[i];
                    NodeType     parent = null;
                    if (nti.ParentId == 0 || ((parent = _nodeTypes.GetItemById(nti.ParentId)) != null))
                    {
                        CreateNodeType(nti.Id, _nodeTypes.GetItemById(nti.ParentId), nti.Name, nti.ClassName);
                        ntiList.Remove(nti);
                    }
                }
            }
        }
Example #2
0
        private static void BuildNodeTypeRow(XmlNode node, XmlNamespaceManager nsmgr, DataTable table, PropertySetType propertySetType, Dictionary <PropertySetType, int> propertySetTypes)
        {
            // <NodeType itemID="2" name="NodeType11" className="NodeTypeClass2">
            //    <PropertyType name="Int1" />
            //    <PropertyType name="DateTime1" />
            //    <NodeType itemID="8" name="NodeType111" className="NodeTypeClass111" />
            // </NodeType>

            int    id                = GetIntFromXmlAttribute(node, "itemID");
            int    parentId          = node.ParentNode == null ? 0 : GetIntFromXmlAttribute(node.ParentNode, "itemID");
            string name              = GetStringFromXmlAttribute(node, "name");
            string className         = GetStringFromXmlAttribute(node, "className");
            int    propertySetTypeId = propertySetTypes[propertySetType];

            table.Rows.Add(id, parentId == 0 ? DBNull.Value : (object)parentId, name, propertySetTypeId, className == null ? (object)DBNull.Value : (object)className);

            foreach (XmlNode subNode in node.SelectNodes("x:PropertyType", nsmgr))
            {
                BuildPropertySetPropertyTypeRow(subNode, table.DataSet.Tables["PropertySetsPropertyTypes"]);
            }
            foreach (XmlNode subNode in node.SelectNodes("x:NodeType", nsmgr))
            {
                BuildNodeTypeRow(subNode, nsmgr, table, propertySetType, propertySetTypes);
            }
        }
Example #3
0
		private static void BuildNodeTypeRow(XmlNode node, XmlNamespaceManager nsmgr, DataTable table, PropertySetType propertySetType, Dictionary<PropertySetType, int> propertySetTypes)
		{
			//table.Columns.Add("PropertySetID", typeof(int));
			//table.Columns.Add("ParentID", typeof(int));
			//table.Columns.Add("Name", typeof(string));
			//table.Columns.Add("PropertySetTypeID", typeof(int));
			//table.Columns.Add("ClassName", typeof(string));

			//<NodeType itemID="2" name="NodeType11" className="NodeTypeClass2">
			//    <PropertyType name="Int1" />
			//    <PropertyType name="DateTime1" />
			//    <NodeType itemID="8" name="NodeType111" className="NodeTypeClass111" />
			//</NodeType>

			int id = GetIntFromXmlAttribute(node, "itemID");
			int parentId = node.ParentNode == null ? 0 : GetIntFromXmlAttribute(node.ParentNode, "itemID");
			string name = GetStringFromXmlAttribute(node, "name");
			string className = GetStringFromXmlAttribute(node, "className");
			int propertySetTypeId = propertySetTypes[propertySetType];

			table.Rows.Add(id, parentId == 0 ? DBNull.Value : (object)parentId, name, propertySetTypeId, className == null ? (object)DBNull.Value : (object)className);

			foreach (XmlNode subNode in node.SelectNodes("x:PropertyType", nsmgr))
				BuildPropertySetPropertyTypeRow(subNode, table.DataSet.Tables["PropertySetsPropertyTypes"]);
			foreach (XmlNode subNode in node.SelectNodes("x:NodeType", nsmgr))
				BuildNodeTypeRow(subNode, nsmgr, table, propertySetType, propertySetTypes);
		}