コード例 #1
0
ファイル: CreateVertexTypesNode.cs プロジェクト: loubo/sones
        /// <summary>
        /// Generates a single vertex type predefinition
        /// </summary>
        /// <param name="aDefinition">The definition that has been created by the gql</param>
        /// <returns>The corresponding vertex type predefinition</returns>
        private VertexTypePredefinition GenerateAVertexTypePredefinition(GraphDBTypeDefinition aDefinition)
        {
            var result = new VertexTypePredefinition(aDefinition.Name);

            #region extends

            if (aDefinition.ParentType != null && aDefinition.ParentType.Length > 0)
            {
                result.SetSuperVertexTypeName(aDefinition.ParentType);
            }

            #endregion

            #region abstract

            if (aDefinition.IsAbstract)
            {
                result.MarkAsAbstract();
            }

            #endregion

            #region comment

            if (aDefinition.Comment != null && aDefinition.Comment.Length > 0)
            {
                result.SetComment(aDefinition.Comment);
            }

            #endregion

            #region attributes

            if (aDefinition.Attributes != null)
            {
                foreach (var aAttribute in aDefinition.Attributes)
                {
                    result.AddUnknownAttribute(GenerateUnknownAttribute(aAttribute));
                }
            }

            #endregion

            #region incoming edges

            if (aDefinition.BackwardEdgeNodes != null)
            {
                foreach (var aIncomingEdge in aDefinition.BackwardEdgeNodes)
                {
                    result.AddIncomingEdge(GenerateAIncomingEdge(aIncomingEdge));
                }
            }

            #endregion

            #region indices

            if (aDefinition.Indices != null)
            {
                foreach (var aIndex in aDefinition.Indices)
                {
                    result.AddIndex(GenerateIndex(aIndex, aDefinition.Name));
                }
            }

            #endregion

            return result;
        }