importainteligente Class Reference

Sirve para importar asientos inteligentes (plantillas) dentro de la empresa en uso. More...

#include <importainteligente.h>

Inheritance diagram for importainteligente:

QXmlDefaultHandler PEmpresaBase

Public Member Functions

 importainteligente (Empresa *)
 Constructor de la clase que inicializa las variables empresaactual y conexionbase.
bool startElement (const QString &, const QString &, const QString &, const QXmlAttributes &)
 Elemento del analizador (parser) de SAX que se dispara al encontrar un tag de inicio.
bool endElement (const QString &, const QString &, const QString &)
 Elemento del analizador (parser) de SAX que se dispara al encontrar un tag de fin.
bool characters (const QString &)
 Elemento del analizador (parser) de SAX que se dispara al encontrar contenidos.

Private Attributes

QString tag
 Indica el tag que el parser está procesando en este preciso momento.
QString data
 Indica los datos adicionales que estám contenidos en el tag.
QMap< QString, QString > tvalores

Detailed Description

Sirve para importar asientos inteligentes (plantillas) dentro de la empresa en uso.

Esta clase es un analizador (parser) XML cuya función es importar a la base de datos abierta una plantilla de asiento inteligente. Para ello utiliza las clases SAX de Qt.

Definition at line 37 of file importainteligente.h.


Constructor & Destructor Documentation

importainteligente::importainteligente ( Empresa emp  ) 

Constructor de la clase que inicializa las variables empresaactual y conexionbase.

Parameters:
emp Empresa que construye el objeto y que sirve para inicialización de la base de datos. Contiene la implementación de la clase importainteligente que sirve para importar ficheros de XML a la base de datos de BulmaCont.

Definition at line 33 of file importainteligente.cpp.

References _depura(), data, and tag.

00033                                                    : QXmlDefaultHandler(), PEmpresaBase(emp) {
00034     _depura("importainteligente::importainteligente", 0);
00035     tag = "";
00036     data = "";
00037     _depura("END importainteligente::importainteligente", 0);
00038 }


Member Function Documentation

bool importainteligente::startElement ( const QString &  ,
const QString &  ,
const QString &  qName,
const QXmlAttributes &   
)

Elemento del analizador (parser) de SAX que se dispara al encontrar un tag de inicio.

La acutación normal es hacer una inserción del elemento e introducir en el Mapa tvalores el identificador encontrado para que al encontrar el tag de fin se haga un update del registro con los valores hayados en el XML. Se asigna a la variable global tag el nombre del tag para indicar que estamos dentro de dicho tag.

Todo:
debería usarse una pila en lugar de una simple variable.
Parameters:
qName Nombre del tag encontrado.
Returns:
Devuelve TRUE porque no queremos que se detenga la ejecución del parseo aun habiendo encontrado errores.

Definition at line 51 of file importainteligente.cpp.

References _depura(), postgresiface2::begin(), postgresiface2::cargacursor(), postgresiface2::commit(), postgresiface2::ejecuta(), PEmpresaBase::empresaBase(), cursor2::eof(), tag, TRUE, and cursor2::valor().

00051                                                                                                                  {
00052     _depura("importainteligente::startElement", 0);
00053     tag = qName;
00054     QString SQLQuery;
00055     if (tag == "ainteligente") {
00056         SQLQuery.sprintf("INSERT INTO ainteligente (descripcion) VALUES ('Elemento importado')\n");
00057         empresaBase()->begin();
00058         empresaBase()->ejecuta(SQLQuery);
00059         SQLQuery = "SELECT max(idainteligente) AS idainteligente FROM ainteligente";
00060         cursor2 *cur = empresaBase()->cargacursor(SQLQuery, "unquerymas");
00061         empresaBase()->commit();
00062         if (!cur->eof()) {
00063             tvalores["idainteligente"] = cur->valor("idainteligente");
00064         } // end if
00065         delete cur;
00066     } // end if
00067     if (tag == "binteligente") {
00068         SQLQuery.sprintf("INSERT INTO binteligente (idainteligente) VALUES (%s)\n", empresaBase()->sanearCadena(tvalores["idainteligente"]).toAscii().constData());
00069         empresaBase()->begin();
00070         empresaBase()->ejecuta(SQLQuery);
00071         SQLQuery = "SELECT max(idbinteligente) AS idbinteligente FROM binteligente";
00072         cursor2 *cur = empresaBase()->cargacursor(SQLQuery, "unquerymas");
00073         empresaBase()->commit();
00074         if (!cur->eof()) {
00075             tvalores["idbinteligente"] = cur->valor("idbinteligente");
00076         } // end if
00077         delete cur;
00078     } // end if
00079     _depura("END importainteligente::startElement", 0);
00080     return TRUE;
00081 }

