Diccionarios.vb

  1. ' Diccionarios.vb — ProInf.net — feb-2012
  2. '
  3. ' Parte fija y compartida de los datos
  4.  
  5. Public Class DiccionarioFormatosArchivo
  6. Inherits Dictionary(Of String, FormatoAbstracto)
  7.  
  8. Public Sub New()
  9. Add("Punto y coma CSV", New ArchivoCSV())
  10. Add("Tabulado TAB", New ArchivoTAB())
  11. Add("Espaciado PRN", New ArchivoPRN())
  12. Add("Datos JSON", New ArchivoJSON())
  13. Add("Datos XML", New ArchivoXML())
  14. Add("Página web HTML", New ArchivoHTML())
  15. Add("Hoja cálculo XLS", New ArchivoXLS())
  16. Add("Base datos SQL", New ArchivoSQL())
  17. End Sub
  18.  
  19. End Class
  20.  
  21. Public Class DiccionarioPredefinidos
  22. Inherits Dictionary(Of String, CampoPredefinido)
  23.  
  24. Public Sub New()
  25. AgregarCamposPredefinidos()
  26.  
  27. EnlazarSexoConNombre(True)
  28. EnlazarProvinciaConMunicipio(True)
  29. EnlazarEdadConNacimiento(True)
  30.  
  31. NombrarCampos()
  32. End Sub
  33.  
  34. Private Sub AgregarCamposPredefinidos()
  35. Add("id", New CampoId())
  36. Add("nombre", New CampoNombre())
  37. Add("apellido1", New CampoApellido())
  38. Add("apellido2", New CampoApellido())
  39. Add("sexo", New CampoSexo())
  40. Add("nif", New CampoNIF())
  41. Add("direccion", New CampoDireccion())
  42. Add("municipio", New CampoMunicipio())
  43. Add("provincia", New CampoProvincia())
  44. Add("cp", New CampoCodigoPostal())
  45. Add("movil", New CampoTelefono())
  46. Add("telefono", New CampoTelefonoFijo())
  47. Add("correo", New CampoCorreo())
  48. Add("nacimiento", New CampoNacimiento())
  49. Add("edad", New CampoEdad())
  50. Add("matricula", New CampoMatricula())
  51. End Sub
  52.  
  53. Public Sub EnlazarSexoConNombre(ByVal ok As Boolean)
  54. Dim sexo As CampoSexo = Me("sexo")
  55. sexo.CampoNombre = If(ok, Me("nombre"), Nothing)
  56. End Sub
  57.  
  58. Public Sub EnlazarProvinciaConMunicipio(ByVal ok As Boolean)
  59. Dim provincia As CampoProvincia = Me("provincia")
  60. provincia.CampoMunicipio = If(ok, Me("municipio"), Nothing)
  61. End Sub
  62.  
  63. Public Sub EnlazarEdadConNacimiento(ByVal ok As Boolean)
  64. Dim edad As CampoEdad = Me("edad")
  65. edad.CampoNacimiento = If(ok, Me("nacimiento"), Nothing)
  66. End Sub
  67.  
  68. Public Sub EnlazarCodigoPostalConProvincia(ByVal ok As Boolean)
  69. Dim cp As CampoCodigoPostal = Me("cp")
  70. cp.CampoProvincia = If(ok, Me("provincia"), Nothing)
  71. End Sub
  72.  
  73. Public Sub EnlazarTelefonoFijoConProvincia(ByVal ok As Boolean)
  74. Dim fijo As CampoTelefonoFijo = Me("telefono")
  75. fijo.CampoProvincia = If(ok, Me("provincia"), Nothing)
  76. End Sub
  77.  
  78. Public Sub EnlazarCorreoConNombre(ByVal ok As Boolean)
  79. Dim correo As CampoCorreo = Me("correo")
  80. correo.CampoNombre = If(ok, Me("nombre"), Nothing)
  81. End Sub
  82.  
  83. Public Sub EnlazarCorreoConApellido(ByVal ok As Boolean)
  84. Dim correo As CampoCorreo = Me("correo")
  85. correo.CampoApellido = If(ok, Me("apellido1"), Nothing)
  86. End Sub
  87.  
  88. Private Sub NombrarCampos()
  89. Dim enumerador As IDictionaryEnumerator = Me.GetEnumerator()
  90. Do While enumerador.MoveNext()
  91. Dim campo As CampoPredefinido = enumerador.Value
  92. campo.Nombre = Utilidades.Capitalizar(enumerador.Key)
  93. Loop
  94. End Sub
  95.  
  96. End Class
  97.  
  98. Public Class DiccionarioCamposSQL
  99. Inherits Dictionary(Of String, String)
  100.  
  101. Public Sub New()
  102. AgregarCamposPredefinidos()
  103. AgregarTiposCampo()
  104. End Sub
  105.  
  106. Private Sub AgregarCamposPredefinidos()
  107. Add("id", "INTEGER AUTO_INCREMENT PRIMARY KEY")
  108. Add("nombre", "VARCHAR(25) NOT NULL")
  109. Add("apellido1", "VARCHAR(25)")
  110. Add("apellido2", "VARCHAR(25)")
  111. Add("sexo", "ENUM ('H','M')")
  112. Add("nif", "CHAR(9)")
  113. Add("direccion", "VARCHAR(100)")
  114. Add("municipio", "VARCHAR(25)")
  115. Add("provincia", "VARCHAR(25)")
  116. Add("cp", "CHAR(5)")
  117. Add("movil", "VARCHAR(50)")
  118. Add("telefono", "VARCHAR(50)")
  119. Add("correo", "VARCHAR(50)")
  120. Add("nacimiento", "DATE")
  121. Add("edad", "INTEGER")
  122. Add("matricula", "CHAR(8)")
  123. End Sub
  124.  
  125. Private Sub AgregarTiposCampo()
  126. Add("texto", "VARCHAR(50)")
  127. Add("entero", "INTEGER")
  128. Add("numero", "NUMERIC(10,2)")
  129. Add("logico", "BOOLEAN")
  130. Add("fecha", "DATE")
  131. Add("hora", "TIME")
  132. End Sub
  133.  
  134. Function ObtenerTipo(ByVal campo As ICampo) As String
  135. Try
  136. Return Me(campo.Nombre.ToLower())
  137. Catch ex As KeyNotFoundException
  138. Try
  139. Return Me(campo.Tipo.ToString().ToLower())
  140. Catch ex2 As KeyNotFoundException
  141. Return ""
  142. End Try
  143. End Try
  144. End Function
  145.  
  146. End Class
  147.  
  148. Public Class DiccionarioNumerales
  149. Inherits Dictionary(Of Numerales, INumeral)
  150.  
  151. Public Sub New()
  152. Add(Numerales.Alfabético, New NumeralAlfabetico())
  153. Add(Numerales.Alfabético_Español, New NumeralAlfabeticoEspañol(enPlural:=False))
  154. Add(Numerales.Alfabético_Griego, New NumeralGriego())
  155. Add(Numerales.Alfabético_Musical, New NumeralMusical())
  156. Add(Numerales.Alfabético_Radiofónico, New NumeralRadiofonico())
  157. Add(Numerales.Cardinal_Alfaromano, New NumeralAlfaromano())
  158. Add(Numerales.Cardinal_Español, New NumeralEspañol())
  159. Add(Numerales.Cardinal_Esperanto, New NumeralEsperanto())
  160. Add(Numerales.Cardinal_Interlingua, New NumeralInterlingua())
  161. Add(Numerales.Cardinal_Klingon, New NumeralKlingon())
  162. Add(Numerales.Cardinal_Japonés, New NumeralJapones())
  163. Add(Numerales.Cardinal_Latín, New NumeralLatin())
  164. Add(Numerales.Cardinal_Lojban, New NumeralLojban())
  165. Add(Numerales.Cardinal_Sona, New NumeralSona())
  166. Add(Numerales.Medición_Internacional, New NumeralInternacional(enLetras:=True))
  167. Add(Numerales.Medición_Temporal, New NumeralTemporal(enLetras:=True))
  168. Add(Numerales.Numeración_Arábiga, New NumeralArabigo())
  169. Add(Numerales.Numeración_Hexadecimal, New NumeralHexadecimal())
  170. Add(Numerales.Numeración_Romana, New NumeralRomano())
  171. Add(Numerales.Ordinal_Español, New NumeralOrdinalEspañol())
  172. End Sub
  173.  
  174. Public Function EsNumerico(ByVal alfabeto As Numerales) As Boolean
  175. Return alfabeto = Numerales.Numeración_Arábiga
  176. End Function
  177.  
  178. End Class

Proinf.net