FormatoAbstracto.vb

  1. ' FormatoAbstracto.vb — ProInf.net — feb-2012
  2. '
  3. ' Clase base de los archivos para exportar
  4. ' a los formatos: CSV, XML, HTML, etc.
  5.  
  6. Imports System.IO
  7.  
  8. Public MustInherit Class FormatoAbstracto
  9.  
  10. Public Property Ruta As String
  11. Protected fichero As StreamWriter
  12.  
  13. Public Sub Inicio()
  14. AbrirFichero()
  15. InicioDocumento()
  16. End Sub
  17.  
  18. Public Sub Fin()
  19. FinDocumento()
  20. CerrarFichero()
  21. End Sub
  22.  
  23. '--------------------------------------------
  24. ' Gestión del archivo
  25.  
  26. Private Sub AbrirFichero()
  27. fichero = New StreamWriter(Ruta, append:=False)
  28. End Sub
  29.  
  30. Private Sub CerrarFichero()
  31. fichero.Close()
  32. End Sub
  33.  
  34. Protected Sub Escribir(ByVal texto As String)
  35. fichero.Write(texto)
  36. End Sub
  37.  
  38. Protected Sub EscribirLinea(Optional ByVal texto As String = "")
  39. fichero.WriteLine(texto)
  40. End Sub
  41.  
  42. Protected Function ObtenerNombreTabla() As String
  43. Dim nombre = System.IO.Path.GetFileNameWithoutExtension(Ruta)
  44. Return Utilidades.SimplificarNombre(nombre)
  45. End Function
  46.  
  47. '--------------------------------------------
  48. ' Para implementar en las clases descendientes
  49.  
  50. Protected Overridable Sub InicioDocumento()
  51. End Sub
  52.  
  53. Protected Overridable Sub FinDocumento()
  54. End Sub
  55.  
  56. Public Overridable Sub EscribirMetadatos(ByVal campos As ICampo())
  57. End Sub
  58.  
  59. Public Overridable Sub EscribirTitulos(ByVal titulos As String())
  60. End Sub
  61.  
  62. Public Overridable Sub EscribirValores(ByVal valores As String())
  63. End Sub
  64.  
  65. Public Overridable Function ObtenerExtension() As String
  66. Dim clase As String = Me.GetType().Name
  67. Return "." & clase.Substring("Archivo".Length).ToLower()
  68. End Function
  69.  
  70. End Class

Proinf.net