bool importainteligente::endElement ( const QString &  ,
const QString &  ,
const QString &  qName 
)

Elemento del analizador (parser) de SAX que se dispara al encontrar un tag de fin.

La función identificará mediante el parámetro qName que tag ha finalizado y hará los UPDATES necesarios en la base de datos con los valores almacenados en el mapa tvalores. La variable global tag es puesta a "" para que no se hagan consideraciones en los demás elementos de que se está en el tag que acaba de cerrarse.

Todo:
Se debería vaciar el Mapa tvalores para que no haya propagación de valores en caso de ausencia de elementos en el XML.
Todo:
Debería usarse una pila en lugar de la variable global tag.
Todo:
Deberian agruparse los UPDATES de la base de datos para que ocupen menos tiempo de proceso.
Parameters:
qName Nombre del tag del que se ha encontrado el final.

Definition at line 97 of file importainteligente.cpp.

References _depura(), postgresiface2::begin(), postgresiface2::commit(), data, postgresiface2::ejecuta(), PEmpresaBase::empresaBase(), tag, and TRUE.

00097                                                                                         {
00098     _depura("importainteligente::endElement", 0);
00099     QString SQLQuery;
00100     if (qName == "ainteligente") {
00101         SQLQuery.sprintf("UPDATE ainteligente SET descripcion = '%s' WHERE idainteligente = %s\n", tvalores["descripcion"].toAscii().constData(), tvalores["idainteligente"].toAscii().constData());
00102         empresaBase()->begin();
00103         empresaBase()->ejecuta(SQLQuery);
00104         empresaBase()->commit();
00105         SQLQuery.sprintf("UPDATE ainteligente SET comentariosasiento = '%s' WHERE idainteligente = %s\n", tvalores["comentariosasiento"].toAscii().constData(), tvalores["idainteligente"].toAscii().constData());
00106         empresaBase()->begin();
00107         empresaBase()->ejecuta(SQLQuery);
00108         empresaBase()->commit();
00109     } // end if
00110     if (qName == "binteligente") {
00111         SQLQuery.sprintf("UPDATE binteligente SET fecha = '%s' WHERE idbinteligente = %s\n", tvalores["fecha"].toAscii().constData(), tvalores["idbinteligente"].toAscii().constData());
00112         empresaBase()->begin();
00113         empresaBase()->ejecuta(SQLQuery);
00114         empresaBase()->commit();
00115         SQLQuery.sprintf("UPDATE binteligente SET conceptocontable = '%s' WHERE idbinteligente=%s\n", tvalores["conceptocontable"].toAscii().constData(), tvalores["idbinteligente"].toAscii().constData());
00116         empresaBase()->begin();
00117         empresaBase()->ejecuta(SQLQuery);
00118         empresaBase()->commit();
00119         SQLQuery.sprintf("UPDATE binteligente SET codcuenta = '%s' WHERE idbinteligente = %s\n", tvalores["codcuenta"].toAscii().constData(), tvalores["idbinteligente"].toAscii().constData());
00120         empresaBase()->begin();
00121         empresaBase()->ejecuta(SQLQuery);
00122         empresaBase()->commit();
00123         SQLQuery.sprintf("UPDATE binteligente SET descripcion = '%s' WHERE idbinteligente = %s\n", tvalores["descripcionb"].toAscii().constData(), tvalores["idbinteligente"].toAscii().constData());
00124         empresaBase()->begin();
00125         empresaBase()->ejecuta(SQLQuery);
00126         empresaBase()->commit();
00127         SQLQuery.sprintf("UPDATE binteligente SET debe = '%s' WHERE idbinteligente = %s\n", tvalores["debe"].toAscii().constData(), tvalores["idbinteligente"].toAscii().constData());
00128         empresaBase()->begin();
00129         empresaBase()->ejecuta(SQLQuery);
00130         empresaBase()->commit();
00131         SQLQuery.sprintf("UPDATE binteligente SET haber = '%s' WHERE idbinteligente = %s\n", tvalores["haber"].toAscii().constData(), tvalores["idbinteligente"].toAscii().constData());
00132         empresaBase()->begin();
00133         empresaBase()->ejecuta(SQLQuery);
00134         empresaBase()->commit();
00135         SQLQuery.sprintf("UPDATE binteligente SET contrapartida = '%s' WHERE idbinteligente = %s\n", tvalores["contrapartida"].toAscii().constData(), tvalores["idbinteligente"].toAscii().constData());
00136         empresaBase()->begin();
00137         empresaBase()->ejecuta(SQLQuery);
00138         empresaBase()->commit();
00139         SQLQuery.sprintf("UPDATE binteligente SET comentario = '%s' WHERE idbinteligente = %s\n", tvalores["comentario"].toAscii().constData(), tvalores["idbinteligente"].toAscii().constData());
00140         empresaBase()->begin();
00141         empresaBase()->ejecuta(SQLQuery);
00142         empresaBase()->commit();
00143         SQLQuery.sprintf("UPDATE binteligente SET canal = '%s' WHERE idbinteligente = %s\n", tvalores["canal"].toAscii().constData(), tvalores["idbinteligente"].toAscii().constData());
00144         empresaBase()->begin();
00145         empresaBase()->ejecuta(SQLQuery);
00146         empresaBase()->commit();
00147         SQLQuery.sprintf("UPDATE binteligente SET idc_coste = '%s' WHERE idbinteligente = %s\n", tvalores["idc_coste"].toAscii().constData(), tvalores["idbinteligente"].toAscii().constData());
00148         empresaBase()->begin();
00149         empresaBase()->ejecuta(SQLQuery);
00150         empresaBase()->commit();
00151         SQLQuery.sprintf("UPDATE binteligente SET marcaconciliacion = '%s' WHERE idbinteligente = %s\n", tvalores["marcaconciliacion"].toAscii().constData(), tvalores["idbinteligente"].toAscii().constData());
00152         empresaBase()->begin();
00153         empresaBase()->ejecuta(SQLQuery);
00154         empresaBase()->commit();
00155     } // end if
00156     tag = "";
00157     data = "";
00158     _depura("END importainteligente::endElement", 0);
00159     return TRUE;
00160 }

