/InterfazGrafico/LibreriaClases/Propiedades/PTransformarDatos.cs

http://vdata.codeplex.com · C# · 335 lines · 257 code · 25 blank · 53 comment · 3 complexity · 6da6c2018d501b53d425d7f811880149 MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Xml;
  5. using InterfazGrafico.LibreriaClases.Clases;
  6. using InterfazGrafico.LibreriaConstantes;
  7. using InterfazGrafico.LibreriaConstantes.Elementos;
  8. namespace InterfazGrafico.LibreriaClases.Propiedades
  9. {
  10. /// <summary>
  11. /// Almacena las propiedades de un elemento específico.
  12. /// </summary>
  13. public class PTransformarDatos : Propiedades
  14. {
  15. /// <summary>
  16. /// Entrada de datos.
  17. /// </summary>
  18. public string Entrada
  19. {
  20. get
  21. {
  22. return this.getPropiedadString(CTransformarDatos.Entrada);
  23. }
  24. set
  25. {
  26. this.setOrAddPropiedad(CTransformarDatos.Entrada, value);
  27. }
  28. }
  29. /// <summary>
  30. /// Salida de datos.
  31. /// </summary>
  32. public string Salida
  33. {
  34. get
  35. {
  36. return this.getPropiedadString(CTransformarDatos.Salida);
  37. }
  38. set
  39. {
  40. this.setOrAddPropiedad(CTransformarDatos.Salida, value);
  41. }
  42. }
  43. /// <summary>
  44. /// Estructura de entrada.
  45. /// </summary>
  46. public string EstructuraEntrada
  47. {
  48. get
  49. {
  50. return this.getPropiedadString(CTransformarDatos.EstructuraEntrada);
  51. }
  52. set
  53. {
  54. this.setOrAddPropiedad(CTransformarDatos.EstructuraEntrada, value);
  55. }
  56. }
  57. /// <summary>
  58. /// Estructura de salida.
  59. /// </summary>
  60. public string EstructuraSalida
  61. {
  62. get
  63. {
  64. return this.getPropiedadString(CTransformarDatos.EstructuraSalida);
  65. }
  66. set
  67. {
  68. this.setOrAddPropiedad(CTransformarDatos.EstructuraSalida, value);
  69. }
  70. }
  71. /// <summary>
  72. /// Lista de funciones.
  73. /// </summary>
  74. public List<string> ListaFunciones
  75. {
  76. get
  77. {
  78. return this.getPropiedadListaString(CTransformarDatos.Funciones);
  79. }
  80. set
  81. {
  82. this.setOrAddPropiedad(CTransformarDatos.Funciones, value);
  83. }
  84. }
  85. /// <summary>
  86. /// Lista de campos origen a los que aplica las funciones.
  87. /// </summary>
  88. public List<string> ListaCamposOrigen
  89. {
  90. get
  91. {
  92. return this.getPropiedadListaString(CTransformarDatos.CamposOrigen);
  93. }
  94. set
  95. {
  96. this.setOrAddPropiedad(CTransformarDatos.CamposOrigen, value);
  97. }
  98. }
  99. /// <summary>
  100. /// Lista de campos destino a los que aplica las funciones.
  101. /// </summary>
  102. public List<string> ListaCamposDestino
  103. {
  104. get
  105. {
  106. return this.getPropiedadListaString(CTransformarDatos.CamposDestino);
  107. }
  108. set
  109. {
  110. this.setOrAddPropiedad(CTransformarDatos.CamposDestino, value);
  111. }
  112. }
  113. /// <summary>
  114. /// Lista de parámetros de las funciones.
  115. /// </summary>
  116. public List<List<string>> ListaParametros
  117. {
  118. get
  119. {
  120. return this.getPropiedadListaListaString(CTransformarDatos.Parametros);
  121. }
  122. set
  123. {
  124. this.setOrAddPropiedad(CTransformarDatos.Parametros, value);
  125. }
  126. }
  127. /// <summary>
  128. /// Campo en el que incluir secuencia numérica.
  129. /// </summary>
  130. public string CampoSecuencia
  131. {
  132. get
  133. {
  134. return this.getPropiedadString(CTransformarDatos.CampoSecuencia);
  135. }
  136. set
  137. {
  138. this.setOrAddPropiedad(CTransformarDatos.CampoSecuencia, value);
  139. }
  140. }
  141. /// <summary>
  142. /// Campo en el que incluir la fecha actual.
  143. /// </summary>
  144. public string CampoActual
  145. {
  146. get
  147. {
  148. return this.getPropiedadString(CTransformarDatos.CampoFecha);
  149. }
  150. set
  151. {
  152. this.setOrAddPropiedad(CTransformarDatos.CampoFecha, value);
  153. }
  154. }
  155. /// <summary>
  156. /// Constructor por defecto.
  157. /// </summary>
  158. public PTransformarDatos()
  159. : base()
  160. {
  161. }
  162. /// <summary>
  163. /// Obtiene los parámetros a partir del fichero XML indicado.
  164. /// </summary>
  165. /// <param name="fichero">Fichero de configuración XML</param>
  166. override public void leer(string fichero)
  167. {
  168. try
  169. {
  170. base.leer(fichero);
  171. XmlDocument xml = LeerXml.AbrirFicheroParametros(fichero);
  172. try
  173. { this.Entrada = LeerXml.ObtenerValorCampo(xml, CTransformarDatos.RutaEntrada); }
  174. catch (Exception)
  175. { this.Entrada = string.Empty; };
  176. try
  177. { this.Salida = LeerXml.ObtenerValorCampo(xml, CTransformarDatos.RutaSalida); }
  178. catch (Exception)
  179. { this.Salida = string.Empty; }
  180. try
  181. { this.EstructuraEntrada = LeerXml.ObtenerValorCampo(xml, CTransformarDatos.RutaEstructuraEntrada); }
  182. catch (Exception)
  183. { this.EstructuraEntrada = string.Empty; }
  184. try
  185. { this.EstructuraSalida = LeerXml.ObtenerValorCampo(xml, CTransformarDatos.RutaEstructuraSalida); }
  186. catch (Exception)
  187. { this.EstructuraSalida = string.Empty; }
  188. // Funciones
  189. try
  190. {
  191. int numeroFunciones = LeerXml.ObtenerNumeroNodosCampo(xml, CTransformarDatos.RutaFunciones);
  192. for (int indiceFuncion = 0; indiceFuncion < numeroFunciones; indiceFuncion++)
  193. {
  194. string funcion = string.Empty;
  195. try
  196. { funcion = LeerXml.ObtenerValorCampo(xml, CTransformarDatos.RutaFunciones, indiceFuncion, Constantes.NodoXMLActual + CTransformarDatos.NodoFuncionesFuncionFuncion); }
  197. catch (Exception)
  198. { continue; }
  199. if (!string.Empty.Equals(funcion))
  200. {
  201. this.ListaFunciones.Add(funcion);
  202. // Campo origen
  203. string campoOrigen = string.Empty;
  204. try
  205. { campoOrigen = LeerXml.ObtenerValorCampo(xml, CTransformarDatos.RutaFunciones, indiceFuncion, Constantes.NodoXMLActual + CTransformarDatos.NodoFuncionesFuncionOrigen); }
  206. catch (Exception)
  207. { campoOrigen = string.Empty; }
  208. this.ListaCamposOrigen.Add(campoOrigen);
  209. // Campo destino
  210. string campoDestino = string.Empty;
  211. try
  212. { campoDestino = LeerXml.ObtenerValorCampo(xml, CTransformarDatos.RutaFunciones, indiceFuncion, Constantes.NodoXMLActual + CTransformarDatos.NodoFuncionesFuncionDestino); }
  213. catch (Exception)
  214. { campoDestino = string.Empty; }
  215. this.ListaCamposDestino.Add(campoDestino);
  216. // Parametros
  217. List<string> parametros = new List<string>();
  218. try
  219. {
  220. int numeroParametros = LeerXml.ObtenerNumeroNodosCampo(xml, CTransformarDatos.RutaFunciones, indiceFuncion, Constantes.NodoXMLActual + CTransformarDatos.NodoFuncionesFuncionParametros);
  221. for (int indiceParametro = 0; indiceParametro < numeroParametros; indiceParametro++)
  222. {
  223. string parametro = string.Empty;
  224. try
  225. { parametro = LeerXml.ObtenerValorCampo(xml, CTransformarDatos.RutaFunciones, indiceFuncion, Constantes.NodoXMLActual + CTransformarDatos.NodoFuncionesFuncionParametros, indiceParametro); }
  226. catch (Exception)
  227. { parametro = string.Empty; }
  228. parametros.Add(parametro);
  229. }
  230. }
  231. catch (Exception)
  232. {
  233. parametros = new List<string>();
  234. }
  235. this.ListaParametros.Add(parametros);
  236. }
  237. }
  238. }
  239. catch (Exception)
  240. {
  241. this.ListaFunciones = new List<string>();
  242. this.ListaCamposOrigen = new List<string>();
  243. this.ListaCamposDestino = new List<string>();
  244. this.ListaParametros = new List<List<string>>();
  245. }
  246. // Campo secuencia
  247. try
  248. { this.CampoSecuencia = LeerXml.ObtenerValorCampo(xml, CTransformarDatos.RutaSecuencia); }
  249. catch (Exception)
  250. { this.CampoSecuencia = string.Empty; }
  251. // Campo fecha actual
  252. try
  253. { this.CampoActual = LeerXml.ObtenerValorCampo(xml, CTransformarDatos.RutaFechaActual); }
  254. catch (Exception)
  255. { this.CampoActual = string.Empty; }
  256. }
  257. catch (Exception ex)
  258. {
  259. throw new ApplicationException(Constantes.ERROR_LECTURA_FICHERO_CONFIGURACION, ex);
  260. }
  261. }
  262. /// <summary>
  263. /// Escribe los parámetros al fichero XML indicado.
  264. /// </summary>
  265. /// <param name="fichero">Fichero de configuración XML</param>
  266. public override void escribir(string fichero)
  267. {
  268. try
  269. {
  270. base.escribir(fichero);
  271. XmlWriter xml = EscribirXml.AbrirFicheroParametros(fichero);
  272. EscribirXml.InicioElemento(xml, CTransformarDatos.NodoRaiz);
  273. EscribirXml.EscribeNodo(xml, CTransformarDatos.NodoEntrada, Entrada);
  274. EscribirXml.EscribeNodo(xml, CTransformarDatos.NodoSalida, Salida);
  275. EscribirXml.EscribeNodo(xml, CTransformarDatos.NodoEstructuraSalida, EstructuraSalida);
  276. EscribirXml.EscribeNodo(xml, CTransformarDatos.NodoEstructuraEntrada, EstructuraEntrada);
  277. EscribirXml.InicioElemento(xml, CTransformarDatos.NodoConfiguracion);
  278. // Funciones
  279. EscribirXml.InicioElemento(xml, CTransformarDatos.NodoFunciones);
  280. int i = 0;
  281. foreach (string funcion in ListaFunciones)
  282. {
  283. EscribirXml.InicioElemento(xml, CTransformarDatos.NodoFuncionesFuncion);
  284. EscribirXml.EscribeNodo(xml, CTransformarDatos.NodoFuncionesFuncionFuncion, funcion);
  285. EscribirXml.EscribeNodo(xml, CTransformarDatos.NodoFuncionesFuncionOrigen, ListaCamposOrigen[i]);
  286. EscribirXml.EscribeNodo(xml, CTransformarDatos.NodoFuncionesFuncionDestino, ListaCamposDestino[i]);
  287. EscribirXml.InicioElemento(xml, CTransformarDatos.NodoFuncionesFuncionParametros);
  288. foreach (string paramero in ListaParametros[i])
  289. EscribirXml.EscribeNodo(xml, CTransformarDatos.NodoFuncionesFuncionParametrosParametro, paramero);
  290. EscribirXml.FinElemento(xml);
  291. EscribirXml.FinElemento(xml);
  292. i++;
  293. }
  294. EscribirXml.FinElemento(xml);
  295. // Campo secuencia
  296. EscribirXml.EscribeNodo(xml, CTransformarDatos.NodoSecuencia, CampoSecuencia);
  297. // Campo fecha actual
  298. EscribirXml.EscribeNodo(xml, CTransformarDatos.NodoFechaActual, CampoActual);
  299. EscribirXml.FinElemento(xml);
  300. EscribirXml.FinElemento(xml);
  301. EscribirXml.Flush(xml);
  302. EscribirXml.Close(xml);
  303. }
  304. catch (Exception ex)
  305. {
  306. throw new ApplicationException(Constantes.ERROR_ESCRITURA_FICHERO_CONFIGURACION, ex);
  307. }
  308. }
  309. }
  310. }