contentstorage/caclient/stub/src/caclientproxy.cpp
changeset 104 9b022b1f357c
parent 66 32469d7d46ff
child 121 0b3699f6c654
equal deleted inserted replaced
103:b99b84bcd2d1 104:9b022b1f357c
    92 {
    92 {
    93     qDebug("CaClientProxy::updateWidgets start");
    93     qDebug("CaClientProxy::updateWidgets start");
    94 
    94 
    95     HsWidgetRegistryService *rs =
    95     HsWidgetRegistryService *rs =
    96         new HsWidgetRegistryService(mWidgetRegistryPath);
    96         new HsWidgetRegistryService(mWidgetRegistryPath);
    97     QList<HsWidgetToken> widgets = rs->widgets();
    97     QList<HsWidgetComponentDescriptor> widgets = rs->widgets();
    98 
    98 
    99     // Read widgets in order to add synchronize the content of the widgets
    99     // Read widgets in order to add synchronize the content of the widgets
   100     // registry with Content Storage database.
   100     // registry with Content Storage database.
   101     foreach(const HsWidgetToken &widgetToken, widgets) {
   101     foreach(const HsWidgetComponentDescriptor &widgetToken, widgets) {
   102         int uid = widgetToken.mUid;
   102         int uid = widgetToken.uid;
   103 
   103         addWidgetEntry(widgetToken, hsWidgetId(uid));        
   104         if (!hsWidgetExists(uid)) {
       
   105             // The given widget does not have a corresonding entry
       
   106             // in the databse, so such an entry needs do be created.
       
   107             addWidgetEntry(widgetToken);
       
   108         }
       
   109     }
   104     }
   110 
   105 
   111     delete rs;
   106     delete rs;
   112     qDebug("CaClientProxy::updateWidgets end");
   107     qDebug("CaClientProxy::updateWidgets end");
   113 }
   108 }
   114 
   109 
   115 /*!
   110 /*!
   116  Returns true if a widget with the given uid exists in the database.
   111  Returns true if a widget with the given uid exists in the database.
   117  */
   112  */
   118 void CaClientProxy::addWidgetEntry(const HsWidgetToken &widgetToken)
   113 void CaClientProxy::addWidgetEntry(const HsWidgetComponentDescriptor &widgetToken, 
   119 {
   114                                    int widgetId)
   120     QString description = widgetToken.mDescription;
   115 {
   121     QString iconUri = widgetToken.mIconUri;
   116     QString description = widgetToken.description;
   122     QString library = widgetToken.mLibrary;
   117     QString iconUri = widgetToken.iconUri;
   123     QString title = widgetToken.mTitle;
   118     QString library = widgetToken.library;
   124     int uid = widgetToken.mUid;
   119     QString title = widgetToken.title;
   125     QString uri = widgetToken.mUri;
   120     int uid = widgetToken.uid;
       
   121     QString uri = widgetToken.uri;
       
   122     QString previewImage = widgetToken.previewImage;
       
   123     QString translationFileName = widgetToken.translationFilename;
   126     QSqlDatabase db = dbConnection();
   124     QSqlDatabase db = dbConnection();
   127     QSqlQuery query(db);
   125     QSqlQuery query(db);
   128     QString hexUid;
   126     QString hexUid;
   129     hexUid.setNum(uid,16);
   127     hexUid.setNum(uid,16);
   130     QDir currentDir = QDir::current();
   128     QDir currentDir = QDir::current();
   131 
   129     if (widgetId == -1) {
   132     // Add icon.
   130         // Add icon.
   133     QString queryAddIcon =
   131         QString queryAddIcon =
   134         "INSERT INTO CA_ICON " \
   132             "INSERT INTO CA_ICON " \
   135         "(IC_FILENAME) " \
   133             "(IC_FILENAME) " \
   136         "VALUES " \
   134             "VALUES " \
   137         "(?)";
   135             "(?)";
   138 
   136 
   139     query.prepare(queryAddIcon);
   137         query.prepare(queryAddIcon);
   140     query.addBindValue(iconUri);
   138         query.addBindValue(iconUri);
   141     query.exec();
   139         query.exec();
   142     qDebug() << query.executedQuery();
   140         qDebug() << query.executedQuery();
   143 
   141 
   144     // Add entry.
   142         // Add entry.
   145     QString queryAddEntry =
   143         QString queryAddEntry =
   146         "INSERT INTO CA_ENTRY " \
   144             "INSERT INTO CA_ENTRY " \
   147         "(EN_TEXT, EN_DESCRIPTION, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID) " \
   145             "(EN_TEXT, EN_DESCRIPTION, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID) " \
   148         "VALUES " \
   146             "VALUES " \
   149         "(?, ?, 1, 'widget', last_insert_rowid())";
   147             "(?, ?, 1, 'widget', last_insert_rowid())";
   150 
   148 
   151     query.prepare(queryAddEntry);
   149         query.prepare(queryAddEntry);
   152     query.addBindValue(title);
   150         query.addBindValue(title);
   153     query.addBindValue(description);
   151         query.addBindValue(description);
   154     query.exec();
   152         query.exec();
   155     qDebug() << query.executedQuery();
   153         qDebug() << query.executedQuery();
   156 
   154 
   157     // Get last id
   155         // Get last id
   158     QString queryLastId = "SELECT last_insert_rowid() AS LAST_ID";
   156         QString queryLastId = "SELECT last_insert_rowid() AS LAST_ID";
   159     query.prepare(queryLastId);
   157         query.prepare(queryLastId);
   160     query.exec();
   158         query.exec();
   161     query.next();
   159         query.next();
   162     int lastId = query.value(query.record().indexOf("LAST_ID")).toInt();
   160         widgetId = query.value(query.record().indexOf("LAST_ID")).toInt();
       
   161     } else {
       
   162         // update entry.
       
   163         QString queryUpdateEntry =
       
   164             "UPDATE CA_ENTRY SET EN_TEXT = ?, EN_DESCRIPTION = ? WHERE ENTRY_ID = ?";
       
   165             
       
   166         query.prepare(queryUpdateEntry);
       
   167         query.addBindValue(title);
       
   168         query.addBindValue(description);
       
   169         query.addBindValue(widgetId);
       
   170         query.exec();
       
   171         qDebug() << query.executedQuery();
       
   172 
       
   173         QString queryUpdateIcon =
       
   174             "UPDATE CA_ICON SET IC_FILENAME = ? WHERE" \
       
   175             " ICON_ID = (SELECT EN_ICON_ID FROM CA_ENTRY WHERE ENTRY_ID = ?)";
       
   176             
       
   177         query.prepare(queryUpdateIcon);
       
   178         query.addBindValue(iconUri);
       
   179         query.addBindValue(widgetId);
       
   180         query.exec();
       
   181         qDebug() << query.executedQuery();
       
   182 
       
   183         // delete old attribute         
       
   184         query.prepare("DELETE FROM CA_ATTRIBUTE WHERE AT_ENTRY_ID = ?");
       
   185         query.addBindValue(widgetId);
       
   186         query.exec();
       
   187         qDebug() << query.executedQuery();
       
   188     }
   163 
   189 
   164     // Add attribute packageuid
   190     // Add attribute packageuid
   165     QString queryAddAttribute1 =
   191     QString queryAddAttribute1 =
   166         "INSERT INTO CA_ATTRIBUTE " \
   192         "INSERT INTO CA_ATTRIBUTE " \
   167         "(AT_ENTRY_ID, AT_NAME, AT_VALUE) " \
   193         "(AT_ENTRY_ID, AT_NAME, AT_VALUE) " \
   168         "VALUES " \
   194         "VALUES " \
   169         "(?, 'packageuid', ?)";
   195         "(?, 'packageuid', ?)";
   170 
   196 
   171     query.prepare(queryAddAttribute1);
   197     query.prepare(queryAddAttribute1);
   172     query.addBindValue(lastId);
   198     query.addBindValue(widgetId);
   173     query.addBindValue(hexUid);
   199     query.addBindValue(hexUid);
   174     query.exec();
   200     query.exec();
   175     qDebug() << query.executedQuery();
   201     qDebug() << query.executedQuery();
   176 
   202 
   177     // Add attribute widget uri
   203     // Add attribute widget uri
   180         "(AT_ENTRY_ID, AT_NAME, AT_VALUE) " \
   206         "(AT_ENTRY_ID, AT_NAME, AT_VALUE) " \
   181         "VALUES " \
   207         "VALUES " \
   182         "(?, 'widget:uri', ?)";
   208         "(?, 'widget:uri', ?)";
   183 
   209 
   184     query.prepare(queryAddAttribute2);
   210     query.prepare(queryAddAttribute2);
   185     query.addBindValue(lastId);
   211     query.addBindValue(widgetId);
   186     query.addBindValue(uri);
   212     query.addBindValue(uri);
   187     query.exec();
   213     query.exec();
   188     qDebug() << query.executedQuery();
   214     qDebug() << query.executedQuery();
   189 
   215 
   190     // Add attribute widget library
   216     // Add attribute widget library
   193         "(AT_ENTRY_ID, AT_NAME, AT_VALUE) " \
   219         "(AT_ENTRY_ID, AT_NAME, AT_VALUE) " \
   194         "VALUES " \
   220         "VALUES " \
   195         "(?, 'widget:library', ?)";
   221         "(?, 'widget:library', ?)";
   196 
   222 
   197     query.prepare(queryAddAttribute3);
   223     query.prepare(queryAddAttribute3);
   198     query.addBindValue(lastId);
   224     query.addBindValue(widgetId);
   199     query.addBindValue(library);
   225     query.addBindValue(library);
   200     query.exec();
   226     query.exec();
   201     qDebug() << query.executedQuery();
   227     qDebug() << query.executedQuery();
       
   228     
       
   229     // Add attribute preview image
       
   230     if (!previewImage.isEmpty()) {
       
   231         QString queryAddPreviewImage =
       
   232             "INSERT INTO CA_ATTRIBUTE " \
       
   233             "(AT_ENTRY_ID, AT_NAME, AT_VALUE) " \
       
   234             "VALUES " \
       
   235             "(?, 'preview_image_name', ?)";
       
   236 
       
   237         query.prepare(queryAddPreviewImage);
       
   238         query.addBindValue(widgetId);
       
   239         query.addBindValue(previewImage);
       
   240         query.exec();
       
   241         qDebug() << query.executedQuery();
       
   242     }
       
   243 
       
   244     // Add attribute widget:traslation_file
       
   245     if (!translationFileName.isEmpty()) {
       
   246         QString queryAddWidgetTranslationFile =
       
   247             "INSERT INTO CA_ATTRIBUTE " \
       
   248             "(AT_ENTRY_ID, AT_NAME, AT_VALUE) " \
       
   249             "VALUES " \
       
   250             "(?, 'widget:traslation_file', ?)";
       
   251 
       
   252         query.prepare(queryAddWidgetTranslationFile);
       
   253         query.addBindValue(widgetId);
       
   254         query.addBindValue(translationFileName);
       
   255         query.exec();
       
   256         qDebug() << query.executedQuery();
       
   257     }
   202 }
   258 }
   203 
   259 
   204 /*!
   260 /*!
   205  Returns true if a widget with the given uid exists in the database.
   261  Returns true if a widget with the given uid exists in the database.
   206  */
   262  */
   207 bool CaClientProxy::hsWidgetExists(int uid)
   263 int CaClientProxy::hsWidgetId(int uid)
   208 {
   264 {
   209     bool exists(false);
   265     int result(-1);
   210     QSqlDatabase db = dbConnection();
   266     QSqlDatabase db = dbConnection();
   211     QSqlQuery query(db);
   267     QSqlQuery query(db);
   212     QString hexUid;
   268     QString hexUid;
   213     hexUid.setNum(uid,16);
   269     hexUid.setNum(uid,16);
   214 
   270 
   221         "AT_VALUE LIKE ?";
   277         "AT_VALUE LIKE ?";
   222 
   278 
   223     query.prepare(queryString);
   279     query.prepare(queryString);
   224     query.addBindValue(hexUid);
   280     query.addBindValue(hexUid);
   225 
   281 
   226     if (query.exec() && query.next()) {
   282     if (query.exec() && query.next()) {        
   227         // Query returned a non empty result.
   283         result = query.value(query.record().indexOf("AT_ENTRY_ID")).toInt();
   228         exists = true;
   284     } 
   229     } else {
       
   230         // The widget with the given uid was not found.
       
   231         exists = false;
       
   232     }
       
   233 
       
   234     qDebug() << query.executedQuery();
   285     qDebug() << query.executedQuery();
   235 
   286 
   236     return exists;
   287     return result;
   237 }
   288 }
   238 
   289 
   239 //----------------------------------------------------------------------------
   290 //----------------------------------------------------------------------------
   240 //
   291 //
   241 //----------------------------------------------------------------------------
   292 //----------------------------------------------------------------------------
   698     ErrorCode error = UnknownErrorCode;
   749     ErrorCode error = UnknownErrorCode;
   699     if (success) {
   750     if (success) {
   700         error = NoErrorCode;
   751         error = NoErrorCode;
   701     }
   752     }
   702     return error;
   753     return error;
   703 }
       
   704 
       
   705 //----------------------------------------------------------------------------
       
   706 //
       
   707 //----------------------------------------------------------------------------
       
   708 ErrorCode CaClientProxy::executeCommand(const CaEntry &entry,
       
   709                                         const QString &command)
       
   710 {
       
   711     qDebug() << "CaClientProxy::executeCommand" << "entry id: "
       
   712              << entry.id() << "command: " << command;
       
   713 
       
   714     ErrorCode result = NoErrorCode;
       
   715     if (command != caCmdOpen && command != QString("remove")) {
       
   716         result = UnknownErrorCode;
       
   717     }
       
   718     return result;
       
   719 }
   754 }
   720 
   755 
   721 //----------------------------------------------------------------------------
   756 //----------------------------------------------------------------------------
   722 //
   757 //
   723 //----------------------------------------------------------------------------
   758 //----------------------------------------------------------------------------