public static IQualifier GetQualifier(INHElement @this, QualifierType qualifierType)
        {
            if (qualifierType == QualifierType.Type)
                return GetNameReferenceName(@this);

            return null;
        }
 public static bool Resolved(INHElement @this)
 {
     ReferenceName name = GetNameReferenceName(@this);
         if (name != null)
             return name.Resolved;
         else
             return false;
 }
 public static ISymbolTable GetSymbolTable(INHElement @this, params string[] referenceNames)
 {
     ReferenceName name = GetNameReferenceName(@this);
     if (name != null)
         return name.GetSymbolTable();
     else
         return EmptySymbolTable.INSTANCE;
 }
示例#4
0
        private void CreateModuleReferenceAttributeValue(INHElement element, IXmlAttribute attribute)
        {
            if (attribute.Value == null)
                return;

            ReferenceParser parser = new ReferenceParser();
            IXmlAttributeValue newElement = parser.ParseReferenceModule(attribute.Value);
            ReplaceAttributeValue(attribute, newElement);
        }
示例#5
0
        private void CreateMappingMemberReferenceAttributeValue(INHElement element, IXmlAttribute attribute, IXmlTagContainer parent)
        {
            if (attribute.Value == null)
                return;

            ReferenceParser parser = new ReferenceParser();
            IQualifier qualifier = GetElementQualifier(element, parent);
            IXmlAttributeValue newElement = parser.ParseReferenceIdentifier(attribute.Value, qualifier);
            ReplaceAttributeValue(attribute, newElement);
        }
        public static IQualifier GetQualifier(INHElement @this, QualifierType qualifierType)
        {
            if (qualifierType == QualifierType.Type)
                return (IQualifier)@this;

            if(qualifierType == QualifierType.Table)
            {
                var table = GetNameReferenceTable(@this);
                return table;
            }

            throw new NotImplementedException();
        }
        private static ReferenceTable GetNameReferenceTable(INHElement @this)
        {
            var tag = @this as IXmlTag;
            var xmlAttribute = tag.GetAttribute(attribute => attribute.AttributeName == "table");

            if (xmlAttribute == null)
                return null;

            ReferenceTableAttributeValue attributeValue = (ReferenceTableAttributeValue)xmlAttribute.Value;
            if (attributeValue == null)
                return null;

            ReferenceTable referenceType = attributeValue.GetReferenceTable();
            return referenceType;
        }
 public static QualifierKind GetKind(INHElement @this)
 {
     return QualifierKind.TYPE;
 }
示例#9
0
        private void CreateTableReferenceAttributeValue(INHElement element, IXmlAttribute attribute)
        {
            if (attribute.Value == null)
                return;

            var parser = new NHReferenceParser();
            var newElement = parser.ParseReferenceTable(attribute.Value);
            ReplaceAttributeValue(attribute, newElement);
        }
