diff -r f62f87b200ec -r 8e5041d13c84 contentstorage/caclient/stub/src/caclientproxy.cpp --- a/contentstorage/caclient/stub/src/caclientproxy.cpp Fri Mar 19 09:35:23 2010 +0200 +++ b/contentstorage/caclient/stub/src/caclientproxy.cpp Fri Apr 16 15:16:09 2010 +0300 @@ -36,7 +36,7 @@ const char *DATABASE_CONNECTION_NAME = "CaService"; const char *DATABASE_TYPE = "QSQLITE"; -const char *DATABASE_NAME = "castoragedb"; +const char *DATABASE_NAME = "castorage.db"; static QSqlDatabase dbConnection() { @@ -498,7 +498,7 @@ QSqlQuery query(db); query.prepare( "SELECT ENTRY_ID, EN_TEXT, EN_DESCRIPTION, EN_TYPE_NAME, EN_FLAGS, EN_ROLE, EN_UID, \ - ICON_ID, IC_BITMAP_ID, IC_MASK_ID, IC_SKINMAJOR_ID, IC_SKINMINOR_ID, IC_FILENAME \ + ICON_ID, IC_FILENAME, IC_SKIN_ID, IC_APP_ID \ FROM CA_ENTRY LEFT JOIN CA_ICON ON EN_ICON_ID = ICON_ID WHERE ENTRY_ID = ?"); query.addBindValue(i); @@ -522,16 +522,13 @@ CaIconDescription icon; CaObjectAdapter::setId(icon, query.value(query.record().indexOf("ICON_ID")).toInt()); - icon.setBitmapId(query.value(query.record().indexOf( - "IC_BITMAP_ID")).toInt()); - icon.setMaskId(query.value(query.record().indexOf( - "IC_MASK_ID")).toInt()); - icon.setSkinMajorId(query.value(query.record().indexOf( - "IC_SKINMAJOR_ID")).toInt()); - icon.setSkinMinorId(query.value(query.record().indexOf( - "IC_SKINMINOR_ID")).toInt()); + icon.setFilename(query.value(query.record().indexOf( "IC_FILENAME")).toString()); + icon.setSkinId(query.value(query.record().indexOf( + "IC_SKIN_ID")).toString()); + icon.setApplicationId(query.value(query.record().indexOf( + "IC_APP_ID")).toString()); entry->setIconDescription(icon); // attributes @@ -608,7 +605,6 @@ whereStatement.append(" AND ").append(QString().setNum( query.entryRoles())) .append(" | EN_ROLE == ").append( QString().setNum(query.entryRoles())); - //TODO: by uid??? if (query.entryTypeNames().count()) { whereStatement.append(" AND EN_TYPE_NAME IN ("); @@ -620,11 +616,48 @@ whereStatement.append(") "); } + QString whereAttributes; + if (query.attributes().count()) { + QMap attributes = query.attributes(); + QMapIterator atrIt(attributes); + int j = 1; + while (atrIt.hasNext()) { + atrIt.next(); + + // at1.AT_NAME = 'Attribute_Name_1' AND at1.AT_VALUE = 'Attribute_VALUE_1' + whereAttributes.append(" AND ").append( + " at").append(QString().setNum(j)).append(".AT_NAME = \'").append( + atrIt.key()).append("\' ").append( + " AND ").append( + " at").append(QString().setNum(j)).append(".AT_VALUE = \'").append( + atrIt.value()).append("\' "); + + j++; + } + whereStatement.append(whereAttributes); + + } + + whereStatement.append(" GROUP BY ENTRY_ID "); + + QString leftJoins; + if (query.attributes().count()) { + for (int j=1; j<=query.attributes().count(); j++) { + // LEFT JOIN CA_ATTRIBUTE as at1 ON ENTRY_ID = at1.AT_ENTRY_ID + leftJoins.append( + " LEFT JOIN CA_ATTRIBUTE as at").append(QString().setNum(j)).append( + " ON ENTRY_ID = at").append(QString().setNum(j)).append(" .AT_ENTRY_ID "); + } + } + QSqlQuery sqlquery(db); if (query.parentId() == 0) { // sort - QString queryString("SELECT ENTRY_ID from CA_ENTRY where 1=1 "); + QString queryString("SELECT ENTRY_ID from CA_ENTRY "); + queryString.append(leftJoins); + queryString.append(" where 1=1 "); queryString.append(whereStatement); + modifyQueryForSortOrder(queryString, query, false); if (query.count() > 0) queryString.append(" LIMIT ").append(query.count()); @@ -639,11 +672,13 @@ } } } else { - QString - queryString( - "SELECT ENTRY_ID FROM CA_ENTRY \ - LEFT JOIN CA_GROUP_ENTRY ON GE_ENTRY_ID = ENTRY_ID WHERE GE_GROUP_ID = ? "); - queryString.append(whereStatement); + + QString queryString("SELECT ENTRY_ID FROM CA_ENTRY "); + QString queryString2(" LEFT JOIN CA_GROUP_ENTRY ON GE_ENTRY_ID = ENTRY_ID WHERE GE_GROUP_ID = ? "); + queryString2.append(whereStatement); + queryString.append(leftJoins); + queryString.append(queryString2); + modifyQueryForSortOrder(queryString, query, true); if (query.count() > 0) queryString.append(" LIMIT ").append(query.count()); @@ -755,9 +790,9 @@ return error; } -/*! - //TODO: - */ +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- void CaClientProxy::modifyQueryForSortOrder(QString &queryString, const CaQuery &query, bool parent) const { @@ -805,28 +840,24 @@ } -/*! - //TODO: - */ +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- bool CaClientProxy::setIconInDb(CaEntry *entryClone) const { //set icon information into db QSqlQuery query(dbConnection()); query.prepare( - "SELECT ICON_ID FROM CA_ICON WHERE IC_FILENAME = :IC_FILENAME \ - AND IC_BITMAP_ID = :IC_BITMAP_ID \ - AND IC_MASK_ID = :IC_MASK_ID \ - AND IC_SKINMAJOR_ID = :IC_SKINMAJOR_ID \ - AND IC_SKINMINOR_ID = :IC_SKINMINOR_ID"); + "SELECT ICON_ID FROM CA_ICON WHERE IC_FILENAME = :IC_FILENAME" + " AND IC_SKIN_ID = :IC_SKIN_ID" + " AND IC_APP_ID = :IC_APP_ID"); query.bindValue(":IC_FILENAME", entryClone->iconDescription().filename()); - query.bindValue(":IC_BITMAP_ID", - entryClone->iconDescription().bitmapId()); - query.bindValue(":IC_MASK_ID", entryClone->iconDescription().maskId()); - query.bindValue(":IC_SKINMAJOR_ID", - entryClone->iconDescription().skinMajorId()); - query.bindValue(":IC_SKINMINOR_ID", - entryClone->iconDescription().skinMinorId()); + query.bindValue(":IC_SKIN_ID", + entryClone->iconDescription().filename()); + query.bindValue(":IC_APP_ID", + entryClone->iconDescription().filename()); + bool success = query.exec(); if (success && query.next()) { @@ -834,19 +865,17 @@ int iconId = query.value(query.record().indexOf("ICON_ID")).toInt(); qDebug() << "iconId = " << iconId; CaIconDescription iconDescription = entryClone->iconDescription(); - if (iconId <= 0 && (iconDescription.filename() != "" - || iconDescription.bitmapId() != 0 || iconDescription.maskId() != 0 - || iconDescription.skinMajorId() != 0 - || iconDescription.skinMinorId() != 0)) { + if (iconId <= 0 + && (!iconDescription.filename().isEmpty() + || !iconDescription.skinId().isEmpty() + || !iconDescription.applicationId().isEmpty())) { query.prepare( - "INSERT INTO CA_ICON \ - (IC_FILENAME,IC_BITMAP_ID,IC_MASK_ID,IC_SKINMAJOR_ID,IC_SKINMINOR_ID) \ - VALUES ( ? , ? , ? , ? , ? )"); + "INSERT INTO CA_ICON" + " (IC_FILENAME, IC_SKIN_ID, IC_APP_ID)" + " VALUES ( ? , ? , ? , ? , ? )"); query.addBindValue(iconDescription.filename()); - query.addBindValue(iconDescription.bitmapId()); - query.addBindValue(iconDescription.maskId()); - query.addBindValue(iconDescription.skinMajorId()); - query.addBindValue(iconDescription.skinMinorId()); + query.addBindValue(iconDescription.skinId()); + query.addBindValue(iconDescription.applicationId()); success = query.exec(); qDebug() << query.executedQuery(); iconId = query.lastInsertId().toInt(); @@ -857,9 +886,9 @@ return success; } -/*! - //TODO: - */ +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- bool CaClientProxy::setEntryInDb(CaEntry *entryClone) const { QSqlQuery query(dbConnection()); @@ -911,9 +940,9 @@ return success; } -/*! - //TODO: - */ +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- bool CaClientProxy::setAttributesInDb(CaEntry *entryClone) const { bool success = true;