#include <orm_generator_wrt.h>
#include <dpl/wrt-dao-ro/WrtDatabase.h>
-namespace WrtDB {
+namespace {
+ unsigned int seed = time(NULL);
+}
+namespace WrtDB {
//TODO in current solution in each getter there exists a check
//"IsWidgetInstalled". Maybe it should be verified, if it could be done
//differently (check in WidgetDAO constructor)
WidgetDAO::WidgetDAO(DPL::OptionalString widgetGUID) :
WidgetDAOReadOnly(WidgetDAOReadOnly::getHandle(widgetGUID))
-{
-}
+{}
WidgetDAO::WidgetDAO(DPL::String tzAppId) :
WidgetDAOReadOnly(WidgetDAOReadOnly::getHandle(tzAppId))
-{
-}
+{}
WidgetDAO::WidgetDAO(DbWidgetHandle handle) :
WidgetDAOReadOnly(handle)
-{
-}
+{}
WidgetDAO::~WidgetDAO()
-{
-}
-
-void WidgetDAO::removeProperty(
- const PropertyDAOReadOnly::WidgetPropertyKey &key)
-{
- Try {
- PropertyDAO::RemoveProperty(m_widgetHandle, key);
- }
- Catch(PropertyDAOReadOnly::Exception::ReadOnlyProperty){
- ReThrowMsg(WidgetDAO::Exception::DatabaseError,
- "Failure during removing property");
- }
-}
-
-void WidgetDAO::setProperty(
- const PropertyDAOReadOnly::WidgetPropertyKey &key,
- const PropertyDAOReadOnly::WidgetPropertyValue &value,
- bool readOnly)
-{
- Try {
- PropertyDAO::SetProperty(m_widgetHandle, key, value, readOnly);
- }
- Catch(PropertyDAOReadOnly::Exception::ReadOnlyProperty){
- ReThrowMsg(WidgetDAO::Exception::DatabaseError,
- "Failure during setting/updating property");
- }
-}
+{}
void WidgetDAO::setTizenAppId(const DPL::OptionalString& tzAppId)
{
if (!isWidgetInstalled(getHandle())) {
ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist,
- "Cannot find widget. Handle: " << getHandle());
+ "Cannot find widget. Handle: " << getHandle());
}
wrt::WidgetInfo::Row row;
ScopedTransaction transaction(&WrtDatabase::interface());
if (!isWidgetInstalled(getHandle())) {
ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist,
- "Cannot find widget. Handle: " << getHandle());
+ "Cannot find widget. Handle: " << getHandle());
}
WidgetSecuritySettings::Row row;
ScopedTransaction transaction(&WrtDatabase::interface());
if (!isWidgetInstalled(getHandle())) {
ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist,
- "Cannot find widget. Handle: " << getHandle());
+ "Cannot find widget. Handle: " << getHandle());
}
WidgetSecuritySettings::Row row;
ScopedTransaction transaction(&WrtDatabase::interface());
if (!isWidgetInstalled(getHandle())) {
ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist,
- "Cannot find widget. Handle: " << getHandle());
+ "Cannot find widget. Handle: " << getHandle());
}
WidgetSecuritySettings::Row row;
ScopedTransaction transaction(&WrtDatabase::interface());
if (!isWidgetInstalled(getHandle())) {
ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist,
- "Cannot find widget. Handle: " << getHandle());
+ "Cannot find widget. Handle: " << getHandle());
}
WidgetSecuritySettings::Row row;
ScopedTransaction transaction(&WrtDatabase::interface());
if (!isWidgetInstalled(getHandle())) {
ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist,
- "Cannot find widget. Handle: " << getHandle());
+ "Cannot find widget. Handle: " << getHandle());
}
WidgetSecuritySettings::Row row;
}
void WidgetDAO::registerWidget(
- const TizenAppId & tzAppId,
- const WidgetRegisterInfo &widgetRegInfo,
- const IWacSecurity &wacSecurity)
+ const TizenAppId & tzAppId,
+ const WidgetRegisterInfo &widgetRegInfo,
+ const IWacSecurity &wacSecurity)
{
LogDebug("Registering widget");
SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
{
- DPL::DB::ORM::wrt::ScopedTransaction transaction(&WrtDatabase::interface());
+ DPL::DB::ORM::wrt::ScopedTransaction transaction(
+ &WrtDatabase::interface());
registerWidgetInternal(tzAppId, widgetRegInfo, wacSecurity);
transaction.Commit();
}
SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to register widget")
}
-void WidgetDAO::registerWidget(
- WrtDB::DbWidgetHandle handle,
- const WidgetRegisterInfo &widgetRegInfo,
- const IWacSecurity &wacSecurity)
-{
- LogDebug("Registering widget");
- SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
- {
- DPL::DB::ORM::wrt::ScopedTransaction transaction(&WrtDatabase::interface());
- registerWidgetInternal(generateTizenId(), widgetRegInfo, wacSecurity, handle);
- transaction.Commit();
- }
- SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to register widget")
-}
-
DbWidgetHandle WidgetDAO::registerWidget(
- const WidgetRegisterInfo &pWidgetRegisterInfo,
- const IWacSecurity &wacSecurity)
+ const WidgetRegisterInfo &pWidgetRegisterInfo,
+ const IWacSecurity &wacSecurity)
{
//make it more precise due to very fast tests
struct timeval tv;
gettimeofday(&tv, NULL);
- srand(time(NULL) + tv.tv_usec);
DbWidgetHandle widgetHandle;
do {
- widgetHandle = rand();
+ widgetHandle = rand_r(&seed);
} while (isWidgetInstalled(widgetHandle));
- registerWidget(widgetHandle, pWidgetRegisterInfo, wacSecurity);
+ registerWidget(*pWidgetRegisterInfo.configInfo.tizenAppId,
+ pWidgetRegisterInfo,
+ wacSecurity);
return widgetHandle;
}
TizenAppId WidgetDAO::registerWidgetGeneratePkgId(
- const WidgetRegisterInfo &pWidgetRegisterInfo,
- const IWacSecurity &wacSecurity)
+ const WidgetRegisterInfo &pWidgetRegisterInfo,
+ const IWacSecurity &wacSecurity)
{
TizenAppId tzAppId = generatePkgId();
registerWidget(tzAppId, pWidgetRegisterInfo, wacSecurity);
}
void WidgetDAO::registerWidgetInternal(
- const TizenAppId & tzAppId,
- const WidgetRegisterInfo &widgetRegInfo,
- const IWacSecurity &wacSecurity,
- const DPL::Optional<DbWidgetHandle> handle)
+ const TizenAppId & tzAppId,
+ const WidgetRegisterInfo &widgetRegInfo,
+ const IWacSecurity &wacSecurity,
+ const DPL::Optional<DbWidgetHandle> handle)
{
//Register into WidgetInfo has to be first
//as all other tables depend upon that
- DbWidgetHandle widgetHandle = registerWidgetInfo(tzAppId, widgetRegInfo, wacSecurity, handle);
+ DbWidgetHandle widgetHandle = registerWidgetInfo(tzAppId,
+ widgetRegInfo,
+ wacSecurity,
+ handle);
registerWidgetExtendedInfo(widgetHandle, widgetRegInfo);
registerWidgetStartFile(widgetHandle, widgetRegInfo);
- PropertyDAO::RegisterProperties(widgetHandle, widgetRegInfo);
+ PropertyDAO::RegisterProperties(tzAppId, widgetRegInfo);
registerWidgetFeatures(widgetHandle, widgetRegInfo);
}
void WidgetDAO::registerOrUpdateWidget(
- const TizenAppId & widgetName,
- const WidgetRegisterInfo &widgetRegInfo,
- const IWacSecurity &wacSecurity)
+ const TizenAppId & widgetName,
+ const WidgetRegisterInfo &widgetRegInfo,
+ const IWacSecurity &wacSecurity)
{
LogDebug("Reregistering widget");
SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
{
- DPL::DB::ORM::wrt::ScopedTransaction transaction(&WrtDatabase::interface());
+ DPL::DB::ORM::wrt::ScopedTransaction transaction(
+ &WrtDatabase::interface());
unregisterWidgetInternal(widgetName);
registerWidgetInternal(widgetName, widgetRegInfo, wacSecurity);
}
void WidgetDAO::registerWidgetExtendedInfo(DbWidgetHandle widgetHandle,
- const WidgetRegisterInfo ®Info)
+ const WidgetRegisterInfo ®Info)
{
//Try and transaction not needed
using namespace DPL::DB::ORM;
using namespace DPL::DB::ORM::wrt;
-
WidgetExtendedInfo::Row row;
row.Set_app_id(widgetHandle);
// row.Set_share_href (DPL::FromUTF8String(regInfo.shareHref));
}
DbWidgetHandle WidgetDAO::registerWidgetInfo(
- const TizenAppId & tzAppId,
- const WidgetRegisterInfo ®Info,
- const IWacSecurity &wacSecurity,
- const DPL::Optional<DbWidgetHandle> handle)
+ const TizenAppId & tzAppId,
+ const WidgetRegisterInfo ®Info,
+ const IWacSecurity &wacSecurity,
+ const DPL::Optional<DbWidgetHandle> handle)
{
using namespace DPL::DB::ORM;
using namespace DPL::DB::ORM::wrt;
// Because of that, "Optional" is not used there
WidgetInfo::Row row;
- if(!!handle)
- {
+ if (!!handle) {
row.Set_app_id(*handle);
}
- if (regInfo.webAppType == APP_TYPE_UNKNOWN && regInfo.type !=
- APP_TYPE_UNKNOWN) {
- // TODO : regInfo.type is temporary code for security.
- // This code will be removed.
- row.Set_widget_type(regInfo.type.appType);
- } else {
- row.Set_widget_type(regInfo.webAppType.appType);
- }
+ row.Set_widget_type(regInfo.webAppType.appType);
+
row.Set_widget_id(widgetConfigurationInfo.widget_id);
row.Set_defaultlocale(widgetConfigurationInfo.defaultlocale);
row.Set_widget_version(widgetConfigurationInfo.version);
row.Set_author_name(widgetConfigurationInfo.authorName);
row.Set_author_email(widgetConfigurationInfo.authorEmail);
row.Set_author_href(widgetConfigurationInfo.authorHref);
+ row.Set_csp_policy(widgetConfigurationInfo.cspPolicy);
+ row.Set_csp_policy_report_only(widgetConfigurationInfo.cspPolicyReportOnly);
row.Set_base_folder(DPL::FromUTF8String(regInfo.baseFolder));
row.Set_webkit_plugins_required(widgetConfigurationInfo.flashNeeded);
row.Set_recognized(wacSecurity.isRecognized());
"Failed to register widget info.");
}
- if(!handle)
- {
+ if (!handle) {
//get autoincremented value of widgetHandle
WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface())
select->Where(Equals<WidgetInfo::tizen_appid>(tzAppId));
return select->GetSingleValue<WidgetInfo::app_id>();
- }
- else
- {
+ } else {
return *handle;
}
}
void WidgetDAO::registerWidgetLocalizedInfo(DbWidgetHandle widgetHandle,
- const WidgetRegisterInfo ®Info)
+ const WidgetRegisterInfo ®Info)
{
using namespace DPL::DB::ORM;
using namespace DPL::DB::ORM::wrt;
}
void WidgetDAO::registerWidgetIcons(DbWidgetHandle widgetHandle,
- const WidgetRegisterInfo ®Info)
+ const WidgetRegisterInfo ®Info)
{
using namespace DPL::DB::ORM;
using namespace DPL::DB::ORM::wrt;
-
FOREACH(i, regInfo.localizationData.icons)
{
wrt::WidgetIcon::icon_id::ColumnType icon_id;
WRT_DB_INSERT(insert, wrt::WidgetIcon, &WrtDatabase::interface())
insert->Values(row);
- icon_id = insert->Execute();
+ icon_id = static_cast<int>(insert->Execute());
}
FOREACH(j, i->availableLocales)
}
void WidgetDAO::registerWidgetStartFile(DbWidgetHandle widgetHandle,
- const WidgetRegisterInfo ®Info)
+ const WidgetRegisterInfo ®Info)
{
using namespace DPL::DB::ORM;
using namespace DPL::DB::ORM::wrt;
-
FOREACH(i, regInfo.localizationData.startFiles)
{
WidgetStartFile::start_file_id::ColumnType startFileID;
WRT_DB_INSERT(insert, WidgetStartFile, &WrtDatabase::interface())
insert->Values(row);
- startFileID = insert->Execute();
+ startFileID = static_cast<int>(insert->Execute());
}
FOREACH(j, i->propertiesForLocales)
}
void WidgetDAO::registerWidgetFeatures(DbWidgetHandle widgetHandle,
- const WidgetRegisterInfo ®Info)
+ const WidgetRegisterInfo ®Info)
{
using namespace DPL::DB::ORM;
const ConfigParserData& widgetConfigurationInfo = regInfo.configInfo;
-
FOREACH(pWidgetFeature, widgetConfigurationInfo.featuresList)
{
wrt::WidgetFeature::Row widgetFeature;
{
WRT_DB_INSERT(insert, wrt::WidgetFeature, &WrtDatabase::interface())
insert->Values(widgetFeature);
- widgetFeatureID = insert->Execute();
+ widgetFeatureID = static_cast<int>(insert->Execute());
}
// Insert into table FeatureParam
}
}
-void WidgetDAO::updateFeatureRejectStatus(const DbWidgetFeature &widgetFeature){
- // This function could be merged with registerWidgetFeature but it requires desing change:
- // 1. Check "ace step" in installer must be done before "update database step"
+void WidgetDAO::updateFeatureRejectStatus(const DbWidgetFeature &widgetFeature)
+{
+ // This function could be merged with registerWidgetFeature but it requires
+ // desing change:
+ // 1. Check "ace step" in installer must be done before "update database
+ // step"
// And:
// ConfigurationParserData shouldn't be called "ParserData" any more.
using namespace DPL::DB::ORM;
}
void WidgetDAO::registerWidgetWindowModes(DbWidgetHandle widgetHandle,
- const WidgetRegisterInfo ®Info)
+ const WidgetRegisterInfo ®Info)
{
using namespace DPL::DB::ORM;
using namespace DPL::DB::ORM::wrt;
const ConfigParserData& widgetConfigurationInfo = regInfo.configInfo;
-
FOREACH(i, widgetConfigurationInfo.windowModes)
{
wrt::WidgetWindowModes::Row windowMode;
}
void WidgetDAO::registerWidgetWarpInfo(DbWidgetHandle widgetHandle,
- const WidgetRegisterInfo ®Info)
+ const WidgetRegisterInfo ®Info)
{
using namespace DPL::DB::ORM;
using namespace DPL::DB::ORM::wrt;
const ConfigParserData& widgetConfigurationInfo = regInfo.configInfo;
-
FOREACH(AccIt, widgetConfigurationInfo.accessInfoSet)
{
WidgetWARPInfo::Row row;
}
void WidgetDAO::registerWidgetCertificates(DbWidgetHandle widgetHandle,
- const IWacSecurity &wacSecurity)
+ const IWacSecurity &wacSecurity)
{
using namespace DPL::DB::ORM;
using namespace DPL::DB::ORM::wrt;
-
FOREACH(it, wacSecurity.getCertificateList())
{
WidgetCertificateFingerprint::Row row;
}
}
-void WidgetDAO::registerCertificatesChains(DbWidgetHandle widgetHandle,
- CertificateSource certificateSource,
- const CertificateChainList &certificateChainList)
+void WidgetDAO::registerCertificatesChains(
+ DbWidgetHandle widgetHandle,
+ CertificateSource certificateSource,
+ const CertificateChainList &
+ certificateChainList)
{
using namespace DPL::DB::ORM;
using namespace DPL::DB::ORM::wrt;
}
void WidgetDAO::registerWidgetSettings(DbWidgetHandle widgetHandle,
- const WidgetRegisterInfo ®Info)
+ const WidgetRegisterInfo ®Info)
{
using namespace DPL::DB::ORM;
using namespace DPL::DB::ORM::wrt;
}
}
+void WidgetDAO::insertApplicationServiceInfo(DbWidgetHandle handle,
+ DPL::String src,
+ DPL::String operation,
+ DPL::String scheme,
+ DPL::String mime)
+{
+ using namespace DPL::DB::ORM;
+ using namespace DPL::DB::ORM::wrt;
+
+ ApplicationServiceInfo::Row row;
+
+ row.Set_app_id(handle);
+ row.Set_src(src);
+ row.Set_operation(operation);
+ row.Set_scheme(scheme);
+ row.Set_mime(mime);
+
+ DO_INSERT(row, ApplicationServiceInfo);
+}
+
void WidgetDAO::registerAppService(DbWidgetHandle widgetHandle,
const WidgetRegisterInfo ®Info)
{
using namespace DPL::DB::ORM::wrt;
const ConfigParserData& widgetConfigurationInfo = regInfo.configInfo;
+ // appServiceList
FOREACH(ASIt, widgetConfigurationInfo.appServiceList)
{
ApplicationServiceInfo::Row row;
row.Set_operation(ASIt->m_operation);
row.Set_scheme(ASIt->m_scheme);
row.Set_mime(ASIt->m_mime);
+ row.Set_disposition(static_cast<int>(ASIt->m_disposition));
DO_INSERT(row, ApplicationServiceInfo)
}
+
+ // appControlList
+ FOREACH(appControl_it, widgetConfigurationInfo.appControlList)
+ {
+ DPL::String src = appControl_it->m_src;
+ DPL::String operation = appControl_it->m_operation;
+
+ if (!appControl_it->m_uriList.empty())
+ {
+ FOREACH(uri_it, appControl_it->m_uriList)
+ {
+ DPL::String scheme = *uri_it;
+
+ if (!appControl_it->m_mimeList.empty())
+ {
+ FOREACH(mime_it, appControl_it->m_mimeList)
+ {
+ DPL::String mime = *mime_it;
+
+ insertApplicationServiceInfo(widgetHandle, src, operation, scheme, mime);
+ }
+ }
+ else
+ {
+ DPL::String mime = L"";
+
+ insertApplicationServiceInfo(widgetHandle, src, operation, scheme, mime);
+ }
+ }
+ }
+ else
+ {
+ DPL::String scheme = L"";
+
+ if (!appControl_it->m_mimeList.empty())
+ {
+ FOREACH(mime_it, appControl_it->m_mimeList)
+ {
+ DPL::String mime = *mime_it;
+
+ insertApplicationServiceInfo(widgetHandle, src, operation, scheme, mime);
+ }
+ }
+ else
+ {
+ DPL::String mime = L"";
+
+ insertApplicationServiceInfo(widgetHandle, src, operation, scheme, mime);
+ }
+ }
+ }
}
void WidgetDAO::registerEncryptedResouceInfo(DbWidgetHandle widgetHandle,
- const WidgetRegisterInfo ®Info)
+ const WidgetRegisterInfo ®Info)
{
using namespace DPL::DB::ORM;
using namespace DPL::DB::ORM::wrt;
}
}
-void WidgetDAO::registerExternalLocations(DbWidgetHandle widgetHandle,
- const ExternalLocationList & externals)
+void WidgetDAO::registerExternalLocations(
+ DbWidgetHandle widgetHandle,
+ const ExternalLocationList &
+ externals)
{
SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
{
using namespace DPL::DB::ORM;
using namespace DPL::DB::ORM::wrt;
- DPL::DB::ORM::wrt::ScopedTransaction transaction(&WrtDatabase::interface());
+ DPL::DB::ORM::wrt::ScopedTransaction transaction(
+ &WrtDatabase::interface());
LogDebug("Inserting external files for widgetHandle: " << widgetHandle);
FOREACH(it, externals)
{
LogDebug("Unregistering widget from DB. tzAppId: " << tzAppId);
SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
{
- DPL::DB::ORM::wrt::ScopedTransaction transaction(&WrtDatabase::interface());
+ DPL::DB::ORM::wrt::ScopedTransaction transaction(
+ &WrtDatabase::interface());
unregisterWidgetInternal(tzAppId);
transaction.Commit();
}
}
void WidgetDAO::unregisterWidgetInternal(
- const TizenAppId & tzAppId)
+ const TizenAppId & tzAppId)
{
using namespace DPL::DB::ORM;
using namespace DPL::DB::ORM::wrt;
#undef SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN
#undef SQL_CONNECTION_EXCEPTION_HANDLER_END
-
} // namespace WrtDB