示例#10
0
        private void ProcessAttribute(INHElement element, IXmlAttribute attribute, IXmlTagContainer parent)
        {
            if (element is IClassElement)
            {
                if (attribute.XmlName == "name" || attribute.XmlName == "proxy")
                {
                    CreateTypeReferenceAttributeValue(element, attribute);
                    return;
                }
            }

            if (element is IComponentElement
                || element is ICompositeElementElement
                || element is ICompositeIdElement
                || element is ICompositeIndexElement
                || element is IIndexManyToManyElement
                || element is IKeyManyToOneElement
                || element is IManyToManyElement
                || element is IManyToOneElement
                || element is IMetaValueElement
                || element is INestedCompositeElementElement
                || element is IOneToManyElement
                || element is IOneToOneElement
                || element is IReturnElement)
            {
                if (attribute.XmlName == "class")
                {
                    CreateTypeReferenceAttributeValue(element, attribute);
                    return;
                }
            }

            if(element is ISubclassElement)
            {
                if (attribute.XmlName == "name" || attribute.XmlName == "proxy")
                {
                    CreateTypeReferenceAttributeValue(element, attribute);
                    return;
                }
            }

            IHibernateMappingElement hibernateMappingElement = element as IHibernateMappingElement;
            if (hibernateMappingElement != null)
            {
                if (attribute.XmlName == "assembly")
                {
                    CreateModuleReferenceAttributeValue(hibernateMappingElement, attribute);
                }
                else if (attribute.XmlName == "namespace")
                {
                    CreateNamespaceReferenceAttributeValue(hibernateMappingElement, attribute);
                    return;
                }

            }

            if (element is IAnyElement
                 || element is IArrayElement
                 || element is IBagElement
                 || element is IIdbagElement
                 || element is IIdElement
                 || element is IKeyManyToOneElement
                 || element is IKeyPropertyElement
                 || element is IListElement
                 || element is IManyToOneElement
                 || element is IMapElement
                 || element is IOneToOneElement
                 || element is IPrimitiveArrayElement
                 || element is IPropertyElement
                 || element is IResultsetElement
                 || element is IReturnColumnElement
                 || element is IReturnPropertyElement
                 || element is ISetElement
                 || element is ITimestampElement
                 || element is IVersionElement
                || element is ICompositeIdElement)
            {
                if (attribute.XmlName == "name")
                {
                    CreateMappingMemberReferenceAttributeValue(element, attribute, parent);
                    return;
                }

            }

            if (element is IPropertyElement
                || element is IIdElement
                || element is IKeyPropertyElement
                || element is  IElementElement
                || element is  IDiscriminatorElement
                || element is  ICollectionIdElement
                || element is  IVersionElement
                || element is IReturnScalarElement
                || element is IIndexElement
                || element is IFilterParamElement
            )
            {
                if (attribute.XmlName == "type")
                {
                    CreateTypeWithNHAliasReferenceAttributeValue(element, attribute);
                    return;
                }
            }

            if (attribute.XmlName == "table")
            {
                CreateTableReferenceAttributeValue(element, attribute);
                return;
            }

            if (element is IComponentElement
              || element is ICompositeElementElement
              || element is ICompositeIdElement
              || element is ICompositeIndexElement
              || element is IImportElement
              || element is IIndexManyToManyElement
              || element is IKeyManyToOneElement
              || element is IManyToManyElement
              || element is IManyToOneElement
              || element is IMetaValueElement
              || element is INestedCompositeElementElement
              || element is IOneToManyElement
              || element is IOneToOneElement
              || element is IReturnElement)
             {
                 if (attribute.XmlName == "class")
                 {
                     CreateTypeReferenceAttributeValue(element, attribute);
                     return;
                 }
             }
        }
示例#11
0
 private void HandleCreateTagElement(INHElement element, IXmlTagHeaderNode header, IXmlTagContainer tag)
 {
     foreach (IXmlAttribute attribute in header.Attributes)
     {
         ProcessAttribute(element, attribute, tag);
     }
 }
示例#12
0
        private IQualifier GetElementQualifier(INHElement element, IXmlTagContainer parent)
        {
            ITreeNode node = (ITreeNode)parent;
            while(node != null)
            {
                if (node is IQualifierOwner)
                {
                    var qualifierOwner = (IQualifierOwner)node;
                    var qualifier = qualifierOwner.GetQualifier(QualifierType.Type);
                    if (qualifier != null)
                        return qualifier;
                }
                node = node.Parent;
            }

            return null;
        }
示例#13
0
        private void CreateTypeWithNHAliasReferenceAttributeValue(INHElement element, IXmlAttribute attribute)
        {
            if (attribute.Value == null)
                return;

            var parser = new ReferenceParser();
            var newElement = parser.ParseReferenceType(attribute.Value, new NHGlobalQualifier(element));
            ReplaceAttributeValue(attribute, newElement);
        }
示例#14
0
        private IQualifier GetElementQualifier(INHElement element, IXmlTagContainer parent)
        {
            ITreeNode node = (ITreeNode)parent;
            while(node != null)
            {
                if (node is IQualifier)
                    return (IQualifier)node;
                node = node.Parent;
            }

            return null;
        }