Update wrt-commons_0.2.54
[framework/web/wrt-commons.git] / modules / widget_dao / dao / widget_dao_read_only.cpp
index 02ebd28..a89233b 100644 (file)
@@ -99,6 +99,11 @@ WidgetDAOReadOnly::WidgetDAOReadOnly(DbWidgetHandle widgetHandle) :
 {
 }
 
+WidgetDAOReadOnly::WidgetDAOReadOnly(DPL::OptionalString widgetGUID) :
+    m_widgetHandle(WidgetDAOReadOnly::getHandle(widgetGUID))
+{
+}
+
 WidgetDAOReadOnly::~WidgetDAOReadOnly()
 {
 }
@@ -630,6 +635,31 @@ time_t WidgetDAOReadOnly::getInstallTime() const
     SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get widdget install time")
 }
 
+DPL::OptionalString WidgetDAOReadOnly::getSplashImgSrc() const
+{
+    SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
+    {
+        using namespace DPL::DB::ORM;
+        using namespace DPL::DB::ORM::wrt;
+        WRT_DB_SELECT(select, WidgetExtendedInfo, &WrtDatabase::interface())
+        select->Where(Equals<WidgetExtendedInfo::app_id>(m_widgetHandle));
+
+        WidgetExtendedInfo::Select::RowList rows = select->GetRowList();
+        if (rows.empty()) {
+            ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist,
+                     "Cannot find widget. Handle: " << m_widgetHandle);
+        }
+
+        DPL::OptionalString value = rows.front().Get_splash_img_src();
+        if (value.IsNull()) {
+            return DPL::OptionalString::Null;
+        }
+
+        return DPL::OptionalString(getPath() + *value);
+    }
+    SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get splash image path")
+}
+
 WidgetDAOReadOnly::WidgetLocalizedIconList WidgetDAOReadOnly::getLocalizedIconList() const
 {
     //TODO check widget existance??
@@ -835,10 +865,14 @@ FingerPrintList WidgetDAOReadOnly::getKeyFingerprints(
         FingerPrintList keys;
         FOREACH(it, rows)
         {
-            DPL::Optional<DPL::String> md5 = it->Get_md5_fingerprint();
-            keys.push_back(md5.IsNull() ? "" : DPL::ToUTF8String(*md5));
             DPL::Optional<DPL::String> sha1 = it->Get_sha1_fingerprint();
-            keys.push_back(sha1.IsNull() ? "" : DPL::ToUTF8String(*sha1));
+            if (!sha1.IsNull()) {
+                keys.push_back(DPL::ToUTF8String(*sha1));
+            }
+            DPL::Optional<DPL::String> md5 = it->Get_md5_fingerprint();
+            if (!md5.IsNull()) {
+                keys.push_back(DPL::ToUTF8String(*md5));
+            }
         }
         return keys;
     }
@@ -1044,6 +1078,32 @@ void WidgetDAOReadOnly::getAppServiceList(
     SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get access host list")
 }
 
+PkgType WidgetDAOReadOnly::getPkgType() const
+{
+    WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle);
+    DPL::OptionalInt result = row.Get_pkg_type();
+    return PkgType(static_cast<PackagingType>(*result));
+}
+
+void WidgetDAOReadOnly::getEncryptedFileList(EncryptedFileList& filesList) const
+{
+    //TODO check widget existance
+    using namespace DPL::DB::ORM;
+    using namespace DPL::DB::ORM::wrt;
+    WRT_DB_SELECT(select, EncryptedResourceList, &WrtDatabase::interface())
+    select->Where(Equals<EncryptedResourceList::app_id>(m_widgetHandle));
+
+    typedef std::list<DPL::DB::ORM::wrt::EncryptedResourceList::Row> RowList;
+    RowList list = select->GetRowList();
+
+    FOREACH(it, list) {
+        EncryptedFileInfo info;
+        info.fileName = it->Get_resource();
+        info.fileSize = it->Get_size();
+        filesList.insert(info);
+    }
+}
+
 #undef SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
 #undef SQL_CONNECTION_EXCEPTION_HANDLER_END
 #undef CHECK_WIDGET_EXISTENCE