# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1282118006 -10800 # Node ID cf5c74390b98dcebd21b78a751721bdc4a6a40bf # Parent afe194b6b1cd42b66c3b6e4456559425d28390a9 Revision: 201031 Kit: 201033 diff -r afe194b6b1cd -r cf5c74390b98 harvester/harvesterserver/src/charvesterserver.cpp --- a/harvester/harvesterserver/src/charvesterserver.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/harvester/harvesterserver/src/charvesterserver.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -44,7 +44,7 @@ // CHarvesterServer* CHarvesterServer::NewLC() { - CHarvesterServer* HarvesterServer = new ( ELeave ) CHarvesterServer( EPriorityNormal ); + CHarvesterServer* HarvesterServer = new ( ELeave ) CHarvesterServer( CActive::EPriorityStandard ); CleanupStack::PushL(HarvesterServer); HarvesterServer->ConstructL(); return HarvesterServer; @@ -57,6 +57,9 @@ // void CHarvesterServer::ConstructL() { + RProcess process; + process.SetPriority( EPriorityBackground ); + process.Close(); iIndexingManager = CIndexingManager::NewL(); StartL(KHarvesterServerName); } @@ -143,7 +146,7 @@ CHarvesterServer* server = CHarvesterServer::NewLC(); // Set thread priority - RProcess().SetPriority(EPriorityBackground); + //RProcess().SetPriority(EPriorityBackground); // Rename the thread. User::RenameThread(KHarvesterServerName); diff -r afe194b6b1cd -r cf5c74390b98 layers.sysdef.xml --- a/layers.sysdef.xml Tue Jul 06 15:30:04 2010 +0300 +++ b/layers.sysdef.xml Wed Aug 18 10:53:26 2010 +0300 @@ -8,7 +8,7 @@ - + diff -r afe194b6b1cd -r cf5c74390b98 qcpix/bwins/cpixsearchu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/bwins/cpixsearchu.def Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,76 @@ +EXPORTS + ?documentAsync@CpixSearcher@@QAEXH@Z @ 1 NONAME ; void CpixSearcher::documentAsync(int) + ?docId@CpixDocument@@QBE?AVQString@@XZ @ 2 NONAME ; class QString CpixDocument::docId(void) const + ?d_func@CpixDocumentField@@ABEPBVCpixDocumentFieldPrivate@@XZ @ 3 NONAME ; class CpixDocumentFieldPrivate const * CpixDocumentField::d_func(void) const + ?metaObject@CpixDocument@@UBEPBUQMetaObject@@XZ @ 4 NONAME ; struct QMetaObject const * CpixDocument::metaObject(void) const + ?cancelSearch@CpixSearcher@@QAEXXZ @ 5 NONAME ; void CpixSearcher::cancelSearch(void) + ?tr@CpixDocumentField@@SA?AVQString@@PBD0H@Z @ 6 NONAME ; class QString CpixDocumentField::tr(char const *, char const *, int) + ?handleDocument@CpixSearcher@@IAEXHPAVCpixDocument@@@Z @ 7 NONAME ; void CpixSearcher::handleDocument(int, class CpixDocument *) + ?qt_metacall@CpixDocumentField@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 8 NONAME ; int CpixDocumentField::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacast@CpixSearcher@@UAEPAXPBD@Z @ 9 NONAME ; void * CpixSearcher::qt_metacast(char const *) + ?handleSearchResults@CpixSearcher@@IAEXHH@Z @ 10 NONAME ; void CpixSearcher::handleSearchResults(int, int) + ?searchAsync@CpixSearcher@@QAEXVQString@@0@Z @ 11 NONAME ; void CpixSearcher::searchAsync(class QString, class QString) + ?tr@CpixDocument@@SA?AVQString@@PBD0@Z @ 12 NONAME ; class QString CpixDocument::tr(char const *, char const *) + ??1CpixDocumentField@@UAE@XZ @ 13 NONAME ; CpixDocumentField::~CpixDocumentField(void) + ?getStaticMetaObject@CpixDocument@@SAABUQMetaObject@@XZ @ 14 NONAME ; struct QMetaObject const & CpixDocument::getStaticMetaObject(void) + ??_ECpixDocument@@UAE@I@Z @ 15 NONAME ; CpixDocument::~CpixDocument(unsigned int) + ?newInstance@CpixDocumentField@@SAPAV1@VQString@@0H@Z @ 16 NONAME ; class CpixDocumentField * CpixDocumentField::newInstance(class QString, class QString, int) + ??_ECpixSearcher@@UAE@I@Z @ 17 NONAME ; CpixSearcher::~CpixSearcher(unsigned int) + ?batchdocumentAsync@CpixSearcher@@QAEXHH@Z @ 18 NONAME ; void CpixSearcher::batchdocumentAsync(int, int) + ?d_func@CpixDocument@@ABEPBVCpixDocumentPrivate@@XZ @ 19 NONAME ; class CpixDocumentPrivate const * CpixDocument::d_func(void) const + ?trUtf8@CpixDocumentField@@SA?AVQString@@PBD0H@Z @ 20 NONAME ; class QString CpixDocumentField::trUtf8(char const *, char const *, int) + ?getStaticMetaObject@CpixDocumentField@@SAABUQMetaObject@@XZ @ 21 NONAME ; struct QMetaObject const & CpixDocumentField::getStaticMetaObject(void) + ?staticMetaObject@CpixDocument@@2UQMetaObject@@B @ 22 NONAME ; struct QMetaObject const CpixDocument::staticMetaObject + ??_ECpixDocumentField@@UAE@I@Z @ 23 NONAME ; CpixDocumentField::~CpixDocumentField(unsigned int) + ?config@CpixDocumentField@@QBEHXZ @ 24 NONAME ; int CpixDocumentField::config(void) const + ?tr@CpixSearcher@@SA?AVQString@@PBD0H@Z @ 25 NONAME ; class QString CpixSearcher::tr(char const *, char const *, int) + ?d_func@CpixDocument@@AAEPAVCpixDocumentPrivate@@XZ @ 26 NONAME ; class CpixDocumentPrivate * CpixDocument::d_func(void) + ?trUtf8@CpixDocument@@SA?AVQString@@PBD0H@Z @ 27 NONAME ; class QString CpixDocument::trUtf8(char const *, char const *, int) + ?setValue@CpixDocumentField@@QAEXVQString@@@Z @ 28 NONAME ; void CpixDocumentField::setValue(class QString) + ?qt_metacall@CpixSearcher@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 29 NONAME ; int CpixSearcher::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@CpixDocument@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 30 NONAME ; int CpixDocument::qt_metacall(enum QMetaObject::Call, int, void * *) + ??1CpixDocument@@UAE@XZ @ 31 NONAME ; CpixDocument::~CpixDocument(void) + ?handleDatabaseSet@CpixSearcher@@IAEXH@Z @ 32 NONAME ; void CpixSearcher::handleDatabaseSet(int) + ??0CpixDocumentField@@AAE@VQString@@0H@Z @ 33 NONAME ; CpixDocumentField::CpixDocumentField(class QString, class QString, int) + ?trUtf8@CpixSearcher@@SA?AVQString@@PBD0@Z @ 34 NONAME ; class QString CpixSearcher::trUtf8(char const *, char const *) + ?newInstance@CpixDocument@@SAPAV1@XZ @ 35 NONAME ; class CpixDocument * CpixDocument::newInstance(void) + ?setDatabaseAsync@CpixSearcher@@QAEXVQString@@@Z @ 36 NONAME ; void CpixSearcher::setDatabaseAsync(class QString) + ?value@CpixDocumentField@@QBE?AVQString@@XZ @ 37 NONAME ; class QString CpixDocumentField::value(void) const + ?batchdocument@CpixSearcher@@QAEPAPAVCpixDocument@@HAAHH@Z @ 38 NONAME ; class CpixDocument * * CpixSearcher::batchdocument(int, int &, int) + ?name@CpixDocumentField@@QBE?AVQString@@XZ @ 39 NONAME ; class QString CpixDocumentField::name(void) const + ?search@CpixSearcher@@QAEHVQString@@0@Z @ 40 NONAME ; int CpixSearcher::search(class QString, class QString) + ?tr@CpixDocumentField@@SA?AVQString@@PBD0@Z @ 41 NONAME ; class QString CpixDocumentField::tr(char const *, char const *) + ?staticMetaObject@CpixSearcher@@2UQMetaObject@@B @ 42 NONAME ; struct QMetaObject const CpixSearcher::staticMetaObject + ??1CpixSearcher@@UAE@XZ @ 43 NONAME ; CpixSearcher::~CpixSearcher(void) + ?excerpt@CpixDocument@@QBE?AVQString@@XZ @ 44 NONAME ; class QString CpixDocument::excerpt(void) const + ?setName@CpixDocumentField@@QAEXVQString@@@Z @ 45 NONAME ; void CpixDocumentField::setName(class QString) + ?setDocId@CpixDocument@@QAEXVQString@@@Z @ 46 NONAME ; void CpixDocument::setDocId(class QString) + ?fieldCount@CpixDocument@@QBEHXZ @ 47 NONAME ; int CpixDocument::fieldCount(void) const + ?baseAppClass@CpixDocument@@QBE?AVQString@@XZ @ 48 NONAME ; class QString CpixDocument::baseAppClass(void) const + ?qt_metacast@CpixDocumentField@@UAEPAXPBD@Z @ 49 NONAME ; void * CpixDocumentField::qt_metacast(char const *) + ?newInstance@CpixSearcher@@SAPAV1@XZ @ 50 NONAME ; class CpixSearcher * CpixSearcher::newInstance(void) + ?field@CpixDocument@@QBEABVCpixDocumentField@@H@Z @ 51 NONAME ; class CpixDocumentField const & CpixDocument::field(int) const + ?metaObject@CpixSearcher@@UBEPBUQMetaObject@@XZ @ 52 NONAME ; struct QMetaObject const * CpixSearcher::metaObject(void) const + ?metaObject@CpixDocumentField@@UBEPBUQMetaObject@@XZ @ 53 NONAME ; struct QMetaObject const * CpixDocumentField::metaObject(void) const + ?qt_metacast@CpixDocument@@UAEPAXPBD@Z @ 54 NONAME ; void * CpixDocument::qt_metacast(char const *) + ?document@CpixSearcher@@QAEPAVCpixDocument@@H@Z @ 55 NONAME ; class CpixDocument * CpixSearcher::document(int) + ?trUtf8@CpixDocument@@SA?AVQString@@PBD0@Z @ 56 NONAME ; class QString CpixDocument::trUtf8(char const *, char const *) + ?setExcerpt@CpixDocument@@QAEXVQString@@@Z @ 57 NONAME ; void CpixDocument::setExcerpt(class QString) + ?tr@CpixDocument@@SA?AVQString@@PBD0H@Z @ 58 NONAME ; class QString CpixDocument::tr(char const *, char const *, int) + ?addField@CpixDocument@@QAEXVQString@@0H@Z @ 59 NONAME ; void CpixDocument::addField(class QString, class QString, int) + ??0CpixDocument@@AAE@XZ @ 60 NONAME ; CpixDocument::CpixDocument(void) + ?newInstance@CpixSearcher@@SAPAV1@VQString@@0@Z @ 61 NONAME ; class CpixSearcher * CpixSearcher::newInstance(class QString, class QString) + ?setDatabase@CpixSearcher@@QAEXVQString@@@Z @ 62 NONAME ; void CpixSearcher::setDatabase(class QString) + ?setBaseAppClass@CpixDocument@@QAEXVQString@@@Z @ 63 NONAME ; void CpixDocument::setBaseAppClass(class QString) + ?trUtf8@CpixDocumentField@@SA?AVQString@@PBD0@Z @ 64 NONAME ; class QString CpixDocumentField::trUtf8(char const *, char const *) + ?tr@CpixSearcher@@SA?AVQString@@PBD0@Z @ 65 NONAME ; class QString CpixSearcher::tr(char const *, char const *) + ?getStaticMetaObject@CpixSearcher@@SAABUQMetaObject@@XZ @ 66 NONAME ; struct QMetaObject const & CpixSearcher::getStaticMetaObject(void) + ?d_func@CpixDocumentField@@AAEPAVCpixDocumentFieldPrivate@@XZ @ 67 NONAME ; class CpixDocumentFieldPrivate * CpixDocumentField::d_func(void) + ?d_func@CpixSearcher@@ABEPBVCpixSearcherPrivate@@XZ @ 68 NONAME ; class CpixSearcherPrivate const * CpixSearcher::d_func(void) const + ?trUtf8@CpixSearcher@@SA?AVQString@@PBD0H@Z @ 69 NONAME ; class QString CpixSearcher::trUtf8(char const *, char const *, int) + ??0CpixSearcher@@AAE@XZ @ 70 NONAME ; CpixSearcher::CpixSearcher(void) + ?handleBatchDocuments@CpixSearcher@@IAEXHHPAPAVCpixDocument@@@Z @ 71 NONAME ; void CpixSearcher::handleBatchDocuments(int, int, class CpixDocument * *) + ?d_func@CpixSearcher@@AAEPAVCpixSearcherPrivate@@XZ @ 72 NONAME ; class CpixSearcherPrivate * CpixSearcher::d_func(void) + ?setConfig@CpixDocumentField@@QAEXH@Z @ 73 NONAME ; void CpixDocumentField::setConfig(int) + ?staticMetaObject@CpixDocumentField@@2UQMetaObject@@B @ 74 NONAME ; struct QMetaObject const CpixDocumentField::staticMetaObject + diff -r afe194b6b1cd -r cf5c74390b98 qcpix/bwins/qcpixsearchclientu.def --- a/qcpix/bwins/qcpixsearchclientu.def Tue Jul 06 15:30:04 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -EXPORTS - ?setDocId@QCPixDocument@@QAEXVQString@@@Z @ 1 NONAME ; void QCPixDocument::setDocId(class QString) - ?trUtf8@QCPixSearcher@@SA?AVQString@@PBD0H@Z @ 2 NONAME ; class QString QCPixSearcher::trUtf8(char const *, char const *, int) - ?tr@QCPixDocument@@SA?AVQString@@PBD0H@Z @ 3 NONAME ; class QString QCPixDocument::tr(char const *, char const *, int) - ?newInstance@QCPixDocument@@SAPAV1@XZ @ 4 NONAME ; class QCPixDocument * QCPixDocument::newInstance(void) - ?tr@QCPixDocument@@SA?AVQString@@PBD0@Z @ 5 NONAME ; class QString QCPixDocument::tr(char const *, char const *) - ?metaObject@QCPixDocumentField@@UBEPBUQMetaObject@@XZ @ 6 NONAME ; struct QMetaObject const * QCPixDocumentField::metaObject(void) const - ?tr@QCPixDocumentField@@SA?AVQString@@PBD0H@Z @ 7 NONAME ; class QString QCPixDocumentField::tr(char const *, char const *, int) - ?setExcerpt@QCPixDocument@@QAEXVQString@@@Z @ 8 NONAME ; void QCPixDocument::setExcerpt(class QString) - ??_EQCPixDocumentField@@UAE@I@Z @ 9 NONAME ; QCPixDocumentField::~QCPixDocumentField(unsigned int) - ?name@QCPixDocumentField@@QBE?AVQString@@XZ @ 10 NONAME ; class QString QCPixDocumentField::name(void) const - ?setName@QCPixDocumentField@@QAEXVQString@@@Z @ 11 NONAME ; void QCPixDocumentField::setName(class QString) - ?search@QCPixSearcher@@QAEHVQString@@0@Z @ 12 NONAME ; int QCPixSearcher::search(class QString, class QString) - ?getDocument@QCPixSearcher@@QAEPAVQCPixDocument@@H@Z @ 13 NONAME ; class QCPixDocument * QCPixSearcher::getDocument(int) - ?excerpt@QCPixDocument@@QBE?AVQString@@XZ @ 14 NONAME ; class QString QCPixDocument::excerpt(void) const - ?d_func@QCPixDocument@@AAEPAVQCPixDocumentPrivate@@XZ @ 15 NONAME ; class QCPixDocumentPrivate * QCPixDocument::d_func(void) - ?qt_metacast@QCPixSearcher@@UAEPAXPBD@Z @ 16 NONAME ; void * QCPixSearcher::qt_metacast(char const *) - ?d_func@QCPixSearcher@@AAEPAVQCPixSearcherPrivate@@XZ @ 17 NONAME ; class QCPixSearcherPrivate * QCPixSearcher::d_func(void) - ?setDatabaseAsync@QCPixSearcher@@QAEXVQString@@@Z @ 18 NONAME ; void QCPixSearcher::setDatabaseAsync(class QString) - ?handleDocument@QCPixSearcher@@IAEXHPAVQCPixDocument@@@Z @ 19 NONAME ; void QCPixSearcher::handleDocument(int, class QCPixDocument *) - ?newInstance@QCPixSearcher@@SAPAV1@XZ @ 20 NONAME ; class QCPixSearcher * QCPixSearcher::newInstance(void) - ?qt_metacall@QCPixDocumentField@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 21 NONAME ; int QCPixDocumentField::qt_metacall(enum QMetaObject::Call, int, void * *) - ?cancelSearch@QCPixSearcher@@QAEXXZ @ 22 NONAME ; void QCPixSearcher::cancelSearch(void) - ?getStaticMetaObject@QCPixDocumentField@@SAABUQMetaObject@@XZ @ 23 NONAME ; struct QMetaObject const & QCPixDocumentField::getStaticMetaObject(void) - ?field@QCPixDocument@@QBEABVQCPixDocumentField@@H@Z @ 24 NONAME ; class QCPixDocumentField const & QCPixDocument::field(int) const - ?handleDatabaseSet@QCPixSearcher@@IAEXH@Z @ 25 NONAME ; void QCPixSearcher::handleDatabaseSet(int) - ?trUtf8@QCPixSearcher@@SA?AVQString@@PBD0@Z @ 26 NONAME ; class QString QCPixSearcher::trUtf8(char const *, char const *) - ?metaObject@QCPixSearcher@@UBEPBUQMetaObject@@XZ @ 27 NONAME ; struct QMetaObject const * QCPixSearcher::metaObject(void) const - ?d_func@QCPixDocument@@ABEPBVQCPixDocumentPrivate@@XZ @ 28 NONAME ; class QCPixDocumentPrivate const * QCPixDocument::d_func(void) const - ?d_func@QCPixSearcher@@ABEPBVQCPixSearcherPrivate@@XZ @ 29 NONAME ; class QCPixSearcherPrivate const * QCPixSearcher::d_func(void) const - ?setDatabase@QCPixSearcher@@QAEXVQString@@@Z @ 30 NONAME ; void QCPixSearcher::setDatabase(class QString) - ?setValue@QCPixDocumentField@@QAEXVQString@@@Z @ 31 NONAME ; void QCPixDocumentField::setValue(class QString) - ?trUtf8@QCPixDocument@@SA?AVQString@@PBD0H@Z @ 32 NONAME ; class QString QCPixDocument::trUtf8(char const *, char const *, int) - ?getStaticMetaObject@QCPixSearcher@@SAABUQMetaObject@@XZ @ 33 NONAME ; struct QMetaObject const & QCPixSearcher::getStaticMetaObject(void) - ?value@QCPixDocumentField@@QBE?AVQString@@XZ @ 34 NONAME ; class QString QCPixDocumentField::value(void) const - ?handleSearchResults@QCPixSearcher@@IAEXHH@Z @ 35 NONAME ; void QCPixSearcher::handleSearchResults(int, int) - ?tr@QCPixSearcher@@SA?AVQString@@PBD0H@Z @ 36 NONAME ; class QString QCPixSearcher::tr(char const *, char const *, int) - ?getDocumentAsync@QCPixSearcher@@QAEXH@Z @ 37 NONAME ; void QCPixSearcher::getDocumentAsync(int) - ?config@QCPixDocumentField@@QBEHXZ @ 38 NONAME ; int QCPixDocumentField::config(void) const - ??_EQCPixDocument@@UAE@I@Z @ 39 NONAME ; QCPixDocument::~QCPixDocument(unsigned int) - ??_EQCPixSearcher@@UAE@I@Z @ 40 NONAME ; QCPixSearcher::~QCPixSearcher(unsigned int) - ??0QCPixSearcher@@AAE@VQString@@@Z @ 41 NONAME ; QCPixSearcher::QCPixSearcher(class QString) - ?staticMetaObject@QCPixDocument@@2UQMetaObject@@B @ 42 NONAME ; struct QMetaObject const QCPixDocument::staticMetaObject - ?fieldCount@QCPixDocument@@QBEHXZ @ 43 NONAME ; int QCPixDocument::fieldCount(void) const - ?trUtf8@QCPixDocument@@SA?AVQString@@PBD0@Z @ 44 NONAME ; class QString QCPixDocument::trUtf8(char const *, char const *) - ?baseAppClass@QCPixDocument@@QBE?AVQString@@XZ @ 45 NONAME ; class QString QCPixDocument::baseAppClass(void) const - ??1QCPixDocument@@UAE@XZ @ 46 NONAME ; QCPixDocument::~QCPixDocument(void) - ?d_func@QCPixDocumentField@@AAEPAVQCPixDocumentFieldPrivate@@XZ @ 47 NONAME ; class QCPixDocumentFieldPrivate * QCPixDocumentField::d_func(void) - ?tr@QCPixSearcher@@SA?AVQString@@PBD0@Z @ 48 NONAME ; class QString QCPixSearcher::tr(char const *, char const *) - ?d_func@QCPixDocumentField@@ABEPBVQCPixDocumentFieldPrivate@@XZ @ 49 NONAME ; class QCPixDocumentFieldPrivate const * QCPixDocumentField::d_func(void) const - ??0QCPixDocumentField@@AAE@VQString@@0H@Z @ 50 NONAME ; QCPixDocumentField::QCPixDocumentField(class QString, class QString, int) - ?trUtf8@QCPixDocumentField@@SA?AVQString@@PBD0H@Z @ 51 NONAME ; class QString QCPixDocumentField::trUtf8(char const *, char const *, int) - ?qt_metacast@QCPixDocument@@UAEPAXPBD@Z @ 52 NONAME ; void * QCPixDocument::qt_metacast(char const *) - ?searchAsync@QCPixSearcher@@QAEXVQString@@0@Z @ 53 NONAME ; void QCPixSearcher::searchAsync(class QString, class QString) - ?staticMetaObject@QCPixDocumentField@@2UQMetaObject@@B @ 54 NONAME ; struct QMetaObject const QCPixDocumentField::staticMetaObject - ?setConfig@QCPixDocumentField@@QAEXH@Z @ 55 NONAME ; void QCPixDocumentField::setConfig(int) - ?getStaticMetaObject@QCPixDocument@@SAABUQMetaObject@@XZ @ 56 NONAME ; struct QMetaObject const & QCPixDocument::getStaticMetaObject(void) - ?tr@QCPixDocumentField@@SA?AVQString@@PBD0@Z @ 57 NONAME ; class QString QCPixDocumentField::tr(char const *, char const *) - ?docId@QCPixDocument@@QBE?AVQString@@XZ @ 58 NONAME ; class QString QCPixDocument::docId(void) const - ?metaObject@QCPixDocument@@UBEPBUQMetaObject@@XZ @ 59 NONAME ; struct QMetaObject const * QCPixDocument::metaObject(void) const - ?newInstance@QCPixSearcher@@SAPAV1@VQString@@0@Z @ 60 NONAME ; class QCPixSearcher * QCPixSearcher::newInstance(class QString, class QString) - ?qt_metacall@QCPixDocument@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 61 NONAME ; int QCPixDocument::qt_metacall(enum QMetaObject::Call, int, void * *) - ?qt_metacall@QCPixSearcher@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 62 NONAME ; int QCPixSearcher::qt_metacall(enum QMetaObject::Call, int, void * *) - ?qt_metacast@QCPixDocumentField@@UAEPAXPBD@Z @ 63 NONAME ; void * QCPixDocumentField::qt_metacast(char const *) - ??0QCPixDocument@@AAE@XZ @ 64 NONAME ; QCPixDocument::QCPixDocument(void) - ?newInstance@QCPixDocumentField@@SAPAV1@VQString@@0H@Z @ 65 NONAME ; class QCPixDocumentField * QCPixDocumentField::newInstance(class QString, class QString, int) - ??1QCPixSearcher@@UAE@XZ @ 66 NONAME ; QCPixSearcher::~QCPixSearcher(void) - ?staticMetaObject@QCPixSearcher@@2UQMetaObject@@B @ 67 NONAME ; struct QMetaObject const QCPixSearcher::staticMetaObject - ?setBaseAppClass@QCPixDocument@@QAEXVQString@@@Z @ 68 NONAME ; void QCPixDocument::setBaseAppClass(class QString) - ??1QCPixDocumentField@@UAE@XZ @ 69 NONAME ; QCPixDocumentField::~QCPixDocumentField(void) - ?addField@QCPixDocument@@QAEXVQString@@0H@Z @ 70 NONAME ; void QCPixDocument::addField(class QString, class QString, int) - ?trUtf8@QCPixDocumentField@@SA?AVQString@@PBD0@Z @ 71 NONAME ; class QString QCPixDocumentField::trUtf8(char const *, char const *) - diff -r afe194b6b1cd -r cf5c74390b98 qcpix/cpix.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/cpix.pro Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,23 @@ +# +# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# + +TEMPLATE = subdirs +CONFIG += ordered +SUBDIRS += cpixsearch.pro + #Removing test components + #tsrc/SampleSearch/SampleSearch.pro \ + #tsrc/orbitsearch/orbitsearch.pro \ + #tsrc/qtcpixunittests/qtcpixunittests.pro \ No newline at end of file diff -r afe194b6b1cd -r cf5c74390b98 qcpix/cpixsearch.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/cpixsearch.pro Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,68 @@ +# +# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# + +TEMPLATE = lib +TARGET = cpixsearch +QT += core +QT -= gui + +INCLUDEPATH += ../s60/searchclient/inc +INCLUDEPATH += ../cfg + +HEADERS += ../searchsrv_plat/cpix_search_api/inc/cpixcommon.h \ + ../searchsrv_plat/cpix_search_api/inc/cpixdocument.h \ + ../searchsrv_plat/cpix_search_api/inc/cpixdocumentfield.h \ + ../searchsrv_plat/cpix_search_api/inc/cpixsearcher.h + +SOURCES += src/cpixdocument.cpp \ + src/cpixdocumentfield.cpp \ + src/cpixsearcher.cpp + +DEFINES += BUILD_DLL + +symbian{ + TARGET.CAPABILITY = CAP_GENERAL_DLL -DRM + TARGET.EPOCALLOWDLLDATA = 1 + TARGET.UID3 = 0xE3B89364 + TARGET.VID = VID_DEFAULT + VERSION = 1.0.0 + LIBS += -leuser -lcpixsearchclient + + INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE + + HEADERS += src/platform/s60/inc/cpixdocumentprivate.h \ + src/platform/s60/inc/cpixdocumentfieldprivate.h \ + src/platform/s60/inc/cpixsearcherprivate.h \ + src/platform/s60/inc/cpixutils.h + + SOURCES += src/platform/s60/src/cpixdocumentfieldprivate.cpp \ + src/platform/s60/src/cpixsearcherprivate.cpp \ + src/platform/s60/src/cpixutils.cpp + + qcpixsearchclient.sources += /epoc32/release/armv5/urel/cpixsearch.dll + qcpixsearchclient.path = /sys/bin + DEPLOYMENT += cpixsearch + + defFileBlock = \ + "$${LITERAL_HASH}if defined(WINSCW)" \ + "DEFFILE bwins/" \ + "$${LITERAL_HASH}else" \ + "DEFFILE eabi/" \ + "$${LITERAL_HASH}endif" \ + + MMP_RULES += defFileBlock + +} \ No newline at end of file diff -r afe194b6b1cd -r cf5c74390b98 qcpix/eabi/cpixsearchu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/eabi/cpixsearchu.def Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,70 @@ +EXPORTS + _ZN12CpixDocument10setExcerptE7QString @ 1 NONAME + _ZN12CpixDocument11newInstanceEv @ 2 NONAME + _ZN12CpixDocument11qt_metacallEN11QMetaObject4CallEiPPv @ 3 NONAME + _ZN12CpixDocument11qt_metacastEPKc @ 4 NONAME + _ZN12CpixDocument15setBaseAppClassE7QString @ 5 NONAME + _ZN12CpixDocument16staticMetaObjectE @ 6 NONAME DATA 16 + _ZN12CpixDocument19getStaticMetaObjectEv @ 7 NONAME + _ZN12CpixDocument8addFieldE7QStringS0_i @ 8 NONAME + _ZN12CpixDocument8setDocIdE7QString @ 9 NONAME + _ZN12CpixDocumentC1Ev @ 10 NONAME + _ZN12CpixDocumentC2Ev @ 11 NONAME + _ZN12CpixDocumentD0Ev @ 12 NONAME + _ZN12CpixDocumentD1Ev @ 13 NONAME + _ZN12CpixDocumentD2Ev @ 14 NONAME + _ZN12CpixSearcher11newInstanceE7QStringS0_ @ 15 NONAME + _ZN12CpixSearcher11newInstanceEv @ 16 NONAME + _ZN12CpixSearcher11qt_metacallEN11QMetaObject4CallEiPPv @ 17 NONAME + _ZN12CpixSearcher11qt_metacastEPKc @ 18 NONAME + _ZN12CpixSearcher11searchAsyncE7QStringS0_ @ 19 NONAME + _ZN12CpixSearcher11setDatabaseE7QString @ 20 NONAME + _ZN12CpixSearcher12cancelSearchEv @ 21 NONAME + _ZN12CpixSearcher13batchdocumentEiRii @ 22 NONAME + _ZN12CpixSearcher13documentAsyncEi @ 23 NONAME + _ZN12CpixSearcher14handleDocumentEiP12CpixDocument @ 24 NONAME + _ZN12CpixSearcher16setDatabaseAsyncE7QString @ 25 NONAME + _ZN12CpixSearcher16staticMetaObjectE @ 26 NONAME DATA 16 + _ZN12CpixSearcher17handleDatabaseSetEi @ 27 NONAME + _ZN12CpixSearcher18batchdocumentAsyncEii @ 28 NONAME + _ZN12CpixSearcher19getStaticMetaObjectEv @ 29 NONAME + _ZN12CpixSearcher19handleSearchResultsEii @ 30 NONAME + _ZN12CpixSearcher20handleBatchDocumentsEiiPP12CpixDocument @ 31 NONAME + _ZN12CpixSearcher6searchE7QStringS0_ @ 32 NONAME + _ZN12CpixSearcher8documentEi @ 33 NONAME + _ZN12CpixSearcherC1Ev @ 34 NONAME + _ZN12CpixSearcherC2Ev @ 35 NONAME + _ZN12CpixSearcherD0Ev @ 36 NONAME + _ZN12CpixSearcherD1Ev @ 37 NONAME + _ZN12CpixSearcherD2Ev @ 38 NONAME + _ZN17CpixDocumentField11newInstanceE7QStringS0_i @ 39 NONAME + _ZN17CpixDocumentField11qt_metacallEN11QMetaObject4CallEiPPv @ 40 NONAME + _ZN17CpixDocumentField11qt_metacastEPKc @ 41 NONAME + _ZN17CpixDocumentField16staticMetaObjectE @ 42 NONAME DATA 16 + _ZN17CpixDocumentField19getStaticMetaObjectEv @ 43 NONAME + _ZN17CpixDocumentField7setNameE7QString @ 44 NONAME + _ZN17CpixDocumentField8setValueE7QString @ 45 NONAME + _ZN17CpixDocumentField9setConfigEi @ 46 NONAME + _ZN17CpixDocumentFieldC1E7QStringS0_i @ 47 NONAME + _ZN17CpixDocumentFieldC2E7QStringS0_i @ 48 NONAME + _ZN17CpixDocumentFieldD0Ev @ 49 NONAME + _ZN17CpixDocumentFieldD1Ev @ 50 NONAME + _ZN17CpixDocumentFieldD2Ev @ 51 NONAME + _ZNK12CpixDocument10fieldCountEv @ 52 NONAME + _ZNK12CpixDocument10metaObjectEv @ 53 NONAME + _ZNK12CpixDocument12baseAppClassEv @ 54 NONAME + _ZNK12CpixDocument5docIdEv @ 55 NONAME + _ZNK12CpixDocument5fieldEi @ 56 NONAME + _ZNK12CpixDocument7excerptEv @ 57 NONAME + _ZNK12CpixSearcher10metaObjectEv @ 58 NONAME + _ZNK17CpixDocumentField10metaObjectEv @ 59 NONAME + _ZNK17CpixDocumentField4nameEv @ 60 NONAME + _ZNK17CpixDocumentField5valueEv @ 61 NONAME + _ZNK17CpixDocumentField6configEv @ 62 NONAME + _ZTI12CpixDocument @ 63 NONAME + _ZTI12CpixSearcher @ 64 NONAME + _ZTI17CpixDocumentField @ 65 NONAME + _ZTV12CpixDocument @ 66 NONAME + _ZTV12CpixSearcher @ 67 NONAME + _ZTV17CpixDocumentField @ 68 NONAME + diff -r afe194b6b1cd -r cf5c74390b98 qcpix/eabi/qcpixsearchclientu.def --- a/qcpix/eabi/qcpixsearchclientu.def Tue Jul 06 15:30:04 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -EXPORTS - _ZN13QCPixDocument10setExcerptE7QString @ 1 NONAME - _ZN13QCPixDocument11newInstanceEv @ 2 NONAME - _ZN13QCPixDocument11qt_metacallEN11QMetaObject4CallEiPPv @ 3 NONAME - _ZN13QCPixDocument11qt_metacastEPKc @ 4 NONAME - _ZN13QCPixDocument15setBaseAppClassE7QString @ 5 NONAME - _ZN13QCPixDocument16staticMetaObjectE @ 6 NONAME DATA 16 - _ZN13QCPixDocument19getStaticMetaObjectEv @ 7 NONAME - _ZN13QCPixDocument8addFieldE7QStringS0_i @ 8 NONAME - _ZN13QCPixDocument8setDocIdE7QString @ 9 NONAME - _ZN13QCPixDocumentC1Ev @ 10 NONAME - _ZN13QCPixDocumentC2Ev @ 11 NONAME - _ZN13QCPixDocumentD0Ev @ 12 NONAME - _ZN13QCPixDocumentD1Ev @ 13 NONAME - _ZN13QCPixDocumentD2Ev @ 14 NONAME - _ZN13QCPixSearcher11getDocumentEi @ 15 NONAME - _ZN13QCPixSearcher11newInstanceE7QStringS0_ @ 16 NONAME - _ZN13QCPixSearcher11newInstanceEv @ 17 NONAME - _ZN13QCPixSearcher11qt_metacallEN11QMetaObject4CallEiPPv @ 18 NONAME - _ZN13QCPixSearcher11qt_metacastEPKc @ 19 NONAME - _ZN13QCPixSearcher11searchAsyncE7QStringS0_ @ 20 NONAME - _ZN13QCPixSearcher11setDatabaseE7QString @ 21 NONAME - _ZN13QCPixSearcher12cancelSearchEv @ 22 NONAME - _ZN13QCPixSearcher14handleDocumentEiP13QCPixDocument @ 23 NONAME - _ZN13QCPixSearcher16getDocumentAsyncEi @ 24 NONAME - _ZN13QCPixSearcher16setDatabaseAsyncE7QString @ 25 NONAME - _ZN13QCPixSearcher16staticMetaObjectE @ 26 NONAME DATA 16 - _ZN13QCPixSearcher17handleDatabaseSetEi @ 27 NONAME - _ZN13QCPixSearcher19getStaticMetaObjectEv @ 28 NONAME - _ZN13QCPixSearcher19handleSearchResultsEii @ 29 NONAME - _ZN13QCPixSearcher6searchE7QStringS0_ @ 30 NONAME - _ZN13QCPixSearcherC1E7QString @ 31 NONAME - _ZN13QCPixSearcherC2E7QString @ 32 NONAME - _ZN13QCPixSearcherD0Ev @ 33 NONAME - _ZN13QCPixSearcherD1Ev @ 34 NONAME - _ZN13QCPixSearcherD2Ev @ 35 NONAME - _ZN18QCPixDocumentField11newInstanceE7QStringS0_i @ 36 NONAME - _ZN18QCPixDocumentField11qt_metacallEN11QMetaObject4CallEiPPv @ 37 NONAME - _ZN18QCPixDocumentField11qt_metacastEPKc @ 38 NONAME - _ZN18QCPixDocumentField16staticMetaObjectE @ 39 NONAME DATA 16 - _ZN18QCPixDocumentField19getStaticMetaObjectEv @ 40 NONAME - _ZN18QCPixDocumentField7setNameE7QString @ 41 NONAME - _ZN18QCPixDocumentField8setValueE7QString @ 42 NONAME - _ZN18QCPixDocumentField9setConfigEi @ 43 NONAME - _ZN18QCPixDocumentFieldC1E7QStringS0_i @ 44 NONAME - _ZN18QCPixDocumentFieldC2E7QStringS0_i @ 45 NONAME - _ZN18QCPixDocumentFieldD0Ev @ 46 NONAME - _ZN18QCPixDocumentFieldD1Ev @ 47 NONAME - _ZN18QCPixDocumentFieldD2Ev @ 48 NONAME - _ZNK13QCPixDocument10fieldCountEv @ 49 NONAME - _ZNK13QCPixDocument10metaObjectEv @ 50 NONAME - _ZNK13QCPixDocument12baseAppClassEv @ 51 NONAME - _ZNK13QCPixDocument5docIdEv @ 52 NONAME - _ZNK13QCPixDocument5fieldEi @ 53 NONAME - _ZNK13QCPixDocument7excerptEv @ 54 NONAME - _ZNK13QCPixSearcher10metaObjectEv @ 55 NONAME - _ZNK18QCPixDocumentField10metaObjectEv @ 56 NONAME - _ZNK18QCPixDocumentField4nameEv @ 57 NONAME - _ZNK18QCPixDocumentField5valueEv @ 58 NONAME - _ZNK18QCPixDocumentField6configEv @ 59 NONAME - _ZTI13QCPixDocument @ 60 NONAME - _ZTI13QCPixSearcher @ 61 NONAME - _ZTI18QCPixDocumentField @ 62 NONAME - _ZTV13QCPixDocument @ 63 NONAME - _ZTV13QCPixSearcher @ 64 NONAME - _ZTV18QCPixDocumentField @ 65 NONAME - diff -r afe194b6b1cd -r cf5c74390b98 qcpix/qcpix.pro --- a/qcpix/qcpix.pro Tue Jul 06 15:30:04 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -# -# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of "Eclipse Public License v1.0" -# which accompanies this distribution, and is available -# at the URL "http://www.eclipse.org/legal/epl-v10.html". -# -# Initial Contributors: -# Nokia Corporation - initial contribution. -# -# Contributors: -# -# Description: -# - -TEMPLATE = subdirs -CONFIG += ordered -SUBDIRS += qcpixsearchclient.pro \ - tsrc/SampleSearch/SampleSearch.pro \ - tsrc/orbitsearch/orbitsearch.pro \ - tsrc/qtcpixunittests/qtcpixunittests.pro diff -r afe194b6b1cd -r cf5c74390b98 qcpix/qcpixsearchclient.pro --- a/qcpix/qcpixsearchclient.pro Tue Jul 06 15:30:04 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -# -# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of "Eclipse Public License v1.0" -# which accompanies this distribution, and is available -# at the URL "http://www.eclipse.org/legal/epl-v10.html". -# -# Initial Contributors: -# Nokia Corporation - initial contribution. -# -# Contributors: -# -# Description: -# - -TEMPLATE = lib -TARGET = qcpixsearchclient -QT += core -QT -= gui - -INCLUDEPATH += ../s60/searchclient/inc -INCLUDEPATH += ../cfg - -HEADERS += ../searchsrv_plat/cpix_search_api/inc/qcpixcommon.h \ - ../searchsrv_plat/cpix_search_api/inc/qcpixdocument.h \ - ../searchsrv_plat/cpix_search_api/inc/qcpixdocumentfield.h \ - ../searchsrv_plat/cpix_search_api/inc/qcpixsearcher.h - -SOURCES += src/qcpixdocument.cpp \ - src/qcpixdocumentfield.cpp \ - src/qcpixsearcher.cpp - -DEFINES += BUILD_DLL - -symbian{ - TARGET.CAPABILITY = CAP_GENERAL_DLL -DRM - TARGET.EPOCALLOWDLLDATA = 1 - TARGET.UID3 = 0xE3B89364 - TARGET.VID = VID_DEFAULT - VERSION = 1.0.0 - LIBS += -leuser -lcpixsearchclient - - INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE - - HEADERS += src/platform/s60/inc/qcpixdocumentprivate.h \ - src/platform/s60/inc/qcpixdocumentfieldprivate.h \ - src/platform/s60/inc/qcpixsearcherprivate.h \ - src/platform/s60/inc/qcpixutils.h - - SOURCES += src/platform/s60/src/qcpixdocumentfieldprivate.cpp \ - src/platform/s60/src/qcpixsearcherprivate.cpp \ - src/platform/s60/src/qcpixutils.cpp - - qcpixsearchclient.sources += /epoc32/release/armv5/urel/qcpixsearchclient.dll - qcpixsearchclient.path = /sys/bin - DEPLOYMENT += qcpixsearchclient - - defFileBlock = \ - "$${LITERAL_HASH}if defined(WINSCW)" \ - "DEFFILE bwins/" \ - "$${LITERAL_HASH}else" \ - "DEFFILE eabi/" \ - "$${LITERAL_HASH}endif" \ - - MMP_RULES += defFileBlock - -} \ No newline at end of file diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/cpixdocument.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/src/cpixdocument.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,95 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include +#include +#include "cpixdocumentprivate.h" + +/** + * Note: Code in this file should never throw OR leak symbian exceptions. + * Convert all leaves to C++ exceptions. + */ + +CpixDocument::CpixDocument() + :iPvtImpl( new CpixDocumentPrivate() ) + { + } + +CpixDocument* CpixDocument::newInstance() + { + CpixDocument* doc = NULL; + try{ + doc = new CpixDocument(); + } + catch(...){ + delete doc; + return NULL; + } + return doc; + } + +CpixDocument::~CpixDocument() + { + delete iPvtImpl; + } + +QString CpixDocument::docId() const + { + return iPvtImpl->iDocId; + } + +QString CpixDocument::excerpt() const + { + return iPvtImpl->iExcerpt; + } + +QString CpixDocument::baseAppClass() const + { + return iPvtImpl->iBaseAppClass; + } + +const CpixDocumentField& CpixDocument::field( const int aIndex ) const + { + return *(iPvtImpl->iFields.at(aIndex)); + } + +int CpixDocument::fieldCount() const + { + return iPvtImpl->iFields.count(); + } + +void CpixDocument::setDocId(const QString aDocId) + { + iPvtImpl->iDocId = aDocId; + } + +void CpixDocument::setExcerpt(const QString aExcerpt) + { + iPvtImpl->iExcerpt = aExcerpt; + } + +void CpixDocument::setBaseAppClass(const QString aBaseAppClass) + { + iPvtImpl->iBaseAppClass = aBaseAppClass; + } + +void CpixDocument::addField(const QString aName, const QString aValue, const int aConfig) + { + iPvtImpl->iFields.append( CpixDocumentField::newInstance( aName, aValue, aConfig ) ); + } + +//End of File diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/cpixdocumentfield.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/src/cpixdocumentfield.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,79 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include +#include "cpixdocumentfieldprivate.h" + +/** + * Note: Code in this file should never throw OR leak symbian exceptions. + * Convert all leaves to C++ exceptions. + */ + +CpixDocumentField::CpixDocumentField( const QString aName, const QString aValue, const int aConfig ) + :iPvtImpl( new CpixDocumentFieldPrivate(aName,aValue,aConfig) ) + { + } + +CpixDocumentField* CpixDocumentField::newInstance( const QString aName, const QString aValue, const int aConfig ) + { + CpixDocumentField* field = NULL; + try{ + field = new CpixDocumentField( aName, aValue, aConfig ); + } + catch(...){ + delete field; + return NULL; + } + return field; + } + +CpixDocumentField::~CpixDocumentField() + { + delete iPvtImpl; + } + +QString CpixDocumentField::name() const + { + return iPvtImpl->iName; + } + +QString CpixDocumentField::value() const + { + return iPvtImpl->iValue; + } + +int CpixDocumentField::config() const + { + return iPvtImpl->iConfig; + } + +void CpixDocumentField::setName(const QString aName) + { + iPvtImpl->iName = aName; + } + +void CpixDocumentField::setValue(const QString aValue) + { + iPvtImpl->iValue = aValue; + } + +void CpixDocumentField::setConfig(const int aConfig) + { + iPvtImpl->iConfig = aConfig; + } + +//End of File diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/cpixsearcher.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/src/cpixsearcher.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,164 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include +#include +#include +#include + +#include "cpixsearcherprivate.h" +#include "cpixutils.h" + +/** + * Note: Code in this file should never throw OR leak symbian exceptions. + * Convert all leaves to C++ exceptions. + */ + +CpixSearcher::CpixSearcher() + :iPvtImpl( new CpixSearcherPrivate( this ) ) + { + PERF_SEARCH_START_TIMER + PERF_GETDOC_START_TIMER + } + +CpixSearcher::~CpixSearcher() + { + delete iPvtImpl; + } + +CpixSearcher* CpixSearcher::newInstance() + { + CpixSearcher* searcher = NULL; + try{ + searcher = new CpixSearcher(); + searcher->iPvtImpl->Construct( QString() ); + } + catch(...){ + delete searcher; + return NULL; + } + return searcher; + } + +CpixSearcher* CpixSearcher::newInstance( QString aBaseAppClass, QString aDefaultSearchField ) + { + CpixSearcher* searcher = NULL; + try{ + searcher = new CpixSearcher(); + searcher->iPvtImpl->Construct( aDefaultSearchField ); + searcher->setDatabase( aBaseAppClass ); + } + catch(...){ + delete searcher->iPvtImpl; + return NULL; + } + return searcher; + } + +void CpixSearcher::setDatabase( QString aBaseAppClass ) + { + QT_TRAP_THROWING( + TBuf baseAppClass( aBaseAppClass.utf16() ); + iPvtImpl->iSearcher->OpenDatabaseL( baseAppClass ) ; + ); //end of QT_TRAP_THROWING + } + +void CpixSearcher::setDatabaseAsync( QString aBaseAppClass ) + { + QT_TRAP_THROWING( + TBuf baseAppClass( aBaseAppClass.utf16() ); + iPvtImpl->iSearcher->OpenDatabaseL( *iPvtImpl, baseAppClass ) + ); //end of QT_TRAP_THROWING + } + +//The following bit of code is common to two functions - this helps to avoid duplication. +//However, macros make debugging difficult - so, if you need to debug, copy the code below +//and replace the macro, fix the code and bring the fix back to the macro. +#define CREATE_SEARCH_VARS \ + HBufC* searchString = HBufC::NewL( aSearchString.length() + 1 ); \ + TPtrC searchStringPtr( reinterpret_cast( aSearchString.utf16() ) ); \ + searchString->Des().Copy( searchStringPtr ); \ + \ + HBufC* defaultSearchField = HBufC::NewL( aDefaultSearchField.length() + 1 ); \ + TPtrC aDefaultSearchFieldPtr( reinterpret_cast( aDefaultSearchField.utf16() ) );\ + defaultSearchField->Des().Copy( aDefaultSearchFieldPtr ); + +#define DELETE_SEARCH_VARS \ + delete searchString;\ + delete defaultSearchField; + +int CpixSearcher::search( QString aSearchString, QString aDefaultSearchField ) + { + PERF_SEARCH_RESTART_TIMER + int tmp = 0; + QT_TRAP_THROWING( + CREATE_SEARCH_VARS; + //ideally would have had just the following single line: + //QT_TRAP_THROWING( return iPvtImpl->iSearcher->SearchL( searchString, defaultSearchField ) ); + //But the RCVT compiler throws up warnings. The following is just to suppress those warnings. + tmp = iPvtImpl->iSearcher->SearchL( *searchString, *defaultSearchField ); + DELETE_SEARCH_VARS; + ); //QT_TRAP_THROWING + + PERF_SEARCH_ENDLOG + return tmp; + } + +void CpixSearcher::searchAsync( QString aSearchString, QString aDefaultSearchField ) + { + PERF_TIME_NOW("Async search start") + QT_TRAP_THROWING( + CREATE_SEARCH_VARS; + iPvtImpl->iSearcher->SearchL( *iPvtImpl, *searchString, *defaultSearchField ); + DELETE_SEARCH_VARS; + ); //QT_TRAP_THROWING + } + +CpixDocument* CpixSearcher::document( int aIndex ) + { + PERF_GETDOC_RESTART_TIMER + CpixDocument* tmp = 0; + QT_TRAP_THROWING( tmp = CpixDocFromCSearchDocument( iPvtImpl->iSearcher->GetDocumentL( aIndex ) ) ); + PERF_GETDOC_ENDLOG + return tmp; + } + +CpixDocument** CpixSearcher::batchdocument( int aIndex,int& aReturnDoc, int aCount ) + { + PERF_GETDOC_RESTART_TIMER + CpixDocument** tmp = 0; + QT_TRAP_THROWING( tmp = CpixBatchDocFromCSearchDocument( aReturnDoc, iPvtImpl->iSearcher->GetBatchDocumentL( aIndex, aReturnDoc, aCount )) ); + PERF_GETDOC_ENDLOG + return tmp; + } + +void CpixSearcher::documentAsync( int aIndex ) + { + PERF_TIME_NOW("Async get document start") + QT_TRAP_THROWING( iPvtImpl->iSearcher->GetDocumentL( aIndex, *iPvtImpl ) ); + } + +void CpixSearcher::batchdocumentAsync( int aIndex, int aCount ) + { + PERF_TIME_NOW("Async batch get document start") + QT_TRAP_THROWING( iPvtImpl->iSearcher->GetBatchDocumentL( aIndex, *iPvtImpl, aCount ) ); + } + +void CpixSearcher::cancelSearch() + { + iPvtImpl->iSearcher->Cancel(); + } diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/platform/s60/inc/cpixdocumentfieldprivate.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/src/platform/s60/inc/cpixdocumentfieldprivate.h Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,33 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef _CPIXDOCUMENTFIELDPVTIMPL_H +#define _CPIXDOCUMENTFIELDPVTIMPL_H + +#include + +class CpixDocumentFieldPrivate: public QObject +{ +public: + CpixDocumentFieldPrivate(const QString aName,const QString aValue,const int aConfig); + ~CpixDocumentFieldPrivate(); + QString iName; + QString iValue; + int iConfig; +}; + +#endif // _CPIXDOCUMENTFIELDPVTIMPL_H diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/platform/s60/inc/cpixdocumentprivate.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/src/platform/s60/inc/cpixdocumentprivate.h Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,37 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef _CPIXDOCUMENTPVTIMPL_H +#define _CPIXDOCUMENTPVTIMPL_H + +#include +#include +#include "cpixdocumentfield.h" + +//Forward Declarations +class CpixDocumentField; + +class CpixDocumentPrivate: public QObject +{ +public: + QString iDocId; + QString iExcerpt; + QString iBaseAppClass; + QList< CpixDocumentField* > iFields; +}; + +#endif //_CPIXDOCUMENTPVTIMPL_H diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/platform/s60/inc/cpixsearcherprivate.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/src/platform/s60/inc/cpixsearcherprivate.h Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,57 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef _CPIXSEARCHER_PVTIMPL_H +#define _CPIXSEARCHER_PVTIMPL_H + +#include +#include +#include +#include +#include + +//forward Declarations +class CCPixSearcher; +class CDocument; +class RSearchServerSession; +class CpixSearcher; + +class CpixSearcherPrivate : public CBase, //can this be made QObject? + public MCPixSearchRequestObserver , + public MCPixNextDocumentRequestObserver, + public MCPixOpenDatabaseRequestObserver, + public MCPixSetAnalyzerRequestObserver +{ +public: + CpixSearcherPrivate(QObject* aParent); + void Construct( QString aDefaultSearchField ); + ~CpixSearcherPrivate(); + +public : + void HandleSearchResultsL(TInt aError, TInt aEstimatedResultCount); //from MCPixSearchRequestObserver + void HandleDocumentL(TInt aError, CSearchDocument* aDocument); // from MCPixNextDocumentRequestObserver + void HandleBatchDocumentL(TInt aError,TInt aRetCount, CSearchDocument** aDocument); // from MCPixNextDocumentRequestObserver + void HandleOpenDatabaseResultL( TInt aError ); //MCPixOpenDatabaseRequestObserver + void HandleSetAnalyzerResultL( TInt aError ); //MCPixSetAnalyzerRequestObserver + +public: //Keep these to avoid wrapper functions. + RSearchServerSession iSearchSession; //owned + CCPixSearcher* iSearcher; //owned + CpixSearcher* iSearchParent; //not owned. +}; + +#endif //_CPIXSEARCHER_PVTIMPL_H diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/platform/s60/inc/cpixutils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/src/platform/s60/inc/cpixutils.h Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,43 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef CPIXUTILS_H_ +#define CPIXUTILS_H_ + +/** + * Helper to convert symbian descriptor to QString. + * @param aDesc the descriptor to be converted to QString. + * @return QString representation of the descriptor. + */ +QString QStringFromDescriptor( const TDesC& aDesc ); + +/** + * Gets a QCPixDocument from CSearchDocument + * @param aDoc CSearchDocument to be converted to QCPixDocument. Takes ownership of aDoc. + * @return QCPixDocument representation of aDoc. Ownership transferred to caller. + */ +CpixDocument* CpixDocFromCSearchDocument( CSearchDocument* aDoc ); + +/** + * Gets array of QCPixDocuments from batch of CSearchDocuments + * @param aDoc batch of CSearchDocuments to be converted to QCPixDocuments. Takes ownership of aDoc. + * @param aReturnDoc number of CSearchDocuments in the aDoc + * @return QCPixDocument representation of aDoc. Ownership transferred to caller. + */ +CpixDocument** CpixBatchDocFromCSearchDocument(TInt aReturnDoc, CSearchDocument** aDoc ); + +#endif /* QCPIXUTILS_H_ */ diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/platform/s60/inc/qcpixdocumentfieldprivate.h --- a/qcpix/src/platform/s60/inc/qcpixdocumentfieldprivate.h Tue Jul 06 15:30:04 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef _QCPIXDOCUMENTFIELDPVTIMPL_H -#define _QCPIXDOCUMENTFIELDPVTIMPL_H - -#include - -class QCPixDocumentFieldPrivate: public QObject -{ -public: - QCPixDocumentFieldPrivate(const QString aName,const QString aValue,const int aConfig); - ~QCPixDocumentFieldPrivate(); - QString iName; - QString iValue; - int iConfig; -}; - -#endif // _QCPIXDOCUMENTFIELDPVTIMPL_H diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/platform/s60/inc/qcpixdocumentprivate.h --- a/qcpix/src/platform/s60/inc/qcpixdocumentprivate.h Tue Jul 06 15:30:04 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef _QCPIXDOCUMENTPVTIMPL_H -#define _QCPIXDOCUMENTPVTIMPL_H - -#include -#include -#include "qcpixdocumentfield.h" - -//Forward Declarations -class QCPixDocumentField; - -class QCPixDocumentPrivate: public QObject -{ -public: - QString iDocId; - QString iExcerpt; - QString iBaseAppClass; - QList< QCPixDocumentField* > iFields; -}; - -#endif //_QCPIXDOCUMENTPVTIMPL_H diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/platform/s60/inc/qcpixsearcherprivate.h --- a/qcpix/src/platform/s60/inc/qcpixsearcherprivate.h Tue Jul 06 15:30:04 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef _QCPIXSEARCHER_PVTIMPL_H -#define _QCPIXSEARCHER_PVTIMPL_H - -#include -#include -#include -#include -#include - -//forward Declarations -class CCPixSearcher; -class CDocument; -class RSearchServerSession; -class QCPixSearcher; - -class QCPixSearcherPrivate : public CBase, //can this be made QObject? - public MCPixSearchRequestObserver , - public MCPixNextDocumentRequestObserver, - public MCPixOpenDatabaseRequestObserver, - public MCPixSetAnalyzerRequestObserver -{ -public: - QCPixSearcherPrivate(QObject* aParent); - void Construct( QString aDefaultSearchField ); - ~QCPixSearcherPrivate(); - -public : - void HandleSearchResultsL(TInt aError, TInt aEstimatedResultCount); //from MCPixSearchRequestObserver - void HandleDocumentL(TInt aError, CSearchDocument* aDocument); // from MCPixNextDocumentRequestObserver - void HandleOpenDatabaseResultL( TInt aError ); //MCPixOpenDatabaseRequestObserver - void HandleSetAnalyzerResultL( TInt aError ); //MCPixSetAnalyzerRequestObserver - -public: //Keep these to avoid wrapper functions. - RSearchServerSession iSearchSession; //owned - CCPixSearcher* iSearcher; //owned - QCPixSearcher* iSearchParent; //not owned. -}; - -#endif //_QCPIXSEARCHER_PVTIMPL_H diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/platform/s60/inc/qcpixutils.h --- a/qcpix/src/platform/s60/inc/qcpixutils.h Tue Jul 06 15:30:04 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef QCPIXUTILS_H_ -#define QCPIXUTILS_H_ - -/** - * Helper to convert symbian descriptor to QString. - * @param aDesc the descriptor to be converted to QString. - * @return QString representation of the descriptor. - */ -QString QStringFromDescriptor( const TDesC& aDesc ); - -/** - * Gets a QCPixDocument from CSearchDocument - * @param aDoc CSearchDocument to be converted to QCPixDocument. Takes ownership of aDoc. - * @return QCPixDocument representation of aDoc. Ownership transferred to caller. - */ -QCPixDocument* QCPixDocFromCPixDoc( CSearchDocument* aDoc ); - -#endif /* QCPIXUTILS_H_ */ diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/platform/s60/src/cpixdocumentfieldprivate.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/src/platform/s60/src/cpixdocumentfieldprivate.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,29 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include "cpixdocumentfieldprivate.h" + +CpixDocumentFieldPrivate::CpixDocumentFieldPrivate(const QString aName,const QString aValue,const int aConfig) + { + iName = aName; + iValue = aValue; + iConfig = aConfig; + } + +CpixDocumentFieldPrivate::~CpixDocumentFieldPrivate() + { + } diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/platform/s60/src/cpixsearcherprivate.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/src/platform/s60/src/cpixsearcherprivate.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,76 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include "cpixsearcherprivate.h" +#include +#include +#include + +#include "cpixutils.h" + +/** + * Note: Code in this file should never throw OR leak symbian exceptions. + * Convert all leaves to C++ exceptions. + */ + +CpixSearcherPrivate::CpixSearcherPrivate( QObject* aParent ) + { + iSearchParent = reinterpret_cast( aParent ); + } + +void CpixSearcherPrivate::Construct( QString aDefaultSearchField ) + { + qt_symbian_throwIfError( iSearchSession.Connect() );//throw exception on error. + QT_TRAP_THROWING( + TBuf defaultSearchField( aDefaultSearchField.utf16() ); + iSearcher = CCPixSearcher::NewL( iSearchSession, defaultSearchField ) + ); //end of QT_TRAP_THROWING + } + +CpixSearcherPrivate::~CpixSearcherPrivate() + { + delete iSearcher; + //iSearchSession.Close(); + } + +void CpixSearcherPrivate::HandleSearchResultsL(TInt aError, TInt aEstimatedResultCount) + { + PERF_TIME_NOW("Async search complete"); + emit iSearchParent->handleSearchResults( aError, aEstimatedResultCount ); + } + +void CpixSearcherPrivate::HandleDocumentL(TInt aError, CSearchDocument* aDocument) + { + PERF_TIME_NOW("Async get document complete") + emit iSearchParent->handleDocument( aError, CpixDocFromCSearchDocument( aDocument ) ); + } + +void CpixSearcherPrivate::HandleBatchDocumentL(TInt aError,TInt aRetCount, CSearchDocument** aDocument) + { + PERF_TIME_NOW("Async get batch document complete") + emit iSearchParent->handleBatchDocuments( aError, aRetCount,CpixBatchDocFromCSearchDocument( aRetCount, aDocument) ); + } + +void CpixSearcherPrivate::HandleOpenDatabaseResultL( TInt aError ) + { + emit iSearchParent->handleDatabaseSet( aError ); + } + +void CpixSearcherPrivate::HandleSetAnalyzerResultL( TInt /*aError*/ ) + { + //what is to be done here? + } diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/platform/s60/src/cpixutils.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/src/platform/s60/src/cpixutils.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,71 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include +#include +#include +#include "cpixutils.h" + +QString QStringFromDescriptor( const TDesC& aDesc ) + { + return QString::fromUtf16( aDesc.Ptr(), aDesc.Length() ); + } + +CpixDocument* CpixDocFromCSearchDocument( CSearchDocument* aDoc ) + { + if( aDoc == NULL ) return NULL; + + CpixDocument* cpixDoc = CpixDocument::newInstance(); + cpixDoc->setBaseAppClass( QStringFromDescriptor( aDoc->AppClass() ) ); + cpixDoc->setDocId( QStringFromDescriptor( aDoc->Id() ) ); + cpixDoc->setExcerpt( QStringFromDescriptor( aDoc->Excerpt() ) ); + + int fieldCount = aDoc->FieldCount(); + for( int i=0; iField( i ); + cpixDoc->addField( QStringFromDescriptor( field.Name() ), QStringFromDescriptor( field.Value() ), field.Config() ); + } + + delete aDoc; + return cpixDoc; + } + +CpixDocument** CpixBatchDocFromCSearchDocument( TInt aReturnDoc, CSearchDocument** aDoc ) + { + if( aDoc == NULL ) return NULL; + CpixDocument** cpixBatchDocs = NULL; + cpixBatchDocs = (CpixDocument**)malloc ( sizeof(CpixDocument*) * (aReturnDoc)); + for (int count = 0; count < aReturnDoc; count++) + { + CpixDocument* cpixDoc = CpixDocument::newInstance(); + cpixDoc->setBaseAppClass( QStringFromDescriptor( aDoc[count]->AppClass() ) ); + cpixDoc->setDocId( QStringFromDescriptor( aDoc[count]->Id() ) ); + cpixDoc->setExcerpt( QStringFromDescriptor( aDoc[count]->Excerpt() ) ); + + int fieldCount = aDoc[count]->FieldCount(); + for( int i=0; i< fieldCount; i++ ) + { + const CDocumentField& field = aDoc[count]->Field( i ); + cpixDoc->addField( QStringFromDescriptor( field.Name() ), QStringFromDescriptor( field.Value() ), field.Config() ); + } + cpixBatchDocs[count]= cpixDoc; + delete aDoc[count]; + aDoc[count] = NULL; + } + delete aDoc; + return cpixBatchDocs; + } diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/platform/s60/src/qcpixdocumentfieldprivate.cpp --- a/qcpix/src/platform/s60/src/qcpixdocumentfieldprivate.cpp Tue Jul 06 15:30:04 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include "qcpixdocumentfieldprivate.h" - -QCPixDocumentFieldPrivate::QCPixDocumentFieldPrivate(const QString aName,const QString aValue,const int aConfig) - { - iName = aName; - iValue = aValue; - iConfig = aConfig; - } - -QCPixDocumentFieldPrivate::~QCPixDocumentFieldPrivate() - { - } diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/platform/s60/src/qcpixsearcherprivate.cpp --- a/qcpix/src/platform/s60/src/qcpixsearcherprivate.cpp Tue Jul 06 15:30:04 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include "qcpixsearcherprivate.h" -#include -#include -#include - -#include "qcpixutils.h" - -/** - * Note: Code in this file should never throw OR leak symbian exceptions. - * Convert all leaves to C++ exceptions. - */ - -QCPixSearcherPrivate::QCPixSearcherPrivate( QObject* aParent ) - { - iSearchParent = reinterpret_cast( aParent ); - } - -void QCPixSearcherPrivate::Construct( QString aDefaultSearchField ) - { - qt_symbian_throwIfError( iSearchSession.Connect() );//throw exception on error. - QT_TRAP_THROWING( - TBuf defaultSearchField( aDefaultSearchField.utf16() ); - iSearcher = CCPixSearcher::NewL( iSearchSession, defaultSearchField ) - ); //end of QT_TRAP_THROWING - } - -QCPixSearcherPrivate::~QCPixSearcherPrivate() - { - delete iSearcher; - //iSearchSession.Close(); - } - -void QCPixSearcherPrivate::HandleSearchResultsL(TInt aError, TInt aEstimatedResultCount) - { - PERF_TIME_NOW("Async search complete"); - emit iSearchParent->handleSearchResults( aError, aEstimatedResultCount ); - } - -void QCPixSearcherPrivate::HandleDocumentL(TInt aError, CSearchDocument* aDocument) - { - PERF_TIME_NOW("Async get document complete") - emit iSearchParent->handleDocument( aError, QCPixDocFromCPixDoc( aDocument ) ); - } - -void QCPixSearcherPrivate::HandleOpenDatabaseResultL( TInt aError ) - { - emit iSearchParent->handleDatabaseSet( aError ); - } - -void QCPixSearcherPrivate::HandleSetAnalyzerResultL( TInt /*aError*/ ) - { - //what is to be done here? - } diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/platform/s60/src/qcpixutils.cpp --- a/qcpix/src/platform/s60/src/qcpixutils.cpp Tue Jul 06 15:30:04 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include "qcpixutils.h" - -QString QStringFromDescriptor( const TDesC& aDesc ) - { - return QString::fromUtf16( aDesc.Ptr(), aDesc.Length() ); - } - -QCPixDocument* QCPixDocFromCPixDoc( CSearchDocument* aDoc ) - { - if( aDoc == NULL ) return NULL; - - QCPixDocument* cpixDoc = QCPixDocument::newInstance(); - cpixDoc->setBaseAppClass( QStringFromDescriptor( aDoc->AppClass() ) ); - cpixDoc->setDocId( QStringFromDescriptor( aDoc->Id() ) ); - cpixDoc->setExcerpt( QStringFromDescriptor( aDoc->Excerpt() ) ); - - int fieldCount = aDoc->FieldCount(); - for( int i=0; iField( i ); - cpixDoc->addField( QStringFromDescriptor( field.Name() ), QStringFromDescriptor( field.Value() ), field.Config() ); - } - - delete aDoc; - return cpixDoc; - } diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/qcpixdocument.cpp --- a/qcpix/src/qcpixdocument.cpp Tue Jul 06 15:30:04 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include "qcpixdocumentprivate.h" - -/** - * Note: Code in this file should never throw OR leak symbian exceptions. - * Convert all leaves to C++ exceptions. - */ - -QCPixDocument::QCPixDocument() - :iPvtImpl( new QCPixDocumentPrivate() ) - { - } - -QCPixDocument* QCPixDocument::newInstance() - { - QCPixDocument* doc = NULL; - try{ - doc = new QCPixDocument(); - } - catch(...){ - delete doc; - return NULL; - } - return doc; - } - -QCPixDocument::~QCPixDocument() - { - delete iPvtImpl; - } - -QString QCPixDocument::docId() const - { - return iPvtImpl->iDocId; - } - -QString QCPixDocument::excerpt() const - { - return iPvtImpl->iExcerpt; - } - -QString QCPixDocument::baseAppClass() const - { - return iPvtImpl->iBaseAppClass; - } - -const QCPixDocumentField& QCPixDocument::field( const int aIndex ) const - { - return *(iPvtImpl->iFields.at(aIndex)); - } - -int QCPixDocument::fieldCount() const - { - return iPvtImpl->iFields.count(); - } - -void QCPixDocument::setDocId(const QString aDocId) - { - iPvtImpl->iDocId = aDocId; - } - -void QCPixDocument::setExcerpt(const QString aExcerpt) - { - iPvtImpl->iExcerpt = aExcerpt; - } - -void QCPixDocument::setBaseAppClass(const QString aBaseAppClass) - { - iPvtImpl->iBaseAppClass = aBaseAppClass; - } - -void QCPixDocument::addField(const QString aName, const QString aValue, const int aConfig) - { - iPvtImpl->iFields.append( QCPixDocumentField::newInstance( aName, aValue, aConfig ) ); - } - -//End of File diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/qcpixdocumentfield.cpp --- a/qcpix/src/qcpixdocumentfield.cpp Tue Jul 06 15:30:04 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include "qcpixdocumentfieldprivate.h" - -/** - * Note: Code in this file should never throw OR leak symbian exceptions. - * Convert all leaves to C++ exceptions. - */ - -QCPixDocumentField::QCPixDocumentField( const QString aName, const QString aValue, const int aConfig ) - :iPvtImpl( new QCPixDocumentFieldPrivate(aName,aValue,aConfig) ) - { - } - -QCPixDocumentField* QCPixDocumentField::newInstance( const QString aName, const QString aValue, const int aConfig ) - { - QCPixDocumentField* field = NULL; - try{ - field = new QCPixDocumentField( aName, aValue, aConfig ); - } - catch(...){ - delete field; - return NULL; - } - return field; - } - -QCPixDocumentField::~QCPixDocumentField() - { - delete iPvtImpl; - } - -QString QCPixDocumentField::name() const - { - return iPvtImpl->iName; - } - -QString QCPixDocumentField::value() const - { - return iPvtImpl->iValue; - } - -int QCPixDocumentField::config() const - { - return iPvtImpl->iConfig; - } - -void QCPixDocumentField::setName(const QString aName) - { - iPvtImpl->iName = aName; - } - -void QCPixDocumentField::setValue(const QString aValue) - { - iPvtImpl->iValue = aValue; - } - -void QCPixDocumentField::setConfig(const int aConfig) - { - iPvtImpl->iConfig = aConfig; - } - -//End of File diff -r afe194b6b1cd -r cf5c74390b98 qcpix/src/qcpixsearcher.cpp --- a/qcpix/src/qcpixsearcher.cpp Tue Jul 06 15:30:04 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,149 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include - -#include "qcpixsearcherprivate.h" -#include "qcpixutils.h" - -/** - * Note: Code in this file should never throw OR leak symbian exceptions. - * Convert all leaves to C++ exceptions. - */ - -QCPixSearcher::QCPixSearcher( QString aDefaultSearchField ) - :iPvtImpl( new QCPixSearcherPrivate( this ) ) - { - PERF_SEARCH_START_TIMER - PERF_GETDOC_START_TIMER - } - -QCPixSearcher::~QCPixSearcher() - { - delete iPvtImpl; - } - -QCPixSearcher* QCPixSearcher::newInstance() - { - QCPixSearcher* searcher = NULL; - try{ - searcher = new QCPixSearcher( QString() ); - searcher->iPvtImpl->Construct( QString() ); - } - catch(...){ - delete searcher; - return NULL; - } - return searcher; - } - -QCPixSearcher* QCPixSearcher::newInstance( QString aBaseAppClass, QString aDefaultSearchField ) - { - QCPixSearcher* searcher = NULL; - try{ - searcher = new QCPixSearcher( aDefaultSearchField ); - searcher->iPvtImpl->Construct( aDefaultSearchField ); - searcher->setDatabase( aBaseAppClass ); - } - catch(...){ - delete searcher->iPvtImpl; - return NULL; - } - return searcher; - } - -void QCPixSearcher::setDatabase( QString aBaseAppClass ) - { - QT_TRAP_THROWING( - TBuf baseAppClass( aBaseAppClass.utf16() ); - iPvtImpl->iSearcher->OpenDatabaseL( baseAppClass ) - ); //end of QT_TRAP_THROWING - } - -void QCPixSearcher::setDatabaseAsync( QString aBaseAppClass ) - { - QT_TRAP_THROWING( - TBuf baseAppClass( aBaseAppClass.utf16() ); - iPvtImpl->iSearcher->OpenDatabaseL( *iPvtImpl, baseAppClass ) - ); //end of QT_TRAP_THROWING - } - -//The following bit of code is common to two functions - this helps to avoid duplication. -//However, macros make debugging difficult - so, if you need to debug, copy the code below -//and replace the macro, fix the code and bring the fix back to the macro. -#define CREATE_SEARCH_VARS \ - HBufC* searchString = HBufC::NewL( aSearchString.length() + 1 ); \ - TPtrC searchStringPtr( reinterpret_cast( aSearchString.utf16() ) ); \ - searchString->Des().Copy( searchStringPtr ); \ - \ - HBufC* defaultSearchField = HBufC::NewL( aDefaultSearchField.length() + 1 ); \ - TPtrC aDefaultSearchFieldPtr( reinterpret_cast( aDefaultSearchField.utf16() ) );\ - defaultSearchField->Des().Copy( aDefaultSearchFieldPtr ); - -#define DELETE_SEARCH_VARS \ - delete searchString;\ - delete defaultSearchField; - -int QCPixSearcher::search( QString aSearchString, QString aDefaultSearchField ) - { - PERF_SEARCH_RESTART_TIMER - int tmp = 0; - QT_TRAP_THROWING( - CREATE_SEARCH_VARS; - //ideally would have had just the following single line: - //QT_TRAP_THROWING( return iPvtImpl->iSearcher->SearchL( searchString, defaultSearchField ) ); - //But the RCVT compiler throws up warnings. The following is just to suppress those warnings. - tmp = iPvtImpl->iSearcher->SearchL( *searchString, *defaultSearchField ); - DELETE_SEARCH_VARS; - ); //QT_TRAP_THROWING - - PERF_SEARCH_ENDLOG - return tmp; - } - -void QCPixSearcher::searchAsync( QString aSearchString, QString aDefaultSearchField ) - { - PERF_TIME_NOW("Async search start") - QT_TRAP_THROWING( - CREATE_SEARCH_VARS; - iPvtImpl->iSearcher->SearchL( *iPvtImpl, *searchString, *defaultSearchField ); - DELETE_SEARCH_VARS; - ); //QT_TRAP_THROWING - } - -QCPixDocument* QCPixSearcher::getDocument( int aIndex ) - { - PERF_GETDOC_RESTART_TIMER - QCPixDocument* tmp = 0; - QT_TRAP_THROWING( tmp = QCPixDocFromCPixDoc( iPvtImpl->iSearcher->GetDocumentL( aIndex ) ) ); - PERF_GETDOC_ENDLOG - return tmp; - } - -void QCPixSearcher::getDocumentAsync( int aIndex ) - { - PERF_TIME_NOW("Async get document start") - QT_TRAP_THROWING( iPvtImpl->iSearcher->GetDocumentL( aIndex, *iPvtImpl ) ); - } - -void QCPixSearcher::cancelSearch() - { - iPvtImpl->iSearcher->Cancel(); - } diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/orbitsearch/orbitsearch.pro --- a/qcpix/tsrc/orbitsearch/orbitsearch.pro Tue Jul 06 15:30:04 2010 +0300 +++ b/qcpix/tsrc/orbitsearch/orbitsearch.pro Wed Aug 18 10:53:26 2010 +0300 @@ -21,7 +21,7 @@ QT += gui QT += sql CONFIG += qtestlib -LIBS += -lqcpixsearchclient -lxqservice +LIBS += -lcpixsearch -lxqservice HEADERS += uicontrols.h searchhelper.h testsearch.h testci.h SOURCES += OrbitSearch_reg.rss \ diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/orbitsearch/searchhelper.cpp --- a/qcpix/tsrc/orbitsearch/searchhelper.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/qcpix/tsrc/orbitsearch/searchhelper.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -16,12 +16,12 @@ */ #include "searchhelper.h" -#include +#include -SearchHelper::SearchHelper(HbLineEdit* searchBx, HbPushButton* searchBtn, HbTextEdit* searchRslt) - :searchBox( searchBx ), searchButton( searchBtn ), resultsBox( searchRslt ) +SearchHelper::SearchHelper(HbLineEdit* searchBx, HbPushButton* searchBtn, HbTextEdit* searchRslt, HbLineEdit* indexBox, HbLineEdit* countBox, HbPushButton* getdocbutton) + :searchBox( searchBx ), searchButton( searchBtn ), resultsBox( searchRslt ), indexBox(indexBox), countBox(countBox), getdocbutton(getdocbutton) { - searcher = QCPixSearcher::newInstance("root","_aggregate"); + searcher = CpixSearcher::newInstance("root","_aggregate"); resultsBox->setReadOnly( true ); resultsBox->setPlainText("Initialized"); searchTime.start(); @@ -35,42 +35,84 @@ void SearchHelper::doSearch() { resultsBox->setPlainText("Search button clicked!"); - - int hits = 0; - - QString resultString(""); + resultString = ""; resultsBox->setPlainText( resultString ); searchTime.restart(); QString searchString; + +#if PREFIX_SEARCH searchString = "$prefix(\""; searchString += searchBox->text(); searchString += "\")"; -#if STAR_SEARCH +#elif STAR_SEARCH searchString += searchBox->text(); searchString += "*"; #elif NO_STAR_SEARCH + searchString = searchBox->text(); ;//do nothing #endif - - hits = searcher->search( searchString ); + iHits = 0; + iHits = searcher->search( searchString ); if (searchTime.elapsed() >= 0) resultString = "SearchTime: " + QString().setNum( searchTime.elapsed() ) + " ms \r\n"; - resultString += "Hits: " + QString().setNum( hits ) + "\r\n"; + resultString += "Hits: " + QString().setNum( iHits ) + "\r\n"; resultsBox->setPlainText( resultString ); #if !DONT_SHOW_RESULTS - if( hits > 0 ) + if( iHits > 0 ) { - QCPixDocument* temp = NULL; - int docCount = 0; - do{ - temp = searcher->getDocument( docCount++ ); - resultString += temp->baseAppClass() + " " + temp->docId() + " " + temp->excerpt() + "\r\n\r\n"; - delete temp; - }while( hits > docCount ); + resultString += "Enter Index,count values and press GetDocs button to get the results"; + resultString +="\r\n"; + resultsBox->setPlainText( resultString ); } - resultsBox->setPlainText( resultString ); #endif //DONT_SHOW_RESULTS } + +void SearchHelper::showdocs() + { + QString indexstring = indexBox->text(); + bool ok = false; + int index = indexstring.toInt(&ok); + if (ok) + { + QString countstring = countBox->text(); + int count = countstring.toInt(&ok); + if (ok) + { + if ( index <= iHits ) + { + if ( count == 1) + { + //call the normal get doc API + CpixDocument* temp = NULL; + do{ + temp = searcher->document( index++ ); + resultString += temp->baseAppClass() + " " + temp->docId() + " " + temp->excerpt() + "\r\n\r\n"; + delete temp; + }while( iHits > index ); + } + else + { + //call batch doc API + CpixDocument** temp = NULL; + do{ + int retdoccount = 0; + temp = searcher->batchdocument(index,retdoccount,count); + for (int i=0; i< retdoccount; i++) + { + resultString += temp[i]->baseAppClass() + " " + temp[i]->docId() + " " + temp[i]->excerpt() + "\r\n\r\n"; + delete temp[i]; + } + delete temp; + temp = NULL; + index += retdoccount; + }while (iHits > index); + } + } + else resultString += " Requested document is out of range"; + resultsBox->setPlainText( resultString ); + } + } + } diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/orbitsearch/searchhelper.h --- a/qcpix/tsrc/orbitsearch/searchhelper.h Tue Jul 06 15:30:04 2010 +0300 +++ b/qcpix/tsrc/orbitsearch/searchhelper.h Wed Aug 18 10:53:26 2010 +0300 @@ -20,23 +20,26 @@ #include #include "uicontrols.h" -#include +#include #include class SearchHelper: public QObject { Q_OBJECT public: - SearchHelper(HbLineEdit*, HbPushButton*, HbTextEdit* ); + SearchHelper(HbLineEdit*, HbPushButton*, HbTextEdit*, HbLineEdit*, HbLineEdit*, HbPushButton* ); ~SearchHelper(); public slots: void doSearch(); + void showdocs(); private: ORBIT_SEARCH_CONTROLS //Not owned. - QCPixSearcher* searcher;//Owned + CpixSearcher* searcher;//Owned QTime searchTime; + QString resultString; + int iHits; }; #endif /* HELPER_H_ */ diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/orbitsearch/testsearch.cpp --- a/qcpix/tsrc/orbitsearch/testsearch.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/qcpix/tsrc/orbitsearch/testsearch.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -48,11 +48,30 @@ searchButton = new HbPushButton( "Search" ); layout->addItem( searchButton ); + QGraphicsLinearLayout *getdoclayout = new QGraphicsLinearLayout; + getdoclayout->setOrientation(Qt::Horizontal); + + indexBox = new HbLineEdit; + indexBox->setInputMethodHints(Qt::ImhPreferNumbers); + + countBox = new HbLineEdit; + countBox->setInputMethodHints(Qt::ImhPreferNumbers); + + getdocbutton = new HbPushButton("GetDocs"); + +#if !DONT_SHOW_RESULTS + getdoclayout->addItem(indexBox); + getdoclayout->addItem(countBox); + getdoclayout->addItem(getdocbutton); + layout->addItem(getdoclayout); +#endif //!DONT_SHOW_RESULTS + resultsBox = new HbTextEdit; layout->addItem( resultsBox ); - SearchHelper* sh = new SearchHelper(searchBox, searchButton, resultsBox); + SearchHelper* sh = new SearchHelper(searchBox, searchButton, resultsBox, indexBox, countBox,getdocbutton); QObject::connect( searchButton, SIGNAL( clicked() ), sh, SLOT(doSearch()) ); + QObject::connect( getdocbutton, SIGNAL( clicked() ), sh, SLOT(showdocs()) ); w->setLayout( layout ); BigScreen->addView ( w ); diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/orbitsearch/uicontrols.h --- a/qcpix/tsrc/orbitsearch/uicontrols.h Tue Jul 06 15:30:04 2010 +0300 +++ b/qcpix/tsrc/orbitsearch/uicontrols.h Wed Aug 18 10:53:26 2010 +0300 @@ -33,12 +33,12 @@ #define STAR_SEARCH 0 //Vanilla search. Send search string to engine "as-is". -#define NO_STAR_SEARCH 0 +#define NO_STAR_SEARCH 1 //Enable the prefix_search macro to enable Prefix query feature. This will add $prefix to the query //string. -#define PREFIX_SEARCH 1 +#define PREFIX_SEARCH 0 //If you dont want to see results, define this flag. #define DONT_SHOW_RESULTS 0 @@ -48,6 +48,9 @@ #define ORBIT_SEARCH_CONTROLS \ HbLineEdit* searchBox; \ HbPushButton* searchButton; \ + HbLineEdit* indexBox; \ + HbLineEdit* countBox; \ + HbPushButton* getdocbutton; \ HbTextEdit* resultsBox; #endif /* UICONTROLS_H_ */ diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/qtcpixunittests/inc/ut_qtcpixdocument.h --- a/qcpix/tsrc/qtcpixunittests/inc/ut_qtcpixdocument.h Tue Jul 06 15:30:04 2010 +0300 +++ b/qcpix/tsrc/qtcpixunittests/inc/ut_qtcpixdocument.h Wed Aug 18 10:53:26 2010 +0300 @@ -20,8 +20,8 @@ #include -class QCPixDocument; -class QCPixDocumentTester: public QObject +class CpixDocument; +class CpixDocumentTester: public QObject { Q_OBJECT private slots: @@ -40,7 +40,7 @@ void cleanup(); private: - QCPixDocument* iDoc; + CpixDocument* iDoc; }; #endif /* UT_QTCPIXDOCUMENT_H_ */ diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/qtcpixunittests/inc/ut_qtcpixdocumentfield.h --- a/qcpix/tsrc/qtcpixunittests/inc/ut_qtcpixdocumentfield.h Tue Jul 06 15:30:04 2010 +0300 +++ b/qcpix/tsrc/qtcpixunittests/inc/ut_qtcpixdocumentfield.h Wed Aug 18 10:53:26 2010 +0300 @@ -20,8 +20,8 @@ #include -class QCPixDocumentField; -class QCPixDocumentFieldTester: public QObject +class CpixDocumentField; +class CpixDocumentFieldTester: public QObject { Q_OBJECT private slots: @@ -38,7 +38,7 @@ void cleanup(); private: - QCPixDocumentField* iField; + CpixDocumentField* iField; }; diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/qtcpixunittests/inc/ut_qtcpixsearcher.h --- a/qcpix/tsrc/qtcpixunittests/inc/ut_qtcpixsearcher.h Tue Jul 06 15:30:04 2010 +0300 +++ b/qcpix/tsrc/qtcpixunittests/inc/ut_qtcpixsearcher.h Wed Aug 18 10:53:26 2010 +0300 @@ -20,16 +20,16 @@ #include -class QCPixSearcher; -class QCPixDocument; +class CpixSearcher; +class CpixDocument; -class TestQCPixSearcher: public QObject +class TestCpixSearcher: public QObject { Q_OBJECT public slots: void HandleDatabaseSet(int aError); void HandleSearchResults(int aError, int aEstimatedCount); - void HandleDocument(int aError, QCPixDocument* aDoc); + void HandleDocument(int aError, CpixDocument* aDoc); private slots: void testNewInstance(); @@ -51,8 +51,8 @@ void cleanup(); private: - QCPixSearcher* iSearcher; - QCPixDocument* iDoc; + CpixSearcher* iSearcher; + CpixDocument* iDoc; bool iHandleSetDatabaseComplete; int iHandleSearchResultsComplete; bool iHandleGetDocumentComplete; diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/qtcpixunittests/qtcpixunittests.pro --- a/qcpix/tsrc/qtcpixunittests/qtcpixunittests.pro Tue Jul 06 15:30:04 2010 +0300 +++ b/qcpix/tsrc/qtcpixunittests/qtcpixunittests.pro Wed Aug 18 10:53:26 2010 +0300 @@ -33,6 +33,8 @@ ../qttestutil/SimpleChecker.cpp \ qtcpixunittests_reg.rss +LIBS += -lcpixsearch + symbian{ BLD_INF_RULES.prj_exports += "data/_0.cfs \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\contact\_0\_0.cfs" \ "data/deletable \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\contact\_0\deletable" \ @@ -44,5 +46,4 @@ TARGET.CAPABILITY = ALL -TCB -DRM TARGET.UID3 = 0xE76C2AE7 - LIBS += -lqcpixsearchclient } diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/qtcpixunittests/src/ut_qtcpixdocument.cpp --- a/qcpix/tsrc/qtcpixunittests/src/ut_qtcpixdocument.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/qcpix/tsrc/qtcpixunittests/src/ut_qtcpixdocument.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -19,83 +19,83 @@ #include #include -#include -#include +#include +#include #include #include "../../QtTestUtil/QtTestUtil.h" -void QCPixDocumentTester::testNewInstance() +void CpixDocumentTester::testNewInstance() { - QCPixDocument* doc = QCPixDocument::newInstance(); + CpixDocument* doc = CpixDocument::newInstance(); QVERIFY( doc != NULL ); delete doc; } -void QCPixDocumentTester::testGetSetName_data() +void CpixDocumentTester::testGetSetName_data() { QTest::addColumn( "baseAppClass" ); QTest::newRow("root") << "root"; QTest::newRow("root contact") << "root contact"; } -void QCPixDocumentTester::testGetSetName() +void CpixDocumentTester::testGetSetName() { QFETCH( QString, baseAppClass ); iDoc->setBaseAppClass( baseAppClass ); QVERIFY( iDoc->baseAppClass() == baseAppClass ); } -void QCPixDocumentTester::testGetSetDocId_data() +void CpixDocumentTester::testGetSetDocId_data() { QTest::addColumn( "docId" ); QTest::newRow("C:\\some\\doc\\id") << "C:\\some\\doc\\id"; } -void QCPixDocumentTester::testGetSetDocId() +void CpixDocumentTester::testGetSetDocId() { QFETCH( QString, docId ); iDoc->setDocId( docId ); QVERIFY( iDoc->docId() == docId ); } -void QCPixDocumentTester::testGetSetExcerpt_data() +void CpixDocumentTester::testGetSetExcerpt_data() { QTest::addColumn< QString >( "excerpt" ); QTest::newRow("this is a sample excerpt") << "this is a sample excerpt"; } -void QCPixDocumentTester::testGetSetExcerpt() +void CpixDocumentTester::testGetSetExcerpt() { QFETCH( QString, excerpt ); iDoc->setExcerpt( excerpt ); QVERIFY( iDoc->excerpt() == excerpt ); } -void QCPixDocumentTester::testGetFieldCount() +void CpixDocumentTester::testGetFieldCount() { iDoc->addField("testName", "testValue", 10); iDoc->addField("testName2", "testValue2", 12); QVERIFY( iDoc->fieldCount() == 2 ); } -void QCPixDocumentTester::testAddGetField() +void CpixDocumentTester::testAddGetField() { iDoc->addField("testName", "testValue", 10); iDoc->addField("testName2", "testValue2", 12); - const QCPixDocumentField& field1 = iDoc->field( 0 ); + const CpixDocumentField& field1 = iDoc->field( 0 ); QVERIFY( field1.name() == "testName" && field1.value() == "testValue" && field1.config() == 10 ); - const QCPixDocumentField& field2 = iDoc->field( 1 ); + const CpixDocumentField& field2 = iDoc->field( 1 ); QVERIFY( field2.name() == "testName2" && field2.value() == "testValue2" && field2.config() == 12 ); } -void QCPixDocumentTester::init() +void CpixDocumentTester::init() { - iDoc = QCPixDocument::newInstance(); + iDoc = CpixDocument::newInstance(); } -void QCPixDocumentTester::cleanup() +void CpixDocumentTester::cleanup() { delete iDoc; } -QTTESTUTIL_REGISTER_TEST( QCPixDocumentTester ); +QTTESTUTIL_REGISTER_TEST( CpixDocumentTester ); diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/qtcpixunittests/src/ut_qtcpixdocumentfield.cpp --- a/qcpix/tsrc/qtcpixunittests/src/ut_qtcpixdocumentfield.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/qcpix/tsrc/qtcpixunittests/src/ut_qtcpixdocumentfield.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -18,15 +18,15 @@ #include "ut_qtcpixdocumentfield.h" #include "../../QtTestUtil/QtTestUtil.h" -#include +#include -void QCPixDocumentFieldTester::testNewInstance() +void CpixDocumentFieldTester::testNewInstance() { - QCPixDocumentField* field = QCPixDocumentField::newInstance( QString(), QString(), 0 ); + CpixDocumentField* field = CpixDocumentField::newInstance( QString(), QString(), 0 ); QVERIFY( field != NULL ); } -void QCPixDocumentFieldTester::testGetSetName_data() +void CpixDocumentFieldTester::testGetSetName_data() { QTest::addColumn< QString >( "name" ); @@ -34,14 +34,14 @@ QTest::newRow("testName2") << "testName2" ; } -void QCPixDocumentFieldTester::testGetSetName() +void CpixDocumentFieldTester::testGetSetName() { QFETCH( QString, name ); iField->setName( name ); QVERIFY( iField->name() == name ); } -void QCPixDocumentFieldTester::testGetSetValue_data() +void CpixDocumentFieldTester::testGetSetValue_data() { QTest::addColumn< QString >( "value" ); @@ -49,14 +49,14 @@ QTest::newRow("testVlaue2") << "testValue2" ; } -void QCPixDocumentFieldTester::testGetSetValue() +void CpixDocumentFieldTester::testGetSetValue() { QFETCH( QString, value ); iField->setValue( value ); QVERIFY( iField->value() == value ); } -void QCPixDocumentFieldTester::testGetSetConfig_data() +void CpixDocumentFieldTester::testGetSetConfig_data() { QTest::addColumn< int >( "config" ); @@ -64,22 +64,22 @@ QTest::newRow("20") << 20 ; } -void QCPixDocumentFieldTester::testGetSetConfig() +void CpixDocumentFieldTester::testGetSetConfig() { QFETCH( int, config ); iField->setConfig( config ); QVERIFY( iField->config() == config ); } -void QCPixDocumentFieldTester::init() +void CpixDocumentFieldTester::init() { - iField = QCPixDocumentField::newInstance( "testName", "testValue", 100 ); + iField = CpixDocumentField::newInstance( "testName", "testValue", 100 ); QVERIFY( iField!=NULL && iField->name()=="testName" && iField->value()=="testValue" && iField->config()==100 ); } -void QCPixDocumentFieldTester::cleanup() +void CpixDocumentFieldTester::cleanup() { delete iField; } -QTTESTUTIL_REGISTER_TEST( QCPixDocumentFieldTester ); +QTTESTUTIL_REGISTER_TEST( CpixDocumentFieldTester ); diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/qtcpixunittests/src/ut_qtcpixsearcher.cpp --- a/qcpix/tsrc/qtcpixunittests/src/ut_qtcpixsearcher.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/qcpix/tsrc/qtcpixunittests/src/ut_qtcpixsearcher.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -19,8 +19,8 @@ #include #include -#include -#include +#include +#include #include #include "../../QtTestUtil/QtTestUtil.h" @@ -46,50 +46,51 @@ #define TEST_GET_DATA_FETCH \ QFETCH(QString, baseAppClass); -void TestQCPixSearcher::testNewInstance() +void TestCpixSearcher::testNewInstance() { - QCPixSearcher* searcher = QCPixSearcher::newInstance(); + CpixSearcher* searcher = CpixSearcher::newInstance(); QVERIFY( searcher != NULL ); delete searcher; } -void TestQCPixSearcher::init() +void TestCpixSearcher::init() { - iSearcher = QCPixSearcher::newInstance("root", "_aggregate");//default to root searcher. + iSearcher = CpixSearcher::newInstance("root", "_aggregate");//default to root searcher. QVERIFY( iSearcher!=NULL ); } -void TestQCPixSearcher::cleanup() +void TestCpixSearcher::cleanup() { delete iSearcher; } -void TestQCPixSearcher::testSetDatabase_data() +void TestCpixSearcher::testSetDatabase_data() { TEST_GET_DATA; } -void TestQCPixSearcher::testSetDatabase() +void TestCpixSearcher::testSetDatabase() { TEST_GET_DATA_FETCH; + Q_ASSERT( iSearcher ); iSearcher->setDatabase( baseAppClass );//no way to verify this :( } -void TestQCPixSearcher::HandleDatabaseSet(int aError) +void TestCpixSearcher::HandleDatabaseSet(int aError) { iHandleSetDatabaseComplete = true; iError = aError; } -void TestQCPixSearcher::testSetDatabaseAsync_data() +void TestCpixSearcher::testSetDatabaseAsync_data() { TEST_GET_DATA; } -void TestQCPixSearcher::testSetDatabaseAsync() +void TestCpixSearcher::testSetDatabaseAsync() { TEST_GET_DATA_FETCH; - + Q_ASSERT( iSearcher ); iHandleSetDatabaseComplete = false; iError = -2 /*General: Something non-specific*/; connect( iSearcher, SIGNAL(handleDatabaseSet(int)), this, SLOT(HandleDatabaseSet(int)) ); @@ -98,32 +99,33 @@ QVERIFY( iError == 0/*No error*/ ); } -void TestQCPixSearcher::testSearch_data() +void TestCpixSearcher::testSearch_data() { TEST_SEARCH_DATA; } -void TestQCPixSearcher::testSearch() +void TestCpixSearcher::testSearch() { TEST_SEARCH_DATA_FETCH; + Q_ASSERT( iSearcher ); QVERIFY( iSearcher->search( searchString ) == estimatedResultCount ); } -void TestQCPixSearcher::HandleSearchResults(int aError, int aEstimatedCount) +void TestCpixSearcher::HandleSearchResults(int aError, int aEstimatedCount) { if( aError == 0/*None*/ ) iHandleSearchResultsComplete = aEstimatedCount; else iHandleSearchResultsComplete = 0; } -void TestQCPixSearcher::testSearchAsync_data() +void TestCpixSearcher::testSearchAsync_data() { TEST_SEARCH_DATA; } -void TestQCPixSearcher::testSearchAsync() +void TestCpixSearcher::testSearchAsync() { TEST_SEARCH_DATA_FETCH; - + Q_ASSERT( iSearcher ); iHandleSearchResultsComplete = -1; //Do Search @@ -136,39 +138,41 @@ QVERIFY( iHandleSearchResultsComplete == estimatedResultCount ); } -void TestQCPixSearcher::testGetDocument_data() +void TestCpixSearcher::testGetDocument_data() { TEST_SEARCH_DATA; } -void TestQCPixSearcher::testGetDocument() +void TestCpixSearcher::testGetDocument() { TEST_SEARCH_DATA_FETCH; + Q_ASSERT( iSearcher ); QVERIFY( iSearcher->search( searchString ) == estimatedResultCount ); //Check only baseAppClass for now. Not sure about the order of docs returned. //Hence check that we are getting "Robert" from contacts. if( estimatedResultCount>0 ){ - QCPixDocument* doc = iSearcher->getDocument( 0 ); + CpixDocument* doc = iSearcher->document( 0 ); QVERIFY( doc->baseAppClass() == "root contact" ); } else return; } -void TestQCPixSearcher::HandleDocument(int /*aError*/, QCPixDocument* aDoc) +void TestCpixSearcher::HandleDocument(int /*aError*/, CpixDocument* aDoc) { iHandleGetDocumentComplete = true; iDoc = aDoc; } -void TestQCPixSearcher::testGetDocumentAsync_data() +void TestCpixSearcher::testGetDocumentAsync_data() { TEST_SEARCH_DATA; } -void TestQCPixSearcher::testGetDocumentAsync() +void TestCpixSearcher::testGetDocumentAsync() { TEST_SEARCH_DATA_FETCH; + Q_ASSERT( iSearcher ); iHandleGetDocumentComplete = false; iHandleSearchResultsComplete = -1; @@ -179,9 +183,9 @@ QVERIFY( iHandleSearchResultsComplete == estimatedResultCount ); //Get Document - connect( iSearcher, SIGNAL(handleDocument(int,QCPixDocument*)), this, SLOT(HandleDocument(int,QCPixDocument*)) ); + connect( iSearcher, SIGNAL(handleDocument(int,CpixDocument*)), this, SLOT(HandleDocument(int,CpixDocument*)) ); if( iHandleSearchResultsComplete>0 ) - iSearcher->getDocumentAsync( 0 ); + iSearcher->documentAsync( 0 ); else return; @@ -190,4 +194,4 @@ QVERIFY( iDoc->baseAppClass() == "root contact" ); } -QTTESTUTIL_REGISTER_TEST( TestQCPixSearcher ); +QTTESTUTIL_REGISTER_TEST( TestCpixSearcher ); diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/qttestutil/copying --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/tsrc/qttestutil/copying Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2008 Remko Tronçon + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/qttestutil/qttestutil.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/tsrc/qttestutil/qttestutil.h Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2008 Remko Troncon + * Licensed under the MIT license. + * See COPYING for license details. + */ + +#ifndef QtTestUtil_H +#define QtTestUtil_H + +#include "QtTestUtil/TestRegistration.h" + +/** + * A macro to register a test class. + * + * This macro will create a static variable which registers the + * testclass with the TestRegistry, and creates an instance of the + * test class. + * + * Execute this macro in the body of your unit test's .cpp file, e.g. + * class MyTest { + * ... + * }; + * + * QTTESTUTIL_REGISTER_TEST(MyTest) + */ +#define QTTESTUTIL_REGISTER_TEST(TestClass) \ + static QtTestUtil::TestRegistration TestClass##Registration + +#endif diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/qttestutil/qttestutil.pri --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/tsrc/qttestutil/qttestutil.pri Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,5 @@ +INCLUDEPATH *= $$PWD/.. +DEPAENDPATH *= $$PWD/.. + +SOURCES += \ + $$PWD/TestRegistry.cpp \ No newline at end of file diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/qttestutil/readme --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/tsrc/qttestutil/readme Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,8 @@ +QtTestUtil +---------- + +Convenience classes for unit testing using QtTest. +See Example/ for examples on using these classes. + +Remko Tronçon +http://el-tramo.be diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/qttestutil/simplechecker.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/tsrc/qttestutil/simplechecker.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,17 @@ +/* + * Copyright (C) 2008 Remko Troncon + * Licensed under the MIT license. + * See COPYING for license details. + */ + +#include + +#include "QtTestUtil/TestRegistry.h" + +/** + * Runs all tests registered with the QtTestUtil registry. + */ +int main(int argc, char* argv[]) { + QCoreApplication application(argc, argv); + return QtTestUtil::TestRegistry::getInstance()->runTests(argc, argv); +} diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/qttestutil/testregistration.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/tsrc/qttestutil/testregistration.h Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2008 Remko Troncon + * Licensed under the MIT license. + * See COPYING for license details. + */ + +#ifndef QtTestUtil_TestRegistration_H +#define QtTestUtil_TestRegistration_H + +#include "QtTestUtil/TestRegistry.h" + +namespace QtTestUtil { + + /** + * A wrapper class around a test to manage registration and static + * creation of an instance of the test class. + * This class is used by QTTESTUTIL_REGISTER_TEST(), and you should not + * use this class directly. + */ + template + class TestRegistration { + public: + TestRegistration() { + test_ = new TestClass(); + TestRegistry::getInstance()->registerTest(test_); + } + + ~TestRegistration() { + delete test_; + } + + private: + TestClass* test_; + }; + +} + +#endif diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/qttestutil/testregistry.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/tsrc/qttestutil/testregistry.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2008 Remko Troncon + * Licensed under the MIT license. + * See COPYING for license details. + */ + +#include "QtTestUtil/TestRegistry.h" + +#include + +namespace QtTestUtil { + +TestRegistry* TestRegistry::getInstance() { + static TestRegistry registry; + return ®istry; +} + +void TestRegistry::registerTest(QObject* test) { + tests_ += test; +} + +int TestRegistry::runTests(int argc, char* argv[]) { + int result = 0; + foreach(QObject* test, tests_) { + result |= QTest::qExec(test, argc, argv); + } + return result; +} + +} diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/qttestutil/testregistry.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qcpix/tsrc/qttestutil/testregistry.h Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2008 Remko Troncon + * Licensed under the MIT license. + * See COPYING for license details. + */ + +#ifndef QtTestUtil_TestRegistry_H +#define QtTestUtil_TestRegistry_H + +#include + +class QObject; + +namespace QtTestUtil { + + /** + * A registry of QtTest test classes. + * All test classes registered with QTTESTUTIL_REGISTER_TEST add + * themselves to this registry. All registered tests can then be run at + * once using runTests(). + */ + class TestRegistry { + public: + /** + * Retrieve the single instance of the registry. + */ + static TestRegistry* getInstance(); + + /** + * Register a QtTest test. + * This method is called by QTTESTUTIL_REGISTER_TEST, and you should + * not use this method directly. + */ + void registerTest(QObject*); + + /** + * Run all registered tests using QTest::qExec() + */ + int runTests(int argc, char* argv[]); + + private: + TestRegistry() {} + + private: + QList tests_; + }; +} + +#endif diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/samplesearch/samplesearch.cpp --- a/qcpix/tsrc/samplesearch/samplesearch.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/qcpix/tsrc/samplesearch/samplesearch.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -17,7 +17,7 @@ #include "SampleSearch.h" #include "searchhandler.h" -#include +#include #include SampleSearch::SampleSearch(QWidget */*parent*/) @@ -98,7 +98,7 @@ connect(btnSearchAsync, SIGNAL(clicked()),this, SLOT(doSearchAsync())); connect(iSearchHandler, SIGNAL(handleSearchResult(int,int)),this, SLOT(onSearchComplete(int,int))); connect(iSearchHandler, SIGNAL(handleAsyncSearchResult(int,int)),this, SLOT(onAsyncSearchComplete(int,int))); - connect(iSearchHandler, SIGNAL(handleDocument(int,QCPixDocument*)),this, SLOT(onGetDocumentComplete(int,QCPixDocument*))); + connect(iSearchHandler, SIGNAL(handleDocument(int,CpixDocument*)),this, SLOT(onGetDocumentComplete(int,CpixDocument*))); } SampleSearch::~SampleSearch() @@ -142,7 +142,7 @@ iSearchHandler->getDocumentAsyncAtIndex( nextDocumentIndex++ ); } -void SampleSearch::onGetDocumentComplete(int aError, QCPixDocument* aDoc) +void SampleSearch::onGetDocumentComplete(int aError, CpixDocument* aDoc) { if( aDoc == NULL ) return; addDocumentToResultsPage( aDoc, currentRow++ ); @@ -293,7 +293,7 @@ { if(rowCountgetDocumentAtIndex(i); + CpixDocument* aSearchDoc = iSearchHandler->getDocumentAtIndex(i); addDocumentToResultsPage( aSearchDoc, rowCount ); rowCount++; } @@ -312,7 +312,7 @@ QString docId; }; -void SampleSearch::addDocumentToResultsPage( QCPixDocument* aSearchDoc, int rowCount ) +void SampleSearch::addDocumentToResultsPage( CpixDocument* aSearchDoc, int rowCount ) { QTableWidgetItem *appClassCol = new QTableWidgetItem("Col1"); appClassCol->setFlags(Qt::ItemIsEnabled); diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/samplesearch/samplesearch.h --- a/qcpix/tsrc/samplesearch/samplesearch.h Tue Jul 06 15:30:04 2010 +0300 +++ b/qcpix/tsrc/samplesearch/samplesearch.h Wed Aug 18 10:53:26 2010 +0300 @@ -32,7 +32,7 @@ #include class CSearchHandler; -class QCPixDocument; +class CpixDocument; class DocLaunchInfo; class SampleSearch : public QWidget @@ -75,7 +75,7 @@ void createSearchResultTableAndAddContents(); void searchCompleteHelper(int aError, int aResultCount); void setSearchResultsHeader(); - void addDocumentToResultsPage( QCPixDocument* aSearchDoc, int rowCount ); + void addDocumentToResultsPage( CpixDocument* aSearchDoc, int rowCount ); void openMessaging( int aMessagingId ); void doLaunchDoc(DocLaunchInfo& info); @@ -85,7 +85,7 @@ void doSearchAsync(); void onSearchComplete(int aError, int aResultCount); void onAsyncSearchComplete(int aError, int aResultCount); - void onGetDocumentComplete(int aError, QCPixDocument* aDoc); + void onGetDocumentComplete(int aError, CpixDocument* aDoc); void displayNextPage(); void displayPrevPage(); }; diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/samplesearch/samplesearch.pro --- a/qcpix/tsrc/samplesearch/samplesearch.pro Tue Jul 06 15:30:04 2010 +0300 +++ b/qcpix/tsrc/samplesearch/samplesearch.pro Wed Aug 18 10:53:26 2010 +0300 @@ -20,7 +20,7 @@ QT += core QT += gui CONFIG += qtestlib -LIBS += -lqcpixsearchclient +LIBS += -lcpixsearch HEADERS += SampleSearch.h \ searchHandler.h diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/samplesearch/searchhandler.cpp --- a/qcpix/tsrc/samplesearch/searchhandler.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/qcpix/tsrc/samplesearch/searchhandler.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -16,14 +16,14 @@ */ #include "searchhandler.h" -#include -#include +#include +#include CSearchHandler::CSearchHandler() { - iSearchInterface = QCPixSearcher::newInstance("root","_aggregate"); + iSearchInterface = CpixSearcher::newInstance("root","_aggregate"); iSearchInterface->connect(iSearchInterface, SIGNAL(handleSearchResults(int,int)), this, SLOT(__handleSearchResult(int,int))); - iSearchInterface->connect(iSearchInterface, SIGNAL(handleDocument(int,QCPixDocument*)), this, SLOT(__getDocumentAsync(int,QCPixDocument*))); + iSearchInterface->connect(iSearchInterface, SIGNAL(handleDocument(int,CpixDocument*)), this, SLOT(__getDocumentAsync(int,CpixDocument*))); } void CSearchHandler::__handleSearchResult(int aError, int estimatedResultCount) @@ -33,14 +33,14 @@ emit handleAsyncSearchResult(aError, estimatedResultCount); } -void CSearchHandler::__getDocumentAsync(int aError, QCPixDocument* aDocument ) +void CSearchHandler::__getDocumentAsync(int aError, CpixDocument* aDocument ) { emit handleDocument( aError, aDocument ); } -QCPixDocument* CSearchHandler::getDocumentAtIndex(int aIndex) +CpixDocument* CSearchHandler::getDocumentAtIndex(int aIndex) { - return iSearchInterface->getDocument( aIndex ); + return iSearchInterface->document( aIndex ); } void CSearchHandler::search(QString aSearchString) @@ -63,7 +63,7 @@ void CSearchHandler::getDocumentAsyncAtIndex( int aIndex ) { - iSearchInterface->getDocumentAsync( aIndex ); + iSearchInterface->documentAsync( aIndex ); } void CSearchHandler::searchAsync(QString aSearchString) diff -r afe194b6b1cd -r cf5c74390b98 qcpix/tsrc/samplesearch/searchhandler.h --- a/qcpix/tsrc/samplesearch/searchhandler.h Tue Jul 06 15:30:04 2010 +0300 +++ b/qcpix/tsrc/samplesearch/searchhandler.h Wed Aug 18 10:53:26 2010 +0300 @@ -20,8 +20,8 @@ #include #include -class QCPixSearcher; -class QCPixDocument; +class CpixSearcher; +class CpixDocument; class CSearchHandler: public QObject { @@ -32,15 +32,15 @@ signals: void handleSearchResult(int, int); void handleAsyncSearchResult(int, int); - void handleDocument(int aError, QCPixDocument* aDoc); + void handleDocument(int aError, CpixDocument* aDoc); private slots: void __handleSearchResult(int aError, int estimatedResultCount); - void __getDocumentAsync(int aError, QCPixDocument* aDocument ); + void __getDocumentAsync(int aError, CpixDocument* aDocument ); public: ~CSearchHandler(); - QCPixDocument* getDocumentAtIndex(int aIndex); + CpixDocument* getDocumentAtIndex(int aIndex); void getDocumentAsyncAtIndex(int aIndex); void search(QString aSearchString); void searchAsync(QString aSearchString); @@ -48,7 +48,7 @@ int getSearchResultCount(); private: - QCPixSearcher *iSearchInterface; + CpixSearcher *iSearchInterface; QList searchResults; int iSearchresultCount; }; diff -r afe194b6b1cd -r cf5c74390b98 rom/cpix_mw.iby --- a/rom/cpix_mw.iby Tue Jul 06 15:30:04 2010 +0300 +++ b/rom/cpix_mw.iby Wed Aug 18 10:53:26 2010 +0300 @@ -44,7 +44,7 @@ //data=DATAZ_\RESOURCE_FILES_DIR\plugins\npCPixPlugin.rsc RESOURCE_FILES_DIR\plugins\npCPixPlugin.rsc //CPIX QT -file=ABI_DIR\BUILD_DIR\qcpixsearchclient.dll SHARED_LIB_DIR\qcpixsearchclient.dll +file=ABI_DIR\BUILD_DIR\cpixsearch.dll SHARED_LIB_DIR\cpixsearch.dll //CPiX Watchdog file=ABI_DIR\BUILD_DIR\cpixwatchdog.exe SHARED_LIB_DIR\cpixwatchdog.exe diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/cpix/inc/private/cpixhits.h --- a/searchengine/cpix/cpix/inc/private/cpixhits.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/cpix/inc/private/cpixhits.h Wed Aug 18 10:53:26 2010 +0300 @@ -70,6 +70,8 @@ * having the worst match. */ virtual Document * getDocument(int32_t index) = 0; + + virtual int resetDocumentCache(int32_t index, int32_t count) = 0; /** * Returns the amount of hits @@ -110,7 +112,7 @@ typedef std::map WrapperMap; WrapperMap wrappers_; - void destroyWrappers(); + void destroyWrappers(int32_t index); /** @@ -134,6 +136,8 @@ Document * getDocument(int32_t index); + + int resetDocumentCache(int32_t index, int32_t count); /** diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/cpix/inc/public/appclass-hierarchy.txt --- a/searchengine/cpix/cpix/inc/public/appclass-hierarchy.txt Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/cpix/inc/public/appclass-hierarchy.txt Wed Aug 18 10:53:26 2010 +0300 @@ -23,13 +23,27 @@ | [ _mimetype (opt) ] {EStoreYes | EIndexNo} | +-- msg - | [ To ] {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcerptYes, if present} - | [ From ] {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcerptYes, if present} - | [ Body ] {EStoreYes | EIndexTokenized } {ExcerptYes} - | [ Folder ] {EStoreYes | EIndexNo} {ExcerptNA} - | [ Subject ] {EStoreYes | EIndexTokenized} {ExcperptNo} - | [ Attachment ] {EStoreYes | EIndexTokenized} {ExcperptNo} - | + | | + | | + | +--smsmms + | | [ To ] {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcerptYes, if present} + | | [ From ] {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcerptYes, if present} + | | [ Body ] {EStoreYes | EIndexTokenized } {ExcerptYes} + | | [ Folder ] {EStoreYes | EIndexNo} {ExcerptNA} + | | [ Subject ] {EStoreYes | EIndexTokenized} {ExcperptNo} + | | [ Attachment ] {EStoreYes | EIndexTokenized} {ExcperptNo} + | | + | +--email + | | [ Sender ] {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcperptNo} + | | [ Subject ] {EStoreYes | EIndexTokenized } {ExcerptYes} + | | [ Recipients] {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcperptNo} + | | [ Body ] {EStoreYes | EIndexTokenized } {ExcerptYes} + | | [ MailBoxId ] {EStoreYes | EIndexUnTokenized | EAggregateNo} {ExcerptNA} + | | [ FolderId ] {EStoreYes | EIndexUnTokenized | EAggregateNo} {ExcerptNA} + | | [ Attachment ] {EStoreYes | EIndexTokenized , if present} {ExcperptNo} + | | [ MailBoxName ] {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcperptNo} + | | [ SentTime ] {EStoreYes | EIndexTokenized } {ExcperptNo} + | | +-- file | | | | @@ -42,6 +56,7 @@ | +-- folder | [ Name ] {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcerptNo} | [ Extension ] {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcerptNo} + | [ IsFolder ] {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcerptNo} | | +-- media diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/cpix/inc/public/cpix_async.h --- a/searchengine/cpix/cpix/inc/public/cpix_async.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/cpix/inc/public/cpix_async.h Wed Aug 18 10:53:26 2010 +0300 @@ -486,9 +486,10 @@ */ cpix_JobId cpix_Hits_asyncDoc(cpix_Hits * thisHits, int32_t index, - cpix_Document * target, + cpix_Document ** target, void * cookie, - cpix_AsyncCallback * callback); + cpix_AsyncCallback * callback, + int32_t count); /** diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/cpix/inc/public/cpixerror.h --- a/searchengine/cpix/cpix/inc/public/cpixerror.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/cpix/inc/public/cpixerror.h Wed Aug 18 10:53:26 2010 +0300 @@ -106,9 +106,16 @@ * Clears the error state of cpixObj. */ #define cpix_ClearError(cpixObj) ((cpixObj)->err_ = cpix_Error_destroy((cpixObj)->err_)) - - - + /* + * Determines to what extent the cpix_hits_docs() is able to fetch available hits + * Previously a check on cpix_Failed/Suceeded(hits) suffices, but with the batch_get_doc + * implementation a request for N results may results in X fetches where (X <= N) To + * correctly determine how many actual results are fetched a check on _err is not enough + * and _ptr too have to cheked for NULL + */ +#define doc_Fetch_Succeeded(docObj) ((docObj)->ptr_ != NULL) +#define doc_Fetch_Failed(docObj) ((docObj)->ptr_ == NULL) + /** * Any "static" calls will give the result back via this * structure. diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/cpix/inc/public/cpixsearch.h --- a/searchengine/cpix/cpix/inc/public/cpixsearch.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/cpix/inc/public/cpixsearch.h Wed Aug 18 10:53:26 2010 +0300 @@ -296,7 +296,8 @@ */ void cpix_Hits_doc(cpix_Hits * thisHits, int32_t index, - cpix_Document * target); + cpix_Document ** target, + int32_t count); diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/cpix/src/common/gpssort.cpp --- a/searchengine/cpix/cpix/src/common/gpssort.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/cpix/src/common/gpssort.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -422,19 +422,19 @@ for (int32_t i = 0; i < count; ++i) { - cpix_Document - cpixDoc; + cpix_Document* cpixDoc = new cpix_Document; cpix_Hits_doc(unsortedHits, i, - &cpixDoc); + &cpixDoc, + 1); float gpsLat, gpsLong; auto_ptr - clone(cloneAndGetGps(&Cast2Native(&cpixDoc)->native(), + clone(cloneAndGetGps(&Cast2Native(cpixDoc)->native(), &gpsLat, &gpsLong)); GpsDistance @@ -447,6 +447,8 @@ clone.release(); locations.push_back(gdp); + + delete cpixDoc; } } } diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/cpix/src/cpix_async.cpp --- a/searchengine/cpix/cpix/src/cpix_async.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/cpix/src/cpix_async.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -1107,7 +1107,8 @@ // cpix_Hits * hits_; int32_t index_; - cpix_Document * target_; + cpix_Document ** target_; + int32_t count_; public: @@ -1116,16 +1117,18 @@ // static cpix_JobId CreateJob(cpix_Hits * hits, int32_t index, - cpix_Document * target, + cpix_Document ** target, void * cookie, - cpix_AsyncCallback * callback) + cpix_AsyncCallback * callback, + int32_t count) { std::auto_ptr job(new AsyncHitsDocJob(hits, index, target, cookie, - callback)); + callback, + count )); cpix_JobId rv = job->id(); @@ -1167,15 +1170,17 @@ // AsyncHitsDocJob(cpix_Hits * hits, int32_t index, - cpix_Document * target, + cpix_Document ** target, void * cookie, - cpix_AsyncCallback * callback) + cpix_AsyncCallback * callback, + int32_t count) : AsyncJob(IdxDbHndl(), // default value for handlers cookie, callback), hits_(NULL), index_(index), - target_(target) + target_(target), + count_(count) { // We must make sure that these native objects live even // if the client calls cancel in the middle of operation @@ -1217,7 +1222,8 @@ cpix_Hits_doc(&hits, index_, - target_); + target_, + count_); return hits.err_; } @@ -1841,9 +1847,10 @@ cpix_JobId cpix_Hits_asyncDoc(cpix_Hits * thisHits, int32_t index, - cpix_Document * target, + cpix_Document ** target, void * cookie, - cpix_AsyncCallback * callback) + cpix_AsyncCallback * callback, + int32_t count) { return XlateExc(thisHits, CallFreeFunc(&AsyncHitsDocJob::CreateJob, @@ -1851,7 +1858,8 @@ index, target, cookie, - callback)); + callback, + count)); } diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/cpix/src/cpixhits.cpp --- a/searchengine/cpix/cpix/src/cpixhits.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/cpix/src/cpixhits.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -36,18 +36,27 @@ } - void HitsBase::destroyWrappers() + void HitsBase::destroyWrappers(int32_t index) { WrapperMap::iterator - i = wrappers_.begin(), - end = wrappers_.end(); + i = wrappers_.begin(); - for (; i != end; ++i) + if (index == -1) { + for (; i != wrappers_.end(); ++i) { delete i->second; + wrappers_.clear(); } + } else { + for (; i != wrappers_.find(index); ++i) + { + delete i->second; + + } + wrappers_.erase(wrappers_.begin(),wrappers_.find(index)); + } - wrappers_.clear(); + } @@ -61,16 +70,26 @@ void HitsBase::wrapDocument(int32_t index, lucene::document::Document * doc) { - if (wrappers_.find(index) != wrappers_.end()) +// if (wrappers_.find(index) != wrappers_.end()) +// { +// delete wrappers_[index]; +// wrappers_[index] = NULL; +// } +// +// Cpix::Document +// * cpixDoc = new Cpix::Document(doc, +// docsOwnedByClucene_); +// wrappers_[index] = cpixDoc; + + if (wrappers_.find(index) == wrappers_.end()) { - delete wrappers_[index]; - wrappers_[index] = NULL; + Cpix::Document + * cpixDoc = new Cpix::Document(doc, + docsOwnedByClucene_); + wrappers_[index] = cpixDoc; } - Cpix::Document - * cpixDoc = new Cpix::Document(doc, - docsOwnedByClucene_); - wrappers_[index] = cpixDoc; + } @@ -89,7 +108,19 @@ return rv; } - + int HitsBase::resetDocumentCache(int32_t index, int32_t count) + { + int32_t reqCount = index + count; + int rv = 0; + int i = (wrappers_.begin()->first)+ (int32_t) wrappers_.size(); + if ((i < reqCount) || (index < wrappers_.begin()->first)) + { + getDocument_(index); + + } + rv = (int32_t) wrappers_.size(); + return rv; + } /** * Class ClhDocumentConsumer @@ -144,7 +175,8 @@ clHits_.length()); } - beginIndex_ = index - (index % pageSize_); + //beginIndex_ = index - (index % pageSize_); + beginIndex_ = index; endIndex_ = beginIndex_ + pageSize_; endIndex_ = std::min(clHits_.length(), @@ -234,7 +266,7 @@ delete hits_; hits_ = 0; - destroyWrappers(); + destroyWrappers(0); delete docConsumer_; @@ -245,7 +277,7 @@ void LuceneHits::getDocument_(int32_t index) { // check if we have tried to fetch it before and failed - docConsumer_->throwIfFailedDocIndex(index); + //docConsumer_->throwIfFailedDocIndex(index); // common usage pattern is to enumerate hits, never to access // them at true random manner. That means that we never need @@ -253,7 +285,7 @@ // fetch the next page we can discard all other wrapped // documents. Merely an memory consumption optimization // measure, can be commented out. - destroyWrappers(); + destroyWrappers(index); // if we get here, then it means we don't have the page of hit // docs we need, but it may still throw if the hits is an @@ -304,12 +336,12 @@ HitDocumentList::~HitDocumentList() { - destroyWrappers(); + destroyWrappers(0); for (std::vector::iterator i = documents_.begin(); i != documents_.end(); i++) { - _CLDELETE(*i); + _CLDELETE(*i); } } diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/cpix/src/cpixsearch.cpp --- a/searchengine/cpix/cpix/src/cpixsearch.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/cpix/src/cpixsearch.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -235,25 +235,36 @@ void cpix_Hits_doc(cpix_Hits * thisHits, int32_t index, - cpix_Document * target) + cpix_Document ** target, + int32_t count ) { - Cpix::Document - * pDoc = XlateExc(thisHits, + + int result = XlateExc(thisHits, Caller(thisHits, - &Cpix::IHits::getDocument, - index)); - if (cpix_Succeeded(thisHits)) - { - target->ptr_ = pDoc; - target->err_ = NULL; - - // TEMP (?) post-condition code - if (target->ptr_ == NULL) - { - thisHits->err_ - = CreateError(ET_CPIX_EXC, - L"PANIC PANIC PANIC - NULL doc returned without any error message!"); - } + &Cpix::IHits::resetDocumentCache, + index, + count)); + + for (int32_t i = 0; i < count && i < result ; i++) { + Cpix::Document + * pDoc = XlateExc(thisHits, + Caller(thisHits, + &Cpix::IHits::getDocument, + index++)); + if (cpix_Succeeded(thisHits)) + { + target[i]->ptr_ = pDoc; + target[i]->err_ = NULL; + + // TEMP (?) post-condition code + if (target[i]->ptr_ == NULL) + { + thisHits->err_ + = CreateError(ET_CPIX_EXC, + L"PANIC PANIC PANIC - NULL doc returned without any error message!"); + } + //target ++; + } } } diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/cpix/src/fileparser/fileparser.cpp --- a/searchengine/cpix/cpix/src/fileparser/fileparser.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/cpix/src/fileparser/fileparser.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -180,7 +180,7 @@ newField.reset(new Field(LEXTENSION_FIELD, wExtension.c_str(), - cpix_STORE_NO + cpix_STORE_YES | cpix_INDEX_TOKENIZED | cpix_AGGREGATE_YES | cpix_FREE_TEXT)); diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/cpix/src/prefixqueryparser.cpp --- a/searchengine/cpix/cpix/src/prefixqueryparser.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/cpix/src/prefixqueryparser.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -65,8 +65,8 @@ if ( q_.get() ) { auto_ptr bq( new BooleanQuery() ); bq_ = bq.get(); - bq_->add( q_.release(), true, true, false ); - bq_->add( q.release(), true, true, false ); + bq_->add( q_.release(), true, false, false ); + bq_->add( q.release(), true, false, false ); q_.reset( bq.release() ); } else { q_ = q; diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/tsrc/cpixsample/group/cpixsample.mmp --- a/searchengine/cpix/tsrc/cpixsample/group/cpixsample.mmp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/tsrc/cpixsample/group/cpixsample.mmp Wed Aug 18 10:53:26 2010 +0300 @@ -50,11 +50,9 @@ STATICLIBRARY libcpix.lib STATICLIBRARY libclucene.lib STATICLIBRARY libstemmer.lib -//STATICLIBRARY libitk.lib STATICLIBRARY libcpixtools.lib -//STATICLIBRARY libcpixxf.lib -//STATICLIBRARY libexif.lib -//STATICLIBRARY libid3.lib +STATICLIBRARY libanalysis.lib + LIBRARY libpthread.lib LIBRARY libz.lib // for libid3 diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/tsrc/cpixsample/src/cpixsample.cpp --- a/searchengine/cpix/tsrc/cpixsample/src/cpixsample.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/tsrc/cpixsample/src/cpixsample.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -75,7 +75,7 @@ *idxDb_ = cpix_IdxDb_openDb(&result, TEST_DOCUMENT_QBASEAPPCLASS, - cpix_IDX_CREATE); + cpix_IDX_OPEN); if (cpix_Failed(&result)) { printf("Failed to open indexDb\n"); @@ -187,17 +187,42 @@ } cout << "Number of hits: " << hitCount << endl; - + while (1) + { + int fromDoc; + int docCount; + printf("\nFrom: "); + scanf("%d",&fromDoc); + printf("\nHow many doc: "); + scanf("%d",&docCount); + cpix_Document - doc; - - for (int32_t i = 0; i < hitCount; ++i) + **doc; + + doc = (cpix_Document **) malloc (sizeof(cpix_Document *) * docCount); + for(int j = 0 ; j < docCount; j++) { + doc[j] = (cpix_Document *) malloc (sizeof(cpix_Document)); + doc[j]->ptr_ = NULL; + } + cpix_Hits_doc(hits, - i, - &doc); + fromDoc, + doc, + docCount); + + for(int j = 0 ; docCount>j && doc[j]->ptr_ != NULL; j++) + { + printf("%d \n", j); + printHit(doc[j]); + } + + for(int j = 0 ; j < docCount; j++) + free(doc[j]); - printHit(&doc); + + free(doc); + } logDbgMsg("Shankar Ha hahah"); } @@ -212,11 +237,14 @@ cpix_IdxDb * idxDb_ = NULL; cpix_Hits * hits_; - printf("Press a character to exit!\n"); + - testInit(&analyzer_,&idxDb_); + testInit(&analyzer_,&idxDb_); + for(int j = 0; j < 10; j++) + { createDocument(LDOCUID1,DOC1CONTENT, &analyzer_,&idxDb_); createDocument(LDOCUID2,DOC2CONTENT, &analyzer_,&idxDb_); + } queryParser_ = cpix_QueryParser_create(&result, diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/tsrc/cpixunittest/inc/suggestion.h --- a/searchengine/cpix/tsrc/cpixunittest/inc/suggestion.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/tsrc/cpixunittest/inc/suggestion.h Wed Aug 18 10:53:26 2010 +0300 @@ -34,7 +34,7 @@ const Suggestion & right); public: - Suggestion(cpix_Document & doc, + Suggestion(cpix_Document * doc, Itk::TestMgr * testMgr); diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/tsrc/cpixunittest/inc/testutils.h --- a/searchengine/cpix/tsrc/cpixunittest/inc/testutils.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/tsrc/cpixunittest/inc/testutils.h Wed Aug 18 10:53:26 2010 +0300 @@ -210,5 +210,11 @@ extern const Volume Volumes[]; +#define ALLOC_DOC(DOC, COUNT) DOC = (cpix_Document**)malloc (sizeof(cpix_Document*)* COUNT); \ + for (int i = 0; i < COUNT; i++) { \ + (DOC[i]) = (cpix_Document*)malloc (sizeof(cpix_Document)); \ + DOC[i]->ptr_ = NULL; \ + } +#define FREE_DOC(DOC, COUNT) for (int i=0; i< COUNT; i++) free(DOC[i]); free (DOC); #endif // CPIXUNITTEST_TESTUTILS_H_ diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/tsrc/cpixunittest/src/asynctests.cpp --- a/searchengine/cpix/tsrc/cpixunittest/src/asynctests.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/tsrc/cpixunittest/src/asynctests.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -36,7 +36,7 @@ #include "testutils.h" #include "testcorpus.h" #include "setupsentry.h" - +#include "testutils.h" #include "std_log_result.h" // TODO PROPER, EXAMPLARY error clearing (cpix_ClearError()) @@ -587,7 +587,7 @@ bool call(cpix_Hits * hits, int32_t index, - cpix_Document * target, + cpix_Document ** target, Itk::TestMgr * testMgr, bool cancel) { @@ -605,7 +605,8 @@ index, target, this, - &callback); + &callback, + 1); } ITK_ASSERT(testMgr, @@ -725,7 +726,7 @@ SyncedDoc syncedDoc_; - cpix_Document targetDoc_; + cpix_Document **targetDoc_; Cpt::Mutex & cpixMutex_; @@ -736,9 +737,13 @@ syncedDoc_(cpixMutex), cpixMutex_(cpixMutex) { - ; + ALLOC_DOC(targetDoc_, 1); } - + + ~SyncedSearch() { + FREE_DOC(targetDoc_, 1); + } + void call(cpix_IdxSearcher * searcher, cpix_Query * query, Itk::TestMgr * testMgr, @@ -905,7 +910,7 @@ bool succeeded = syncedDoc_.call(hits, i, - &targetDoc_, + targetDoc_, testMgr, (i%4) == 1); // cancel or not @@ -914,7 +919,7 @@ Cpt::SyncRegion sr(cpixMutex_); - PrintHit(&targetDoc_, + PrintHit(targetDoc_[0], testMgr); } } diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/tsrc/cpixunittest/src/destructivetests.cpp --- a/searchengine/cpix/tsrc/cpixunittest/src/destructivetests.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/tsrc/cpixunittest/src/destructivetests.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -216,47 +216,59 @@ printf("Accessing hits after closing... \n"); cpix_Document - doc; - + **doc; + ALLOC_DOC(doc, 1); + printf("doc #0: "); cpix_Hits_doc(hits, 0, - &doc); + doc, + 1); + if (doc[0]->ptr_ != NULL) { ITK_EXPECT( testMgr, - cpix_Succeeded( hits ), - "Accessing hit(0) should succeeded for closed database (hits still holds a reference to its originator)." ); + cpix_Succeeded( hits ), + "Accessing hit(0) should succeeded for closed database (hits still holds a reference to its originator)." ); if (cpix_Failed(hits)) { - wchar_t - buf[256]; - cpix_Error_report(hits->err_, - buf, - sizeof(buf) / sizeof(wchar_t)); - printf("%S\n", buf); - cpix_ClearError(hits); - + wchar_t + buf[256]; + cpix_Error_report(hits->err_, + buf, + sizeof(buf) / sizeof(wchar_t)); + printf("%S\n", buf); + cpix_ClearError(hits); + } + } + FREE_DOC(doc, 1); + + ALLOC_DOC(doc, 1) printf("\ndoc #20: "); cpix_Hits_doc(hits, 20, - &doc); + doc, + 1); + if (doc[0]->ptr_ != NULL) { ITK_EXPECT( testMgr, - cpix_Failed( hits ), - "Accessing hit(20) should NOT succeeded for closed database (hits still holds a reference to its originator)." ); + cpix_Failed( hits ), + "Accessing hit(20) should NOT succeeded for closed database (hits still holds a reference to its originator)." ); if (cpix_Failed(hits)) { - wchar_t - buf[256]; - cpix_Error_report(hits->err_, - buf, - sizeof(buf) / sizeof(wchar_t)); - printf("%S\n", buf); - cpix_ClearError(hits); - assert_failed = 1; + wchar_t + buf[256]; + cpix_Error_report(hits->err_, + buf, + sizeof(buf) / sizeof(wchar_t)); + printf("%S\n", buf); + cpix_ClearError(hits); + assert_failed = 1; } + } + + FREE_DOC(doc, 1) testResultXml(xml_file); cpix_Hits_destroy( hits ); cpix_Query_destroy( query ); diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/tsrc/cpixunittest/src/documenttest.cpp --- a/searchengine/cpix/tsrc/cpixunittest/src/documenttest.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/tsrc/cpixunittest/src/documenttest.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -375,53 +375,68 @@ // EXPECTED result is that doc2 first, doc1 second. cpix_Document - returnedDoc1; + **returnedDoc1; - cpix_Hits_doc(hits_, 0, &returnedDoc1); + ALLOC_DOC(returnedDoc1, 1); + cpix_Hits_doc(hits_, 0, returnedDoc1, 1); + if (returnedDoc1[0]->ptr_ != NULL) { - const wchar_t* id = cpix_Document_getFieldValue(&returnedDoc1, - LCPIX_DOCUID_FIELD); + const wchar_t* id = cpix_Document_getFieldValue(returnedDoc1[0], + LCPIX_DOCUID_FIELD); if (id) - { - std::wstring str(id); - ITK_ASSERT(testMgr, + { + std::wstring str(id); + ITK_ASSERT(testMgr, str.compare(LDOCUID2) == 0, "wrong document"); - if(str.compare(LDOCUID2) != 0) - { - assert_failed = 1; - } + if(str.compare(LDOCUID2) != 0) + { + assert_failed = 1; + } + } + else + { + assert_failed = 1; + ITK_PANIC("failed to get _docuid"); + } + } else { + ITK_PANIC("could not fetch requested doc"); + assert_failed = 1; } - else - { - assert_failed = 1; - ITK_PANIC("failed to get _docuid"); - } + FREE_DOC(returnedDoc1, 1); + + cpix_Document + **returnedDoc2; + ALLOC_DOC(returnedDoc2, 1) + + cpix_Hits_doc(hits_, 1, returnedDoc2, 1); + if (returnedDoc2[0]->ptr_ != NULL) { + const wchar_t* id = NULL; - cpix_Document - returnedDoc2; - - cpix_Hits_doc(hits_, 1, &returnedDoc2); - id = NULL; - - id = cpix_Document_getFieldValue(&returnedDoc2, LCPIX_DOCUID_FIELD); + id = cpix_Document_getFieldValue(returnedDoc2[0], LCPIX_DOCUID_FIELD); if (id) - { - std::wstring str(id); - ITK_ASSERT(testMgr, + { + std::wstring str(id); + ITK_ASSERT(testMgr, str.compare(LDOCUID1) == 0, "wrong document"); - if(str.compare(LDOCUID1) != 0) - { - assert_failed = 1; - } - } + if(str.compare(LDOCUID1) != 0) + { + assert_failed = 1; + } + } else - { + { assert_failed = 1; - ITK_PANIC("failed to get _docuid"); + ITK_PANIC("failed to get _docuid"); + } + } else { + ITK_PANIC("could not fetch requested doc"); + assert_failed = 1; } + FREE_DOC(returnedDoc2, 1); testResultXml(xml_file); + } @@ -455,52 +470,66 @@ // EXPECTED result is that doc1 first, doc2 second. cpix_Document - returnedDoc1; + **returnedDoc1; + ALLOC_DOC(returnedDoc1, 1) - cpix_Hits_doc(hits_, 0, &returnedDoc1); + cpix_Hits_doc(hits_, 0, returnedDoc1, 1); + if (returnedDoc1[0]->ptr_ != NULL) { - const wchar_t* id = cpix_Document_getFieldValue(&returnedDoc1, - LCPIX_DOCUID_FIELD); + const wchar_t* id = cpix_Document_getFieldValue(returnedDoc1[0], + LCPIX_DOCUID_FIELD); if ( id ) - { - std::wstring str( id ); - ITK_ASSERT(testMgr, + { + std::wstring str( id ); + ITK_ASSERT(testMgr, str.compare(LDOCUID1) == 0, "wrong document"); - if(str.compare(LDOCUID1) != 0) - { - assert_failed = 1; - } - } + if(str.compare(LDOCUID1) != 0) + { + assert_failed = 1; + } + } else - { - ITK_PANIC("failed to get _docuid"); + { + ITK_PANIC("failed to get _docuid"); + assert_failed = 1; + } + } else { + ITK_PANIC("could not fetch requested doc"); assert_failed = 1; } + FREE_DOC(returnedDoc1, 1); cpix_Document - returnedDoc2; - - cpix_Hits_doc(hits_, 1, &returnedDoc2); - id = NULL; + **returnedDoc2; + ALLOC_DOC(returnedDoc2, 1); - id = cpix_Document_getFieldValue(&returnedDoc2, LCPIX_DOCUID_FIELD ); + cpix_Hits_doc(hits_, 1, returnedDoc2, 1); + if (returnedDoc2[0]->ptr_ != NULL) { + const wchar_t* id = NULL; + + id = cpix_Document_getFieldValue(returnedDoc2[0], LCPIX_DOCUID_FIELD ); if ( id ) - { - std::wstring str( id ); - ITK_ASSERT(testMgr, + { + std::wstring str( id ); + ITK_ASSERT(testMgr, str.compare(LDOCUID2) == 0, "wrong document"); - if(str.compare(LDOCUID2) != 0) - { - assert_failed = 1; - } - } + if(str.compare(LDOCUID2) != 0) + { + assert_failed = 1; + } + } else - { - ITK_PANIC("failed to get _docuid"); + { + ITK_PANIC("failed to get _docuid"); + assert_failed = 1; + } + } else { + ITK_PANIC("could not fetch requested doc"); assert_failed = 1; } + FREE_DOC(returnedDoc2, 1); testResultXml(xml_file); } @@ -532,52 +561,66 @@ // EXPECTED result is that doc1 first, doc2 second. cpix_Document - returnedDoc1; + **returnedDoc1; + ALLOC_DOC(returnedDoc1, 1); - cpix_Hits_doc(hits_, 0, &returnedDoc1); + cpix_Hits_doc(hits_, 0, returnedDoc1, 1); + if (returnedDoc1[0]->ptr_ != NULL) { - const wchar_t* id = cpix_Document_getFieldValue(&returnedDoc1, - LCPIX_DOCUID_FIELD); + const wchar_t* id = cpix_Document_getFieldValue(returnedDoc1[0], + LCPIX_DOCUID_FIELD); if (id) - { - std::wstring str(id); - ITK_ASSERT(testMgr, + { + std::wstring str(id); + ITK_ASSERT(testMgr, str.compare(LDOCUID1) == 0, "wrong document"); - if(str.compare(LDOCUID1) != 0) - { - assert_failed = 1; - } - } + if(str.compare(LDOCUID1) != 0) + { + assert_failed = 1; + } + } else - { - ITK_PANIC("failed to get _docuid"); + { + ITK_PANIC("failed to get _docuid"); + assert_failed = 1; + } + } else { + ITK_PANIC("could not fetch requested doc"); assert_failed = 1; } + FREE_DOC(returnedDoc1, 1); cpix_Document - returnedDoc2; - - cpix_Hits_doc(hits_, 1, &returnedDoc2); - id = NULL; + **returnedDoc2; + ALLOC_DOC(returnedDoc2, 1); - id = cpix_Document_getFieldValue(&returnedDoc2, LCPIX_DOCUID_FIELD); + cpix_Hits_doc(hits_, 1, returnedDoc2, 1); + if (returnedDoc2[0]->ptr_ != NULL) { + const wchar_t* id = NULL; + + id = cpix_Document_getFieldValue(returnedDoc2[0], LCPIX_DOCUID_FIELD); if (id) - { - std::wstring str(id); - ITK_ASSERT(testMgr, + { + std::wstring str(id); + ITK_ASSERT(testMgr, str.compare(LDOCUID2) == 0, "wrong document"); - if(str.compare(LDOCUID2) != 0) - { - assert_failed = 1; - } - } + if(str.compare(LDOCUID2) != 0) + { + assert_failed = 1; + } + } else - { - ITK_PANIC("failed to get _docuid"); + { + ITK_PANIC("failed to get _docuid"); + assert_failed = 1; + } + } else { + ITK_PANIC("could not fetch requested doc"); assert_failed = 1; } + FREE_DOC(returnedDoc2, 1); testResultXml(xml_file); } @@ -625,52 +668,66 @@ // EXPECTED result is that doc2 first. cpix_Document - returnedDoc1; + **returnedDoc1; + ALLOC_DOC(returnedDoc1, 1); - cpix_Hits_doc(hits_, 0, &returnedDoc1); + cpix_Hits_doc(hits_, 0, returnedDoc1, 1); + if (returnedDoc1[0]->ptr_ != NULL) { - const wchar_t* id = cpix_Document_getFieldValue(&returnedDoc1, - LCPIX_DOCUID_FIELD); + const wchar_t* id = cpix_Document_getFieldValue(returnedDoc1[0], + LCPIX_DOCUID_FIELD); if (id) - { - std::wstring str(id); - ITK_ASSERT(testMgr, + { + std::wstring str(id); + ITK_ASSERT(testMgr, str.compare(LDOCUID1) == 0, "wrong document"); - if(str.compare(LDOCUID2) != 0) - { - assert_failed = 1; - } - } + if(str.compare(LDOCUID2) != 0) + { + assert_failed = 1; + } + } else - { - ITK_PANIC("failed to get _docuid"); + { + ITK_PANIC("failed to get _docuid"); + assert_failed = 1; + } + } else { + ITK_PANIC("could not fetch requested doc"); assert_failed = 1; } + FREE_DOC(returnedDoc1, 1); cpix_Document - returnedDoc2; - - cpix_Hits_doc(hits_, 1, &returnedDoc2); - id = NULL; + **returnedDoc2; + ALLOC_DOC(returnedDoc2, 1); - id = cpix_Document_getFieldValue(&returnedDoc2, LCPIX_DOCUID_FIELD); + cpix_Hits_doc(hits_, 1, returnedDoc2, 1); + if (returnedDoc2[0]->ptr_ != NULL) { + const wchar_t* id = NULL; + + id = cpix_Document_getFieldValue(returnedDoc2[0], LCPIX_DOCUID_FIELD); if (id) - { - std::wstring str(id); - ITK_ASSERT(testMgr, + { + std::wstring str(id); + ITK_ASSERT(testMgr, str.compare(LDOCUID2) == 0, "wrong document"); - if(str.compare(LDOCUID2) != 0) - { - assert_failed = 1; - } - } + if(str.compare(LDOCUID2) != 0) + { + assert_failed = 1; + } + } else - { - ITK_PANIC("failed to get _docuid"); + { + ITK_PANIC("failed to get _docuid"); + assert_failed = 1; + } + } else { + ITK_PANIC("could not fetch requested doc"); assert_failed = 1; } + FREE_DOC(returnedDoc2, 1); testResultXml(xml_file); } }; diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/tsrc/cpixunittest/src/randomtest.cpp --- a/searchengine/cpix/tsrc/cpixunittest/src/randomtest.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/tsrc/cpixunittest/src/randomtest.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -20,6 +20,7 @@ #include #include #include "std_log_result.h" +#include "testutils.h" using namespace std; using namespace Itk; @@ -456,10 +457,11 @@ bool found = false; for ( int i = 0; i < cpix_Hits_length( hits ); i++ ) { - cpix_Document doc; - cpix_Hits_doc( hits, i, &doc ); - - const wchar_t* id = cpix_Document_getFieldValue( &doc, LCPIX_DOCUID_FIELD ); + cpix_Document **doc; + ALLOC_DOC (doc, 1); + cpix_Hits_doc( hits, i, doc, 1 ); + if (doc[0]->ptr_ != NULL) { + const wchar_t* id = cpix_Document_getFieldValue( doc[0], LCPIX_DOCUID_FIELD ); if ( id ) { @@ -470,6 +472,8 @@ break; } } + } + FREE_DOC(doc, 1); } if ( !found ) { @@ -538,27 +542,33 @@ if ( hits ) { - for ( int i = 0; i < cpix_Hits_length( hits ); i++ ) - { - cpix_Document doc; - cpix_Hits_doc( hits, i, &doc ); + for ( int i = 0; i < cpix_Hits_length( hits ); i++ ) { + + cpix_Document **doc; + ALLOC_DOC(doc, 1); + cpix_Hits_doc( hits, i, doc, 1 ); - const wchar_t* id = cpix_Document_getFieldValue( &doc, LCPIX_DOCUID_FIELD ); + if (doc[0]->ptr_ != NULL) { + + const wchar_t* id = cpix_Document_getFieldValue(doc[0], + LCPIX_DOCUID_FIELD); - if ( id ) - { - wstring str( id ); - size_t index = GetItemIndex( str.c_str() ); - wstring content( testCorpus_.item( index ) ); + if (id) + { + wstring str(id); + size_t index = GetItemIndex(str.c_str()); + wstring content(testCorpus_.item(index)); - // TODO expect instead of - // assert otherwise cpix_Hits - // instance leaks - ITK_ASSERT( testMgr, - containsTerm( content, term ), - "False positive? Term %S not found in %S", term.c_str(), content.c_str() ); - matches++; - } + // TODO expect instead of + // assert otherwise cpix_Hits + // instance leaks + ITK_ASSERT( testMgr, + containsTerm( content, term ), + "False positive? Term %S not found in %S", term.c_str(), content.c_str() ); + matches++; + } + } + FREE_DOC(doc, 1); } cpix_Hits_destroy( hits ); } diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/tsrc/cpixunittest/src/suggestion.cpp --- a/searchengine/cpix/tsrc/cpixunittest/src/suggestion.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/tsrc/cpixunittest/src/suggestion.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -22,16 +22,17 @@ #include "suggestion.h" #include "config.h" +#include "testutils.h" -Suggestion::Suggestion(cpix_Document & doc, +Suggestion::Suggestion(cpix_Document * doc, Itk::TestMgr * testMgr) { const wchar_t - * value = cpix_Document_getFieldValue(&doc, + * value = cpix_Document_getFieldValue(doc, LTERM_TEXT_FIELD); - if (cpix_Failed(&doc)) + if (cpix_Failed(doc)) { ITK_EXPECT(testMgr, false, @@ -43,9 +44,9 @@ term_ = value; } - value = cpix_Document_getFieldValue(&doc, + value = cpix_Document_getFieldValue(doc, LTERM_DOCFREQ_FIELD); - if (cpix_Failed(&doc)) + if (cpix_Failed(doc)) { ITK_EXPECT(testMgr, false, @@ -128,23 +129,28 @@ for (int32_t i = 0; i < hitCount; ++i) { cpix_Document - doc; + **doc; + ALLOC_DOC(doc, 1); cpix_Hits_doc(hits, i, - &doc); + doc, + 1); + if (doc[0]->ptr_ != NULL) { if (cpix_Failed(hits)) { - ITK_EXPECT(testMgr, - false, - "Failed to get doc %d", - i); - cpix_ClearError(hits); - goOn = false; - break; + ITK_EXPECT(testMgr, + false, + "Failed to get doc %d", + i); + cpix_ClearError(hits); + goOn = false; + break; } - suggestions.push_back(Suggestion(doc, - testMgr)); + suggestions.push_back(Suggestion(doc[0], + testMgr)); + } + FREE_DOC(doc, 1); } if (goOn) diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/tsrc/cpixunittest/src/testutils.cpp --- a/searchengine/cpix/tsrc/cpixunittest/src/testutils.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/tsrc/cpixunittest/src/testutils.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -151,15 +151,17 @@ cout << "Number of hits: " << hitCount << endl; cpix_Document - doc; + **doc; + ALLOC_DOC(doc, 1); for (int32_t i = 0; i < hitCount; ++i) { cpix_Hits_doc(hits, i, - &doc); + doc, + 1); - if (cpix_Failed(hits)) + if (cpix_Failed(hits) || (doc_Fetch_Failed(doc[0]))) { ITK_EXPECT(testMgr, false, @@ -169,9 +171,11 @@ break; } // OBS PrintHit(&doc, - printHitFunc(&doc, + printHitFunc(doc[0], testMgr); } + + FREE_DOC(doc, 1); } @@ -329,15 +333,17 @@ cout << "Number of hits: " << hitCount << endl; cpix_Document - doc; + **doc; + ALLOC_DOC(doc, 1); for (int32_t i = 0; i < hitCount; ++i) { cpix_Hits_doc(hits, i, - &doc); + doc, + 1); - if (cpix_Failed(hits)) + if (cpix_Failed(hits) || (doc_Fetch_Failed(doc[0]))) { if (allowFailure) { @@ -355,9 +361,10 @@ cpix_ClearError(hits); break; } - printHit(&doc, + printHit(doc[0], testMgr); } + FREE_DOC(doc, 1); } diff -r afe194b6b1cd -r cf5c74390b98 searchengine/cpix/tsrc/cpixunittest/src/whiteboxtests.cpp --- a/searchengine/cpix/tsrc/cpixunittest/src/whiteboxtests.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/cpix/tsrc/cpixunittest/src/whiteboxtests.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -514,13 +514,15 @@ for (int32_t hitDocIdx = from; hitDocIdx < to; ++hitDocIdx) { cpix_Document - doc; + **doc; + ALLOC_DOC(doc, 1); cpix_Hits_doc(hits, hitDocIdx, - &doc); + doc, + 1); - if (cpix_Failed(hits)) + if (cpix_Failed(hits) || (doc_Fetch_Failed(doc[0]))) { wchar_t buf[92]; @@ -534,8 +536,9 @@ break; } - util_->printHit(&doc, + util_->printHit(doc[0], mgr); + FREE_DOC(doc, 1); } } diff -r afe194b6b1cd -r cf5c74390b98 searchengine/oss/cl/clucene/group/clucene.mmp --- a/searchengine/oss/cl/clucene/group/clucene.mmp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/oss/cl/clucene/group/clucene.mmp Wed Aug 18 10:53:26 2010 +0300 @@ -165,6 +165,7 @@ SOURCE StringIntern.cpp SOURCE ThreadLocal.cpp +//MACRO USE_HIGHLIGHTER // highlighter SOURCEPATH ../src/CLucene/highlighter SOURCE Encoder.cpp diff -r afe194b6b1cd -r cf5c74390b98 searchengine/oss/cl/clucene/src/clucene/analysis/standard/standardtokenizer.cpp --- a/searchengine/oss/cl/clucene/src/clucene/analysis/standard/standardtokenizer.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/oss/cl/clucene/src/clucene/analysis/standard/standardtokenizer.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -65,7 +65,7 @@ /* otherMatches is a condition (possibly compound) under which a character ** that's not an ALNUM or UNDERSCORE can be considered not to break the ** span. Callers should pass false if only ALNUM/UNDERSCORE are acceptable. */ - #define CONSUME_WORD _CONSUME_AS_LONG_AS(ALNUM || UNDERSCORE) + #define CONSUME_WORD _CONSUME_AS_LONG_AS(ALNUM /*|| UNDERSCORE*/) /* ** Consume CJK characters @@ -148,7 +148,7 @@ // CHANGED } else if (SPACE) { continue; - } else if (ALPHA || UNDERSCORE) { + } else if (ALPHA) { tokenStart = rdPos; return ReadAlphaNum(ch,t); } else if (DIGIT || NEGATIVE_SIGN_ || DECIMAL) { @@ -241,8 +241,8 @@ TCHAR rightmost = RIGHTMOST(str); /* Don't including a trailing decimal point. */ if(ALPHA){ - return ReadAlphaNum(prev,t); - } + CONSUME_WORD; + } if (rightmost == '.') { SHAVE_RIGHTMOST(str); unReadChar(); diff -r afe194b6b1cd -r cf5c74390b98 searchengine/oss/cl/clucene/src/clucene/highlighter/SimpleHTMLFormatter.cpp --- a/searchengine/oss/cl/clucene/src/clucene/highlighter/SimpleHTMLFormatter.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/oss/cl/clucene/src/clucene/highlighter/SimpleHTMLFormatter.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -13,8 +13,8 @@ SimpleHTMLFormatter::SimpleHTMLFormatter() { - _preTag = stringDuplicate(_T("")); - _postTag = stringDuplicate(_T("")); + _preTag = stringDuplicate(_T("")); + _postTag = stringDuplicate(_T("")); } SimpleHTMLFormatter::~SimpleHTMLFormatter() diff -r afe194b6b1cd -r cf5c74390b98 searchengine/oss/cl/clucene/src/clucene/search/hits.cpp --- a/searchengine/oss/cl/clucene/src/clucene/search/hits.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/oss/cl/clucene/src/clucene/search/hits.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -11,6 +11,13 @@ #include "clucene/index/indexreader.h" #include "filter.h" #include "clucene/search/searchheader.h" +//#ifdef USE_HIGHLIGHTER +//#include "CLucene/highlighter/QueryTermExtractor.h" +//#include "CLucene/highlighter/QueryScorer.h" +//#include "CLucene/highlighter/Highlighter.h" +//#include "CLucene/highlighter/SimpleHTMLFormatter.h" +//#include "CLucene/analysis/standard/StandardAnalyzer.h" +//#endif CL_NS_USE(document) CL_NS_USE(util) @@ -42,6 +49,9 @@ Hits::Hits(Searcher* s, Query* q, Filter* f, const Sort* _sort): query(q), searcher(s), filter(f), sort(_sort) +//#ifdef USE_HIGHLIGHTER +// , hl_frag(20) +//#endif { //Func - Constructor //Pre - s contains a valid reference to a searcher s @@ -83,6 +93,42 @@ if (hitDoc->doc == NULL){ hitDoc->doc = _CLNEW Document; searcher->doc(hitDoc->id, hitDoc->doc); // cache miss: read document +//#ifdef USE_HIGHLIGHTER +// CL_NS(document)::Document* document = hitDoc->doc; +// +// const TCHAR* text = document->get(LCPIX_EXCERPT_FIELD); +// +// if(text) +// { +// Query* rwquery = searcher->getrewritten(hitDoc->id, query); +// +// TCHAR * str = rwquery->toString(); +// +// CL_NS2(search,highlight)::QueryScorer hl_scorer(rwquery); +// +// CL_NS2(search,highlight)::Highlighter highlighter(&hl_formatter, &hl_scorer); +// +// highlighter.setTextFragmenter(&hl_frag); +// +// wstring hlText; +// +// StringReader strreader(text); +// +// lucene::analysis::TokenStream * tokenStream = hl_analyzer.tokenStream(LCPIX_EXCERPT_FIELD, &strreader); +// +// TCHAR* result = highlighter.getBestFragments(tokenStream, text, 2,L"..."); +// +// if (result != NULL) +// { +// hlText.append(result); +// +// document->removeField( LCPIX_EXCERPT_FIELD ); +// +// document->add(*_CLNEW Field(LCPIX_EXCERPT_FIELD, +// hlText.c_str(), lucene::document::Field::STORE_YES | lucene::document::Field::INDEX_NO)); +// } +// } +//#endif } return *hitDoc->doc; diff -r afe194b6b1cd -r cf5c74390b98 searchengine/oss/cl/clucene/src/clucene/search/indexsearcher.cpp --- a/searchengine/oss/cl/clucene/src/clucene/search/indexsearcher.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/oss/cl/clucene/src/clucene/search/indexsearcher.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -16,7 +16,14 @@ #include "clucene/index/term.h" #include "clucene/util/bitset.h" #include "fieldsortedhitqueue.h" - +//#ifdef USE_HIGHLIGHTER +//#include "CLucene/highlighter/QueryTermExtractor.h" +//#include "CLucene/highlighter/QueryScorer.h" +//#include "CLucene/highlighter/Highlighter.h" +//#include "CLucene/highlighter/SimpleHTMLFormatter.h" +//#include "CLucene/analysis/standard/StandardAnalyzer.h" +//#include "CLucene/queryParser/QueryParser.h" +//#endif CL_NS_USE(index) CL_NS_USE(util) CL_NS_USE(document) @@ -112,6 +119,10 @@ reader = IndexReader::open(path); readerOwner = true; +//#ifdef USE_HIGHLIGHTER +// rewrittenQuery = NULL; +//#endif + } IndexSearcher::IndexSearcher(CL_NS(store)::Directory* directory){ @@ -124,6 +135,10 @@ reader = IndexReader::open(directory); readerOwner = true; +//#ifdef USE_HIGHLIGHTER +// rewrittenQuery = NULL; +//#endif + } IndexSearcher::IndexSearcher(IndexReader* r){ @@ -134,6 +149,9 @@ reader = r; readerOwner = false; +//#ifdef USE_HIGHLIGHTER +// rewrittenQuery = NULL; +//#endif } IndexSearcher::~IndexSearcher(){ @@ -200,7 +218,13 @@ //Func - //Pre - reader != NULL //Post - - +//#ifdef USE_HIGHLIGHTER +// if(!rewrittenQuery) +// { +// rewrittenQuery = query->rewrite(reader); +// } +//#endif + CND_PRECONDITION(reader != NULL, "reader is NULL"); CND_PRECONDITION(query != NULL, "query is NULL"); @@ -247,7 +271,12 @@ // inherit javadoc TopFieldDocs* IndexSearcher::_search(Query* query, Filter* filter, const int32_t nDocs, const Sort* sort) { - +//#ifdef USE_HIGHLIGHTER +// if(!rewrittenQuery) +// { +// rewrittenQuery = query->rewrite(reader); +// } +//#endif CND_PRECONDITION(reader != NULL, "reader is NULL"); CND_PRECONDITION(query != NULL, "query is NULL"); @@ -295,7 +324,12 @@ // filter may or may not be NULL // results is a valid reference to a HitCollector and used to store the results //Post - filter if non-NULL, a bitset used to eliminate some documents - +//#ifdef USE_HIGHLIGHTER +// if(!rewrittenQuery) +// { +// rewrittenQuery = query->rewrite(reader); +// } +//#endif CND_PRECONDITION(reader != NULL, "reader is NULL"); CND_PRECONDITION(query != NULL, "query is NULL"); @@ -338,7 +372,16 @@ } return query; } - +//#ifdef USE_HIGHLIGHTER +//Query* IndexSearcher::getrewritten(int32_t n, Query* original) +// { +// if(!rewrittenQuery) +// { +// rewrittenQuery = original->rewrite(reader); +// } +// return rewrittenQuery; +// } +//#endif void IndexSearcher::explain(Query* query, int32_t doc, Explanation* ret){ Weight* weight = query->weight(this); weight->explain(reader, doc, ret); diff -r afe194b6b1cd -r cf5c74390b98 searchengine/oss/cl/clucene/src/clucene/search/indexsearcher.h --- a/searchengine/oss/cl/clucene/src/clucene/search/indexsearcher.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/oss/cl/clucene/src/clucene/search/indexsearcher.h Wed Aug 18 10:53:26 2010 +0300 @@ -29,7 +29,9 @@ class IndexSearcher:public Searcher{ CL_NS(index)::IndexReader* reader; bool readerOwner; - +//#ifdef USE_HIGHLIGHTER +// Query *rewrittenQuery; +//#endif public: /// Creates a searcher searching the index in the named directory. IndexSearcher(const char* path); @@ -62,6 +64,9 @@ } Query* rewrite(Query* original); +///#ifdef USE_HIGHLIGHTER +// Query* getrewritten(int32_t n, Query* original); +//#endif void explain(Query* query, int32_t doc, Explanation* ret); }; CL_NS_END diff -r afe194b6b1cd -r cf5c74390b98 searchengine/oss/cl/clucene/src/clucene/search/multisearcher.cpp --- a/searchengine/oss/cl/clucene/src/clucene/search/multisearcher.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/oss/cl/clucene/src/clucene/search/multisearcher.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -62,6 +62,14 @@ int32_t i = subSearcher(n); // find searcher index return searchables[i]->doc(n - starts[i], d); // dispatch to searcher } + +//#ifdef USE_HIGHLIGHTER +// Query* MultiSearcher::getrewritten(int32_t n, Query* original) { +// int32_t i = subSearcher(n); // find searcher index +// // changed to get already rewritten query +// return searchables[i]->getrewritten(n, original); +// } +//#endif int32_t MultiSearcher::searcherIndex(int32_t n) const{ return subSearcher(n); diff -r afe194b6b1cd -r cf5c74390b98 searchengine/oss/cl/clucene/src/clucene/search/multisearcher.h --- a/searchengine/oss/cl/clucene/src/clucene/search/multisearcher.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/oss/cl/clucene/src/clucene/search/multisearcher.h Wed Aug 18 10:53:26 2010 +0300 @@ -88,6 +88,9 @@ void _search(Query* query, Filter* filter, HitCollector* results); Query* rewrite(Query* original); +//#ifdef USE_HIGHLIGHTER +// Query* getrewritten(int32_t n, Query* original); +//#endif void explain(Query* query, int32_t doc, Explanation* ret); }; diff -r afe194b6b1cd -r cf5c74390b98 searchengine/oss/cl/clucene/src/clucene/search/searchheader.h --- a/searchengine/oss/cl/clucene/src/clucene/search/searchheader.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/oss/cl/clucene/src/clucene/search/searchheader.h Wed Aug 18 10:53:26 2010 +0300 @@ -20,6 +20,14 @@ #include "clucene/search/explanation.h" #include "clucene/search/similarity.h" +//#ifdef USE_HIGHLIGHTER +//#include "CLucene/highlighter/SimpleFragmenter.h" +//#include "CLucene/highlighter/SimpleHTMLFormatter.h" +//#include "CLucene/analysis/standard/StandardAnalyzer.h" +// +//#define LCPIX_EXCERPT_FIELD L"_excerpt" +//#endif + CL_NS_DEF(search) //predefine classes @@ -159,7 +167,13 @@ HitDoc* last; // tail of LRU cache int32_t numDocs; // number cached int32_t maxDocs; // max to cache - +//#ifdef USE_HIGHLIGHTER +// CL_NS2(search,highlight)::SimpleHTMLFormatter hl_formatter; +// +// CL_NS2(search,highlight)::SimpleFragmenter hl_frag; +// +// CL_NS2(analysis,standard)::StandardAnalyzer hl_analyzer; +//#endif public: Hits(Searcher* s, Query* q, Filter* f, const Sort* sort=NULL); ~Hits(); @@ -277,6 +291,9 @@ * Searcher#search(Query,Filter,Sort)} instead. */ virtual TopFieldDocs* _search(Query* query, Filter* filter, const int32_t n, const Sort* sort) = 0; +//#ifdef USE_HIGHLIGHTER +// virtual Query* getrewritten(int32_t n, Query* original)= 0; +//#endif }; diff -r afe194b6b1cd -r cf5c74390b98 searchengine/oss/cl/group/bld.inf --- a/searchengine/oss/cl/group/bld.inf Tue Jul 06 15:30:04 2010 +0300 +++ b/searchengine/oss/cl/group/bld.inf Wed Aug 18 10:53:26 2010 +0300 @@ -1,5 +1,5 @@ #include "../clucene/group/bld.inf" PRJ_TESTMMPFILES -#include "../tsrc/clucene_unittest/group/bld.inf" +//#include "../tsrc/clucene_unittest/group/bld.inf" #include "../tsrc/clucene_extraunittest/group/bld.inf" \ No newline at end of file diff -r afe194b6b1cd -r cf5c74390b98 searcher/group/bld.inf --- a/searcher/group/bld.inf Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/group/bld.inf Wed Aug 18 10:53:26 2010 +0300 @@ -22,5 +22,5 @@ #include "../tsrc/RobustnessTest/group/bld.inf" #include "../tsrc/LogPlayer/group/bld.inf" -#include "../tsrc/SymbianOsUnit/group/s60_3rd/bld.inf" -//#include "../tsrc/cpixsearchertest/group/bld.inf" \ No newline at end of file +//#include "../tsrc/SymbianOsUnit/group/s60_3rd/bld.inf" +#include "../tsrc/cpixsearchertest/group/bld.inf" \ No newline at end of file diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchclient/bwins/cpixsearchclientu.def --- a/searcher/searchclient/bwins/cpixsearchclientu.def Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchclient/bwins/cpixsearchclientu.def Wed Aug 18 10:53:26 2010 +0300 @@ -1,97 +1,102 @@ EXPORTS - ??0RSearchServerSession@@QAE@XZ @ 1 NONAME ; RSearchServerSession::RSearchServerSession(void) - ??1CCPixIndexer@@UAE@XZ @ 2 NONAME ; CCPixIndexer::~CCPixIndexer(void) - ??1CCPixSearcher@@UAE@XZ @ 3 NONAME ; CCPixSearcher::~CCPixSearcher(void) - ??1CDocumentField@@UAE@XZ @ 4 NONAME ; CDocumentField::~CDocumentField(void) - ??1CSearchDocument@@UAE@XZ @ 5 NONAME ; CSearchDocument::~CSearchDocument(void) - ?Add@RSearchServerSubSession@@QAEXABVTDesC8@@AAVTRequestStatus@@@Z @ 6 NONAME ; void RSearchServerSubSession::Add(class TDesC8 const &, class TRequestStatus &) - ?AddExcerptL@CSearchDocument@@QAEXABVTDesC16@@@Z @ 7 NONAME ; void CSearchDocument::AddExcerptL(class TDesC16 const &) - ?AddFieldL@CSearchDocument@@QAEAAVCDocumentField@@ABVTDesC16@@0H@Z @ 8 NONAME ; class CDocumentField & CSearchDocument::AddFieldL(class TDesC16 const &, class TDesC16 const &, int) - ?AddL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@ABVCSearchDocument@@@Z @ 9 NONAME ; void CCPixIndexer::AddL(class MCPixIndexingRequestObserver &, class CSearchDocument const &) - ?AddL@CCPixIndexer@@QAEXABVCSearchDocument@@@Z @ 10 NONAME ; void CCPixIndexer::AddL(class CSearchDocument const &) - ?AddL@RSearchServerSubSession@@QAEXABVTDesC8@@@Z @ 11 NONAME ; void RSearchServerSubSession::AddL(class TDesC8 const &) - ?AppClass@CSearchDocument@@QBEABVTDesC16@@XZ @ 12 NONAME ; class TDesC16 const & CSearchDocument::AppClass(void) const - ?Boost@CDocumentField@@QBEMXZ @ 13 NONAME ; float CDocumentField::Boost(void) const - ?Boost@CSearchDocument@@QBEMXZ @ 14 NONAME ; float CSearchDocument::Boost(void) const - ?CancelAll@RSearchServerSubSession@@QBEXXZ @ 15 NONAME ; void RSearchServerSubSession::CancelAll(void) const - ?Close@RSearchServerSession@@QAEXXZ @ 16 NONAME ; void RSearchServerSession::Close(void) - ?Config@CDocumentField@@QBEHXZ @ 17 NONAME ; int CDocumentField::Config(void) const - ?Connect@RSearchServerSession@@QAEHXZ @ 18 NONAME ; int RSearchServerSession::Connect(void) - ?DefineVolume@RSearchServerSession@@QAEHABVTDesC16@@0@Z @ 19 NONAME ; int RSearchServerSession::DefineVolume(class TDesC16 const &, class TDesC16 const &) - ?Delete@RSearchServerSubSession@@QAEXABVTDesC16@@AAVTRequestStatus@@@Z @ 20 NONAME ; void RSearchServerSubSession::Delete(class TDesC16 const &, class TRequestStatus &) - ?DeleteL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@ABVTDesC16@@@Z @ 21 NONAME ; void CCPixIndexer::DeleteL(class MCPixIndexingRequestObserver &, class TDesC16 const &) - ?DeleteL@CCPixIndexer@@QAEXABVTDesC16@@@Z @ 22 NONAME ; void CCPixIndexer::DeleteL(class TDesC16 const &) - ?DeleteL@RSearchServerSubSession@@QAEXABVTDesC16@@@Z @ 23 NONAME ; void RSearchServerSubSession::DeleteL(class TDesC16 const &) - ?Excerpt@CSearchDocument@@QBEABVTDesC16@@XZ @ 24 NONAME ; class TDesC16 const & CSearchDocument::Excerpt(void) const - ?ExternalizeL@CDocumentField@@QBEXAAVRWriteStream@@@Z @ 25 NONAME ; void CDocumentField::ExternalizeL(class RWriteStream &) const - ?ExternalizeL@CSearchDocument@@QBEXAAVRWriteStream@@@Z @ 26 NONAME ; void CSearchDocument::ExternalizeL(class RWriteStream &) const - ?Field@CSearchDocument@@QBEABVCDocumentField@@H@Z @ 27 NONAME ; class CDocumentField const & CSearchDocument::Field(int) const - ?Field@CSearchDocument@@QBEPBVCDocumentField@@ABVTDesC16@@@Z @ 28 NONAME ; class CDocumentField const * CSearchDocument::Field(class TDesC16 const &) const - ?FieldCount@CSearchDocument@@QBEHXZ @ 29 NONAME ; int CSearchDocument::FieldCount(void) const - ?Flush@RSearchServerSubSession@@QAEXAAVTRequestStatus@@@Z @ 30 NONAME ; void RSearchServerSubSession::Flush(class TRequestStatus &) - ?FlushL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@@Z @ 31 NONAME ; void CCPixIndexer::FlushL(class MCPixIndexingRequestObserver &) - ?FlushL@CCPixIndexer@@QAEXXZ @ 32 NONAME ; void CCPixIndexer::FlushL(void) - ?FlushL@RSearchServerSubSession@@QAEXXZ @ 33 NONAME ; void RSearchServerSubSession::FlushL(void) - ?GetBaseAppClass@CCPixIndexer@@QBEABVTDesC16@@XZ @ 34 NONAME ; class TDesC16 const & CCPixIndexer::GetBaseAppClass(void) const - ?GetBaseAppClass@CCPixSearcher@@QBEABVTDesC16@@XZ @ 35 NONAME ; class TDesC16 const & CCPixSearcher::GetBaseAppClass(void) const - ?GetDocument@RSearchServerSubSession@@QAEXHAAVTRequestStatus@@@Z @ 36 NONAME ; void RSearchServerSubSession::GetDocument(int, class TRequestStatus &) - ?GetDocumentL@CCPixSearcher@@QAEPAVCSearchDocument@@H@Z @ 37 NONAME ; class CSearchDocument * CCPixSearcher::GetDocumentL(int) - ?GetDocumentL@CCPixSearcher@@QAEXHAAVMCPixNextDocumentRequestObserver@@@Z @ 38 NONAME ; void CCPixSearcher::GetDocumentL(int, class MCPixNextDocumentRequestObserver &) - ?GetDocumentL@RSearchServerSubSession@@QAEPAVCSearchDocument@@H@Z @ 39 NONAME ; class CSearchDocument * RSearchServerSubSession::GetDocumentL(int) - ?GetDocumentObjectL@RSearchServerSubSession@@QAEPAVCSearchDocument@@XZ @ 40 NONAME ; class CSearchDocument * RSearchServerSubSession::GetDocumentObjectL(void) - ?Id@CSearchDocument@@QBEABVTDesC16@@XZ @ 41 NONAME ; class TDesC16 const & CSearchDocument::Id(void) const - ?InternalizeL@CDocumentField@@QAEXAAVRReadStream@@@Z @ 42 NONAME ; void CDocumentField::InternalizeL(class RReadStream &) - ?InternalizeL@CSearchDocument@@QAEXAAVRReadStream@@@Z @ 43 NONAME ; void CSearchDocument::InternalizeL(class RReadStream &) - ?IsDatabaseOpen@CCPixIndexer@@QBEHXZ @ 44 NONAME ; int CCPixIndexer::IsDatabaseOpen(void) const - ?IsDatabaseOpen@CCPixSearcher@@QBEHXZ @ 45 NONAME ; int CCPixSearcher::IsDatabaseOpen(void) const - ?Name@CDocumentField@@QBEABVTDesC16@@XZ @ 46 NONAME ; class TDesC16 const & CDocumentField::Name(void) const - ?NewL@CCPixIndexer@@SAPAV1@AAVRSearchServerSession@@@Z @ 47 NONAME ; class CCPixIndexer * CCPixIndexer::NewL(class RSearchServerSession &) - ?NewL@CCPixSearcher@@SAPAV1@AAVRSearchServerSession@@ABVTDesC16@@@Z @ 48 NONAME ; class CCPixSearcher * CCPixSearcher::NewL(class RSearchServerSession &, class TDesC16 const &) - ?NewL@CDocumentField@@SAPAV1@AAVRReadStream@@@Z @ 49 NONAME ; class CDocumentField * CDocumentField::NewL(class RReadStream &) - ?NewL@CDocumentField@@SAPAV1@ABVTDesC16@@0H@Z @ 50 NONAME ; class CDocumentField * CDocumentField::NewL(class TDesC16 const &, class TDesC16 const &, int) - ?NewL@CSearchDocument@@SAPAV1@AAVRReadStream@@@Z @ 51 NONAME ; class CSearchDocument * CSearchDocument::NewL(class RReadStream &) - ?NewL@CSearchDocument@@SAPAV1@ABVTDesC16@@00W4TFilterId@1@@Z @ 52 NONAME ; class CSearchDocument * CSearchDocument::NewL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, enum CSearchDocument::TFilterId) - ?NewLC@CCPixIndexer@@SAPAV1@AAVRSearchServerSession@@@Z @ 53 NONAME ; class CCPixIndexer * CCPixIndexer::NewLC(class RSearchServerSession &) - ?NewLC@CCPixSearcher@@SAPAV1@AAVRSearchServerSession@@ABVTDesC16@@@Z @ 54 NONAME ; class CCPixSearcher * CCPixSearcher::NewLC(class RSearchServerSession &, class TDesC16 const &) - ?NewLC@CDocumentField@@SAPAV1@AAVRReadStream@@@Z @ 55 NONAME ; class CDocumentField * CDocumentField::NewLC(class RReadStream &) - ?NewLC@CDocumentField@@SAPAV1@ABVTDesC16@@0H@Z @ 56 NONAME ; class CDocumentField * CDocumentField::NewLC(class TDesC16 const &, class TDesC16 const &, int) - ?NewLC@CSearchDocument@@SAPAV1@AAVRReadStream@@@Z @ 57 NONAME ; class CSearchDocument * CSearchDocument::NewLC(class RReadStream &) - ?NewLC@CSearchDocument@@SAPAV1@ABVTDesC16@@00W4TFilterId@1@@Z @ 58 NONAME ; class CSearchDocument * CSearchDocument::NewLC(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, enum CSearchDocument::TFilterId) - ?OpenDatabaseL@CCPixIndexer@@QAEXAAVMCPixOpenDatabaseRequestObserver@@ABVTDesC16@@@Z @ 59 NONAME ; void CCPixIndexer::OpenDatabaseL(class MCPixOpenDatabaseRequestObserver &, class TDesC16 const &) - ?OpenDatabaseL@CCPixIndexer@@QAEXABVTDesC16@@@Z @ 60 NONAME ; void CCPixIndexer::OpenDatabaseL(class TDesC16 const &) - ?OpenDatabaseL@CCPixSearcher@@QAEXAAVMCPixOpenDatabaseRequestObserver@@ABVTDesC16@@@Z @ 61 NONAME ; void CCPixSearcher::OpenDatabaseL(class MCPixOpenDatabaseRequestObserver &, class TDesC16 const &) - ?OpenDatabaseL@CCPixSearcher@@QAEXABVTDesC16@@@Z @ 62 NONAME ; void CCPixSearcher::OpenDatabaseL(class TDesC16 const &) - ?RemoveField@CSearchDocument@@QAEHABVTDesC16@@@Z @ 63 NONAME ; int CSearchDocument::RemoveField(class TDesC16 const &) - ?Reset@RSearchServerSubSession@@QAEXAAVTRequestStatus@@@Z @ 64 NONAME ; void RSearchServerSubSession::Reset(class TRequestStatus &) - ?ResetL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@@Z @ 65 NONAME ; void CCPixIndexer::ResetL(class MCPixIndexingRequestObserver &) - ?ResetL@CCPixIndexer@@QAEXXZ @ 66 NONAME ; void CCPixIndexer::ResetL(void) - ?ResetL@RSearchServerSubSession@@QAEXXZ @ 67 NONAME ; void RSearchServerSubSession::ResetL(void) - ?Search@RSearchServerSubSession@@QAEXABVTDesC16@@AAVTRequestStatus@@@Z @ 68 NONAME ; void RSearchServerSubSession::Search(class TDesC16 const &, class TRequestStatus &) - ?SearchL@CCPixSearcher@@QAEHABVTDesC16@@0@Z @ 69 NONAME ; int CCPixSearcher::SearchL(class TDesC16 const &, class TDesC16 const &) - ?SearchL@CCPixSearcher@@QAEXAAVMCPixSearchRequestObserver@@ABVTDesC16@@1@Z @ 70 NONAME ; void CCPixSearcher::SearchL(class MCPixSearchRequestObserver &, class TDesC16 const &, class TDesC16 const &) - ?SearchL@RSearchServerSubSession@@QAEXABVTDesC16@@@Z @ 71 NONAME ; void RSearchServerSubSession::SearchL(class TDesC16 const &) - ?SetAnalyzer@RSearchServerSubSession@@QAEXABVTDesC16@@AAVTRequestStatus@@@Z @ 72 NONAME ; void RSearchServerSubSession::SetAnalyzer(class TDesC16 const &, class TRequestStatus &) - ?SetAnalyzerL@CCPixIndexer@@QAEXAAVMCPixSetAnalyzerRequestObserver@@ABVTDesC16@@@Z @ 73 NONAME ; void CCPixIndexer::SetAnalyzerL(class MCPixSetAnalyzerRequestObserver &, class TDesC16 const &) - ?SetAnalyzerL@CCPixIndexer@@QAEXABVTDesC16@@@Z @ 74 NONAME ; void CCPixIndexer::SetAnalyzerL(class TDesC16 const &) - ?SetAnalyzerL@CCPixSearcher@@QAEXAAVMCPixSetAnalyzerRequestObserver@@ABVTDesC16@@@Z @ 75 NONAME ; void CCPixSearcher::SetAnalyzerL(class MCPixSetAnalyzerRequestObserver &, class TDesC16 const &) - ?SetAnalyzerL@CCPixSearcher@@QAEXABVTDesC16@@@Z @ 76 NONAME ; void CCPixSearcher::SetAnalyzerL(class TDesC16 const &) - ?SetAnalyzerL@RSearchServerSubSession@@QAEXABVTDesC16@@@Z @ 77 NONAME ; void RSearchServerSubSession::SetAnalyzerL(class TDesC16 const &) - ?SetBoost@CDocumentField@@QAEXM@Z @ 78 NONAME ; void CDocumentField::SetBoost(float) - ?SetBoost@CSearchDocument@@QAEXM@Z @ 79 NONAME ; void CSearchDocument::SetBoost(float) - ?Size@CDocumentField@@QBEHXZ @ 80 NONAME ; int CDocumentField::Size(void) const - ?Size@CSearchDocument@@QBEHXZ @ 81 NONAME ; int CSearchDocument::Size(void) const - ?UnDefineVolume@RSearchServerSession@@QAEHABVTDesC16@@@Z @ 82 NONAME ; int RSearchServerSession::UnDefineVolume(class TDesC16 const &) - ?Update@RSearchServerSubSession@@QAEXABVTDesC8@@AAVTRequestStatus@@@Z @ 83 NONAME ; void RSearchServerSubSession::Update(class TDesC8 const &, class TRequestStatus &) - ?UpdateL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@ABVCSearchDocument@@@Z @ 84 NONAME ; void CCPixIndexer::UpdateL(class MCPixIndexingRequestObserver &, class CSearchDocument const &) - ?UpdateL@CCPixIndexer@@QAEXABVCSearchDocument@@@Z @ 85 NONAME ; void CCPixIndexer::UpdateL(class CSearchDocument const &) - ?UpdateL@RSearchServerSubSession@@QAEXABVTDesC8@@@Z @ 86 NONAME ; void RSearchServerSubSession::UpdateL(class TDesC8 const &) - ?Value@CDocumentField@@QBEABVTDesC16@@XZ @ 87 NONAME ; class TDesC16 const & CDocumentField::Value(void) const - ?Version@RSearchServerSession@@QBE?AVTVersion@@XZ @ 88 NONAME ; class TVersion RSearchServerSession::Version(void) const - ?ContinueHouseKeeping@RSearchServerSession@@QAEHXZ @ 89 NONAME ; int RSearchServerSession::ContinueHouseKeeping(void) - ?ForceHouseKeeping@RSearchServerSession@@QAEHXZ @ 90 NONAME ; int RSearchServerSession::ForceHouseKeeping(void) - ?StopHouseKeeping@RSearchServerSession@@QAEHXZ @ 91 NONAME ; int RSearchServerSession::StopHouseKeeping(void) - ?SetQueryParserL@RSearchServerSubSession@@QAEXH@Z @ 92 NONAME ; void RSearchServerSubSession::SetQueryParserL(int) - ?SetQueryParserL@CCPixSearcher@@QAEXW4TQueryParser@1@@Z @ 93 NONAME ; void CCPixSearcher::SetQueryParserL(enum CCPixSearcher::TQueryParser) - ?SetQueryParserL@CCPixSearcher@@QAEXAAVMCPixSetQueryParserRequestObserver@@W4TQueryParser@1@@Z @ 94 NONAME ; void CCPixSearcher::SetQueryParserL(class MCPixSetQueryParserRequestObserver &, enum CCPixSearcher::TQueryParser) - ?SetQueryParser@RSearchServerSubSession@@QAEXHAAVTRequestStatus@@@Z @ 95 NONAME ; void RSearchServerSubSession::SetQueryParser(int, class TRequestStatus &) + ?OpenDatabaseL@CCPixSearcher@@QAEXAAVMCPixOpenDatabaseRequestObserver@@ABVTDesC16@@@Z @ 1 NONAME ; void CCPixSearcher::OpenDatabaseL(class MCPixOpenDatabaseRequestObserver &, class TDesC16 const &) + ?NewL@CSearchDocument@@SAPAV1@ABVTDesC16@@00W4TFilterId@1@@Z @ 2 NONAME ; class CSearchDocument * CSearchDocument::NewL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, enum CSearchDocument::TFilterId) + ?DeleteL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@ABVTDesC16@@@Z @ 3 NONAME ; void CCPixIndexer::DeleteL(class MCPixIndexingRequestObserver &, class TDesC16 const &) + ?SetAnalyzerL@RSearchServerSubSession@@QAEXABVTDesC16@@@Z @ 4 NONAME ; void RSearchServerSubSession::SetAnalyzerL(class TDesC16 const &) + ?GetDocument@RSearchServerSubSession@@QAEXHAAVTRequestStatus@@@Z @ 5 NONAME ; void RSearchServerSubSession::GetDocument(int, class TRequestStatus &) + ?SetAnalyzerL@CCPixIndexer@@QAEXAAVMCPixSetAnalyzerRequestObserver@@ABVTDesC16@@@Z @ 6 NONAME ; void CCPixIndexer::SetAnalyzerL(class MCPixSetAnalyzerRequestObserver &, class TDesC16 const &) + ?SearchL@CCPixSearcher@@QAEHABVTDesC16@@0@Z @ 7 NONAME ; int CCPixSearcher::SearchL(class TDesC16 const &, class TDesC16 const &) + ?Update@RSearchServerSubSession@@QAEXABVTDesC8@@AAVTRequestStatus@@@Z @ 8 NONAME ; void RSearchServerSubSession::Update(class TDesC8 const &, class TRequestStatus &) + ?OpenDatabaseL@CCPixSearcher@@QAEXABVTDesC16@@@Z @ 9 NONAME ; void CCPixSearcher::OpenDatabaseL(class TDesC16 const &) + ?GetBatchDocumentL@RSearchServerSubSession@@QAEPAPAVCSearchDocument@@HAAHH@Z @ 10 NONAME ; class CSearchDocument * * RSearchServerSubSession::GetBatchDocumentL(int, int &, int) + ?Delete@RSearchServerSubSession@@QAEXABVTDesC16@@AAVTRequestStatus@@@Z @ 11 NONAME ; void RSearchServerSubSession::Delete(class TDesC16 const &, class TRequestStatus &) + ?SetAnalyzerL@CCPixSearcher@@QAEXABVTDesC16@@@Z @ 12 NONAME ; void CCPixSearcher::SetAnalyzerL(class TDesC16 const &) + ?SetAnalyzer@RSearchServerSubSession@@QAEXABVTDesC16@@AAVTRequestStatus@@@Z @ 13 NONAME ; void RSearchServerSubSession::SetAnalyzer(class TDesC16 const &, class TRequestStatus &) + ?Size@CSearchDocument@@QBEHXZ @ 14 NONAME ; int CSearchDocument::Size(void) const + ?AppClass@CSearchDocument@@QBEABVTDesC16@@XZ @ 15 NONAME ; class TDesC16 const & CSearchDocument::AppClass(void) const + ?NewL@CCPixSearcher@@SAPAV1@AAVRSearchServerSession@@ABVTDesC16@@@Z @ 16 NONAME ; class CCPixSearcher * CCPixSearcher::NewL(class RSearchServerSession &, class TDesC16 const &) + ?ForceHouseKeeping@RSearchServerSession@@QAEHXZ @ 17 NONAME ; int RSearchServerSession::ForceHouseKeeping(void) + ?DeleteL@RSearchServerSubSession@@QAEXABVTDesC16@@@Z @ 18 NONAME ; void RSearchServerSubSession::DeleteL(class TDesC16 const &) + ?GetDocumentL@CCPixSearcher@@QAEPAVCSearchDocument@@H@Z @ 19 NONAME ; class CSearchDocument * CCPixSearcher::GetDocumentL(int) + ?SetQueryParserL@RSearchServerSubSession@@QAEXH@Z @ 20 NONAME ; void RSearchServerSubSession::SetQueryParserL(int) + ?GetBatchDocument@RSearchServerSubSession@@QAEXHAAVTRequestStatus@@H@Z @ 21 NONAME ; void RSearchServerSubSession::GetBatchDocument(int, class TRequestStatus &, int) + ??1CDocumentField@@UAE@XZ @ 22 NONAME ; CDocumentField::~CDocumentField(void) + ??1CSearchDocument@@UAE@XZ @ 23 NONAME ; CSearchDocument::~CSearchDocument(void) + ?Value@CDocumentField@@QBEABVTDesC16@@XZ @ 24 NONAME ; class TDesC16 const & CDocumentField::Value(void) const + ?UpdateL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@ABVCSearchDocument@@@Z @ 25 NONAME ; void CCPixIndexer::UpdateL(class MCPixIndexingRequestObserver &, class CSearchDocument const &) + ?ResetL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@@Z @ 26 NONAME ; void CCPixIndexer::ResetL(class MCPixIndexingRequestObserver &) + ?NewLC@CDocumentField@@SAPAV1@AAVRReadStream@@@Z @ 27 NONAME ; class CDocumentField * CDocumentField::NewLC(class RReadStream &) + ?Connect@RSearchServerSession@@QAEHXZ @ 28 NONAME ; int RSearchServerSession::Connect(void) + ?IsDatabaseOpen@CCPixSearcher@@QBEHXZ @ 29 NONAME ; int CCPixSearcher::IsDatabaseOpen(void) const + ?AddL@CCPixIndexer@@QAEXABVCSearchDocument@@@Z @ 30 NONAME ; void CCPixIndexer::AddL(class CSearchDocument const &) + ?CancelAll@RSearchServerSubSession@@QBEXXZ @ 31 NONAME ; void RSearchServerSubSession::CancelAll(void) const + ?SetQueryParserL@CCPixSearcher@@QAEXW4TQueryParser@1@@Z @ 32 NONAME ; void CCPixSearcher::SetQueryParserL(enum CCPixSearcher::TQueryParser) + ?SearchL@CCPixSearcher@@QAEXAAVMCPixSearchRequestObserver@@ABVTDesC16@@1@Z @ 33 NONAME ; void CCPixSearcher::SearchL(class MCPixSearchRequestObserver &, class TDesC16 const &, class TDesC16 const &) + ?Close@RSearchServerSession@@QAEXXZ @ 34 NONAME ; void RSearchServerSession::Close(void) + ?Id@CSearchDocument@@QBEABVTDesC16@@XZ @ 35 NONAME ; class TDesC16 const & CSearchDocument::Id(void) const + ?GetDocumentObjectL@RSearchServerSubSession@@QAEPAVCSearchDocument@@XZ @ 36 NONAME ; class CSearchDocument * RSearchServerSubSession::GetDocumentObjectL(void) + ?UpdateL@CCPixIndexer@@QAEXABVCSearchDocument@@@Z @ 37 NONAME ; void CCPixIndexer::UpdateL(class CSearchDocument const &) + ?GetBaseAppClass@CCPixSearcher@@QBEABVTDesC16@@XZ @ 38 NONAME ; class TDesC16 const & CCPixSearcher::GetBaseAppClass(void) const + ?OpenDatabaseL@CCPixIndexer@@QAEXAAVMCPixOpenDatabaseRequestObserver@@ABVTDesC16@@@Z @ 39 NONAME ; void CCPixIndexer::OpenDatabaseL(class MCPixOpenDatabaseRequestObserver &, class TDesC16 const &) + ?InternalizeL@CDocumentField@@QAEXAAVRReadStream@@@Z @ 40 NONAME ; void CDocumentField::InternalizeL(class RReadStream &) + ??0RSearchServerSession@@QAE@XZ @ 41 NONAME ; RSearchServerSession::RSearchServerSession(void) + ?NewL@CCPixIndexer@@SAPAV1@AAVRSearchServerSession@@@Z @ 42 NONAME ; class CCPixIndexer * CCPixIndexer::NewL(class RSearchServerSession &) + ?GetBatchDocumentL@CCPixSearcher@@QAEXHAAVMCPixNextDocumentRequestObserver@@H@Z @ 43 NONAME ; void CCPixSearcher::GetBatchDocumentL(int, class MCPixNextDocumentRequestObserver &, int) + ?Version@RSearchServerSession@@QBE?AVTVersion@@XZ @ 44 NONAME ; class TVersion RSearchServerSession::Version(void) const + ?AddExcerptL@CSearchDocument@@QAEXABVTDesC16@@@Z @ 45 NONAME ; void CSearchDocument::AddExcerptL(class TDesC16 const &) + ?Config@CDocumentField@@QBEHXZ @ 46 NONAME ; int CDocumentField::Config(void) const + ?Boost@CDocumentField@@QBEMXZ @ 47 NONAME ; float CDocumentField::Boost(void) const + ?GetDocumentL@RSearchServerSubSession@@QAEPAVCSearchDocument@@H@Z @ 48 NONAME ; class CSearchDocument * RSearchServerSubSession::GetDocumentL(int) + ?FlushL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@@Z @ 49 NONAME ; void CCPixIndexer::FlushL(class MCPixIndexingRequestObserver &) + ?FlushL@RSearchServerSubSession@@QAEXXZ @ 50 NONAME ; void RSearchServerSubSession::FlushL(void) + ?ResetL@CCPixIndexer@@QAEXXZ @ 51 NONAME ; void CCPixIndexer::ResetL(void) + ?ExternalizeL@CSearchDocument@@QBEXAAVRWriteStream@@@Z @ 52 NONAME ; void CSearchDocument::ExternalizeL(class RWriteStream &) const + ?Search@RSearchServerSubSession@@QAEXABVTDesC16@@AAVTRequestStatus@@@Z @ 53 NONAME ; void RSearchServerSubSession::Search(class TDesC16 const &, class TRequestStatus &) + ?Size@CDocumentField@@QBEHXZ @ 54 NONAME ; int CDocumentField::Size(void) const + ?NewL@CDocumentField@@SAPAV1@AAVRReadStream@@@Z @ 55 NONAME ; class CDocumentField * CDocumentField::NewL(class RReadStream &) + ?NewLC@CSearchDocument@@SAPAV1@ABVTDesC16@@00W4TFilterId@1@@Z @ 56 NONAME ; class CSearchDocument * CSearchDocument::NewLC(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, enum CSearchDocument::TFilterId) + ?DeleteL@CCPixIndexer@@QAEXABVTDesC16@@@Z @ 57 NONAME ; void CCPixIndexer::DeleteL(class TDesC16 const &) + ?NewLC@CDocumentField@@SAPAV1@ABVTDesC16@@0H@Z @ 58 NONAME ; class CDocumentField * CDocumentField::NewLC(class TDesC16 const &, class TDesC16 const &, int) + ?GetBatchDocumentObjectL@RSearchServerSubSession@@QAEPAPAVCSearchDocument@@AAH@Z @ 59 NONAME ; class CSearchDocument * * RSearchServerSubSession::GetBatchDocumentObjectL(int &) + ??1CCPixSearcher@@UAE@XZ @ 60 NONAME ; CCPixSearcher::~CCPixSearcher(void) + ?SetBoost@CSearchDocument@@QAEXM@Z @ 61 NONAME ; void CSearchDocument::SetBoost(float) + ?IsDatabaseOpen@CCPixIndexer@@QBEHXZ @ 62 NONAME ; int CCPixIndexer::IsDatabaseOpen(void) const + ?NewL@CDocumentField@@SAPAV1@ABVTDesC16@@0H@Z @ 63 NONAME ; class CDocumentField * CDocumentField::NewL(class TDesC16 const &, class TDesC16 const &, int) + ?Flush@RSearchServerSubSession@@QAEXAAVTRequestStatus@@@Z @ 64 NONAME ; void RSearchServerSubSession::Flush(class TRequestStatus &) + ?Field@CSearchDocument@@QBEPBVCDocumentField@@ABVTDesC16@@@Z @ 65 NONAME ; class CDocumentField const * CSearchDocument::Field(class TDesC16 const &) const + ?NewLC@CSearchDocument@@SAPAV1@AAVRReadStream@@@Z @ 66 NONAME ; class CSearchDocument * CSearchDocument::NewLC(class RReadStream &) + ?StopHouseKeeping@RSearchServerSession@@QAEHXZ @ 67 NONAME ; int RSearchServerSession::StopHouseKeeping(void) + ?AddFieldL@CSearchDocument@@QAEAAVCDocumentField@@ABVTDesC16@@0H@Z @ 68 NONAME ; class CDocumentField & CSearchDocument::AddFieldL(class TDesC16 const &, class TDesC16 const &, int) + ?Field@CSearchDocument@@QBEABVCDocumentField@@H@Z @ 69 NONAME ; class CDocumentField const & CSearchDocument::Field(int) const + ?SetAnalyzerL@CCPixIndexer@@QAEXABVTDesC16@@@Z @ 70 NONAME ; void CCPixIndexer::SetAnalyzerL(class TDesC16 const &) + ?ResetL@RSearchServerSubSession@@QAEXXZ @ 71 NONAME ; void RSearchServerSubSession::ResetL(void) + ?FieldCount@CSearchDocument@@QBEHXZ @ 72 NONAME ; int CSearchDocument::FieldCount(void) const + ?NewLC@CCPixSearcher@@SAPAV1@AAVRSearchServerSession@@ABVTDesC16@@@Z @ 73 NONAME ; class CCPixSearcher * CCPixSearcher::NewLC(class RSearchServerSession &, class TDesC16 const &) + ?Excerpt@CSearchDocument@@QBEABVTDesC16@@XZ @ 74 NONAME ; class TDesC16 const & CSearchDocument::Excerpt(void) const + ?GetBaseAppClass@CCPixIndexer@@QBEABVTDesC16@@XZ @ 75 NONAME ; class TDesC16 const & CCPixIndexer::GetBaseAppClass(void) const + ?OpenDatabaseL@CCPixIndexer@@QAEXABVTDesC16@@@Z @ 76 NONAME ; void CCPixIndexer::OpenDatabaseL(class TDesC16 const &) + ?SetAnalyzerL@CCPixSearcher@@QAEXAAVMCPixSetAnalyzerRequestObserver@@ABVTDesC16@@@Z @ 77 NONAME ; void CCPixSearcher::SetAnalyzerL(class MCPixSetAnalyzerRequestObserver &, class TDesC16 const &) + ?Boost@CSearchDocument@@QBEMXZ @ 78 NONAME ; float CSearchDocument::Boost(void) const + ?SearchL@RSearchServerSubSession@@QAEXABVTDesC16@@@Z @ 79 NONAME ; void RSearchServerSubSession::SearchL(class TDesC16 const &) + ?DefineVolume@RSearchServerSession@@QAEHABVTDesC16@@0@Z @ 80 NONAME ; int RSearchServerSession::DefineVolume(class TDesC16 const &, class TDesC16 const &) + ?InternalizeL@CSearchDocument@@QAEXAAVRReadStream@@@Z @ 81 NONAME ; void CSearchDocument::InternalizeL(class RReadStream &) + ?Name@CDocumentField@@QBEABVTDesC16@@XZ @ 82 NONAME ; class TDesC16 const & CDocumentField::Name(void) const + ?Reset@RSearchServerSubSession@@QAEXAAVTRequestStatus@@@Z @ 83 NONAME ; void RSearchServerSubSession::Reset(class TRequestStatus &) + ?AddL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@ABVCSearchDocument@@@Z @ 84 NONAME ; void CCPixIndexer::AddL(class MCPixIndexingRequestObserver &, class CSearchDocument const &) + ?SetQueryParserL@CCPixSearcher@@QAEXAAVMCPixSetQueryParserRequestObserver@@W4TQueryParser@1@@Z @ 85 NONAME ; void CCPixSearcher::SetQueryParserL(class MCPixSetQueryParserRequestObserver &, enum CCPixSearcher::TQueryParser) + ?RemoveField@CSearchDocument@@QAEHABVTDesC16@@@Z @ 86 NONAME ; int CSearchDocument::RemoveField(class TDesC16 const &) + ?Add@RSearchServerSubSession@@QAEXABVTDesC8@@AAVTRequestStatus@@@Z @ 87 NONAME ; void RSearchServerSubSession::Add(class TDesC8 const &, class TRequestStatus &) + ?SetQueryParser@RSearchServerSubSession@@QAEXHAAVTRequestStatus@@@Z @ 88 NONAME ; void RSearchServerSubSession::SetQueryParser(int, class TRequestStatus &) + ?FlushL@CCPixIndexer@@QAEXXZ @ 89 NONAME ; void CCPixIndexer::FlushL(void) + ?ContinueHouseKeeping@RSearchServerSession@@QAEHXZ @ 90 NONAME ; int RSearchServerSession::ContinueHouseKeeping(void) + ?GetDocumentL@CCPixSearcher@@QAEXHAAVMCPixNextDocumentRequestObserver@@@Z @ 91 NONAME ; void CCPixSearcher::GetDocumentL(int, class MCPixNextDocumentRequestObserver &) + ?NewLC@CCPixIndexer@@SAPAV1@AAVRSearchServerSession@@@Z @ 92 NONAME ; class CCPixIndexer * CCPixIndexer::NewLC(class RSearchServerSession &) + ?SetBoost@CDocumentField@@QAEXM@Z @ 93 NONAME ; void CDocumentField::SetBoost(float) + ??1CCPixIndexer@@UAE@XZ @ 94 NONAME ; CCPixIndexer::~CCPixIndexer(void) + ?GetBatchDocumentL@CCPixSearcher@@QAEPAPAVCSearchDocument@@HAAHH@Z @ 95 NONAME ; class CSearchDocument * * CCPixSearcher::GetBatchDocumentL(int, int &, int) + ?NewL@CSearchDocument@@SAPAV1@AAVRReadStream@@@Z @ 96 NONAME ; class CSearchDocument * CSearchDocument::NewL(class RReadStream &) + ?UpdateL@RSearchServerSubSession@@QAEXABVTDesC8@@@Z @ 97 NONAME ; void RSearchServerSubSession::UpdateL(class TDesC8 const &) + ?UnDefineVolume@RSearchServerSession@@QAEHABVTDesC16@@@Z @ 98 NONAME ; int RSearchServerSession::UnDefineVolume(class TDesC16 const &) + ?ExternalizeL@CDocumentField@@QBEXAAVRWriteStream@@@Z @ 99 NONAME ; void CDocumentField::ExternalizeL(class RWriteStream &) const + ?AddL@RSearchServerSubSession@@QAEXABVTDesC8@@@Z @ 100 NONAME ; void RSearchServerSubSession::AddL(class TDesC8 const &) diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchclient/eabi/cpixsearchclientu.def --- a/searcher/searchclient/eabi/cpixsearchclientu.def Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchclient/eabi/cpixsearchclientu.def Wed Aug 18 10:53:26 2010 +0300 @@ -24,91 +24,96 @@ _ZN13CCPixSearcher12SetAnalyzerLERK7TDesC16 @ 23 NONAME _ZN13CCPixSearcher13OpenDatabaseLER32MCPixOpenDatabaseRequestObserverRK7TDesC16 @ 24 NONAME _ZN13CCPixSearcher13OpenDatabaseLERK7TDesC16 @ 25 NONAME - _ZN13CCPixSearcher4NewLER20RSearchServerSessionRK7TDesC16 @ 26 NONAME - _ZN13CCPixSearcher5NewLCER20RSearchServerSessionRK7TDesC16 @ 27 NONAME - _ZN13CCPixSearcher7SearchLER26MCPixSearchRequestObserverRK7TDesC16S4_ @ 28 NONAME - _ZN13CCPixSearcher7SearchLERK7TDesC16S2_ @ 29 NONAME - _ZN13CCPixSearcherD0Ev @ 30 NONAME - _ZN13CCPixSearcherD1Ev @ 31 NONAME - _ZN13CCPixSearcherD2Ev @ 32 NONAME - _ZN14CDocumentField12InternalizeLER11RReadStream @ 33 NONAME - _ZN14CDocumentField4NewLER11RReadStream @ 34 NONAME - _ZN14CDocumentField4NewLERK7TDesC16S2_i @ 35 NONAME - _ZN14CDocumentField5NewLCER11RReadStream @ 36 NONAME - _ZN14CDocumentField5NewLCERK7TDesC16S2_i @ 37 NONAME - _ZN14CDocumentField8SetBoostEf @ 38 NONAME - _ZN14CDocumentFieldD0Ev @ 39 NONAME - _ZN14CDocumentFieldD1Ev @ 40 NONAME - _ZN14CDocumentFieldD2Ev @ 41 NONAME - _ZN15CSearchDocument11AddExcerptLERK7TDesC16 @ 42 NONAME - _ZN15CSearchDocument11RemoveFieldERK7TDesC16 @ 43 NONAME - _ZN15CSearchDocument12InternalizeLER11RReadStream @ 44 NONAME - _ZN15CSearchDocument4NewLER11RReadStream @ 45 NONAME - _ZN15CSearchDocument4NewLERK7TDesC16S2_S2_NS_9TFilterIdE @ 46 NONAME - _ZN15CSearchDocument5NewLCER11RReadStream @ 47 NONAME - _ZN15CSearchDocument5NewLCERK7TDesC16S2_S2_NS_9TFilterIdE @ 48 NONAME - _ZN15CSearchDocument8SetBoostEf @ 49 NONAME - _ZN15CSearchDocument9AddFieldLERK7TDesC16S2_i @ 50 NONAME - _ZN15CSearchDocumentD0Ev @ 51 NONAME - _ZN15CSearchDocumentD1Ev @ 52 NONAME - _ZN15CSearchDocumentD2Ev @ 53 NONAME - _ZN20RSearchServerSession12DefineVolumeERK7TDesC16S2_ @ 54 NONAME - _ZN20RSearchServerSession14UnDefineVolumeERK7TDesC16 @ 55 NONAME - _ZN20RSearchServerSession5CloseEv @ 56 NONAME - _ZN20RSearchServerSession7ConnectEv @ 57 NONAME - _ZN20RSearchServerSessionC1Ev @ 58 NONAME - _ZN20RSearchServerSessionC2Ev @ 59 NONAME - _ZN23RSearchServerSubSession11GetDocumentEiR14TRequestStatus @ 60 NONAME - _ZN23RSearchServerSubSession11SetAnalyzerERK7TDesC16R14TRequestStatus @ 61 NONAME - _ZN23RSearchServerSubSession12GetDocumentLEi @ 62 NONAME - _ZN23RSearchServerSubSession12SetAnalyzerLERK7TDesC16 @ 63 NONAME - _ZN23RSearchServerSubSession18GetDocumentObjectLEv @ 64 NONAME - _ZN23RSearchServerSubSession3AddERK6TDesC8R14TRequestStatus @ 65 NONAME - _ZN23RSearchServerSubSession4AddLERK6TDesC8 @ 66 NONAME - _ZN23RSearchServerSubSession5FlushER14TRequestStatus @ 67 NONAME - _ZN23RSearchServerSubSession5ResetER14TRequestStatus @ 68 NONAME - _ZN23RSearchServerSubSession6DeleteERK7TDesC16R14TRequestStatus @ 69 NONAME - _ZN23RSearchServerSubSession6FlushLEv @ 70 NONAME - _ZN23RSearchServerSubSession6ResetLEv @ 71 NONAME - _ZN23RSearchServerSubSession6SearchERK7TDesC16R14TRequestStatus @ 72 NONAME - _ZN23RSearchServerSubSession6UpdateERK6TDesC8R14TRequestStatus @ 73 NONAME - _ZN23RSearchServerSubSession7DeleteLERK7TDesC16 @ 74 NONAME - _ZN23RSearchServerSubSession7SearchLERK7TDesC16 @ 75 NONAME - _ZN23RSearchServerSubSession7UpdateLERK6TDesC8 @ 76 NONAME - _ZNK12CCPixIndexer14IsDatabaseOpenEv @ 77 NONAME - _ZNK12CCPixIndexer15GetBaseAppClassEv @ 78 NONAME - _ZNK13CCPixSearcher14IsDatabaseOpenEv @ 79 NONAME - _ZNK13CCPixSearcher15GetBaseAppClassEv @ 80 NONAME - _ZNK14CDocumentField12ExternalizeLER12RWriteStream @ 81 NONAME - _ZNK14CDocumentField4NameEv @ 82 NONAME - _ZNK14CDocumentField4SizeEv @ 83 NONAME - _ZNK14CDocumentField5BoostEv @ 84 NONAME - _ZNK14CDocumentField5ValueEv @ 85 NONAME - _ZNK14CDocumentField6ConfigEv @ 86 NONAME - _ZNK15CSearchDocument10FieldCountEv @ 87 NONAME - _ZNK15CSearchDocument12ExternalizeLER12RWriteStream @ 88 NONAME - _ZNK15CSearchDocument2IdEv @ 89 NONAME - _ZNK15CSearchDocument4SizeEv @ 90 NONAME - _ZNK15CSearchDocument5BoostEv @ 91 NONAME - _ZNK15CSearchDocument5FieldERK7TDesC16 @ 92 NONAME - _ZNK15CSearchDocument5FieldEi @ 93 NONAME - _ZNK15CSearchDocument7ExcerptEv @ 94 NONAME - _ZNK15CSearchDocument8AppClassEv @ 95 NONAME - _ZNK20RSearchServerSession7VersionEv @ 96 NONAME - _ZNK23RSearchServerSubSession9CancelAllEv @ 97 NONAME - _ZTI12CCPixIndexer @ 98 NONAME ; ## - _ZTI13CCPixSearcher @ 99 NONAME ; ## - _ZTI14CDocumentField @ 100 NONAME ; ## - _ZTI15CSearchDocument @ 101 NONAME ; ## - _ZTV12CCPixIndexer @ 102 NONAME ; ## - _ZTV13CCPixSearcher @ 103 NONAME ; ## - _ZTV14CDocumentField @ 104 NONAME ; ## - _ZTV15CSearchDocument @ 105 NONAME ; ## - _ZN20RSearchServerSession16StopHouseKeepingEv @ 106 NONAME - _ZN20RSearchServerSession17ForceHouseKeepingEv @ 107 NONAME - _ZN20RSearchServerSession20ContinueHouseKeepingEv @ 108 NONAME - _ZN13CCPixSearcher15SetQueryParserLENS_12TQueryParserE @ 109 NONAME - _ZN13CCPixSearcher15SetQueryParserLER34MCPixSetQueryParserRequestObserverNS_12TQueryParserE @ 110 NONAME - _ZN23RSearchServerSubSession14SetQueryParserEiR14TRequestStatus @ 111 NONAME - _ZN23RSearchServerSubSession15SetQueryParserLEi @ 112 NONAME + _ZN13CCPixSearcher15SetQueryParserLENS_12TQueryParserE @ 26 NONAME + _ZN13CCPixSearcher15SetQueryParserLER34MCPixSetQueryParserRequestObserverNS_12TQueryParserE @ 27 NONAME + _ZN13CCPixSearcher17GetBatchDocumentLEiR32MCPixNextDocumentRequestObserveri @ 28 NONAME + _ZN13CCPixSearcher17GetBatchDocumentLEiRii @ 29 NONAME + _ZN13CCPixSearcher4NewLER20RSearchServerSessionRK7TDesC16 @ 30 NONAME + _ZN13CCPixSearcher5NewLCER20RSearchServerSessionRK7TDesC16 @ 31 NONAME + _ZN13CCPixSearcher7SearchLER26MCPixSearchRequestObserverRK7TDesC16S4_ @ 32 NONAME + _ZN13CCPixSearcher7SearchLERK7TDesC16S2_ @ 33 NONAME + _ZN13CCPixSearcherD0Ev @ 34 NONAME + _ZN13CCPixSearcherD1Ev @ 35 NONAME + _ZN13CCPixSearcherD2Ev @ 36 NONAME + _ZN14CDocumentField12InternalizeLER11RReadStream @ 37 NONAME + _ZN14CDocumentField4NewLER11RReadStream @ 38 NONAME + _ZN14CDocumentField4NewLERK7TDesC16S2_i @ 39 NONAME + _ZN14CDocumentField5NewLCER11RReadStream @ 40 NONAME + _ZN14CDocumentField5NewLCERK7TDesC16S2_i @ 41 NONAME + _ZN14CDocumentField8SetBoostEf @ 42 NONAME + _ZN14CDocumentFieldD0Ev @ 43 NONAME + _ZN14CDocumentFieldD1Ev @ 44 NONAME + _ZN14CDocumentFieldD2Ev @ 45 NONAME + _ZN15CSearchDocument11AddExcerptLERK7TDesC16 @ 46 NONAME + _ZN15CSearchDocument11RemoveFieldERK7TDesC16 @ 47 NONAME + _ZN15CSearchDocument12InternalizeLER11RReadStream @ 48 NONAME + _ZN15CSearchDocument4NewLER11RReadStream @ 49 NONAME + _ZN15CSearchDocument4NewLERK7TDesC16S2_S2_NS_9TFilterIdE @ 50 NONAME + _ZN15CSearchDocument5NewLCER11RReadStream @ 51 NONAME + _ZN15CSearchDocument5NewLCERK7TDesC16S2_S2_NS_9TFilterIdE @ 52 NONAME + _ZN15CSearchDocument8SetBoostEf @ 53 NONAME + _ZN15CSearchDocument9AddFieldLERK7TDesC16S2_i @ 54 NONAME + _ZN15CSearchDocumentD0Ev @ 55 NONAME + _ZN15CSearchDocumentD1Ev @ 56 NONAME + _ZN15CSearchDocumentD2Ev @ 57 NONAME + _ZN20RSearchServerSession12DefineVolumeERK7TDesC16S2_ @ 58 NONAME + _ZN20RSearchServerSession14UnDefineVolumeERK7TDesC16 @ 59 NONAME + _ZN20RSearchServerSession16StopHouseKeepingEv @ 60 NONAME + _ZN20RSearchServerSession17ForceHouseKeepingEv @ 61 NONAME + _ZN20RSearchServerSession20ContinueHouseKeepingEv @ 62 NONAME + _ZN20RSearchServerSession5CloseEv @ 63 NONAME + _ZN20RSearchServerSession7ConnectEv @ 64 NONAME + _ZN20RSearchServerSessionC1Ev @ 65 NONAME + _ZN20RSearchServerSessionC2Ev @ 66 NONAME + _ZN23RSearchServerSubSession11GetDocumentEiR14TRequestStatus @ 67 NONAME + _ZN23RSearchServerSubSession11SetAnalyzerERK7TDesC16R14TRequestStatus @ 68 NONAME + _ZN23RSearchServerSubSession12GetDocumentLEi @ 69 NONAME + _ZN23RSearchServerSubSession12SetAnalyzerLERK7TDesC16 @ 70 NONAME + _ZN23RSearchServerSubSession14SetQueryParserEiR14TRequestStatus @ 71 NONAME + _ZN23RSearchServerSubSession15SetQueryParserLEi @ 72 NONAME + _ZN23RSearchServerSubSession16GetBatchDocumentEiR14TRequestStatusi @ 73 NONAME + _ZN23RSearchServerSubSession17GetBatchDocumentLEiRii @ 74 NONAME + _ZN23RSearchServerSubSession18GetDocumentObjectLEv @ 75 NONAME + _ZN23RSearchServerSubSession23GetBatchDocumentObjectLERi @ 76 NONAME + _ZN23RSearchServerSubSession3AddERK6TDesC8R14TRequestStatus @ 77 NONAME + _ZN23RSearchServerSubSession4AddLERK6TDesC8 @ 78 NONAME + _ZN23RSearchServerSubSession5FlushER14TRequestStatus @ 79 NONAME + _ZN23RSearchServerSubSession5ResetER14TRequestStatus @ 80 NONAME + _ZN23RSearchServerSubSession6DeleteERK7TDesC16R14TRequestStatus @ 81 NONAME + _ZN23RSearchServerSubSession6FlushLEv @ 82 NONAME + _ZN23RSearchServerSubSession6ResetLEv @ 83 NONAME + _ZN23RSearchServerSubSession6SearchERK7TDesC16R14TRequestStatus @ 84 NONAME + _ZN23RSearchServerSubSession6UpdateERK6TDesC8R14TRequestStatus @ 85 NONAME + _ZN23RSearchServerSubSession7DeleteLERK7TDesC16 @ 86 NONAME + _ZN23RSearchServerSubSession7SearchLERK7TDesC16 @ 87 NONAME + _ZN23RSearchServerSubSession7UpdateLERK6TDesC8 @ 88 NONAME + _ZNK12CCPixIndexer14IsDatabaseOpenEv @ 89 NONAME + _ZNK12CCPixIndexer15GetBaseAppClassEv @ 90 NONAME + _ZNK13CCPixSearcher14IsDatabaseOpenEv @ 91 NONAME + _ZNK13CCPixSearcher15GetBaseAppClassEv @ 92 NONAME + _ZNK14CDocumentField12ExternalizeLER12RWriteStream @ 93 NONAME + _ZNK14CDocumentField4NameEv @ 94 NONAME + _ZNK14CDocumentField4SizeEv @ 95 NONAME + _ZNK14CDocumentField5BoostEv @ 96 NONAME + _ZNK14CDocumentField5ValueEv @ 97 NONAME + _ZNK14CDocumentField6ConfigEv @ 98 NONAME + _ZNK15CSearchDocument10FieldCountEv @ 99 NONAME + _ZNK15CSearchDocument12ExternalizeLER12RWriteStream @ 100 NONAME + _ZNK15CSearchDocument2IdEv @ 101 NONAME + _ZNK15CSearchDocument4SizeEv @ 102 NONAME + _ZNK15CSearchDocument5BoostEv @ 103 NONAME + _ZNK15CSearchDocument5FieldERK7TDesC16 @ 104 NONAME + _ZNK15CSearchDocument5FieldEi @ 105 NONAME + _ZNK15CSearchDocument7ExcerptEv @ 106 NONAME + _ZNK15CSearchDocument8AppClassEv @ 107 NONAME + _ZNK20RSearchServerSession7VersionEv @ 108 NONAME + _ZNK23RSearchServerSubSession9CancelAllEv @ 109 NONAME + _ZTI12CCPixIndexer @ 110 NONAME + _ZTI13CCPixSearcher @ 111 NONAME + _ZTI14CDocumentField @ 112 NONAME + _ZTI15CSearchDocument @ 113 NONAME + _ZTV12CCPixIndexer @ 114 NONAME + _ZTV13CCPixSearcher @ 115 NONAME + _ZTV14CDocumentField @ 116 NONAME + _ZTV15CSearchDocument @ 117 NONAME diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchclient/group/searchclient.mmp --- a/searcher/searchclient/group/searchclient.mmp Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchclient/group/searchclient.mmp Wed Aug 18 10:53:26 2010 +0300 @@ -41,6 +41,6 @@ LIBRARY flogger.lib -CAPABILITY CAP_GENERAL_DLL -DRM +CAPABILITY CAP_GENERAL_DLL // End of File diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchclient/inc/searchservercommon.h --- a/searcher/searchclient/inc/searchservercommon.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchclient/inc/searchservercommon.h Wed Aug 18 10:53:26 2010 +0300 @@ -62,6 +62,8 @@ ESearchServerSearch, ESearchServerGetDocument, ESearchServerGetDocumentObject, + ESearchServerGetBatchDocument, + ESearchServerGetBatchDocumentObject, ESearchServerAdd, ESearchServerUpdate, ESearchServerDelete, diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchclient/src/ccpixsearcher.cpp --- a/searcher/searchclient/src/ccpixsearcher.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchclient/src/ccpixsearcher.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -279,6 +279,37 @@ SetActive(); } +EXPORT_C CSearchDocument** CCPixSearcher::GetBatchDocumentL(TInt aIndex, TInt& aReturnDoc, TInt aCount) + { + PERFORMANCE_LOG_START("CCPixSearcher::GetBatchDocumentL"); + + if ( !iIsDatabaseOpen ) User::Leave( KErrNotReady ); + if ( IsActive() ) + { + User::Leave(KErrInUse); + } + + return iSubSession.GetBatchDocumentL(aIndex,aReturnDoc, aCount); + } + +EXPORT_C void CCPixSearcher::GetBatchDocumentL(TInt aIndex, MCPixNextDocumentRequestObserver& aObserver, TInt aCount) + { + PERFORMANCE_LOG_START("CCPixSearcher::GetBatchDocumentL"); + + if ( !iIsDatabaseOpen ) User::Leave( KErrNotReady ); + if ( IsActive() ) + { + User::Leave(KErrInUse); // Need ::RunError to handle this + } + + iObserver.iNextDocument = &aObserver; + + iState = EStateGetBatchDocument; + iSubSession.GetBatchDocument(aIndex, iStatus, aCount); + SetActive(); + } + + // CCPixSearcher::RunL() // Invoked to handle responses from the server. void CCPixSearcher::RunL() @@ -341,6 +372,27 @@ } } break; + + case EStateGetBatchDocument: + { + // Fetch search results and call back at the observer + CSearchDocument** document = 0; + TInt retCount = 0; + TRAPD( err, document = iSubSession.GetBatchDocumentObjectL( retCount ) ); + if ( observer.iNextDocument ) + { + if ( err == KErrNone ) + { + observer.iNextDocument->HandleBatchDocumentL(iStatus.Int(),retCount, document); + } + else + { + observer.iNextDocument->HandleBatchDocumentL(err, retCount, document); + } + } + } + break; + case EStateNone: // Do nothing, dont panic. diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchclient/src/rsearchserversession.cpp --- a/searcher/searchclient/src/rsearchserversession.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchclient/src/rsearchserversession.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -153,6 +153,11 @@ void RSearchServerSubSession::Close() { + if (iSizeList) + { + delete iSizeList; + iSizeList = NULL; + } RSubSessionBase::CloseSubSession(ESearchServerCloseSubSession); } @@ -310,6 +315,94 @@ return document; } + // RSearchServerSubSession::GetBatchDocumentL() +EXPORT_C CSearchDocument** RSearchServerSubSession::GetBatchDocumentL(TInt aIndex, TInt& aReturnDoc, TInt aCount) + { + PERFORMANCE_LOG_START("RSearchServerSubSession::GetBatchDocumentL"); + + if (!aCount) return NULL; + + iDocumentSize = 0; + iReqCount = aCount; + + if (iSizeList) + { + delete iSizeList; + iSizeList = NULL; + } + iSizeList = STATIC_CAST(TInt *, User::AllocZL(iReqCount * sizeof(TInt))); + TPtr8 blob((TUint8*)iSizeList, iReqCount * sizeof(TInt)); + // Message arguments for the server + TIpcArgs args(aIndex, iReqCount, &blob); + iDocSizeArray.Reset(); + User::LeaveIfError( SendReceive(ESearchServerGetBatchDocument, args ) ); + + return GetBatchDocumentObjectL( aReturnDoc ); + } + +EXPORT_C void RSearchServerSubSession::GetBatchDocument(TInt aIndex, TRequestStatus& aStatus, TInt aCount) + { + PERFORMANCE_LOG_START("RSearchServerSubSession::GetBatchDocument"); + + iDocumentSize = 0; + iReqCount = aCount; + + if (iSizeList) + { + delete iSizeList; + iSizeList = NULL; + } + iSizeList = STATIC_CAST(TInt *, User::AllocZL(iReqCount * sizeof(TInt))); + //iDocSizeArray + TPtr8 blob((TUint8*)iSizeList, iReqCount * sizeof(TInt)); + + // Message arguments for the server + TIpcArgs args(aIndex, aCount, &blob); + + SendReceive(ESearchServerGetBatchDocument, args, aStatus ); + } + +EXPORT_C CSearchDocument** RSearchServerSubSession::GetBatchDocumentObjectL( TInt& aRetCount ) + { + PERFORMANCE_LOG_START("CCPixSearcher::GetBatchDocumentObjectL"); + CSearchDocument** document = NULL; + TInt i ,totalsize = 0; + for ( i = 0; i< iReqCount; i++ ) + { + if( *(iSizeList+i) ) + { + totalsize += *(iSizeList+i); + } + else break; + } + aRetCount = i; + + if ( aRetCount> 0 && totalsize ) + { + //document = (CSearchDocument**)malloc ( sizeof(CSearchDocument*) * (i-1)); + document = STATIC_CAST(CSearchDocument**, User::AllocL( aRetCount * sizeof(CSearchDocument*))); + HBufC8* buf = HBufC8::NewLC(totalsize +2 ); + TPtr8 ptr = buf->Des(); + User::LeaveIfError(SendReceive(ESearchServerGetBatchDocumentObject, TIpcArgs(&ptr))); + TInt startpos = 0; + TInt endpos = 0; + for ( TInt arrCount= 0; arrCount < aRetCount ; arrCount++) + { + endpos = *(iSizeList + arrCount) -4; + //endpos = startpos + iDocSizeArray[arrCount]; + TPtrC8 tempptr = ptr.Mid( startpos , endpos ); + startpos += endpos; + RDesReadStream stream; + stream.Open(tempptr); + stream.PushL(); + document[arrCount] = CSearchDocument::NewL(stream); + CleanupStack::PopAndDestroy(&stream); + } + CleanupStack::PopAndDestroy(buf); + } + return document; + } + // RSearchServerSubSession::CancelSearch() // Cancels outstanding search from server EXPORT_C void RSearchServerSubSession::CancelAll() const diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchclient/traces/CCPixSearcherTraces.h --- a/searcher/searchclient/traces/CCPixSearcherTraces.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchclient/traces/CCPixSearcherTraces.h Wed Aug 18 10:53:26 2010 +0300 @@ -1,4 +1,4 @@ -// Created by TraceCompiler 2.1.2 +// Created by TraceCompiler 2.2.3 // DO NOT EDIT, CHANGES WILL BE LOST #ifndef __CCPIXSEARCHERTRACES_H__ diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchclient/traces/RSearchServerSessionTraces.h --- a/searcher/searchclient/traces/RSearchServerSessionTraces.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchclient/traces/RSearchServerSessionTraces.h Wed Aug 18 10:53:26 2010 +0300 @@ -1,4 +1,4 @@ -// Created by TraceCompiler 2.1.2 +// Created by TraceCompiler 2.2.3 // DO NOT EDIT, CHANGES WILL BE LOST #ifndef __RSEARCHSERVERSESSIONTRACES_H__ diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchserver/inc/CCPixAbstractSearcher.h --- a/searcher/searchserver/inc/CCPixAbstractSearcher.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchserver/inc/CCPixAbstractSearcher.h Wed Aug 18 10:53:26 2010 +0300 @@ -68,6 +68,20 @@ * @return Document. Ownership is transferred to the caller of this function. */ virtual CSearchDocument* GetDocumentCompleteL() = 0; + + /** + * Gets list of documents from the current search results. + * @param aObserver Observing object for this asyncronous call + * @param aMessage The requesting message + * @parma aIndex index of the requested document + */ + virtual void GetBatchDocumentL(TInt aIndex, MCPixAsyncronizerObserver* aObserver, const RMessage2& aMessage, TInt count) = 0; + + /** + * Complete the previous GetBatchDocumentL + * @return array of Documents. Ownership is transferred to the caller of this function. + */ + virtual RPointerArray GetBatchDocumentCompleteL() = 0; /** * Creates new database (and destroys existing) if path is given. Otherwise, opens existing database. @@ -95,7 +109,11 @@ public: - static CSearchDocument* ConvertDocumentL( cpix_Document* aDocument ); + static CSearchDocument* ConvertDocumentL( cpix_Document* aDocument ); + + static RPointerArray ConvertBatchDocumentL( cpix_Document** aDocument, TInt count ); + + static RArray docSizeArray; }; diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchserver/inc/ccpixasyncronizer.h --- a/searcher/searchserver/inc/ccpixasyncronizer.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchserver/inc/ccpixasyncronizer.h Wed Aug 18 10:53:26 2010 +0300 @@ -22,6 +22,7 @@ { ECPixTaskTypeSearch = 0, ECPixTaskTypeGetDocument, + ECPixTaskTypeGetBatchDocument, ECPixTaskTypeAdd, ECPixTaskTypeUpdate, ECPixTaskTypeDelete, diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchserver/inc/ccpixsearch.h --- a/searcher/searchserver/inc/ccpixsearch.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchserver/inc/ccpixsearch.h Wed Aug 18 10:53:26 2010 +0300 @@ -101,6 +101,20 @@ * @return Document. Ownership is transferred to the caller of this function. */ CSearchDocument* GetDocumentCompleteL(); + + /** + * Gets list of documents from the current search results. + * @param aObserver Observing object for this asyncronous call + * @param aMessage The requesting message + * @parma aIndex index of the requested document + */ + void GetBatchDocumentL(TInt aIndex, MCPixAsyncronizerObserver* aObserver, const RMessage2& aMessage, TInt aCount); + + /** + * Complete the previous GetBatchDocumentL + * @return array of Document. Ownership is transferred to the caller of this function. + */ + RPointerArray GetBatchDocumentCompleteL(); /** * Creates new database (and destroys existing) if path is given. Otherwise, opens existing database. @@ -207,11 +221,18 @@ CCPixAsyncronizer* iAsyncronizer; cpix_JobId iPendingJobId; TPendingTask iPendingTask; - + /** + * stores the requested batch document + */ + cpix_Document** ibatchDocuments; + /** + * Requested batch document count + */ + TInt ibatchDocCount; /** * Needed until the cpix is changed so that the docResults gives out the document */ - cpix_Document iCurrentCpixDocument; + cpix_Document* iCurrentCpixDocument; }; diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchserver/inc/csearchserversubsession.h --- a/searcher/searchserver/inc/csearchserversubsession.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchserver/inc/csearchserversubsession.h Wed Aug 18 10:53:26 2010 +0300 @@ -100,6 +100,26 @@ * @param aMessage Message from client. */ void GetDocumentObjectL(const RMessage2& aMessage); + + /** + * GetBatchDocumentL. + * Client gets the list of documents (result) when SearchL has completed + * @param aMessage Message from client. + */ + void GetBatchDocumentL(const RMessage2& aMessage); + + /** + * GetBatchDocumentCompleteL. + * Completes an previous call to GetBatchDocumentL + */ + void GetBatchDocumentCompleteL(const RMessage2& aMessage); + + /** + * GetBatchDocumentObjectL. + * Client gets the object after GetBatchDocumentL() has completed + * @param aMessage Message from client. + */ + void GetBatchDocumentObjectL(const RMessage2& aMessage); /** * AddL. @@ -176,10 +196,12 @@ void LimitExcerptToMaxLengthL(CSearchDocument* aSearchDocument); private: + TInt count; CCPixIdxDb* iIndexDb; CCPixAbstractSearcher* iSearchDb; CSearchDocument* iNextDocument; CSearchServerSession* iSession; + RPointerArray idocList; }; #endif /* CSEARCHSERVERSUBSESSION_H_ */ diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchserver/src/CCPixAbstractSearcher.cpp --- a/searcher/searchserver/src/CCPixAbstractSearcher.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchserver/src/CCPixAbstractSearcher.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -10,7 +10,11 @@ #include "SearchServerHelper.h" #include "CSearchDocument.h" -CCPixAbstractSearcher::~CCPixAbstractSearcher() {} +RArray CCPixAbstractSearcher::docSizeArray; + +CCPixAbstractSearcher::~CCPixAbstractSearcher() { +docSizeArray.Close(); +} namespace { @@ -93,9 +97,98 @@ document->AddFieldL(namePtr, stringvalue); } - CleanupStack::PopAndDestroy(docFieldEnum); - + CleanupStack::PopAndDestroy(docFieldEnum); CleanupStack::Pop(document); - + delete aDocument; return document; } + +RPointerArray CCPixAbstractSearcher::ConvertBatchDocumentL( cpix_Document** aDocument, TInt aCount ) + { + // Read first the system fields that are passed as constructor parameters + // + RPointerArray docArray; + docSizeArray.Reset(); + //docArray.Reset(); // delete each element + + for( TInt i= 0;i< aCount;i++ ) + { + cpix_Document* nextDocument = aDocument[i]; + + if( nextDocument->ptr_ ) + { + const wchar_t* documentId = cpix_Document_getFieldValue( nextDocument, LCPIX_DOCUID_FIELD); + SearchServerHelper::CheckCpixErrorL(nextDocument, KErrDatabaseQueryFailed); + + TPtrC documentIdPtr(KNullDesC); + if (documentId) + documentIdPtr.Set(reinterpret_cast(documentId)); + + const wchar_t* documentAppClass = cpix_Document_getFieldValue(nextDocument, LCPIX_APPCLASS_FIELD); + SearchServerHelper::CheckCpixErrorL(nextDocument, KErrDatabaseQueryFailed); + + TPtrC documentAppClassPtr(KNullDesC); + if (documentAppClass) + documentAppClassPtr.Set(reinterpret_cast(documentAppClass)); + + const wchar_t* documentExcerpt = cpix_Document_getFieldValue(nextDocument, LCPIX_EXCERPT_FIELD); + SearchServerHelper::CheckCpixErrorL(nextDocument, KErrDatabaseQueryFailed); + + TPtrC documentExcerptPtr(KNullDesC); + if (documentExcerpt) + documentExcerptPtr.Set(reinterpret_cast(documentExcerpt)); + + // Setup the document + // + + CSearchDocument* document = CSearchDocument::NewLC(documentIdPtr, documentAppClassPtr, documentExcerptPtr); + + // Enumerate the field of cpix_Document and add each of them + // into the CSearchDocument object. + // + + cpix_DocFieldEnum* docFieldEnum = cpix_Document_fields(nextDocument); + SearchServerHelper::CheckCpixErrorL(nextDocument, KErrDocumentAccessFailed); + + CleanupStack::PushL( TCleanupItem(CpixDocFieldEnumDestroyer, docFieldEnum) ); + + cpix_Field field; + while (cpix_DocFieldEnum_hasMore(docFieldEnum)) + { + cpix_DocFieldEnum_next(docFieldEnum, &field); + SearchServerHelper::CheckCpixErrorL(docFieldEnum, KErrDatabaseQueryFailed); + + const wchar_t* name = cpix_Field_name(&field); + SearchServerHelper::CheckCpixErrorL(&field, KErrDatabaseQueryFailed); + + TPtrC namePtr( reinterpret_cast( name ) ); + if ( namePtr == TPtrC( (TUint16*)LCPIX_DOCUID_FIELD ) + || namePtr == TPtrC( (TUint16*)LCPIX_APPCLASS_FIELD ) + || namePtr == TPtrC( (TUint16*)LCPIX_EXCERPT_FIELD ) ) + { + continue; // These fields have already been added + } + + const wchar_t* value = cpix_Field_stringValue(&field); + SearchServerHelper::CheckCpixErrorL(&field, KErrDatabaseQueryFailed); + + TPtrC stringvalue( reinterpret_cast( value ) ); + + // NOTE: Also system fields will be iterated. Because + // the field name is not checked, all _appclass, + // _excerpt etc. fields will be overwritten. + document->AddFieldL(namePtr, stringvalue); + } + CleanupStack::PopAndDestroy(docFieldEnum); + CleanupStack::Pop(document); + docSizeArray.AppendL( document->Size()); + docArray.AppendL( document ); + delete nextDocument; + nextDocument = NULL; + } + else break; + } + delete aDocument; + aDocument = NULL; + return docArray; + } diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchserver/src/ccpixsearch.cpp --- a/searcher/searchserver/src/ccpixsearch.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchserver/src/ccpixsearch.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -61,7 +61,7 @@ delete iBaseAppClass; delete iDefaultSearchFieldZ; - + delete ibatchDocuments; cpix_Query_destroy(iQuery); cpix_QueryParser_destroy(iQueryParser); cpix_Analyzer_destroy(iAnalyzer); @@ -208,7 +208,10 @@ } iPendingTask = EPendingTaskDocument; - iPendingJobId = cpix_Hits_asyncDoc(iHits, aIndex, &iCurrentCpixDocument, (void*)this, &CompletionCallback); + + iCurrentCpixDocument = new cpix_Document; + iCurrentCpixDocument->ptr_ = NULL; + iPendingJobId = cpix_Hits_asyncDoc(iHits, aIndex, &iCurrentCpixDocument, (void*)this, &CompletionCallback,1); if ( cpix_Failed(iHits) ) { SearchServerHelper::LogErrorL(*(iHits->err_)); @@ -218,6 +221,37 @@ iAsyncronizer->Start(ECPixTaskTypeGetDocument, aObserver, aMessage); OstTraceFunctionExit0( CCPIXSEARCH_GETDOCUMENTL_EXIT ); } + +void CCPixSearch::GetBatchDocumentL(TInt aIndex, MCPixAsyncronizerObserver* aObserver, const RMessage2& aMessage, TInt aCount) + { + PERFORMANCE_LOG_START("CCPixSearch::GetBatchDocumentL"); + + if (iPendingTask != EPendingTaskNone) + User::Leave(KErrInUse); + + if (aIndex<0 || aIndex >= iDocumentCount ) + { + User::Leave(KErrDocumentAccessFailed); + } + + ibatchDocCount = aCount; + ibatchDocuments = STATIC_CAST(cpix_Document**, User::AllocZL(aCount * sizeof(cpix_Document*))); + for (int i =0; i< aCount; i++) + { + ibatchDocuments[i] = new cpix_Document; + ibatchDocuments[i]->ptr_ = NULL; + } + + iPendingTask = EPendingTaskDocument; + iPendingJobId = cpix_Hits_asyncDoc(iHits, aIndex, ibatchDocuments, (void*)this, &CompletionCallback, aCount); + if ( cpix_Failed(iHits) ) + { + SearchServerHelper::LogErrorL(*(iHits->err_)); + cpix_ClearError(iHits); + User::Leave(KErrDocumentAccessFailed); + } + iAsyncronizer->Start(ECPixTaskTypeGetBatchDocument, aObserver, aMessage); + } CSearchDocument* CCPixSearch::GetDocumentCompleteL() { @@ -230,7 +264,7 @@ cpix_Hits_asyncDocResults(iHits, iPendingJobId); SearchServerHelper::CheckCpixErrorL(iHits, KErrDocumentAccessFailed); - return ConvertDocumentL( &iCurrentCpixDocument ); + return ConvertDocumentL( iCurrentCpixDocument ); #if 0 // TODO XXX TIM const wchar_t* documentId = cpix_Document_getFieldValue(&iCurrentCpixDocument, LCPIX_DOCUID_FIELD); SearchServerHelper::CheckCpixErrorL(&iCurrentCpixDocument, KErrDatabaseQueryFailed); @@ -295,6 +329,19 @@ return document; #endif // 0 } + +RPointerArray CCPixSearch::GetBatchDocumentCompleteL() + { + PERFORMANCE_LOG_START("CCPixSearch::GetBatchDocumentCompleteL"); + + // Request is no more pending + iPendingTask = EPendingTaskNone; + + cpix_Hits_asyncDocResults(iHits, iPendingJobId); + SearchServerHelper::CheckCpixErrorL(iHits, KErrDocumentAccessFailed); + + return ConvertBatchDocumentL( ibatchDocuments, ibatchDocCount ); + } void CCPixSearch::SetAnalyzerL(const TDesC& aAnalyzer) { @@ -388,4 +435,4 @@ { return (iIdxDb != NULL); } - +// End of File diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchserver/src/csearchserver.cpp --- a/searcher/searchserver/src/csearchserver.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchserver/src/csearchserver.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -104,7 +104,7 @@ // CSearchServer* CSearchServer::NewLC() { - CSearchServer* searchServer = new ( ELeave ) CSearchServer( EPriorityNormal ); + CSearchServer* searchServer = new ( ELeave ) CSearchServer( CActive::EPriorityStandard ); CleanupStack::PushL(searchServer); searchServer->ConstructL(); return searchServer; @@ -120,7 +120,9 @@ OstTraceFunctionEntry0( CSEARCHSERVER_CONSTRUCTL_ENTRY ); CPIXLOGSTRING("Creating search server"); - + RProcess process; + process.SetPriority( EPriorityBackground ); + process.Close(); // Create new container index iContainerIndex = CObjectConIx::NewL(); diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchserver/src/csearchserversession.cpp --- a/searcher/searchserver/src/csearchserversession.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchserver/src/csearchserversession.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -230,6 +230,18 @@ subsession->GetDocumentObjectL(aMessage); RECORDED_EXECUTION_END("getDocumentObject") break; + + case ESearchServerGetBatchDocument: + RECORDED_EXECUTION_BEGIN + subsession->GetBatchDocumentL(aMessage); + RECORDED_EXECUTION_END("getDocument") + break; + + case ESearchServerGetBatchDocumentObject: + RECORDED_EXECUTION_BEGIN + subsession->GetBatchDocumentObjectL(aMessage); + RECORDED_EXECUTION_END("getDocumentObject") + break; case ESearchServerCancelAll: RECORDED_EXECUTION_BEGIN diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchserver/src/csearchserversubsession.cpp --- a/searcher/searchserver/src/csearchserversubsession.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchserver/src/csearchserversubsession.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -72,10 +72,13 @@ delete iIndexDb; delete iSearchDb; delete iNextDocument; + idocList.ResetAndDestroy(); + idocList.Close(); } void CSearchServerSubSession::ConstructL() { + count = 0; iIndexDb = CCPixIdxDb::NewL(); iSearchDb = CCPixSearch::NewL(); } @@ -259,6 +262,32 @@ OstTraceFunctionExit0( DUP1_CSEARCHSERVERSUBSESSION_GETDOCUMENTL_EXIT ); } +void CSearchServerSubSession::GetBatchDocumentL(const RMessage2& aMessage) + { + PERFORMANCE_LOG_START("CSearchServerSubSession::GetBatchDocumentL"); + + // Sanity check + if (!iSearchDb->IsOpen()) + { + iSession->PanicClient(aMessage, EDatabaseNotOpen); + return; + } + + // buf for the search terms + TInt index = aMessage.Int0(); + count = aMessage.Int1(); + + for (int i =0; i < idocList.Count(); i++) + { + delete idocList[i]; + idocList[i] = NULL; + } + idocList.Reset(); + LOG_PLAYER_RECORD( CLogPlayerRecorder::LogGetDocumentL( reinterpret_cast( this ), index ) ); + + iSearchDb->GetBatchDocumentL(index, this, aMessage, count); + } + void CSearchServerSubSession::GetDocumentCompleteL(const RMessage2& aMessage) { OstTraceFunctionEntry0( CSEARCHSERVERSUBSESSION_GETDOCUMENTCOMPLETEL_ENTRY ); @@ -270,6 +299,14 @@ OstTraceFunctionExit0( CSEARCHSERVERSUBSESSION_GETDOCUMENTCOMPLETEL_EXIT ); } +void CSearchServerSubSession::GetBatchDocumentCompleteL(const RMessage2& aMessage) + { + PERFORMANCE_LOG_START("CSearchServerSubSession::GetBatchDocumentCompleteL"); + idocList = iSearchDb->GetBatchDocumentCompleteL(); + const TPtrC8 ptr((const TUint8*)&(iSearchDb->docSizeArray[0]), sizeof(TInt) * iSearchDb->docSizeArray.Count()); + aMessage.WriteL(2, ptr); + } + // CSearchServerSession::GetDocumentObjectL() // Client gets the object after GetDocumentL() has completed void CSearchServerSubSession::GetDocumentObjectL(const RMessage2& aMessage) @@ -319,6 +356,53 @@ aMessage.Complete(KErrNone); OstTraceFunctionExit0( DUP1_CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT ); } + +// CSearchServerSession::GetBatchDocumentObjectL() +// Client gets the object after GetBatchDocumentL() has completed +void CSearchServerSubSession::GetBatchDocumentObjectL(const RMessage2& aMessage) + { + PERFORMANCE_LOG_START("CSearchServerSubSession::GetBatchDocumentObjectL"); + + // Sanity check + if ( !iSearchDb || !iSearchDb->IsOpen() ) + { + iSession->PanicClient(aMessage, EDatabaseNotOpen); + return; + } + TInt totalSize = 0; + for ( TInt i= 0; i < iSearchDb->docSizeArray.Count(); i++) + totalSize += iSearchDb->docSizeArray[i]; + + // Create long enough descriptor for serialized hits + HBufC8* buf = HBufC8::NewLC(totalSize +1); + TPtr8 ptr = buf->Des(); + // Initialize a new stream + RDesWriteStream stream; + stream.Open(ptr); + stream.PushL(); + + for(TInt i= 0; i < idocList.Count(); i++) + { + if ( idocList[i] ) + { + // Externalize hits to the stream// + idocList[i]->ExternalizeL(stream); + } + } + // Commit and destroy the stream + stream.CommitL(); + TInt len2 = ptr.Length(); + CleanupStack::PopAndDestroy(&stream); + + // write the serialized hits in to the message + aMessage.WriteL(0, ptr); + + // Delete descriptor + CleanupStack::PopAndDestroy(buf); + + // Complete the request + aMessage.Complete(KErrNone); + } void CSearchServerSubSession::AddL(const RMessage2& aMessage) { @@ -360,7 +444,11 @@ void CSearchServerSubSession::LimitExcerptToMaxLengthL(CSearchDocument* aSearchDocument) { + //This is commented because HIGHLIGHTER uses full expcerpt field, + //no need to limit excerpt //check if excerpt is more then maximum allowed +#ifdef USE_HIGHLIGHTER +#else if(aSearchDocument->Excerpt().Length() > MAX_EXCERPT_LENGTH) { OstTraceExt1( TRACE_NORMAL, CSEARCHSERVERSUBSESSION_LIMITEXCERPTTOMAXLENGTHL, "CSearchServerSubSession::LimitExcerptToMaxLengthL;docuid=%S", (aSearchDocument->Id()) ); @@ -375,6 +463,7 @@ aSearchDocument->AddExcerptL(*bufExcerpt); CleanupStack::PopAndDestroy(bufExcerpt); } +#endif } void CSearchServerSubSession::AddCompleteL(const RMessage2& /*aMessage*/) @@ -498,6 +587,11 @@ TRAP(aError, GetDocumentCompleteL(aMessage)); break; } + case ECPixTaskTypeGetBatchDocument: + { + TRAP(aError, GetBatchDocumentCompleteL(aMessage)); + break; + } case ECPixTaskTypeAdd: { TRAP(aError, AddCompleteL(aMessage)); diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchserver/traces/CCPixIdxDbTraces.h --- a/searcher/searchserver/traces/CCPixIdxDbTraces.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchserver/traces/CCPixIdxDbTraces.h Wed Aug 18 10:53:26 2010 +0300 @@ -1,4 +1,4 @@ -// Created by TraceCompiler 2.1.2 +// Created by TraceCompiler 2.2.3 // DO NOT EDIT, CHANGES WILL BE LOST #ifndef __CCPIXIDXDBTRACES_H__ @@ -15,6 +15,9 @@ #ifndef __KERNEL_MODE__ +#ifndef __OSTTRACEGEN1_TUINT32_CONST_TDESC16REF__ +#define __OSTTRACEGEN1_TUINT32_CONST_TDESC16REF__ + inline TBool OstTraceGen1( TUint32 aTraceID, const TDesC16& aParam1 ) { TBool retval; @@ -49,10 +52,16 @@ } return retval; } + +#endif // __OSTTRACEGEN1_TUINT32_CONST_TDESC16REF__ + #endif #ifndef __KERNEL_MODE__ +#ifndef __OSTTRACEGEN2_TUINT32_CONST_TDESC16REF_CONST_TDESC16REF__ +#define __OSTTRACEGEN2_TUINT32_CONST_TDESC16REF_CONST_TDESC16REF__ + inline TBool OstTraceGen2( TUint32 aTraceID, const TDesC16& aParam1, const TDesC16& aParam2 ) { TBool retval = BTraceFiltered8( EXTRACT_GROUP_ID(aTraceID), EOstTraceActivationQuery, KOstTraceComponentID, aTraceID ); @@ -133,6 +142,9 @@ } return retval; } + +#endif // __OSTTRACEGEN2_TUINT32_CONST_TDESC16REF_CONST_TDESC16REF__ + #endif diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchserver/traces/CCPixSearchTraces.h --- a/searcher/searchserver/traces/CCPixSearchTraces.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchserver/traces/CCPixSearchTraces.h Wed Aug 18 10:53:26 2010 +0300 @@ -1,4 +1,4 @@ -// Created by TraceCompiler 2.1.2 +// Created by TraceCompiler 2.2.3 // DO NOT EDIT, CHANGES WILL BE LOST #ifndef __CCPIXSEARCHTRACES_H__ diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchserver/traces/CSearchServerSessionTraces.h --- a/searcher/searchserver/traces/CSearchServerSessionTraces.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchserver/traces/CSearchServerSessionTraces.h Wed Aug 18 10:53:26 2010 +0300 @@ -1,4 +1,4 @@ -// Created by TraceCompiler 2.1.2 +// Created by TraceCompiler 2.2.3 // DO NOT EDIT, CHANGES WILL BE LOST #ifndef __CSEARCHSERVERSESSIONTRACES_H__ diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchserver/traces/CSearchServerSubSessionTraces.h --- a/searcher/searchserver/traces/CSearchServerSubSessionTraces.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchserver/traces/CSearchServerSubSessionTraces.h Wed Aug 18 10:53:26 2010 +0300 @@ -1,4 +1,4 @@ -// Created by TraceCompiler 2.1.2 +// Created by TraceCompiler 2.2.3 // DO NOT EDIT, CHANGES WILL BE LOST #ifndef __CSEARCHSERVERSUBSESSIONTRACES_H__ @@ -21,11 +21,14 @@ #define CSEARCHSERVERSUBSESSION_GETDOCUMENTCOMPLETEL_ENTRY 0x8a0014 #define CSEARCHSERVERSUBSESSION_GETDOCUMENTCOMPLETEL_EXIT 0x8a0015 #define CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_ENTRY 0x8a0016 -#define CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT 0x8a0017 #define DUP1_CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT 0x8a0018 +#define CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT 0x8a0019 #ifndef __KERNEL_MODE__ +#ifndef __OSTTRACEGEN1_TUINT32_CONST_TDESC16REF__ +#define __OSTTRACEGEN1_TUINT32_CONST_TDESC16REF__ + inline TBool OstTraceGen1( TUint32 aTraceID, const TDesC16& aParam1 ) { TBool retval; @@ -60,6 +63,9 @@ } return retval; } + +#endif // __OSTTRACEGEN1_TUINT32_CONST_TDESC16REF__ + #endif diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchserver/traces/CSearchServerTraces.h --- a/searcher/searchserver/traces/CSearchServerTraces.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchserver/traces/CSearchServerTraces.h Wed Aug 18 10:53:26 2010 +0300 @@ -1,4 +1,4 @@ -// Created by TraceCompiler 2.1.2 +// Created by TraceCompiler 2.2.3 // DO NOT EDIT, CHANGES WILL BE LOST #ifndef __CSEARCHSERVERTRACES_H__ diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchserver/traces/OstTraceDefinitions.h --- a/searcher/searchserver/traces/OstTraceDefinitions.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchserver/traces/OstTraceDefinitions.h Wed Aug 18 10:53:26 2010 +0300 @@ -2,6 +2,6 @@ #define __OSTTRACEDEFINITIONS_H__ // OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler // REMOVE BEFORE CHECK-IN TO VERSION CONTROL -//#define OST_TRACE_COMPILER_IN_USE +#define OST_TRACE_COMPILER_IN_USE #include #endif diff -r afe194b6b1cd -r cf5c74390b98 searcher/searchserver/traces/fixed_id.definitions --- a/searcher/searchserver/traces/fixed_id.definitions Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/searchserver/traces/fixed_id.definitions Wed Aug 18 10:53:26 2010 +0300 @@ -14,7 +14,7 @@ [TRACE]TRACE_FLOW[0x8A]_CSEARCHSERVERSUBSESSION_GETDOCUMENTL_ENTRY=0x11 [TRACE]TRACE_FLOW[0x8A]_CSEARCHSERVERSUBSESSION_GETDOCUMENTL_EXIT=0x12 [TRACE]TRACE_FLOW[0x8A]_CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_ENTRY=0x16 -[TRACE]TRACE_FLOW[0x8A]_CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT=0x17 +[TRACE]TRACE_FLOW[0x8A]_CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT=0x19 [TRACE]TRACE_FLOW[0x8A]_CSEARCHSERVERSUBSESSION_SEARCHCOMPLETEL_ENTRY=0xf [TRACE]TRACE_FLOW[0x8A]_CSEARCHSERVERSUBSESSION_SEARCHCOMPLETEL_EXIT=0x10 [TRACE]TRACE_FLOW[0x8A]_CSEARCHSERVERSUBSESSION_SEARCHL_ENTRY=0xc @@ -39,3 +39,4 @@ [TRACE]TRACE_NORMAL[0x86]_DUP1_CSEARCHSERVERSUBSESSION_CSEARCHSERVERSUBSESSION=0xc [TRACE]TRACE_NORMAL[0x86]_DUP1_CSEARCHSERVERSUBSESSION_LIMITEXCERPTTOMAXLENGTHL=0xe [TRACE]TRACE_NORMAL[0x86]_DUP2_CPIXIDXDB_DUMPDOCUMENT=0x3 +[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT=0x17 diff -r afe194b6b1cd -r cf5c74390b98 searcher/tsrc/cpixsearchertest/conf/cpixsearchertest.cfg --- a/searcher/tsrc/cpixsearchertest/conf/cpixsearchertest.cfg Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/tsrc/cpixsearchertest/conf/cpixsearchertest.cfg Wed Aug 18 10:53:26 2010 +0300 @@ -295,4 +295,18 @@ foobar TestExerptLength delete foobar [Endtest] + +[Test] +title TestGetBatchdoc +create cpixsearchertest foobar +foobar TestGetBatchdoc +delete foobar +[Endtest] + +[Test] +title TestAsyncGetBatchdoc +create cpixsearchertest foobar +foobar TestAsyncGetBatchdoc +delete foobar +[Endtest] \ No newline at end of file diff -r afe194b6b1cd -r cf5c74390b98 searcher/tsrc/cpixsearchertest/group/cpixsearchertest.mmp --- a/searcher/tsrc/cpixsearchertest/group/cpixsearchertest.mmp Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/tsrc/cpixsearchertest/group/cpixsearchertest.mmp Wed Aug 18 10:53:26 2010 +0300 @@ -82,6 +82,7 @@ USERINCLUDE ./../../../../searchsrv_plat/cpix_utility_api/inc USERINCLUDE ../../../searchclient/inc +USERINCLUDE ../../../searchclient/traces SOURCEPATH ../../../searchclient/src SOURCE rsearchserversession.cpp @@ -94,4 +95,6 @@ LIBRARY FLOGGER.lib LIBRARY estor.lib LIBRARY efsrv.lib + +EPOCALLOWDLLDATA // End of File diff -r afe194b6b1cd -r cf5c74390b98 searcher/tsrc/cpixsearchertest/inc/cpixsearchertest.h --- a/searcher/tsrc/cpixsearchertest/inc/cpixsearchertest.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/tsrc/cpixsearchertest/inc/cpixsearchertest.h Wed Aug 18 10:53:26 2010 +0300 @@ -180,6 +180,8 @@ virtual TInt TestGetDocumentAsyncL( CStifItemParser& aItem ); virtual TInt TestGetInvalidDocumentAsyncL( CStifItemParser& aItem ); virtual TInt TestExerptLengthL( CStifItemParser& aItem ); + virtual TInt TestGetBatchdocL( CStifItemParser& aItem ); + virtual TInt TestAsyncGetBatchdocL( CStifItemParser& aItem ); /** * Method used to log version of test class */ diff -r afe194b6b1cd -r cf5c74390b98 searcher/tsrc/cpixsearchertest/inc/cpixsearchertester.h --- a/searcher/tsrc/cpixsearchertest/inc/cpixsearchertester.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/tsrc/cpixsearchertest/inc/cpixsearchertester.h Wed Aug 18 10:53:26 2010 +0300 @@ -60,6 +60,7 @@ public: // From MCPixNextDocumentRequestObserver void HandleDocumentL(TInt aError, CSearchDocument* aDocument); + void HandleBatchDocumentL(TInt aError, TInt aReturnCount, CSearchDocument** aDocument); public: // From MAOTestObserver void CallCompleted( int i ); @@ -116,6 +117,11 @@ void testGetInvalidDocumentAsync(); TInt testEcerptLenth(); + + void testgetbatchdoc(); + + void testasyncgetbatchdoc(); + private: CCPixSearcher* iSearcher; RSearchServerSession iSession; @@ -128,6 +134,7 @@ CSearchDocument* iDocument; TBool iHandleDocumentLFunctionCalled; // ETrue if HandleDocumentL called TBool iHandleSetAnalyzerCalled; // ETrue if HandleSetAnalyzerResultL called + TInt iretcount; }; #endif /* CPIXSEARCHERTESTER_H_ */ diff -r afe194b6b1cd -r cf5c74390b98 searcher/tsrc/cpixsearchertest/src/cpixsearchertestBlocks.cpp --- a/searcher/tsrc/cpixsearchertest/src/cpixsearchertestBlocks.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/tsrc/cpixsearchertest/src/cpixsearchertestBlocks.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -164,6 +164,8 @@ ENTRY( "TestGetDocumentAsync", Ccpixsearchertest::TestGetDocumentAsyncL), ENTRY( "TestGetInvalidDocumentAsync", Ccpixsearchertest::TestGetInvalidDocumentAsyncL), ENTRY( "TestExerptLength", Ccpixsearchertest::TestExerptLengthL), + ENTRY( "TestGetBatchdoc", Ccpixsearchertest::TestGetBatchdocL), + ENTRY( "TestAsyncGetBatchdoc", Ccpixsearchertest::TestAsyncGetBatchdocL), //ADD NEW ENTRY HERE // [test cases entries] - Do not remove @@ -982,6 +984,49 @@ doLog( iLog, err, KTestFormBaseAppClassNoError ); return err; } + +// ----------------------------------------------------------------------------- +// Ccpixsearchertest::TestGetBatchdocL +// ----------------------------------------------------------------------------- +// +TInt Ccpixsearchertest::TestGetBatchdocL( CStifItemParser& /*aItem*/ ) + { + _LIT( KTestFormBaseAppClassNoError, "TestGetBatchdocL: No Error" ); + CTestSearcher* testsearcher = new CTestSearcher(); + testsearcher->initialsetUp(); + testsearcher->createandinitindexer(); + testsearcher->createsearcher(); + testsearcher->harvesttestcontent( 10 ); + TRAPD ( err , testsearcher->testgetbatchdoc() ); + testsearcher->ReleaseIndexer(); + testsearcher->ReleaseSearcher(); + testsearcher->tearDown(); + delete testsearcher; + doLog( iLog, err, KTestFormBaseAppClassNoError ); + return err; + } +// ----------------------------------------------------------------------------- +// Ccpixsearchertest::TestAsyncGetBatchdocL +// ----------------------------------------------------------------------------- +// +TInt Ccpixsearchertest::TestAsyncGetBatchdocL( CStifItemParser& /*aItem*/ ) + { + _LIT( KTestFormBaseAppClassNoError, "TestAsyncGetBatchdocL: No Error" ); + CTestSearcher* testsearcher = new CTestSearcher(); + testsearcher->initialsetUp(); + testsearcher->createandinitindexer(); + testsearcher->createsearcher(); + testsearcher->harvesttestcontent( 10 ); + testsearcher->InitAsyncComponents(); + TRAPD ( err , testsearcher->testasyncgetbatchdoc() ); + testsearcher->ReleaseIndexer(); + testsearcher->ReleaseSearcher(); + testsearcher->ReleaseAsyncComponents(); + testsearcher->tearDown(); + delete testsearcher; + doLog( iLog, err, KTestFormBaseAppClassNoError ); + return err; + } // ----------------------------------------------------------------------------- // Ccpixsearchertest::?member_function // ?implementation_description diff -r afe194b6b1cd -r cf5c74390b98 searcher/tsrc/cpixsearchertest/src/cpixsearchertester.cpp --- a/searcher/tsrc/cpixsearchertest/src/cpixsearchertester.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/tsrc/cpixsearchertest/src/cpixsearchertester.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -234,6 +234,21 @@ iWait->AsyncStop(); } } +void CTestSearcher::HandleBatchDocumentL(TInt /*aError*/, TInt aReturnCount, CSearchDocument** aDocument) + { + iHandleDocumentLFunctionCalled = ETrue; + + if (iWait && iWait->IsStarted()) + { + for (int i=0; iAsyncStop(); + } + } // Timeout callback void CTestSearcher::CallCompleted( int /* i */ ) @@ -571,3 +586,69 @@ } return ( length > 125 )?KErrGeneral:KErrNone; } + +void CTestSearcher::testgetbatchdoc() + { + //Make sure Hit count is 7 + TInt hitcount = iSearcher->SearchL(KQueryString); + CSearchDocument** doc = NULL; + if ( hitcount ) + { + TInt retcount=0,count=3; + doc = iSearcher->GetBatchDocumentL(0,retcount,count); + for (int i=0; iGetBatchDocumentL(3,retcount,count); + for (int i=0; iGetBatchDocumentL(4,retcount,count); + for (int i=0; iGetBatchDocumentL(11,retcount,count)); + TS_ASSERT(err == KErrDocumentAccessFailed); + TS_ASSERT(retcount == 0); + } + return; + } + +void CTestSearcher::testasyncgetbatchdoc() + { + //Make sure Hit count is 7 + TInt hitcount = iSearcher->SearchL(KQueryString); + if (hitcount) + { + TInt count =3; + iretcount = 3; + iSearcher->GetBatchDocumentL(0,*this,count); + iWait->Start(); + + iretcount = 3; + iSearcher->GetBatchDocumentL(3,*this,count); + iWait->Start(); + + iretcount = 2; + iSearcher->GetBatchDocumentL(4,*this,count); + iWait->Start(); + + iretcount = 0; + iSearcher->GetBatchDocumentL(11,*this,count); + iWait->Start(); + + } + return; + } diff -r afe194b6b1cd -r cf5c74390b98 searcher/tsrc/logplayer/inc/logplayermanager.h --- a/searcher/tsrc/logplayer/inc/logplayermanager.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/tsrc/logplayer/inc/logplayermanager.h Wed Aug 18 10:53:26 2010 +0300 @@ -94,6 +94,7 @@ // Dummy implementation void HandleDocumentL(TInt /*aError*/, CSearchDocument* /*aDocument*/) {} + void HandleBatchDocumentL(TInt aError, TInt aReturnCount, CSearchDocument** aDocument) {} public: // New functions diff -r afe194b6b1cd -r cf5c74390b98 searcher/tsrc/robustnesstest/inc/csearchingworker.h --- a/searcher/tsrc/robustnesstest/inc/csearchingworker.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/tsrc/robustnesstest/inc/csearchingworker.h Wed Aug 18 10:53:26 2010 +0300 @@ -54,6 +54,7 @@ public: // From MCPixNextDocumentRequestObserver virtual void HandleDocumentL(TInt /*aError*/, CSearchDocument* /*aDocument*/); + virtual void HandleBatchDocumentL(TInt aError, TInt aReturnCount, CSearchDocument** aDocument) ; public: // Statistics diff -r afe194b6b1cd -r cf5c74390b98 searcher/tsrc/robustnesstest/src/csearchingworker.cpp --- a/searcher/tsrc/robustnesstest/src/csearchingworker.cpp Tue Jul 06 15:30:04 2010 +0300 +++ b/searcher/tsrc/robustnesstest/src/csearchingworker.cpp Wed Aug 18 10:53:26 2010 +0300 @@ -230,6 +230,9 @@ void CSearchingWorker::HandleDocumentL(TInt /*aError*/, CSearchDocument* /*aDocument*/) { } +void CSearchingWorker::HandleBatchDocumentL(TInt aError, TInt aReturnCount, CSearchDocument** aDocument) + { + } TInt CSearchingWorker::ConsumeSearches() { diff -r afe194b6b1cd -r cf5c74390b98 searchsrv_plat/cpix_framework_api/inc/ccpixsearcher.h --- a/searchsrv_plat/cpix_framework_api/inc/ccpixsearcher.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searchsrv_plat/cpix_framework_api/inc/ccpixsearcher.h Wed Aug 18 10:53:26 2010 +0300 @@ -235,6 +235,36 @@ * @return Next available document or NULL, if no more documents can be found */ IMPORT_C void GetDocumentL(TInt aIndex, MCPixNextDocumentRequestObserver& aObserver); + + /** + * GetBatchDocumentL + * Iterates throught the search result's document list (hits), that is stored in the + * server side. The accessed list is ranked and the best matching document is heading + * the result list. First call of this method, return best matching, then second best + * matching and so forth until all documents have been found. Method returns NULL, + * when no more documents can be found. + * + * Leaves with KErrInUse, if asynchronous request is pending and + * KErrNotReady, if no database has been succefullly opened. + * + * @todo Having also GetDocumentLC would be nice + * @return Next available document or NULL, if no more documents can be found. Ownership is transferred + */ + IMPORT_C CSearchDocument** GetBatchDocumentL(TInt aIndex, TInt& aReturnDoc, TInt aCount = 1); + + /** + * GetBatchDocumentL + * Iterates throught the search result's document list (hits), that is stored in the + * server side. The accessed list is ranked and the best matching document isheading + * the result lest. When the request has been completed a callback to + * MSearchObserver::HandleDocumentL is issued. + * + * Leaves with KErrInUse, if asynchronous request is pending and + * KErrNotReady, if no database has been succefullly opened. + * + * @return Next available document or NULL, if no more documents can be found + */ + IMPORT_C void GetBatchDocumentL(TInt aIndex, MCPixNextDocumentRequestObserver& aObserver, TInt aCount = 1); protected: // Functions from base classes @@ -287,6 +317,7 @@ EStateOpenDatabase, EStateSearch, EStateGetDocument, + EStateGetBatchDocument, EStateSetAnalyzer, EStateSetQueryParser }; diff -r afe194b6b1cd -r cf5c74390b98 searchsrv_plat/cpix_framework_api/inc/mcpixsearcherobserver.h --- a/searchsrv_plat/cpix_framework_api/inc/mcpixsearcherobserver.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searchsrv_plat/cpix_framework_api/inc/mcpixsearcherobserver.h Wed Aug 18 10:53:26 2010 +0300 @@ -72,6 +72,16 @@ * @aDocument The received document. Ownership of is transfered to the observer. NULL if no more documents. */ virtual void HandleDocumentL(TInt aError, CSearchDocument* aDocument) = 0; + + /** + * HandleBatchDocumentL. + * Handle list of documents received from the server. + * @param aError Completion code of a asynchronous request. KErrNone if operation + * was succesful, otherwise system wide error code. + * @param aReturnCount count of the documents returned. + * @aDocument The received document. Ownership of is transfered to the observer. NULL if no more documents. + */ + virtual void HandleBatchDocumentL(TInt aError, TInt aReturnCount, CSearchDocument** aDocument) = 0; }; diff -r afe194b6b1cd -r cf5c74390b98 searchsrv_plat/cpix_framework_api/inc/rsearchserversession.h --- a/searchsrv_plat/cpix_framework_api/inc/rsearchserversession.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searchsrv_plat/cpix_framework_api/inc/rsearchserversession.h Wed Aug 18 10:53:26 2010 +0300 @@ -203,6 +203,28 @@ * @return The document object. Ownership is transferred to the caller */ IMPORT_C CSearchDocument* GetDocumentObjectL(); + + /** + * GetBatchDocument. Synchronous version. + * Gets a list of document from the search results. + */ + IMPORT_C CSearchDocument** GetBatchDocumentL(TInt aIndex, TInt& aReturnDoc, TInt aCount); + + /** + * GetBatchDocument. Asynchronous version. + * Prepares a list of document from the search results. After this request + * complets, document can be read by using GetBatchDocumentObjectL. + * @param aStatus The TRequestStatus object to be used for async comms. + */ + IMPORT_C void GetBatchDocument(TInt aIndex, TRequestStatus& aStatus, TInt aCount); + + /** + * GetBatchDocumentObjectL. + * Get the actual Batch document object prepared by the asynchronous GetDocument request. + * @return The document object. Ownership is transferred to the caller + * Note: aRetCount will have the count of the documents returned + */ + IMPORT_C CSearchDocument** GetBatchDocumentObjectL( TInt& aRetCount); /** * AddL. Synchronous version @@ -286,11 +308,19 @@ * iDocumentSize, bytes needed for the next document */ TInt iDocumentSize; + /** + * iDocSizeArray, array of docs sizes + */ + RArray iDocSizeArray; /** * Package for document size. */ TPckg iDocumentSizePckg; + + TInt* iSizeList; + + TInt iReqCount; }; diff -r afe194b6b1cd -r cf5c74390b98 searchsrv_plat/cpix_search_api/group/bld.inf --- a/searchsrv_plat/cpix_search_api/group/bld.inf Tue Jul 06 15:30:04 2010 +0300 +++ b/searchsrv_plat/cpix_search_api/group/bld.inf Wed Aug 18 10:53:26 2010 +0300 @@ -22,7 +22,7 @@ PRJ_EXPORTS -../inc/qcpixcommon.h MW_LAYER_PLATFORM_EXPORT_PATH(qcpixcommon.h) -../inc/qcpixdocument.h MW_LAYER_PLATFORM_EXPORT_PATH(qcpixdocument.h) -../inc/qcpixdocumentfield.h MW_LAYER_PLATFORM_EXPORT_PATH(qcpixdocumentfield.h) -../inc/qcpixsearcher.h MW_LAYER_PLATFORM_EXPORT_PATH(qcpixsearcher.h) +../inc/cpixcommon.h MW_LAYER_PLATFORM_EXPORT_PATH(cpixcommon.h) +../inc/cpixdocument.h MW_LAYER_PLATFORM_EXPORT_PATH(cpixdocument.h) +../inc/cpixdocumentfield.h MW_LAYER_PLATFORM_EXPORT_PATH(cpixdocumentfield.h) +../inc/cpixsearcher.h MW_LAYER_PLATFORM_EXPORT_PATH(cpixsearcher.h) diff -r afe194b6b1cd -r cf5c74390b98 searchsrv_plat/cpix_search_api/inc/cpixcommon.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/searchsrv_plat/cpix_search_api/inc/cpixcommon.h Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,32 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Qt common search APIs +* +*/ + + +#ifndef CPIXCOMMON_H_ +#define CPIXCOMMON_H_ + +#ifndef THROWS_EXCEPTION +#define THROWS_EXCEPTION +#endif + +/** + * Maximum string length. + * */ +//@TODO:sai: Is this a sane value? +const int KMaxStringLength = 256; + +#endif /* CPIXCOMMON_H_ */ diff -r afe194b6b1cd -r cf5c74390b98 searchsrv_plat/cpix_search_api/inc/cpixdocument.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/searchsrv_plat/cpix_search_api/inc/cpixdocument.h Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,174 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Qt search document APIs +* +*/ + +#ifndef _CPIXDOCUMENT_H +#define _CPIXDOCUMENT_H + +#ifdef BUILD_DLL +#define DLL_EXPORT Q_DECL_EXPORT +#else +#define DLL_EXPORT Q_DECL_IMPORT +#endif + +/** + * @file + * @ingroup Qt Search ClientAPI + * @brief Contains CpixDocument APIs + */ + +#include +#include + +//Forward Declaration +class CpixDocumentPrivate; +class CpixDocumentField; + +/** + * @brief Represents the document returned as a result of a search query. + * @ingroup ClientAPI + * + * Link against: cpixsearch.lib + */ +class DLL_EXPORT CpixDocument: public QObject + { + Q_OBJECT +public: + //@TODO: The following enums are copied over from S60. They need to + // be moved to a common file so that they can be shared by s60, qt and openc. + /** + * TStored defines wheter the value is stored to database. + * If value is stored to database, it can be retrieved from search result. + */ + enum Stored + { + StoreYes = 1, + StoreNo = 2 + }; + + /** + * TIndexed defines how the value of the field is indexed. + * If value is indexed, it can be searched. + */ + enum Indexed + { + IndexNo = 16, + IndexTokenized = 32, + IndexUnTokenized = 64 + }; + + /** + * TAggregated defines how the value of the field are exposed + * for aggregation. Aggregated field can be found with generic searches. + * If aggregation is not specified, all indexed field are aggeregated by + * default. Note: that also non-indexed fields can be aggregated. + */ + enum Aggregated + { + AggregateNo = 1<<30, + AggregateYes = 1<<31, + AggregateDefault = 0 + }; + /** + * By default, field value is stored to database and it's indexed as tokenized strings. + */ + static const int DefaultConfig = StoreYes | IndexTokenized | AggregateDefault; + + static const float KDefaultBoost; + +public: + /** + * Constructor. + * Creates a CpixDocument object and return a pointer to the created object. + * @return A pointer to the created instance of CpixDocument. + */ + static CpixDocument* newInstance(); + + /** + * Destructor + */ + virtual ~CpixDocument(); + + /** + * Getter: Gets the document identifier. + * @return document identifier. + */ + QString docId() const; + + /** + * Getter: Gets the document excert. + * @return document excerpt. + */ + QString excerpt() const; + + /** + * Getter: Gets the document's base app class. + * @return document's base app class. + */ + QString baseAppClass() const; + + /** + * Getter: Gets the field at aIndex in the document. + * @param aIndex index of the field that is to be retrieved. + * @return CpixDocumentField that was at aIndex. + */ + const CpixDocumentField& field( const int aIndex ) const THROWS_EXCEPTION; + + /** + * Getter: Gets the field count. + * @return The number of the fields in the document. + */ + int fieldCount() const; + + /** + * Setter: Sets the document identifier for the document. + * @param aDocId the document identifier to be set. + */ + void setDocId(const QString aDocId); + + /** + * Setter: Sets the excerpt for the document. + * @param aExcerpt the excerpt to be set. + */ + void setExcerpt(const QString aExcerpt); + + /** + * Setter: Sets the base app class for the document. + * @param aBaseAppClass the base app class to be set. + */ + void setBaseAppClass(const QString aBaseAppClass); + + /** + * Setter: Adds a field with aName, aValue and aConfig to the document. + * @param aName The name of the field + * @param aValue The value of the field + * @param aConfig The config of the field + * @return the CpixDocumentField that was added to the document. + */ + void addField(const QString aName, const QString aValue, const int aConfig = CpixDocument::DefaultConfig); + +private: + /** + * Default constructor + */ + CpixDocument(); + +private: + CpixDocumentPrivate* const iPvtImpl; + Q_DECLARE_PRIVATE_D( iPvtImpl, CpixDocument ) + }; + +#endif //_CPIXDOCUMENT_H diff -r afe194b6b1cd -r cf5c74390b98 searchsrv_plat/cpix_search_api/inc/cpixdocumentfield.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/searchsrv_plat/cpix_search_api/inc/cpixdocumentfield.h Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,118 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Qt search document field APIs +* +*/ + +#ifndef _CPIXDOCUMENTFIELD_H +#define _CPIXDOCUMENTFIELD_H + +#ifdef BUILD_DLL +#define DLL_EXPORT Q_DECL_EXPORT +#else +#define DLL_EXPORT Q_DECL_IMPORT +#endif + +/** + * @file + * @ingroup Qt Search ClientAPI + * @brief Contains CCPixDocument field APIs + */ + +#include + +//Forward decelaration +class CpixDocumentFieldPrivate; + +/** + * @brief Represents the fields of documents returned as a result of a search query. + * @ingroup ClientAPI + * + * Link against: cpixsearch.lib + */ +class DLL_EXPORT CpixDocumentField: public QObject + { + Q_OBJECT +public: + /** + * Constructor. + * Creates a CpixDocumentField object and return a pointer to the created object. + * @param aName Name of the field + * @param aValue Value of the field + * @param aConfig Config for the field + * @return A pointer to the created instance of CpixDocumentField. + * + * @note After using this constructor, the client has to mandatorily call + * SetDatabase() before invoking any search. + */ + static CpixDocumentField* newInstance( const QString aName, const QString aValue, const int aConfig ); + + /** + * Destructor. + */ + virtual ~CpixDocumentField(); + + /** + * Getter: Gets the name of the field. + * @return The name of the field + */ + QString name() const; + + /** + * Getter: Gets the Value of the field. + * @return The value of the field + */ + QString value() const; + + /** + * Getter: Gets the Config of the field. + * @return The config of the field + */ + int config() const; + + /** + * Setter: Sets the Name of the field. + * @param aName The name of the field + */ + void setName(const QString aName); + + /** + * Setter: Sets the Value of the field. + * @param aValue The value of the field + */ + void setValue(const QString aValue); + + /** + * Setter: Sets the Name of the field. + * @param aConfig The config of the field + */ + void setConfig(const int aConfig); + +private: + /** + * Constructor. + * Creates a CpixDocumentField object and return a pointer to the created object. + * @param aName Name of the field + * @param aValue Value of the field + * @param aConfig Config for the field + * @return A pointer to the created instance of CpixDocumentField. + */ + CpixDocumentField(const QString aName, const QString aValue, const int aConfig); + +private: + CpixDocumentFieldPrivate* const iPvtImpl; + Q_DECLARE_PRIVATE_D( iPvtImpl, CpixDocumentField ) + }; + +#endif //_CPIXDOCUMENTFIELD_H diff -r afe194b6b1cd -r cf5c74390b98 searchsrv_plat/cpix_search_api/inc/cpixsearcher.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/searchsrv_plat/cpix_search_api/inc/cpixsearcher.h Wed Aug 18 10:53:26 2010 +0300 @@ -0,0 +1,284 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Qt search APIs +* +*/ + +#ifndef _CPIXSEARCHER_H +#define _CPIXSEARCHER_H + +//Uncomment the following line to enable performance measurements +//#define OST_TRACE_COMPILER_IN_USE + +#ifdef OST_TRACE_COMPILER_IN_USE + +#include +#include +#define PERF_SEARCH_START_TIMER searchTimer.start(); +#define PERF_SEARCH_RESTART_TIMER searchTimer.restart(); +#define PERF_SEARCH_ENDLOG qDebug() << "Search QT API took: " << searchTimer.elapsed() << "msec"; + +#define PERF_GETDOC_START_TIMER getDocumentTimer.start(); +#define PERF_GETDOC_RESTART_TIMER getDocumentTimer.restart(); +#define PERF_GETDOC_ENDLOG qDebug() << "Search QT API took: " << getDocumentTimer.elapsed() << "msec"; + +#define PERF_TIME_NOW(message) qDebug() << "Search QT API: " << QString(message) << ": " << QTime::currentTime().toString("hh:mm:ss.zzz"); + +#else + +#define PERF_SEARCH_START_TIMER +#define PERF_SEARCH_RESTART_TIMER +#define PERF_SEARCH_ENDLOG +#define PERF_GETDOC_START_TIMER +#define PERF_GETDOC_RESTART_TIMER +#define PERF_GETDOC_ENDLOG +#define PERF_TIME_NOW(message) + +#endif + +/** + * @file + * @ingroup Search Client API fpr Qt Clients + * @brief Contains CCPixSearcher used for searching + */ + +#ifdef BUILD_DLL +#define DLL_EXPORT Q_DECL_EXPORT +#else +#define DLL_EXPORT Q_DECL_IMPORT +#endif + +#include +#include + +//forward declarations +class CpixDocument; +class CpixSearcherPrivate; + +// CLASS DECLARATION +/** + * @brief Used for searching. + * @ingroup Qt Search Client API + * Link against: cpixsearch.lib + * + * An instance of CpixSearcher is used to commit search operations. + * + * Example code: + * + * Usecase 1: Sync calls. + * \code + * CpixSearcher* searcher = CpixSearcher::newInstance("root"); + * if(searcher){ + * int hitCount = searcher->search("search for me"); + * for(int i=0; iSetDatabase("root"); + * int hitCount = searcher->search("search for me"); + * for(int i=0; isearch("search for me"); + * GetDocumentAsync( iCurrentDocumentCount++ ); + * + * ClientClass::ClientHandleGetDocumentCompleteSlot(int aError, CpixDocument* aDocument){ + * if( KErrNone != aError ){ + * //do something with aDocument + * } + * documentAsync( iCurrentDocumentCount++ ); //Now get the next document. + * } + * + * \endcode + * + */ +class DLL_EXPORT CpixSearcher: public QObject + { + Q_OBJECT +public: + /** + * Constructor. + * Creates a CpixSearcher object and return a pointer to the created object. + * @return A pointer to the created instance of CCPixSearcher. + * + * @note After using this constructor, the client has to mandatorily call + * SetDatabase() before invoking any search. + */ + static CpixSearcher* newInstance(); + + /** + * Overloaded constructor + * Creates a CCPixSearcher object and return a pointer to the created object. + * If this constructor is used, the client can directly invoke Search without + * the need to call SetDatabase. + * @param aBaseAppClass The baseAppClass on which to invoke searches on. + * @param aDefaultSearchField Default field where the keywords are searched from. + * @return A pointer to the created instance of CCPixSearcher. + */ + static CpixSearcher* newInstance( QString aBaseAppClass, QString aDefaultSearchField=NULL ); + + /** + * Destructor. + */ + ~CpixSearcher(); + + /** + * Synchronously set (or change the database, if already set) on which to invoke subsequent searches. + * @param aBaseAppClass baseAppClass whose corresponding database is to be opened. + */ + void setDatabase(QString aBaseAppClass) THROWS_EXCEPTION; + + /** + * Asynchronously set (or change the database, if already set) on which to invoke subsequent searches. + * @param aBaseAppClass baseAppClass whose corresponding database is to be opened. + * + * @note Client is notified on completion of this call via HandleDatabaseSet signal. + */ + void setDatabaseAsync(QString aBaseAppClass) THROWS_EXCEPTION; + + /** + * Syncronously search for aSearchString. + * @param aSearchString keywords to be searched for. + * @param aDefaultSearchField Default field where the keywords are searched from. + * @return Estimated number of documents containing aSearchString. + */ + int search(QString aSearchString, QString aDefaultSearchField=NULL) THROWS_EXCEPTION; + + /** + * Asyncronously search for aSearchString. + * @param aSearchString keywords to be searched for. + * @param aDefaultSearchField Default field where the keywords are searched from. + * @return Estimated number of documents containing aSearchString. + * + * @note Client is notified on completion of this call via HandleSearchResults signal. + */ + void searchAsync(QString aSearchString, QString aDefaultSearchField=NULL) THROWS_EXCEPTION; + + /** + * Synchronously get the document with index aIndex. + * @param aIndex Index of document to be retrieved + * @return A pointer to CpixDocument that has been retrieved. Null on error. + * + * @note This should be called only after the synchronous search call has returned + * and aIndex should be between 0 and estimated count returned by Search(). + */ + CpixDocument* document(int aIndex) THROWS_EXCEPTION; + + /** + * Asynchronously get the document with index aIndex. + * @param aIndex Index of document to be retrieved + * + * @note This should be called only after the synchronous search call has returned + * and aIndex should be between 0 and estimated count returned by Search(). + */ + void documentAsync(int aIndex) THROWS_EXCEPTION; + + /** + * Synchronously get the count,aCount of batch documens with index aIndex. + * @param aIndex starting Index of document to be retrieved + * @param aCount number of documents requested + * @param aReturnDoc number of documents returned + * @return A double pointer to CpixDocument that has been retrieved. Null on error. + * + * @note This should be called only after the synchronous search call has returned + * and aIndex should be between 0 and estimated count returned by Search(). + * It is the client duty to free the memory allocated for the returned CpixDocument** + * deallocation of the memory can be done based on the value returned in aReturnDoc + */ + CpixDocument** batchdocument(int aIndex,int& aReturnDoc, int aCount = 1) THROWS_EXCEPTION; + + /** + * Asynchronously get the batch documents with index aIndex. + * @param aIndex Starting Index of documents to be retrieved + * @param aCount number of documents requested + * + * @note This should be called only after the synchronous search call has returned + * and aIndex should be between 0 and estimated count returned by Search(). + */ + void batchdocumentAsync(int aIndex, int aCount = 1) THROWS_EXCEPTION; + + /** + * Cancels any outstanding searches. + */ + void cancelSearch(); + +signals: + /** + * Notify completion of SetDatabaseAsyc + * @param aError Completion (error) code of SetDatabaseAsync + */ + void handleDatabaseSet(int aError); + + /** + * Notify completion of SearchAsyc + * @param aError Completion (error) code of SearchAsyc + * @param aEstimatedResultCount Estimated number of documents found after SearchAsync + */ + void handleSearchResults(int aError, int aEstimatedResultCount); + + /** + * Notify completion of documentAsyc + * @param aError Completion (error) code of GetDatabaseAsyc + * @param aDocument The requested document. + */ + void handleDocument(int aError, CpixDocument* aDocument); + + /** + * Notify completion of BatchdocumentAsyc + * @param aError Completion (error) code of GetDatabaseAsyc + * @param aDocument The requested document. + */ + void handleBatchDocuments(int aError,int aRetCount, CpixDocument** aDocument); + +private: + /** + * Defaul constructor. + * Creates a CpixSearcher object and return a pointer to the created object. + * @return A pointer to the created instance of CCPixSearcher. + */ + CpixSearcher(); + + CpixSearcherPrivate* const iPvtImpl; + Q_DECLARE_PRIVATE_D( iPvtImpl, CpixSearcher ) + +#ifdef OST_TRACE_COMPILER_IN_USE + QTime searchTimer; + QTime getDocumentTimer; +#endif + }; + +#endif //_CPIXSEARCHER_H diff -r afe194b6b1cd -r cf5c74390b98 searchsrv_plat/cpix_search_api/inc/qcpixcommon.h --- a/searchsrv_plat/cpix_search_api/inc/qcpixcommon.h Tue Jul 06 15:30:04 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Qt common search APIs -* -*/ - - -#ifndef QCPIXCOMMON_H_ -#define QCPIXCOMMON_H_ - -#ifndef THROWS_EXCEPTION -#define THROWS_EXCEPTION -#endif - -/** - * Maximum string length. - * */ -//@TODO:sai: Is this a sane value? -const int KMaxStringLength = 256; - -#endif /* QCPIXCOMMON_H_ */ diff -r afe194b6b1cd -r cf5c74390b98 searchsrv_plat/cpix_search_api/inc/qcpixdocument.h --- a/searchsrv_plat/cpix_search_api/inc/qcpixdocument.h Tue Jul 06 15:30:04 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,173 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Qt search document APIs -* -*/ - -#ifndef _QCPIXDOCUMENT_H -#define _QCPIXDOCUMENT_H - -#ifdef BUILD_DLL -#define DLL_EXPORT Q_DECL_EXPORT -#else -#define DLL_EXPORT Q_DECL_IMPORT -#endif - -/** - * @file - * @ingroup Qt Search ClientAPI - * @brief Contains CCPixDocument APIs - */ - -#include - -//Forward Declaration -class QCPixDocumentPrivate; -class QCPixDocumentField; - -/** - * @brief Represents the document returned as a result of a search query. - * @ingroup ClientAPI - * - * Link against: QCPixSearchClient.lib - */ -class DLL_EXPORT QCPixDocument: public QObject - { - Q_OBJECT -public: - //@TODO: The following enums are copied over from S60. They need to - // be moved to a common file so that they can be shared by s60, qt and openc. - /** - * TStored defines wheter the value is stored to database. - * If value is stored to database, it can be retrieved from search result. - */ - enum TStored - { - EStoreYes = 1, - EStoreNo = 2 - }; - - /** - * TIndexed defines how the value of the field is indexed. - * If value is indexed, it can be searched. - */ - enum TIndexed - { - EIndexNo = 16, - EIndexTokenized = 32, - EIndexUnTokenized = 64 - }; - - /** - * TAggregated defines how the value of the field are exposed - * for aggregation. Aggregated field can be found with generic searches. - * If aggregation is not specified, all indexed field are aggeregated by - * default. Note: that also non-indexed fields can be aggregated. - */ - enum TAggregated - { - EAggregateNo = 1<<30, - EAggregateYes = 1<<31, - EAggregateDefault = 0 - }; - /** - * By default, field value is stored to database and it's indexed as tokenized strings. - */ - static const TInt KDefaultConfig = EStoreYes | EIndexTokenized | EAggregateDefault; - - static const TReal32 KDefaultBoost; - -public: - /** - * Constructor. - * Creates a QCPixDocument object and return a pointer to the created object. - * @return A pointer to the created instance of CCPixDocument. - */ - static QCPixDocument* newInstance(); - - /** - * Destructor - */ - virtual ~QCPixDocument(); - - /** - * Getter: Gets the document identifier. - * @return document identifier. - */ - QString docId() const; - - /** - * Getter: Gets the document excert. - * @return document excerpt. - */ - QString excerpt() const; - - /** - * Getter: Gets the document's base app class. - * @return document's base app class. - */ - QString baseAppClass() const; - - /** - * Getter: Gets the field at aIndex in the document. - * @param aIndex index of the field that is to be retrieved. - * @return QCPixDocumentField that was at aIndex. - */ - const QCPixDocumentField& field( const int aIndex ) const; - - /** - * Getter: Gets the field count. - * @return The number of the fields in the document. - */ - int fieldCount() const; - - /** - * Setter: Sets the document identifier for the document. - * @param aDocId the document identifier to be set. - */ - void setDocId(const QString aDocId); - - /** - * Setter: Sets the excerpt for the document. - * @param aExcerpt the excerpt to be set. - */ - void setExcerpt(const QString aExcerpt); - - /** - * Setter: Sets the base app class for the document. - * @param aBaseAppClass the base app class to be set. - */ - void setBaseAppClass(const QString aBaseAppClass); - - /** - * Setter: Adds a field with aName, aValue and aConfig to the document. - * @param aName The name of the field - * @param aValue The value of the field - * @param aConfig The config of the field - * @return the QCPixDocumentField that was added to the document. - */ - void addField(const QString aName, const QString aValue, const int aConfig = QCPixDocument::KDefaultConfig); - -private: - /** - * Default constructor - */ - QCPixDocument(); - -private: - QCPixDocumentPrivate* const iPvtImpl; - Q_DECLARE_PRIVATE_D( iPvtImpl, QCPixDocument ) - }; - -#endif //_QCPIXDOCUMENT_H diff -r afe194b6b1cd -r cf5c74390b98 searchsrv_plat/cpix_search_api/inc/qcpixdocumentfield.h --- a/searchsrv_plat/cpix_search_api/inc/qcpixdocumentfield.h Tue Jul 06 15:30:04 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,118 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Qt search document field APIs -* -*/ - -#ifndef _QCPIXDOCUMENTFIELD_H -#define _QCPIXDOCUMENTFIELD_H - -#ifdef BUILD_DLL -#define DLL_EXPORT Q_DECL_EXPORT -#else -#define DLL_EXPORT Q_DECL_IMPORT -#endif - -/** - * @file - * @ingroup Qt Search ClientAPI - * @brief Contains CCPixDocument field APIs - */ - -#include - -//Forward decelaration -class QCPixDocumentFieldPrivate; - -/** - * @brief Represents the fields of documents returned as a result of a search query. - * @ingroup ClientAPI - * - * Link against: QCPixSearchClient.lib - */ -class DLL_EXPORT QCPixDocumentField: public QObject - { - Q_OBJECT -public: - /** - * Constructor. - * Creates a QCPixDocumentField object and return a pointer to the created object. - * @param aName Name of the field - * @param aValue Value of the field - * @param aConfig Config for the field - * @return A pointer to the created instance of QCPixDocumentField. - * - * @note After using this constructor, the client has to mandatorily call - * SetDatabase() before invoking any search. - */ - static QCPixDocumentField* newInstance( const QString aName, const QString aValue, const int aConfig ); - - /** - * Destructor. - */ - virtual ~QCPixDocumentField(); - - /** - * Getter: Gets the name of the field. - * @return The name of the field - */ - QString name() const; - - /** - * Getter: Gets the Value of the field. - * @return The value of the field - */ - QString value() const; - - /** - * Getter: Gets the Config of the field. - * @return The config of the field - */ - int config() const; - - /** - * Setter: Sets the Name of the field. - * @param aName The name of the field - */ - void setName(const QString aName); - - /** - * Setter: Sets the Value of the field. - * @param aValue The value of the field - */ - void setValue(const QString aValue); - - /** - * Setter: Sets the Name of the field. - * @param aConfig The config of the field - */ - void setConfig(const int aConfig); - -private: - /** - * Constructor. - * Creates a QCPixDocumentField object and return a pointer to the created object. - * @param aName Name of the field - * @param aValue Value of the field - * @param aConfig Config for the field - * @return A pointer to the created instance of QCPixDocumentField. - */ - QCPixDocumentField(const QString aName, const QString aValue, const int aConfig); - -private: - QCPixDocumentFieldPrivate* const iPvtImpl; - Q_DECLARE_PRIVATE_D( iPvtImpl, QCPixDocumentField ) - }; - -#endif //_QCPIXDOCUMENTFIELD_H diff -r afe194b6b1cd -r cf5c74390b98 searchsrv_plat/cpix_search_api/inc/qcpixsearcher.h --- a/searchsrv_plat/cpix_search_api/inc/qcpixsearcher.h Tue Jul 06 15:30:04 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,263 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Qt search APIs -* -*/ - -#ifndef _QCPIXSEARCHER_H -#define _QCPIXSEARCHER_H - -//Uncomment the following line to enable performance measurements -//#define OST_TRACE_COMPILER_IN_USE - -#ifdef OST_TRACE_COMPILER_IN_USE - -#include -#include -#define PERF_SEARCH_START_TIMER searchTimer.start(); -#define PERF_SEARCH_RESTART_TIMER searchTimer.restart(); -#define PERF_SEARCH_ENDLOG qDebug() << "Search QT API took: " << searchTimer.elapsed() << "msec"; - -#define PERF_GETDOC_START_TIMER getDocumentTimer.start(); -#define PERF_GETDOC_RESTART_TIMER getDocumentTimer.restart(); -#define PERF_GETDOC_ENDLOG qDebug() << "Search QT API took: " << getDocumentTimer.elapsed() << "msec"; - -#define PERF_TIME_NOW(message) qDebug() << "Search QT API: " << QString(message) << ": " << QTime::currentTime().toString("hh:mm:ss.zzz"); - -#else - -#define PERF_SEARCH_START_TIMER -#define PERF_SEARCH_RESTART_TIMER -#define PERF_SEARCH_ENDLOG -#define PERF_GETDOC_START_TIMER -#define PERF_GETDOC_RESTART_TIMER -#define PERF_GETDOC_ENDLOG -#define PERF_TIME_NOW(message) - -#endif - -/** - * @file - * @ingroup Search Client API fpr Qt Clients - * @brief Contains CCPixSearcher used for searching - */ - -#ifdef BUILD_DLL -#define DLL_EXPORT Q_DECL_EXPORT -#else -#define DLL_EXPORT Q_DECL_IMPORT -#endif - -#include -#include - -//forward declarations -class QCPixDocument; -class QCPixSearcherPrivate; - -// CLASS DECLARATION -/** - * @brief Used for searching. - * @ingroup Qt Search Client API - * Link against: qcpixsearchclient.lib - * - * An instance of QCPixSearcher is used to commit search operations. - * - * Example code: - * - * Usecase 1: Sync calls. - * \code - * QCPixSearcher* searcher = QCPixSearcher::newInstance("root"); - * if(searcher){ - * int hitCount = searcher->Search("search for me"); - * for(int i=0; iSetDatabase("root"); - * int hitCount = searcher->Search("search for me"); - * for(int i=0; iSearch("search for me"); - * GetDocumentAsync( iCurrentDocumentCount++ ); - * - * ClientClass::ClientHandleGetDocumentCompleteSlot(int aError, QCPixDocument* aDocument){ - * if( KErrNone != aError ){ - * //do something with aDocument - * } - * GetDocumentAsync( iCurrentDocumentCount++ ); //Now get the next document. - * } - * - * \endcode - * - */ -class DLL_EXPORT QCPixSearcher: public QObject - { - Q_OBJECT -public: - /** - * Constructor. - * Creates a QCPixSearcher object and return a pointer to the created object. - * @return A pointer to the created instance of CCPixSearcher. - * - * @note After using this constructor, the client has to mandatorily call - * SetDatabase() before invoking any search. - */ - static QCPixSearcher* newInstance(); - - /** - * Overloaded constructor - * Creates a CCPixSearcher object and return a pointer to the created object. - * If this constructor is used, the client can directly invoke Search without - * the need to call SetDatabase. - * @param aBaseAppClass The baseAppClass on which to invoke searches on. - * @param aDefaultSearchField Default field where the keywords are searched from. - * @return A pointer to the created instance of CCPixSearcher. - */ - static QCPixSearcher* newInstance( QString aBaseAppClass, QString aDefaultSearchField=NULL ); - - /** - * Destructor. - */ - ~QCPixSearcher(); - - /** - * Synchronously set (or change the database, if already set) on which to invoke subsequent searches. - * @param aBaseAppClass baseAppClass whose corresponding database is to be opened. - */ - void setDatabase(QString aBaseAppClass) THROWS_EXCEPTION; - - /** - * Asynchronously set (or change the database, if already set) on which to invoke subsequent searches. - * @param aBaseAppClass baseAppClass whose corresponding database is to be opened. - * - * @note Client is notified on completion of this call via HandleDatabaseSet signal. - */ - void setDatabaseAsync(QString aBaseAppClass) THROWS_EXCEPTION; - - /** - * Syncronously search for aSearchString. - * @param aSearchString keywords to be searched for. - * @param aDefaultSearchField Default field where the keywords are searched from. - * @return Estimated number of documents containing aSearchString. - */ - int search(QString aSearchString, QString aDefaultSearchField=NULL) THROWS_EXCEPTION; - - /** - * Asyncronously search for aSearchString. - * @param aSearchString keywords to be searched for. - * @param aDefaultSearchField Default field where the keywords are searched from. - * @return Estimated number of documents containing aSearchString. - * - * @note Client is notified on completion of this call via HandleSearchResults signal. - */ - void searchAsync(QString aSearchString, QString aDefaultSearchField=NULL) THROWS_EXCEPTION; - - /** - * Synchronously get the document with index aIndex. - * @param aIndex Index of document to be retrieved - * @return A pointer to QCPixDocument that has been retrieved. Null on error. - * - * @note This should be called only after the synchronous search call has returned - * and aIndex should be between 0 and estimated count returned by Search(). - */ - QCPixDocument* getDocument(int aIndex) THROWS_EXCEPTION; - - /** - * Asynchronously get the document with index aIndex. - * @param aIndex Index of document to be retrieved - * @return A pointer to QCPixDocument that has been retrieved. Null on error. - * - * @note This should be called only after the synchronous search call has returned - * and aIndex should be between 0 and estimated count returned by Search(). - */ - void getDocumentAsync(int aIndex) THROWS_EXCEPTION; - - /** - * Cancels any outstanding searches. - */ - void cancelSearch(); - -signals: - /** - * Notify completion of SetDatabaseAsyc - * @param aError Completion (error) code of SetDatabaseAsync - */ - void handleDatabaseSet(int aError); - - /** - * Notify completion of SearchAsyc - * @param aError Completion (error) code of SearchAsyc - * @param aEstimatedResultCount Estimated number of documents found after SearchAsync - */ - void handleSearchResults(int aError, int aEstimatedResultCount); - - /** - * Notify completion of GetDatabaseAsyc - * @param aError Completion (error) code of GetDatabaseAsyc - * @param aDocument The requested document. - */ - void handleDocument(int aError, QCPixDocument* aDocument); - -private: - /** - * Default Constructor. - */ - QCPixSearcher(); - - /** - * Constructor. - * Creates a QCPixSearcher object and return a pointer to the created object. - * @param aDefaultSearchField Default field where the keywords are searched from. - * @return A pointer to the created instance of CCPixSearcher. - * - * @note After using this constructor, the client has to mandatorily call - * SetDatabase() before invoking any search. - */ - QCPixSearcher( QString aDefaultSearchField=NULL ); - - QCPixSearcherPrivate* const iPvtImpl; - Q_DECLARE_PRIVATE_D( iPvtImpl, QCPixSearcher ) - -#ifdef OST_TRACE_COMPILER_IN_USE - QTime searchTimer; - QTime getDocumentTimer; -#endif - }; - -#endif //_QCPIXSEARCHER_H diff -r afe194b6b1cd -r cf5c74390b98 searchsrv_plat/cpix_utility_api/inc/cpixmaindefs.h --- a/searchsrv_plat/cpix_utility_api/inc/cpixmaindefs.h Tue Jul 06 15:30:04 2010 +0300 +++ b/searchsrv_plat/cpix_utility_api/inc/cpixmaindefs.h Wed Aug 18 10:53:26 2010 +0300 @@ -196,7 +196,7 @@ */ #define DEFAULT_CPIX_DIR "c:\\Data\\" #define DEFAULT_CLUCENE_LOCK_DIR "c:\\system\\temp" -#define DEFAULT_RESOURCE_DIR "c:\\Data\\" +#define DEFAULT_RESOURCE_DIR "z:\\resource\\cpix" diff -r afe194b6b1cd -r cf5c74390b98 sis/cpixsearch.pkg.source --- a/sis/cpixsearch.pkg.source Tue Jul 06 15:30:04 2010 +0300 +++ b/sis/cpixsearch.pkg.source Wed Aug 18 10:53:26 2010 +0300 @@ -94,10 +94,10 @@ "$(EPOCROOT)epoc32\release\armv5\$(TARGET)\cpixfileplugin.dll" -"c:\sys\bin\cpixfileplugin.dll" -"$(EPOCROOT)epoc32\data\z\resource\plugins\cpixbookmarksplugin.rsc" --"c:\resource\plugins\cpixbookmarksplugin.rsc" -"$(EPOCROOT)epoc32\release\armv5\$(TARGET)\cpixbookmarksplugin.dll" --"c:\sys\bin\cpixbookmarksplugin.dll" +;"$(EPOCROOT)epoc32\data\z\resource\plugins\cpixbookmarksplugin.rsc" +;-"c:\resource\plugins\cpixbookmarksplugin.rsc" +;"$(EPOCROOT)epoc32\release\armv5\$(TARGET)\cpixbookmarksplugin.dll" +;-"c:\sys\bin\cpixbookmarksplugin.dll" "$(EPOCROOT)epoc32\data\z\resource\plugins\cpixcalendarplugin.rsc" -"c:\resource\plugins\cpixcalendarplugin.rsc" @@ -119,7 +119,7 @@ -"c:\sys\bin\cpixnotesplugin.dll" -"\epoc32\release\armv5\$(TARGET)\qcpixsearchclient.dll" - "!:\sys\bin\qcpixsearchclient.dll" +"\epoc32\release\armv5\$(TARGET)\cpixsearch.dll" - "!:\sys\bin\cpixsearch.dll" @"centrep.sisx", (0x10202BE9) ;Email Plugin