LookupRepository.cs
上传用户:husern
上传日期:2022-03-24
资源大小:534k
文件大小:5k
源码类别:

编辑器/阅读器

开发平台:

C#

  1. // -- FILE ------------------------------------------------------------------
  2. // name       : LookupRepository.cs
  3. // project    : Itenso Web User Forms
  4. // created    : Jani Giannoudis - 2008.10.30
  5. // language   : c#
  6. // environment: .NET 2.0
  7. // copyright  : (c) 2008 by Itenso GmbH, Switzerland
  8. // --------------------------------------------------------------------------
  9. using System;
  10. using System.Collections;
  11. using System.Collections.Generic;
  12. namespace Itenso.WebUserForms.Data.Lookup
  13. {
  14. // ------------------------------------------------------------------------
  15. public abstract class LookupRepository : ILookupRepository
  16. {
  17. // ----------------------------------------------------------------------
  18. protected LookupRepository()
  19. {
  20. } // LookupRepository
  21. // ----------------------------------------------------------------------
  22. public ILookupValueCollection this[ string lookupName ]
  23. {
  24. get { return GetLookup( lookupName ); }
  25. } // this[string]
  26. // ----------------------------------------------------------------------
  27. public ILookupValueCollection GetLookup( string lookupName )
  28. {
  29. return GetLookup( lookupName, null );
  30. } // GetLookup
  31. // ----------------------------------------------------------------------
  32. public ILookupValueCollection GetLookup( string lookupName, string formType )
  33. {
  34. if ( string.IsNullOrEmpty( lookupName ) )
  35. {
  36. throw new ArgumentException( "lookupName" );
  37. }
  38. string lookupKey = GetLookupKey( lookupName, formType );
  39. if ( this.lookups.ContainsKey( lookupKey ) )
  40. {
  41. return this.lookups[ lookupKey ];
  42. }
  43. ILookupValueCollection lookupValues = OnLookupRequest( lookupName, formType );
  44. if ( lookupValues == null )
  45. {
  46. return null;
  47. }
  48. this.lookups.Add( lookupKey, lookupValues );
  49. return lookupValues;
  50. } // GetLookup
  51. // ----------------------------------------------------------------------
  52. public bool Contains( string lookupName )
  53. {
  54. return Contains( lookupName, null );
  55. } // Contains
  56. // ----------------------------------------------------------------------
  57. public bool Contains( string lookupName, string formType )
  58. {
  59. if ( string.IsNullOrEmpty( lookupName ) )
  60. {
  61. throw new ArgumentException( "lookupName" );
  62. }
  63. return this.lookups.ContainsKey( GetLookupKey( lookupName, formType ) );
  64. } // Contains
  65. // ----------------------------------------------------------------------
  66. public void Add( string lookupName, ILookupValueCollection lookupValues )
  67. {
  68. Add( lookupName, null, lookupValues );
  69. } // Add
  70. // ----------------------------------------------------------------------
  71. public void Add( string lookupName, string formType, ILookupValueCollection lookupValues )
  72. {
  73. if ( string.IsNullOrEmpty( lookupName ) )
  74. {
  75. throw new ArgumentException( "lookupName" );
  76. }
  77. this.lookups.Add( GetLookupKey( lookupName, formType ), lookupValues );
  78. } // Add
  79. // ----------------------------------------------------------------------
  80. public void Clear()
  81. {
  82. this.lookups.Clear();
  83. } // Clear
  84. // ----------------------------------------------------------------------
  85. public void Remove( string lookupName )
  86. {
  87. Remove( lookupName, null );
  88. } // Remove
  89. // ----------------------------------------------------------------------
  90. public void Remove( string lookupName, string formType )
  91. {
  92. if ( string.IsNullOrEmpty( lookupName ) )
  93. {
  94. throw new ArgumentException( "lookupName" );
  95. }
  96. string lookupKey = GetLookupKey( lookupName, formType );
  97. if ( !this.lookups.ContainsKey( lookupKey ) )
  98. {
  99. return;
  100. }
  101. this.lookups.Remove( lookupKey );
  102. } // Remove
  103. // ----------------------------------------------------------------------
  104. protected abstract ILookupValueCollection OnLookupRequest( string lookupName, string formType );
  105. // ----------------------------------------------------------------------
  106. private string GetLookupKey( string lookupName, string formType )
  107. {
  108. if ( string.IsNullOrEmpty( formType ) )
  109. {
  110. return lookupName;
  111. }
  112. return string.Concat( lookupName, ".", formType );
  113. } // GetLookupKey
  114. // ----------------------------------------------------------------------
  115. // members
  116. private readonly Dictionary<string, ILookupValueCollection> lookups = 
  117. new Dictionary<string, ILookupValueCollection>();
  118. } // class LookupRepository
  119. } // namespace Itenso.WebUserForms.Data.Lookup
  120. // -- EOF -------------------------------------------------------------------