#include "ymuploadwidget.h" #include #include #include #include #include #include #include <../Json/sjson.h> #include "stable.h" #include #include #include "ymorpherewidget.h" #include "stable.h" #include "widget.h" #include #include #include YMUploadWidget::YMUploadWidget(QWidget *parent):QWidget(parent) { m_pgbAnalysis = setUploadWidgets(); QVBoxLayout *vMainLayout = new QVBoxLayout; vMainLayout->addWidget(m_pgbAnalysis); AnalysisGroupRefresh(); setLayout(vMainLayout); } YMUploadWidget::~YMUploadWidget() { } QGroupBox *YMUploadWidget::setUploadWidgets() { QHBoxLayout *hMainlayout = new QHBoxLayout(); { QVBoxLayout *vlayout = new QVBoxLayout(); m_plwAnalysisGroup = new QListWidget; m_pleAnalysisGroup = new QLineEdit; vlayout->addWidget(m_plwAnalysisGroup); vlayout->addWidget(m_pleAnalysisGroup); { QHBoxLayout *hlayout = new QHBoxLayout(); QPushButton *pbInsert = new QPushButton("Insert"); connect(pbInsert, SIGNAL(released()),this, SLOT(AnalysisGroupInsert())); QPushButton *pbDelete = new QPushButton("Delete"); connect(pbDelete, SIGNAL(released()),this, SLOT(AnalysisGroupDelete())); QPushButton *pbModify = new QPushButton("Modfiy"); connect(pbModify, SIGNAL(released()),this, SLOT(AnalysisGroupModify())); QPushButton *pbCopy_Paste = new QPushButton("Copy&Paste"); connect(pbCopy_Paste, SIGNAL(released()),this, SLOT(AnalysisGroupCopyPaste())); QPushButton *pbRefresh = new QPushButton("Refresh"); connect(pbRefresh, SIGNAL(released()),this, SLOT(AnalysisGroupRefresh())); hlayout->addWidget(pbInsert); hlayout->addWidget(pbDelete); hlayout->addWidget(pbModify); hlayout->addWidget(pbCopy_Paste); hlayout->addWidget(pbRefresh); vlayout->addLayout(hlayout); } hMainlayout->addLayout(vlayout); } { QVBoxLayout *vlayout = new QVBoxLayout(); m_plwAnalysis = new QListWidget; vlayout->addWidget(m_plwAnalysis); connect(m_plwAnalysis,SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),this,SLOT(currentAnalysisItemChanged(QListWidgetItem*,QListWidgetItem*))); QHBoxLayout *hlayout = new QHBoxLayout(); QPushButton *pbAdd = new QPushButton("Add"); QPushButton *pbUp = new QPushButton("Up"); QPushButton *pbDown = new QPushButton("Down"); QPushButton *pbDelete = new QPushButton("Delete"); hlayout->addWidget(pbAdd); hlayout->addWidget(pbUp); hlayout->addWidget(pbDown); hlayout->addWidget(pbDelete); vlayout->addLayout(hlayout); connect(pbAdd, SIGNAL(released()),this, SLOT(AnalysisAdd())); connect(pbUp, SIGNAL(released()),this, SLOT(AnalysisUp())); connect(pbDown, SIGNAL(released()),this, SLOT(AnalysisDown())); connect(pbDelete, SIGNAL(released()),this, SLOT(AnalysisDelete())); hMainlayout->addLayout(vlayout); } m_pgbAnalysis = new QGroupBox(tr("Upload")); m_pgbAnalysis->setCheckable(true); m_pgbAnalysis->setChecked(false); m_pgbAnalysis->setLayout(hMainlayout); connect(m_plwAnalysisGroup,SIGNAL(currentItemChanged(QListWidgetItem *,QListWidgetItem *)),this,SLOT(currentGroupItemChanged(QListWidgetItem *, QListWidgetItem *))); return m_pgbAnalysis; } void YMUploadWidget::AnalysisGroupInsert() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } QString strQuery = QString("insert into analysisgroup set " "name = '" + m_pleAnalysisGroup->text() + "'"); db.exec(strQuery.toUtf8()); db.close(); AnalysisGroupRefresh(); } void YMUploadWidget::AnalysisGroupDelete() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } foreach (QListWidgetItem *item,m_plwAnalysisGroup->selectedItems()) { QString strQuery = QString("delete from analysisgroup where id = " + item->data(Qt::UserRole).toString()); db.exec(strQuery.toUtf8()); strQuery = QString("delete from analysis where analysisgroup_id = " + item->data(Qt::UserRole).toString()); db.exec(strQuery.toUtf8()); RefreshAnalysis(item->data(Qt::UserRole).toInt()); } db.close(); AnalysisGroupRefresh(); } void YMUploadWidget::AnalysisGroupModify() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } foreach (QListWidgetItem *item,m_plwAnalysisGroup->selectedItems()) { QString strQuery = QString("update analysisgroup set name = '" + m_pleAnalysisGroup->text() + "' where id = " + item->data(Qt::UserRole).toString()); qDebug() << strQuery; db.exec(strQuery.toUtf8()); } db.close(); AnalysisGroupRefresh(); } void YMUploadWidget::AnalysisGroupCopyPaste() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } foreach (QListWidgetItem *item,m_plwAnalysisGroup->selectedItems()) { QSqlQuery query; QString strQuery = QString("insert into analysisgroup set " "name = '" + item->text() + "-'"); query.exec(strQuery.toUtf8()); query.exec("select max(id) from analysisgroup"); if (query.next()) { strQuery = QString("insert into analysis (type,data,analysisgroup_id) select type,data,"); strQuery += query.value(0).toString(); strQuery += " from analysis where analysisgroup_id = " + item->data(Qt::UserRole).toString(); qDebug() << strQuery; query.exec(strQuery.toUtf8()); } } db.close(); AnalysisGroupRefresh(); } void YMUploadWidget::AnalysisGroupRefresh() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } m_plwAnalysisGroup->clear(); QSqlQuery query("select id,name from analysisgroup"); while (query.next()) { QListWidgetItem *pItem = new QListWidgetItem(query.value(1).toString(),m_plwAnalysisGroup); pItem->setData(Qt::UserRole, QVariant(query.value(0))); } db.close(); } void YMUploadWidget::RefreshAnalysis(int _nGroup) { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } QSqlQuery query("select id,type,data from analysis where analysisgroup_id = " + QString::number(_nGroup)); SJson json; m_plwAnalysis->clear(); while (query.next()) { QString str; QString strJson = query.value(2).toString(); QJsonObject jsonObj = QJsonDocument::fromJson(strJson.toUtf8()).object(); str = STable::GetArticleType(json.Get(strJson,"Article").toInt()); for(QJsonObject::iterator iterPos = jsonObj.begin(); iterPos != jsonObj.end(); iterPos++) { str += (" " + iterPos.key() + " : " + iterPos.value().toString() + " ,"); } str = str.left(str.length() - 1); QListWidgetItem *pItem = new QListWidgetItem(str,m_plwAnalysis); pItem->setData(Qt::UserRole, QVariant(query.value(0))); } db.close(); } void YMUploadWidget::currentGroupItemChanged(QListWidgetItem *_pCurrent, QListWidgetItem *_pPrev) { Q_UNUSED(_pPrev); if (_pCurrent == 0) return; RefreshAnalysis(_pCurrent->data(Qt::UserRole).toInt()); m_pleAnalysisGroup->setText(_pCurrent->text()); m_pleAnalysisGroup->repaint(); } void YMUploadWidget::AnalysisDelete() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } foreach (QListWidgetItem *item,m_plwAnalysis->selectedItems()) { QString strQuery = QString("delete from analysis where id = '" + item->data(Qt::UserRole).toString() + "'"); db.exec(strQuery.toUtf8()); } db.close(); foreach (QListWidgetItem *item,m_plwAnalysisGroup->selectedItems()) RefreshAnalysis(item->data(Qt::UserRole).toInt()); } void YMUploadWidget::AnalysisAdd() { foreach (QListWidgetItem *item,m_plwAnalysisGroup->selectedItems()) { int nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); DataBaseMorphereAnalysis(((STable*)((Widget*)(m_ptwSource->currentWidget()))->GetTabWidget()->currentWidget())->getArticleSelect(), ((YMorphereWidget*)(m_ptwResult->currentWidget()))->convertToParam(), nCurrentFilterGroupID, E_DATABASE_COMMAND_INSERT); } foreach (QListWidgetItem *item,m_plwAnalysisGroup->selectedItems()) RefreshAnalysis(item->data(Qt::UserRole).toInt()); } void YMUploadWidget::AnalysisUp() { int nSelect = m_plwAnalysis->currentRow(); if (nSelect <= 0) return; QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } QString strID1 = m_plwAnalysis->item(nSelect)->data(Qt::UserRole).toString(); QString strID2 = m_plwAnalysis->item(nSelect-1)->data(Qt::UserRole).toString(); QString strQuery = "UPDATE analysis t1 INNER JOIN analysis t2 ON (t1.id, t2.id) IN ((" + strID1 + ","+ strID2 +"),("+ strID2 + "," + strID1 + ")) SET t1.type = t2.type,t1.analysisgroup_id = t2.analysisgroup_id,t1.data = t2.data"; db.exec(strQuery.toUtf8()); db.close(); foreach (QListWidgetItem *item,m_plwAnalysisGroup->selectedItems()) RefreshAnalysis(item->data(Qt::UserRole).toInt()); m_plwAnalysis->setCurrentRow(nSelect-1); } void YMUploadWidget::AnalysisDown() { int nSelect = m_plwAnalysis->currentRow(); if (nSelect < 0) return; if (nSelect >= (m_plwAnalysis->count() - 1)) return; qDebug() << nSelect; QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } QString strID1 = m_plwAnalysis->item(nSelect)->data(Qt::UserRole).toString(); QString strID2 = m_plwAnalysis->item(nSelect+1)->data(Qt::UserRole).toString(); QString strQuery = "UPDATE analysis t1 INNER JOIN analysis t2 ON (t1.id, t2.id) IN ((" + strID1 + ","+ strID2 +"),("+ strID2 + "," + strID1 + ")) SET t1.type = t2.type,t1.analysisgroup_id = t2.analysisgroup_id,t1.data = t2.data"; db.exec(strQuery.toUtf8()); db.close(); foreach (QListWidgetItem *item,m_plwAnalysisGroup->selectedItems()) RefreshAnalysis(item->data(Qt::UserRole).toInt()); m_plwAnalysis->setCurrentRow(nSelect+1); } void YMUploadWidget::DataBaseMorphereAnalysis(int _nArticle,QMap mapParam ,int _nGroup,int _nCommand, QString _strFilterId) { QString strJson; SJson json; for(QMap::iterator iterPos = mapParam.begin(); iterPos != mapParam.end(); iterPos++) { strJson = json.Set(strJson, iterPos.key(), iterPos.value()); } DataBaseAnalysis(_nArticle, json.Sql(strJson),_nGroup,_nCommand,_strFilterId); } void YMUploadWidget::DataBaseAnalysis(int _nType, QString _strJson,int _nGroup,int _nCommand,QString _strFilterId) { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } QString sql; switch(_nCommand) { case E_DATABASE_COMMAND_INSERT: sql = "INSERT INTO analysis SET "; sql += QString("type=") + QString::number(_nType) + ","; break; case E_DATABASE_COMMAND_UPDATE: sql = "UPDATE filter SET "; break; } sql += QString("data='") + _strJson + "',"; sql += QString("analysisgroup_id=" ) + QString::number(_nGroup); if (_nCommand == E_DATABASE_COMMAND_UPDATE) sql += QString(" where id=") + _strFilterId; QSqlQuery query; if (query.exec(sql.toUtf8()) == false) { qDebug() << sql; qDebug() << query.lastError().text(); } db.close(); } void YMUploadWidget::currentAnalysisItemChanged(QListWidgetItem *_pCurrent, QListWidgetItem *_pPrev) { Q_UNUSED(_pPrev); if (_pCurrent == 0) return; QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("bigbird.iptime.org"); db.setUserName("admin"); db.setPassword("admin123"); db.setDatabaseName("concepters"); if (db.open() == false) { qDebug() << db.lastError().text(); return; } QSqlQuery query("select id,type,data from analysis where id = " + _pCurrent->data(Qt::UserRole).toString()); if (!query.next()) return; SJson json; QString strJson = query.value(2).toString(); qDebug() << json.Get(strJson, "Algorithm"); qDebug() << m_ptwResult->count(); for(int i = 0; i < m_ptwResult->count(); i++) { if(((YMorphereWidget*)(m_ptwResult->widget(i)))->getName() == json.Get(strJson, "Algorithm")) { ((YMorphereWidget*)(m_ptwResult->widget(i)))->setParam(strJson); m_ptwResult->setCurrentIndex(i); qDebug() << json.Get(strJson,"Algorithm"); } } /* switch(query.value(1).toInt()) { case E_FILTER_TYPE_DATE: m_pdeStart->setDate(QDate::fromString(json.Get(strJson,"Start"),"yyyy-MM-dd")); m_pdeEnd->setDate(QDate::fromString(json.Get(strJson,"End"),"yyyy-MM-dd")); m_pleString->setText(""); m_pleLength->setText(""); m_pleReplaceFind->setText(""); m_pleReplace->setText(""); break; case E_FILTER_TYPE_SEARCH: m_pcbCatalog->setCurrentIndex(json.GetNumber(strJson,"Category")); m_pcbMethod->setCurrentIndex(json.GetNumber(strJson,"Method")); m_pcbKeyword->setCurrentIndex(json.GetNumber(strJson,"Keyword")); m_pleString->setText(json.Get(strJson,"String")); m_pleLength->setText(""); m_pleReplaceFind->setText(""); m_pleReplace->setText(""); break; case E_FILTER_TYPE_LENGTH: m_pcbLengthCatalog->setCurrentIndex(json.GetNumber(strJson,"Category")); m_pcbLengthComp->setCurrentIndex(json.GetNumber(strJson,"Comp")); m_pcbLengthInsDel->setCurrentIndex(json.GetNumber(strJson,"InsDel")); m_pleLength->setText(json.Get(strJson,"String")); m_pleReplaceFind->setText(""); m_pleReplace->setText(""); m_pleString->setText(""); break; case E_FILTER_TYPE_REPLACE: m_pcbReplaceCatalog->setCurrentIndex(json.GetNumber(strJson,"Category")); m_pcbReplaceFind->setCurrentIndex(json.GetNumber(strJson,"Find")); m_pleReplaceFind->setText(json.Get(strJson,"String_Find")); m_pleReplace->setText(json.Get(strJson,"String_Replace")); m_pleString->setText(""); m_pleLength->setText(""); break; case E_FILTER_TYPE_COUNTER: m_pcbCounterCatalog->setCurrentIndex(json.GetNumber(strJson,"Category")); m_pcbCounterComp->setCurrentIndex(json.GetNumber(strJson,"Comp")); m_pcbCounterInsDel->setCurrentIndex(json.GetNumber(strJson,"InsDel")); m_pleCounter->setText(json.Get(strJson,"String")); m_pleReplaceFind->setText(""); m_pleReplace->setText(""); m_pleString->setText(""); break; } */ } void YMUploadWidget::setResultTabWidget(QTabWidget* tabWidget) { m_ptwResult = tabWidget; } void YMUploadWidget::setSourceTabWidget(QTabWidget* tabWidget) { m_ptwSource = tabWidget; }