PageRenderTime 48ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/src/FluentNHibernate/MappingModel/HibernateMapping.cs

http://github.com/jagregory/fluent-nhibernate
C# | 158 lines | 131 code | 27 blank | 0 comment | 10 complexity | 9496a9b696fc7f9caae747acb328c7bd MD5 | raw file
Possible License(s): BSD-3-Clause, CC-BY-SA-3.0, Apache-2.0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq.Expressions;
  4. using FluentNHibernate.MappingModel.ClassBased;
  5. using FluentNHibernate.Utils;
  6. using FluentNHibernate.Visitors;
  7. namespace FluentNHibernate.MappingModel
  8. {
  9. [Serializable]
  10. public class HibernateMapping : MappingBase
  11. {
  12. readonly IList<ClassMapping> classes;
  13. readonly IList<FilterDefinitionMapping> filters;
  14. readonly IList<ImportMapping> imports;
  15. readonly AttributeStore attributes;
  16. public HibernateMapping(): this(new AttributeStore())
  17. {}
  18. public HibernateMapping(AttributeStore attributes)
  19. {
  20. this.attributes = attributes;
  21. classes = new List<ClassMapping>();
  22. filters = new List<FilterDefinitionMapping>();
  23. imports = new List<ImportMapping>();
  24. }
  25. public override void AcceptVisitor(IMappingModelVisitor visitor)
  26. {
  27. visitor.ProcessHibernateMapping(this);
  28. foreach (var import in Imports)
  29. visitor.Visit(import);
  30. foreach (var classMapping in Classes)
  31. visitor.Visit(classMapping);
  32. foreach (var filterMapping in Filters)
  33. visitor.Visit(filterMapping);
  34. }
  35. public IEnumerable<ClassMapping> Classes
  36. {
  37. get { return classes; }
  38. }
  39. public IEnumerable<FilterDefinitionMapping> Filters
  40. {
  41. get { return filters; }
  42. }
  43. public IEnumerable<ImportMapping> Imports
  44. {
  45. get { return imports; }
  46. }
  47. public void AddClass(ClassMapping classMapping)
  48. {
  49. classes.Add(classMapping);
  50. }
  51. public void AddFilter(FilterDefinitionMapping filterMapping)
  52. {
  53. filters.Add(filterMapping);
  54. }
  55. public void AddImport(ImportMapping importMapping)
  56. {
  57. imports.Add(importMapping);
  58. }
  59. public string Catalog
  60. {
  61. get { return attributes.GetOrDefault<string>("Catalog"); }
  62. }
  63. public string DefaultAccess
  64. {
  65. get { return attributes.GetOrDefault<string>("DefaultAccess"); }
  66. }
  67. public string DefaultCascade
  68. {
  69. get { return attributes.GetOrDefault<string>("DefaultCascade"); }
  70. }
  71. public bool AutoImport
  72. {
  73. get { return attributes.GetOrDefault<bool>("AutoImport"); }
  74. }
  75. public string Schema
  76. {
  77. get { return attributes.GetOrDefault<string>("Schema"); }
  78. }
  79. public bool DefaultLazy
  80. {
  81. get { return attributes.GetOrDefault<bool>("DefaultLazy"); }
  82. }
  83. public string Namespace
  84. {
  85. get { return attributes.GetOrDefault<string>("Namespace"); }
  86. }
  87. public string Assembly
  88. {
  89. get { return attributes.GetOrDefault<string>("Assembly"); }
  90. }
  91. public bool Equals(HibernateMapping other)
  92. {
  93. if (ReferenceEquals(null, other)) return false;
  94. if (ReferenceEquals(this, other)) return true;
  95. return other.classes.ContentEquals(classes) &&
  96. other.filters.ContentEquals(filters) &&
  97. other.imports.ContentEquals(imports) &&
  98. Equals(other.attributes, attributes);
  99. }
  100. public override bool Equals(object obj)
  101. {
  102. if (ReferenceEquals(null, obj)) return false;
  103. if (ReferenceEquals(this, obj)) return true;
  104. if (obj.GetType() != typeof(HibernateMapping)) return false;
  105. return Equals((HibernateMapping)obj);
  106. }
  107. public override int GetHashCode()
  108. {
  109. unchecked
  110. {
  111. int result = (classes != null ? classes.GetHashCode() : 0);
  112. result = (result * 397) ^ (filters != null ? filters.GetHashCode() : 0);
  113. result = (result * 397) ^ (imports != null ? imports.GetHashCode() : 0);
  114. result = (result * 397) ^ (attributes != null ? attributes.GetHashCode() : 0);
  115. return result;
  116. }
  117. }
  118. public void Set<T>(Expression<Func<HibernateMapping, T>> expression, int layer, T value)
  119. {
  120. Set(expression.ToMember().Name, layer, value);
  121. }
  122. protected override void Set(string attribute, int layer, object value)
  123. {
  124. attributes.Set(attribute, layer, value);
  125. }
  126. public override bool IsSpecified(string attribute)
  127. {
  128. return attributes.IsSpecified(attribute);
  129. }
  130. }
  131. }