bool importainteligente::characters ( const QString &  ch  ) 

Elemento del analizador (parser) de SAX que se dispara al encontrar contenidos.

Parameters:
ch 
Returns:

Definition at line 170 of file importainteligente.cpp.

References _depura(), data, tag, and TRUE.

00170                                                      {
00171     _depura("importainteligente::characters", 0);
00172     if (tag != "") {
00173         data = ch;
00174         tvalores[tag] = data;
00175     } // end if
00176     _depura("END importainteligente::characters", 0);
00177     return TRUE;
00178 }


Field Documentation

QString importainteligente::tag [private]

Indica el tag que el parser está procesando en este preciso momento.

Definition at line 40 of file importainteligente.h.

Referenced by characters(), endElement(), importainteligente(), and startElement().

QString importainteligente::data [private]

Indica los datos adicionales que estám contenidos en el tag.

Definition at line 42 of file importainteligente.h.

Referenced by characters(), endElement(), and importainteligente().

QMap<QString, QString> importainteligente::tvalores [private]

Este mapa de valores sirve para almacenar de forma sencilla los valores que se han ido recogiendo y para poder ser recogidos en el momento de escritura en la base de datos.

Definition at line 46 of file importainteligente.h.


The documentation for this class was generated from the following files:
Generated on Sat Dec 15 00:01:54 2007 for BulmaGes by  doxygen 1.5.1