public UnknownAttributePredefinition ToUnknownAttributePredefinition()
 {
     var attributePredef = new UnknownAttributePredefinition(this.AttributeName, this.AttributeType);
     attributePredef.SetMultiplicity(this.Multiplicity);
     attributePredef.SetDefaultValue(this.DefaultValue);
     attributePredef.SetEdgeType(this.EdgeType);
     attributePredef.SetInnerEdgeType(this.InnerEdgeType);
     if (this.IsMandatory == true)
     {
         attributePredef.SetAsMandatory();
     }
     if (this.IsUnique == true)
     {
         attributePredef.SetAsUnique();
     }
     return attributePredef;
 }
        /// <summary>
        /// Generates a attribute definition
        /// </summary>
        /// <param name="aAttribute">The attribute that is going to be transfered</param>
        /// <returns>A attribute predefinition</returns>
        private UnknownAttributePredefinition GenerateUnknownAttribute(KeyValuePair<AttributeDefinition, string> aAttribute)
        {
            UnknownAttributePredefinition result = new UnknownAttributePredefinition(aAttribute.Key.AttributeName, aAttribute.Value);
            
            if (aAttribute.Key.AttributeType.EdgeType != null)
            {
                result.SetInnerEdgeType(aAttribute.Key.AttributeType.EdgeType);
            }

            if (aAttribute.Key.DefaultValue != null)
            {
                result.SetDefaultValue(aAttribute.Key.DefaultValue.ToString());
            }

            switch (aAttribute.Key.AttributeType.Type)
            {
                case SonesGQLGrammar.TERMINAL_SET:

                    result.SetMultiplicityAsSet();

                    break;

                case SonesGQLGrammar.TERMINAL_LIST:

                    result.SetMultiplicityAsList();

                    break;
            }

            if (aAttribute.Key.DefaultValue != null)
                result.SetDefaultValue(aAttribute.Key.DefaultValue.ToString());


            if (aAttribute.Key.AttributeType.TypeCharacteristics.IsMandatory)
                result.SetAsMandatory();

            if (aAttribute.Key.AttributeType.TypeCharacteristics.IsUnique)
                result.SetAsUnique();



            return result;
        }
        /// <summary>
        /// Generates a attribute definition
        /// </summary>
        /// <param name="aAttribute">The attribute that is going to be transfered</param>
        /// <returns>A attribute predefinition</returns>
        private UnknownAttributePredefinition GenerateUnknownAttribute(AttributeDefinition myAttributeDefinition)
        {
            UnknownAttributePredefinition result = new UnknownAttributePredefinition(myAttributeDefinition.AttributeName, myAttributeDefinition.AttributeType.Name);

            if (myAttributeDefinition.AttributeType.EdgeType != null)
            {
                result.SetInnerEdgeType(myAttributeDefinition.AttributeType.EdgeType);
            }

            if (myAttributeDefinition.DefaultValue != null)
            {
                result.SetDefaultValue(myAttributeDefinition.DefaultValue.ToString());
            }

            switch (myAttributeDefinition.AttributeType.Type)
            {
                case SonesGQLGrammar.TERMINAL_SET:

                    result.SetMultiplicityAsSet();

                    break;

                case SonesGQLGrammar.TERMINAL_LIST:

                    result.SetMultiplicityAsList();

                    break;
            }


            return result;
        }