contentstorage/caclient/stub/src/caclientproxy.cpp
changeset 61 8e5041d13c84
parent 60 f62f87b200ec
child 66 32469d7d46ff
--- 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<QString, QString> attributes = query.attributes();
+        QMapIterator<QString, QString> 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;