void NBioBSP_IndexSearch::on_btRmDB_pressed()
{
    QModelIndexList selectedRows = ui->tableReg->selectionModel()->selectedRows();
    NBioAPI_INDEXSEARCH_FP_INFO infoFP;
    QStandardItem* pItem;
    NBioAPI_RETURN nRet = NBioAPIERROR_NONE;

    for (int i = selectedRows.size() - 1; i >= 0; i--)  {
        pItem = pRegModel->item(selectedRows[i].row(), 0);
        infoFP.ID = pItem->text().toUInt();
        pItem = pRegModel->item(selectedRows[i].row(), 1);
        infoFP.FingerID = (NBioAPI_UINT8) pItem->text().toUShort();
        pItem = pRegModel->item(selectedRows[i].row(), 2);
        infoFP.SampleNumber = (NBioAPI_UINT8) pItem->text().toUShort();

        nRet = NBioAPI_RemoveDataFromIndexSearchDB(m_hNBioBSP, &infoFP);

        if (NBioAPIERROR_NONE == nRet)
            pRegModel->removeRow(selectedRows[i].row(), QModelIndex());
        else  {
            QString szError;

            szError.sprintf("NBioAPI_RemoveDataFromIndexSearchDB error: %04X", nRet);
            ui->labelStatus->setText(szError);
            break;
        }
    }

    if (NBioAPIERROR_NONE == nRet)
        ui->labelStatus->setText(QString("Remove data from DB [Count: %1]").arg(selectedRows.size()));

    UpdateTotalCount();
}
void NBioBSP_IndexSearch::on_btLoadDB_pressed()
{
    if (pRegModel->rowCount(QModelIndex()) > 0)  {
        int bt = QMessageBox::information(this, "NBioBSP_IndexSearch", "If you load database from file, existing memory database will be cleared!\nAre you sure you want to load database?", QMessageBox::No, QMessageBox::Yes);

        if (bt == QMessageBox::No)
            return ;
    }

    QString szFilePath = QFileDialog::getOpenFileName(this, "Load IndexSearch DB", QDir::currentPath(), "IndexSearch DB(*.ISDB)");

    if (!szFilePath.isEmpty())  {
        on_btClearDB_pressed();
        QByteArray baFilePath = szFilePath.toLocal8Bit();

        NBioAPI_RETURN nRet = NBioAPI_LoadIndexSearchDBFromFile(m_hNBioBSP, baFilePath.data());

        if (NBioAPIERROR_NONE == nRet)  {
            if (szFilePath.endsWith(".ISDB"))
                szFilePath.replace(QString("ISDB"), QString("FID"));
            else
                szFilePath += ".FID";

            QFile fFID(szFilePath);

            if (fFID.open(QIODevice::ReadOnly | QIODevice::Text))  {
                char szBuf[512];
                int nIndex = 0;
                QStringList szDatas;

                while (fFID.readLine(szBuf, sizeof(szBuf)) != -1)  {
                    szDatas = QString(szBuf).split('\t');

                    pRegModel->insertRow(nIndex, QModelIndex());
                    pRegModel->setData(pRegModel->index(nIndex, 0, QModelIndex()), szDatas[0]);
                    pRegModel->setData(pRegModel->index(nIndex, 1, QModelIndex()), szDatas[1]);
                    pRegModel->setData(pRegModel->index(nIndex, 2, QModelIndex()), szDatas[2]);
                }

                fFID.close();
            }

            ui->labelStatus->setText("Successfully loaded to file!");
        }
        else  {
            QString szError;

            szError.sprintf("NBioAPI_LoadIndexSearchDBFromFile error: %04X", nRet);
            ui->labelStatus->setText(szError);
        }

        UpdateTotalCount();
    }
}
void NBioBSP_IndexSearch::on_btClearDB_pressed()
{
    //DataBase Clear.
    NBioAPI_RETURN nRet = NBioAPI_ClearIndexSearchDB(m_hNBioBSP);

    if (NBioAPIERROR_NONE == nRet)  {
        //User ListBox Item All Clear.
        pRegModel->removeRows(0, pRegModel->rowCount(QModelIndex()), QModelIndex());
        UpdateTotalCount();
    }
    else  {
        QString szError;

        szError.sprintf("NBioAPI_ClearIndexSearchDB error: %04X", nRet);
        ui->labelStatus->setText(szError);
    }
}
void NBioBSP_IndexSearch::on_btLoadMIN_pressed()
{
    // Min data name rull: samplenumber_UserID_FingerID.min
    QString szDir = QFileDialog::getExistingDirectory(this, "Select MIN data Directory", QDir::currentPath());

    if (szDir.isEmpty())
        return ;

    QDir dirFind = QDir(szDir);
    QStringList slFindFiles;

    slFindFiles = dirFind.entryList(QStringList("*.min"), QDir::Files | QDir::NoSymLinks);

    if (slFindFiles.size() > 0)  {
        NBioAPI_RETURN nRet = NBioAPIERROR_NONE;
        QString szFilePath;
        QByteArray baFilePath;
        FILE* fp;
        NBioAPI_FIR_HANDLE hExportedFIR;
        NBioAPI_EXPORT_DATA exportData;
        NBioAPI_INPUT_FIR inputFIR;
        NBioAPI_INDEXSEARCH_SAMPLE_INFO infoSample;
        NBioAPI_UINT32 nUserID;

        inputFIR.Form = NBioAPI_FIR_FORM_HANDLE;
        inputFIR.InputFIR.FIRinBSP = &hExportedFIR;

        memset(&exportData, 0, sizeof(NBioAPI_EXPORT_DATA));

        exportData.Length = sizeof(NBioAPI_EXPORT_DATA);
        exportData.EncryptType = MINCONV_TYPE_OLD_FDA;
        exportData.FingerNum = 1;
        exportData.DefaultFingerID = NBioAPI_FINGER_ID_UNKNOWN;
        exportData.SamplesPerFinger = 1;
        exportData.FingerData2 = new NBioAPI_FINGER_DATA_2 [1];
        exportData.FingerData2[0].Length = sizeof(NBioAPI_FINGER_DATA_2);
        exportData.FingerData2[0].FingerID = 1;
        exportData.FingerData2[0].Template = new NBioAPI_TEMPLATE_DATA_2 [1];
        exportData.FingerData2[0].Template[0].Length = 400;
        exportData.FingerData2[0].Template[0].Data = new NBioAPI_UINT8 [400];

        ui->pgBarLoad->setRange(0, slFindFiles.size());
        ui->pgBarLoad->setValue(0);

        for (int i = 0; i < slFindFiles.size(); i++)  {
            szFilePath = dirFind.absoluteFilePath(slFindFiles[i]);
            baFilePath = szFilePath.toLocal8Bit();
            QStringList fiedls = slFindFiles[i].split('.');
            QStringList fiedls2 = QString(fiedls.value(0)).split('_');

            nUserID = QString(fiedls2.value(1)).toUInt();
            exportData.FingerData2[0].FingerID = (NBioAPI_UINT8) QString(fiedls2.value(2)).toUShort();

            fp = fopen(baFilePath.data(), "rb");

            if (fp)  {
                fread(exportData.FingerData2[0].Template[0].Data, 400, 1, fp);
                fclose(fp);

                nRet = NBioAPI_ImportDataToNBioBSP(m_hNBioBSP, &exportData, NBioAPI_FIR_PURPOSE_VERIFY, &hExportedFIR);

                if (NBioAPIERROR_NONE != nRet)  {
                    QString szError;

                    szError.sprintf("NBioAPI_ImportDataToNBioBSP error: %04X", nRet);
                    QMessageBox::warning(this, "NBioBSP_IndexSearch", szError);

                    break;
                }

                nRet = NBioAPI_AddFIRToIndexSearchDB(m_hNBioBSP, &inputFIR, nUserID, &infoSample);

                NBioAPI_FreeFIRHandle(m_hNBioBSP, hExportedFIR);

                if (NBioAPIERROR_NONE != nRet)  {
                   QString szError;

                   szError.sprintf("NBioAPI_AddFIRToIndexSearchDB error: %04X", nRet);
                   QMessageBox::warning(this, "NBioBSP_IndexSearch", szError);

                   break;
                }

                for (int f = 0; f < 11; f++)  {
                    if (infoSample.SampleCount[f] != 0)  {
                        for (int s = 0; s < infoSample.SampleCount[f]; s++)  {
                            int nIndex = pRegModel->rowCount();

                            pRegModel->insertRow(nIndex, QModelIndex());
                            pRegModel->setData(pRegModel->index(nIndex, 0, QModelIndex()), infoSample.ID);
                            pRegModel->setData(pRegModel->index(nIndex, 1, QModelIndex()), f);
                            pRegModel->setData(pRegModel->index(nIndex, 2, QModelIndex()), s);
                        }
                    }
                }

                ui->pgBarLoad->setValue(i + 1);

                QApplication::processEvents();
            }
        }

        //ExportData Free
        delete[] exportData.FingerData2[0].Template[0].Data;
        delete[] exportData.FingerData2[0].Template;
        delete[] exportData.FingerData2;

        if (NBioAPIERROR_NONE == nRet)
           ui->labelStatus->setText(QString("Successfully added to DB! (Count: %1)").arg(slFindFiles.size()));
    }

    UpdateTotalCount();
}
void NBioBSP_IndexSearch::on_btLoadFIR_pressed()
{
    QString szDir = QFileDialog::getExistingDirectory(this, "Select FIR data Directory", QDir::currentPath());

    if (szDir.isEmpty())
        return ;

    QDir dirFind = QDir(szDir);
    QStringList slFindFiles;

    slFindFiles = dirFind.entryList(QStringList("*.FIR"), QDir::Files | QDir::NoSymLinks);

    if (slFindFiles.size() > 0)  {
        NBioAPI_RETURN nRet = NBioAPIERROR_NONE;
        NBioAPI_FIR_TEXTENCODE hTextFIR;
        QString szFilePath;
        QByteArray baFilePath;
        FILE* fp;
        NBioAPI_UINT32 dwLen, nUserID;
        NBioAPI_INPUT_FIR inputFIR;
        NBioAPI_INDEXSEARCH_SAMPLE_INFO infoSample;

        memset(&hTextFIR, 0, sizeof(NBioAPI_FIR_TEXTENCODE));
        hTextFIR.IsWideChar = FALSE;

        inputFIR.Form = NBioAPI_FIR_FORM_TEXTENCODE;
        inputFIR.InputFIR.TextFIR = &hTextFIR;

        ui->pgBarLoad->setRange(0, slFindFiles.size());
        ui->pgBarLoad->setValue(0);

        for (int i = 0; i < slFindFiles.size(); i++)  {
            szFilePath = dirFind.absoluteFilePath(slFindFiles[i]);
            baFilePath = szFilePath.toLocal8Bit();
            QStringList fiedls = slFindFiles[i].split('.');

            nUserID = QString(fiedls.value(0)).toUInt();

            fp = fopen(baFilePath.data(), "rb");

            if (fp)  {
                fread(&dwLen, 1, sizeof(NBioAPI_UINT32), fp);
                hTextFIR.TextFIR = new NBioAPI_CHAR[dwLen];
                fread(hTextFIR.TextFIR, dwLen, 1, fp);
                fclose(fp);

                nRet = NBioAPI_AddFIRToIndexSearchDB(m_hNBioBSP, &inputFIR, nUserID, &infoSample);

                if (NBioAPIERROR_NONE != nRet)  {
                   QString szError;

                   szError.sprintf("NBioAPI_AddFIRToIndexSearchDB error: %04X", nRet);
                   QMessageBox::warning(this, "NBioBSP_IndexSearch", szError);

                   if (hTextFIR.TextFIR)
                      delete[] hTextFIR.TextFIR;

                   break;
                }

                for (int f = 0; f < 11; f++)  {
                    if (infoSample.SampleCount[f] != 0)  {
                        for (int s = 0; s < infoSample.SampleCount[f]; s++)  {
                            int nIndex = pRegModel->rowCount();

                            pRegModel->insertRow(nIndex, QModelIndex());
                            pRegModel->setData(pRegModel->index(nIndex, 0, QModelIndex()), infoSample.ID);
                            pRegModel->setData(pRegModel->index(nIndex, 1, QModelIndex()), f);
                            pRegModel->setData(pRegModel->index(nIndex, 2, QModelIndex()), s);
                        }
                    }
                }

                if (hTextFIR.TextFIR)
                    delete[] hTextFIR.TextFIR;

                ui->pgBarLoad->setValue(i + 1);

                QApplication::processEvents();
            }
        }

        if (NBioAPIERROR_NONE == nRet)
           ui->labelStatus->setText(QString("Successfully added to DB! (Count: %1)").arg(slFindFiles.size()));
    }

    UpdateTotalCount();
}
void NBioBSP_IndexSearch::on_btReg_pressed()
{
    bool bOK;

    m_nUserID = ui->editUserID->text().toInt(&bOK);

    if (!bOK)  {
        QMessageBox::warning(this, "NBioBSP_IndexSearch", "Invalid User ID");
        ui->editUserID->setFocus();
        return ;
    }

    // Open Device.
    NBioAPI_RETURN nRet = NBioAPI_OpenDevice(m_hNBioBSP, NBioAPI_DEVICE_ID_AUTO);

    if (NBioAPIERROR_NONE != nRet)  {
        QString szError;

        szError.sprintf("NBioAPI_OpenDevice error: %04X", nRet);
        ui->labelStatus->setText(szError);
        return ;
    }

    NBioAPI_FIR_HANDLE hFIR;

    // NBioAPI Enroll.
    nRet = NBioAPI_Capture(m_hNBioBSP, NBioAPI_FIR_PURPOSE_VERIFY, &hFIR, -1, NULL, NULL);

    if (NBioAPIERROR_NONE == nRet)  {
        NBioAPI_INPUT_FIR inputFIR;                         // Fir Data.
        NBioAPI_INDEXSEARCH_SAMPLE_INFO infoSample;         // Sample Finger Sample Information.

        inputFIR.Form = NBioAPI_FIR_FORM_HANDLE;
        inputFIR.InputFIR.FIRinBSP = &hFIR;

        // Search FIRDB about Template Information.
        nRet = NBioAPI_AddFIRToIndexSearchDB(m_hNBioBSP, &inputFIR, m_nUserID, &infoSample);

        if (NBioAPIERROR_NONE != nRet)  {
            QString szError;

            szError.sprintf("NBioAPI_AddFIRToIndexSearchDB error: %04X", nRet);
            ui->labelStatus->setText(szError);
        }
        else  {
            int nIndex = pRegModel->rowCount();

            pRegModel->insertRow(nIndex, QModelIndex());
            pRegModel->setData(pRegModel->index(nIndex, 0, QModelIndex()), infoSample.ID);
            pRegModel->setData(pRegModel->index(nIndex, 1, QModelIndex()), 0);
            pRegModel->setData(pRegModel->index(nIndex, 2, QModelIndex()), 0);

            ui->labelStatus->setText("Successfully added to DB!");
        }

        //Free FIR Handle.
        NBioAPI_FreeFIRHandle(m_hNBioBSP, hFIR);
    }
    else  {
        QString szError;

        szError.sprintf("NBioAPI_Capture error: %04X", nRet);
        ui->labelStatus->setText(szError);
    }

    //Close Device.
    NBioAPI_CloseDevice(m_hNBioBSP, NBioAPI_DEVICE_ID_AUTO);

    if (NBioAPIERROR_NONE == nRet)  {
        m_nUserID++;
        ui->editUserID->setText(QString("%1").arg(m_nUserID));
    }

    UpdateTotalCount();
}
Beispiel #7
0
void Parser::CreateBaseCommands(void* tannit)
{
  Tannit*               ptannit           = (Tannit*)tannit;
  CGIResolver*          pcgires           = (CGIResolver*)tannit;
  TQRManager*           ptqr_manager      = &ptannit->m_TQRManager;
  TQRODBCManager*       ptqrodbc_manager  = &ptannit->m_TQRODBCManager;
  TQRCollection*        ptqrcollection    = &ptannit->m_TQRCollection;
  itxSQLConnCollection* pconnections      = &ptannit->m_connections;
  itxSQLConnection*     podbcconnection   = &ptannit->m_odbcconnection;
  
  int i = 0;

//BEGIN CREATION BASE COMMANDS
  
  m_Command[i++] = (AbstractCommand*)new BC_StartConditionalBlock(START_CONDITIONAL_BLOCK, this, START_CND_BLK);
  m_Command[i++] = (AbstractCommand*)new BC_EndConditionalBlock();
  m_Command[i++] = (AbstractCommand*)new BC_AlternateConditionalBlock();
  m_Command[i++] = (AbstractCommand*)new BC_StartConditionalBlock(ELSIF_CONDITIONAL_BLOCK, this, ELSIF_CND_BLK);
  m_Command[i++] = (AbstractCommand*)new BC_PRMValue(PRMVALUE, pcgires);
  m_Command[i++] = (AbstractCommand*)new BC_Cgipath(CGIPATH, pcgires);
  m_Command[i++] = (AbstractCommand*)new BC_GetValue(this, pcgires);
  m_Command[i++] = (AbstractCommand*)new BC_AdjustQuotes(this);
  m_Command[i++] = (AbstractCommand*)new BC_ProcessExternFile(this, pcgires);
  m_Command[i++] = (AbstractCommand*)new BC_UCase();
  m_Command[i++] = (AbstractCommand*)new BC_LCase();
  m_Command[i++] = (AbstractCommand*)new BC_Trim();
  m_Command[i++] = (AbstractCommand*)new BC_SetVar(this);
  m_Command[i++] = (AbstractCommand*)new BC_GetVar(this);
  m_Command[i++] = (AbstractCommand*)new BC_GetCookie(this, pcgires);
  m_Command[i++] = (AbstractCommand*)new BC_UTime(this);
  m_Command[i++] = (AbstractCommand*)new BC_DMYTime(this);
  m_Command[i++] = (AbstractCommand*)new BC_Now(this);
  m_Command[i++] = (AbstractCommand*)new BC_FormatCurrency(this);
  m_Command[i++] = (AbstractCommand*)new BC_CheckForbiddenChars(this);
  m_Command[i++] = (AbstractCommand*)new BC_TraceUser(this, pcgires);
  m_Command[i++] = (AbstractCommand*)new BC_ODBCExecuteQuery(this, pcgires, ptqrodbc_manager);
  m_Command[i++] = (AbstractCommand*)new BC_TQRRecordFieldValue(this, ptqrcollection);
  m_Command[i++] = (AbstractCommand*)new BC_TQRRecordFieldValQuot(this, ptqrcollection);
  m_Command[i++] = (AbstractCommand*)new BC_CycleTQR(this, pcgires, ptqrcollection);
  m_Command[i++] = (AbstractCommand*)new BC_EndCycleTQR(this, ptqrcollection);
  m_Command[i++] = (AbstractCommand*)new BC_CycleFor(this, pcgires, ptqrcollection, ptqr_manager);
  m_Command[i++] = (AbstractCommand*)new BC_EndCycleFor(this, ptqrcollection);
  m_Command[i++] = (AbstractCommand*)new BC_ForIndex(this, ptqrcollection);
  m_Command[i++] = (AbstractCommand*)new BC_Exit(this);
  m_Command[i++] = (AbstractCommand*)new BC_TQRExist(this, ptqrcollection);
  m_Command[i++] = (AbstractCommand*)new BC_GetHide(this);
  m_Command[i++] = (AbstractCommand*)new BC_Crypt(this);
  m_Command[i++] = (AbstractCommand*)new BC_Decrypt(this);
  m_Command[i++] = (AbstractCommand*)new BC_RemoveTQR(this, ptqrcollection);
  m_Command[i++] = (AbstractCommand*)new BC_TQRStat(this, ptqrcollection);
  m_Command[i++] = (AbstractCommand*)new BC_Valid(this, pcgires, ptqrodbc_manager, ptqrcollection);
  m_Command[i++] = (AbstractCommand*)new BC_Return(this);
  m_Command[i++] = (AbstractCommand*)new BC_Flush(this, pcgires);
  m_Command[i++] = (AbstractCommand*)new BC_TQRFilt(this, ptqr_manager);
  m_Command[i++] = (AbstractCommand*)new BC_Recsel(this,  ptqrcollection, pcgires);
  m_Command[i++] = (AbstractCommand*)new BC_TQRMove(this, ptqrcollection);
  m_Command[i++] = (AbstractCommand*)new BC_Trans(this, pcgires, ptqrodbc_manager, ptqrcollection);
  m_Command[i++] = (AbstractCommand*)new BC_Left(this);
  m_Command[i++] = (AbstractCommand*)new BC_Right(this);
  m_Command[i++] = (AbstractCommand*)new BC_Strlen();
  m_Command[i++] = (AbstractCommand*)new BC_TQRStore(this, ptqr_manager);
  m_Command[i++] = (AbstractCommand*)new BC_TQRInsert(this, ptqrodbc_manager);
  m_Command[i++] = (AbstractCommand*)new BC_Pager(this, ptqr_manager);
  m_Command[i++] = (AbstractCommand*)new BC_Netprex(this);
  m_Command[i++] = (AbstractCommand*)new BC_Netgrab(this);
  m_Command[i++] = (AbstractCommand*)new BC_Rand(this);
  m_Command[i++] = (AbstractCommand*)new BC_MakeOp(this);
  m_Command[i++] = (AbstractCommand*)new BC_GetValueQuote(this, pcgires);
  m_Command[i++] = (AbstractCommand*)new BC_TQRSample(this, ptqr_manager);
  m_Command[i++] = (AbstractCommand*)new BC_NewConnection(this, pconnections);
  m_Command[i++] = (AbstractCommand*)new BC_SetConnection(this, ptqrodbc_manager, pconnections);
  m_Command[i++] = (AbstractCommand*)new BC_ResetConnection(this, ptqrodbc_manager, podbcconnection);
  m_Command[i++] = (AbstractCommand*)new BC_Array(this, ptqr_manager);
  m_Command[i++] = (AbstractCommand*)new BC_ArraySet(this, ptqr_manager);
  m_Command[i++] = (AbstractCommand*)new BC_ArrayGet(this, ptqr_manager);
  m_Command[i++] = (AbstractCommand*)new BC_RemoveChar(this);
  m_Command[i++] = (AbstractCommand*)new BC_Mid(this);
  m_Command[i++] = (AbstractCommand*)new BC_NumericalCmp(this);
  m_Command[i++] = (AbstractCommand*)new BC_Proc(this, pcgires);
  m_Command[i++] = (AbstractCommand*)new BC_Verinst(this);
  m_Command[i++] = (AbstractCommand*)new BC_CopyFile(this);
  m_Command[i++] = (AbstractCommand*)new BC_Currency(this);
  m_Command[i++] = (AbstractCommand*)new BC_Console(this, pcgires);
  m_Command[i++] = (AbstractCommand*)new BC_GetValueCast(this, pcgires);
  m_Command[i++] = (AbstractCommand*)new BC_GetPOSTbody(pcgires);
  m_Command[i++] = (AbstractCommand*)new BC_Mail(this);
  m_Command[i++] = (AbstractCommand*)new BC_Getenv(this);

//END CREATION BASE COMMANDS

  UpdateTotalCount();
  m_BaseCount = m_TotalCount;
}