Commit b8ec466d authored by Karel Slaný's avatar Karel Slaný Committed by Martin Straka

Fixed a memory leak.

parent 7956a85c
......@@ -24,7 +24,7 @@
#include "src/datovka_shared/gov_services/model/gov_form_list_model.h"
#include "src/datovka_shared/gov_services/model/gov_service_list_model.h"
#include "src/datovka_shared/gov_services/service/gov_mv_crr_vbh.h"
//#include "src/datovka_shared/gov_services/service/gov_mv_ir_vp.h"
#include "src/datovka_shared/gov_services/service/gov_mv_ir_vp.h"
#include "src/datovka_shared/gov_services/service/gov_mv_rt_vt.h"
//#include "src/datovka_shared/gov_services/service/gov_mv_skd_vp.h"
//#include "src/datovka_shared/gov_services/service/gov_mv_vr_vp.h"
......@@ -52,6 +52,23 @@ GovWrapper::GovWrapper(IsdsWrapper *isds, QObject *parent)
initGovServices();
}
/*!
* @brief Deallocate held services.
*/
static
void clearServiceMap(QMap<QString, Gov::Service *> &map)
{
foreach (Gov::Service *gs, map.values()) {
delete gs;
}
map.clear();
}
GovWrapper::~GovWrapper(void)
{
clearServiceMap(m_govServices);
}
void GovWrapper::deleteGovServices(void)
{
debugFuncCall();
......@@ -66,12 +83,12 @@ void GovWrapper::initGovServices(void)
{
debugFuncCall();
m_govServices.clear();
clearServiceMap(m_govServices);
Gov::Service *gs;
/* Výpis z Registru obyvatel */
gs = new (std::nothrow) Gov::SrvcSzrRobVu;
/* Výpis bodového hodnocení z Centrálního registru řidičů */
gs = new (std::nothrow) Gov::SrvcMvCrrVbh;
if (gs != Q_NULLPTR) {
const QString &key(gs->internalId());
if (!m_govServices.contains(key)) {
......@@ -84,8 +101,8 @@ void GovWrapper::initGovServices(void)
}
}
/* Výpis o využití údajů z registru obyvatel */
gs = new (std::nothrow) Gov::SrvcSzrRobVvu;
/* Výpis z insolvenčního rejstříku */
gs = new (std::nothrow) Gov::SrvcMvIrVp;
if (gs != Q_NULLPTR) {
const QString &key(gs->internalId());
if (!m_govServices.contains(key)) {
......@@ -98,12 +115,8 @@ void GovWrapper::initGovServices(void)
}
}
// /* Veřejný výpis z registru osob */
// GovSzrRosVv *gs3 = new GovSzrRosVv();
// m_govServices.insert(gs3->serviceId(), gs3);
/* Výpis bodového hodnocení z Centrálního registru řidičů */
gs = new (std::nothrow) Gov::SrvcMvCrrVbh;
/* Výpis z Rejstříku trestů */
gs = new (std::nothrow) Gov::SrvcMvRtVt;
if (gs != Q_NULLPTR) {
const QString &key(gs->internalId());
if (!m_govServices.contains(key)) {
......@@ -116,12 +129,22 @@ void GovWrapper::initGovServices(void)
}
}
// /* Výpis z Rejstříku trestů právnických osob */
// GovMvRtpoVt *gs5 = new GovMvRtpoVt();
// m_govServices.insert(gs5->serviceId(), gs5);
/* Výpis z Registru obyvatel */
gs = new (std::nothrow) Gov::SrvcSzrRobVu;
if (gs != Q_NULLPTR) {
const QString &key(gs->internalId());
if (!m_govServices.contains(key)) {
m_govServices.insert(key, gs);
} else {
logError(
"Key '%s' already exists in gov services container.",
key.toUtf8().constData());
delete gs;
}
}
/* Výpis z Rejstříku trestů */
gs = new (std::nothrow) Gov::SrvcMvRtVt;
/* Výpis o využití údajů z registru obyvatel */
gs = new (std::nothrow) Gov::SrvcSzrRobVvu;
if (gs != Q_NULLPTR) {
const QString &key(gs->internalId());
if (!m_govServices.contains(key)) {
......@@ -134,6 +157,14 @@ void GovWrapper::initGovServices(void)
}
}
// /* Veřejný výpis z registru osob */
// GovSzrRosVv *gs3 = new GovSzrRosVv();
// m_govServices.insert(gs3->serviceId(), gs3);
// /* Výpis z Rejstříku trestů právnických osob */
// GovMvRtpoVt *gs5 = new GovMvRtpoVt();
// m_govServices.insert(gs5->serviceId(), gs5);
// /* Výpis z živnostenského rejstříku */
// GovMvZrVp *gs7 = new GovMvZrVp();
// m_govServices.insert(gs7->serviceId(), gs7);
......@@ -142,10 +173,6 @@ void GovWrapper::initGovServices(void)
// GovMvVrVp *gs8 = new GovMvVrVp();
// m_govServices.insert(gs8->serviceId(), gs8);
// /* Výpis z insolvenčního rejstříku */
// GovMvIrVp *gs9 = new GovMvIrVp();
// m_govServices.insert(gs9->serviceId(), gs9);
// /* Výpis ze seznamu kvalifikovaných dodavatelů */
// GovMvSkdVp *gs10 = new GovMvSkdVp();
// m_govServices.insert(gs10->serviceId(), gs10);
......
......@@ -48,6 +48,11 @@ public:
*/
explicit GovWrapper(IsdsWrapper *isds, QObject *parent = Q_NULLPTR);
/*!
* @brief Destructor.
*/
~GovWrapper(void);
/*!
* @brief Remove all Gov services from map and delete their objects.
*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment