Commit b3f29df01cdfed37cc4d1e4e973ce8795228350d

Authored by LightBase Consultoria em Software Publico
1 parent 48bd8e5a
Exists in master

refactoring

cacic-daemon/cacicD/cacictimer.cpp
@@ -22,93 +22,14 @@ void CacicTimer::iniciarTimer(int x) @@ -22,93 +22,14 @@ void CacicTimer::iniciarTimer(int x)
22 } 22 }
23 23
24 void CacicTimer::mslot(){ 24 void CacicTimer::mslot(){
25 - QLogger::QLog_Info("Cacic Daemon (Timer)", QString("mslot();"));  
26 cMutex->lock(); 25 cMutex->lock();
27 QLogger::QLog_Info("Cacic Daemon (Timer)", QString("Semáforo fechado.")); 26 QLogger::QLog_Info("Cacic Daemon (Timer)", QString("Semáforo fechado."));
28 -  
29 if(getTest()){ 27 if(getTest()){
30 QLogger::QLog_Info("Cacic Daemon (Timer)", QString("getTeste() success.")); 28 QLogger::QLog_Info("Cacic Daemon (Timer)", QString("getTeste() success."));
31 -  
32 if(getConfig()){ 29 if(getConfig()){
33 QLogger::QLog_Info("Cacic Daemon (Timer)", QString("getConfig() success.")); 30 QLogger::QLog_Info("Cacic Daemon (Timer)", QString("getConfig() success."));
34 -  
35 - // Compara o novo arquivo de configuração com um antigo e se forem diferentes  
36 - // mantem o mais recente; caso iguais simplesmente apaga o novo.  
37 - QFile *fileOld;  
38 - QFile *fileNew;  
39 -  
40 - fileOld = new QFile(getApplicationDirPath().append("/getConfig.json"));  
41 - fileNew = new QFile(getApplicationDirPath().append("/getConfigNew.json"));  
42 - if( fileOld->exists() && fileNew->exists() ){  
43 - if( Md5IsEqual(QVariant::fromValue(fileOld), QVariant::fromValue(fileNew)) ) {  
44 - fileNew->remove();  
45 - } else {  
46 - // Renomeia getConfigNew.json para getConfig.json  
47 - fileOld->remove();  
48 - fileNew->rename("getConfigNew.json","getConfig.json");  
49 - }  
50 - jsonConfig = ccacic->getJsonFromFile(getApplicationDirPath().append("/getConfig.json"));  
51 - } else if( fileOld->exists() ){  
52 - jsonConfig = ccacic->getJsonFromFile(getApplicationDirPath().append("/getConfig.json"));  
53 - } else {  
54 - QLogger::QLog_Error("Cacic Daemon (Timer)", "Arquivo de configuração não criado.");  
55 - }  
56 - delete fileOld;  
57 - delete fileNew;  
58 -  
59 - lerArquivoConfig(jsonConfig);  
60 -  
61 - int countExecNotFound = 0;  
62 - QMap<QString, QString>::const_iterator mapIterator = moduleMap.constBegin();  
63 - while (mapIterator != moduleMap.constEnd()) {  
64 - QString nomeModulo = mapIterator.value();  
65 - QString hashModulo = mapIterator.key();  
66 -  
67 - // Calcula hash do binario atual  
68 -#if defined(Q_OS_WIN)  
69 - fileOld = new QFile(getApplicationDirPath().append("/").append(modulo).append(".exe"));  
70 -#else  
71 - fileOld = new QFile(getApplicationDirPath().append("/").append(nomeModulo));  
72 -#endif  
73 - if(!fileOld->exists()) {  
74 - QLogger::QLog_Error("Cacic Daemon (Timer)", QString("Módulo ").append(nomeModulo).append(" não encontrado."));  
75 -  
76 - countExecNotFound++;  
77 - if( countExecNotFound == moduleMap.size() ) {  
78 - QLogger::QLog_Error("Cacic Daemon (Timer)", "Não foi possível encontrar nenhum módulo executável!");  
79 - return;  
80 - }  
81 - continue;  
82 - }  
83 -  
84 - QString oldMd5 = QString(QCryptographicHash::hash(fileOld->readAll(),QCryptographicHash::Md5).toHex());  
85 -  
86 - if ( oldMd5 != hashModulo ) {  
87 -  
88 - fileOld->rename(getApplicationDirPath().append("/").append(nomeModulo),  
89 - getApplicationDirPath().append("/").append("nomeModulo").append("Old") );  
90 -  
91 - // Download nova versão do executável  
92 - QList<QMap<QString,QString> >::const_iterator metodosIterator = metodosDownload.constBegin();  
93 - bool downloadSucess = false;  
94 - while ( !downloadSucess && metodosIterator != metodosDownload.constEnd() ) {  
95 -  
96 - if( metodosIterator->value("tipo") == "ftp" || metodosIterator->value("tipo") == "" ) {  
97 - if ( OCacicComm->ftpDownload( metodosIterator->value("url"), metodosIterator->value("path") ) )  
98 - downloadSucess = true;  
99 -  
100 - } else if ( metodosIterator->value("tipo") == "http" ) {  
101 - if( OCacicComm->httpDownload( metodosIterator->value("url"), metodosIterator->value("path") ) )  
102 - downloadSucess = true;  
103 - }  
104 - metodosIterator++;  
105 - }  
106 - fileOld->remove();  
107 - delete fileOld;  
108 - }  
109 -  
110 - mapIterator++;  
111 - } 31 + verificarModulos();
  32 + iniciarGercols();
112 }else{ 33 }else{
113 qDebug() << "getConfig() failed. - " + QDateTime::currentDateTime().toLocalTime().toString(); 34 qDebug() << "getConfig() failed. - " + QDateTime::currentDateTime().toLocalTime().toString();
114 QLogger::QLog_Error("Cacic Daemon (Timer)", "Falha na obtenção do arquivo de configuração."); 35 QLogger::QLog_Error("Cacic Daemon (Timer)", "Falha na obtenção do arquivo de configuração.");
@@ -117,7 +38,6 @@ void CacicTimer::mslot(){ @@ -117,7 +38,6 @@ void CacicTimer::mslot(){
117 qDebug() << "getTest() failed. - " + QDateTime::currentDateTime().toLocalTime().toString(); 38 qDebug() << "getTest() failed. - " + QDateTime::currentDateTime().toLocalTime().toString();
118 QLogger::QLog_Error("Cacic Daemon (Timer)", "Falha na execução do getTest()."); 39 QLogger::QLog_Error("Cacic Daemon (Timer)", "Falha na execução do getTest().");
119 } 40 }
120 -  
121 cMutex->unlock(); 41 cMutex->unlock();
122 QLogger::QLog_Info("Cacic Daemon (Timer)", QString("Semáforo aberto.")); 42 QLogger::QLog_Info("Cacic Daemon (Timer)", QString("Semáforo aberto."));
123 } 43 }
@@ -277,3 +197,71 @@ void CacicTimer::definirDirGercols(QString appDirPath){ @@ -277,3 +197,71 @@ void CacicTimer::definirDirGercols(QString appDirPath){
277 setDirProgram(appDirPath + "/cacic-gercols"); 197 setDirProgram(appDirPath + "/cacic-gercols");
278 #endif 198 #endif
279 } 199 }
  200 +
  201 +void CacicTimer::verificarModulos(){
  202 + // Compara o novo arquivo de configuração com um antigo e se forem diferentes
  203 + // mantem o mais recente; caso iguais simplesmente apaga o novo.
  204 + QFile *fileOld;
  205 + QFile *fileNew;
  206 + fileOld = new QFile(this->applicationDirPath + "/getConfig.json");
  207 + fileNew = new QFile(this->applicationDirPath + "/getConfigNew.json");
  208 + if( fileOld->exists() && fileNew->exists() ){
  209 + if( Md5IsEqual(QVariant::fromValue(fileOld), QVariant::fromValue(fileNew)) ) {
  210 + fileNew->remove();
  211 + } else {
  212 + // Renomeia getConfigNew.json para getConfig.json
  213 + fileOld->remove();
  214 + fileNew->rename("getConfigNew.json","getConfig.json");
  215 + }
  216 + jsonConfig = ccacic->getJsonFromFile(this->applicationDirPath + "/getConfig.json");
  217 + } else if( fileOld->exists() ){
  218 + jsonConfig = ccacic->getJsonFromFile(this->applicationDirPath + "/getConfig.json");
  219 + } else {
  220 + QLogger::QLog_Error("Cacic Daemon (Timer)", "Arquivo de configuração não criado.");
  221 + }
  222 + delete fileOld;
  223 + delete fileNew;
  224 + lerArquivoConfig(jsonConfig);
  225 + int countExecNotFound = 0;
  226 + QMap<QString, QString>::const_iterator mapIterator = moduleMap.constBegin();
  227 + while (mapIterator != moduleMap.constEnd()) {
  228 + QString nomeModulo = mapIterator.value();
  229 + QString hashModulo = mapIterator.key();
  230 + // Calcula hash do binario atual
  231 +#if defined(Q_OS_WIN)
  232 + fileOld = new QFile(this->applicationDirPath + "/" + modulo + ".exe");
  233 +#else
  234 + fileOld = new QFile(this->applicationDirPath + "/" + nomeModulo);
  235 +#endif
  236 + if(!fileOld->exists()) {
  237 + QLogger::QLog_Error("Cacic Daemon (Timer)", QString("Módulo ").append(nomeModulo).append(" não encontrado."));
  238 + countExecNotFound++;
  239 + if( countExecNotFound == moduleMap.size() ) {
  240 + QLogger::QLog_Error("Cacic Daemon (Timer)", "Não foi possível encontrar nenhum módulo executável!");
  241 + return;
  242 + }
  243 + continue;
  244 + }
  245 + QString oldMd5 = QString(QCryptographicHash::hash(fileOld->readAll(),QCryptographicHash::Md5).toHex());
  246 + if ( oldMd5 != hashModulo ) {
  247 + fileOld->rename(this->applicationDirPath + "/" + nomeModulo,
  248 + this->applicationDirPath + "/" + nomeModulo + "Old");
  249 + // Download nova versão do executável
  250 + QList<QMap<QString,QString> >::const_iterator metodosIterator = metodosDownload.constBegin();
  251 + bool downloadSucess = false;
  252 + while ( !downloadSucess && metodosIterator != metodosDownload.constEnd() ) {
  253 + if( metodosIterator->value("tipo") == "ftp" || metodosIterator->value("tipo") == "" ) {
  254 + if ( OCacicComm->ftpDownload( metodosIterator->value("url"), metodosIterator->value("path") ) )
  255 + downloadSucess = true;
  256 + } else if ( metodosIterator->value("tipo") == "http" ) {
  257 + if( OCacicComm->httpDownload( metodosIterator->value("url"), metodosIterator->value("path") ) )
  258 + downloadSucess = true;
  259 + }
  260 + metodosIterator++;
  261 + }
  262 + fileOld->remove();
  263 + delete fileOld;
  264 + }
  265 + mapIterator++;
  266 + }
  267 +}
cacic-daemon/cacicD/cacictimer.h
@@ -36,9 +36,9 @@ public: @@ -36,9 +36,9 @@ public:
36 private: 36 private:
37 void registraFimColeta(QString msg); 37 void registraFimColeta(QString msg);
38 void registraInicioColeta(); 38 void registraInicioColeta();
  39 + void verificarModulos();
39 QLogger::QLoggerManager *logManager; 40 QLogger::QLoggerManager *logManager;
40 QString dirProgram; 41 QString dirProgram;
41 - //QProcess *myProcess;  
42 QString applicationDirPath; 42 QString applicationDirPath;
43 QString getDirProgram() const; 43 QString getDirProgram() const;
44 void iniciarGercols(); 44 void iniciarGercols();