Files
clients/MorphereAnalyzer/ymuploadwidget.cpp
admin 9bca6154fd d3view 수정
git-svn-id: svn://192.168.0.12/source@177 8346c931-da38-4b9b-9d4c-e48b93cbd075
2015-08-31 06:51:47 +00:00

532 lines
18 KiB
C++

#include "ymuploadwidget.h"
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QPushButton>
#include <QSqlDatabase>
#include <QString>
#include <QSqlQuery>
#include <../Json/sjson.h>
#include "stable.h"
#include <QDebug>
#include <QSqlError>
#include "ymorpherewidget.h"
#include "stable.h"
#include "widget.h"
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
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<QString, QString> mapParam ,int _nGroup,int _nCommand, QString _strFilterId)
{
QString strJson;
SJson json;
for(QMap<QString, QString>::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;
}