2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
18 * @file DatabaseManager.cpp
19 * @brief This is the implementation file for %DatabaseManager class.
22 #include <unique_ptr.h>
24 #include <FIoDatabase.h>
25 #include <FIoDbStatement.h>
26 #include <FIoDbEnumerator.h>
29 #include <FAppPkg_PackageManagerImpl.h>
31 #include "DatabaseManager.h"
32 #include "SmackManager.h"
34 using namespace Tizen::App;
35 using namespace Tizen::App::Package;
36 using namespace Tizen::Base;
37 using namespace Tizen::Base::Collection;
38 using namespace Tizen::Io;
40 DatabaseManager::DatabaseManager(void)
42 CreatePackageTables();
45 DatabaseManager::~DatabaseManager(void)
50 DatabaseManager::RegisterPackageInfo(InstallationContext* pContext) const
56 result r = db.Construct(PACKAGE_DATABASE_FILE_NAME, "r+");
57 TryReturn(r == E_SUCCESS, false, "db.Construct failed. [%s]", GetErrorMessage(r));
59 query.Format(1024, L"INSERT INTO PkgInfo "
60 "(PKG_ID, PKG_SECRET, PKG_VERSION, PKG_TYPE, PKG_MIMETYPE, PKG_APIVERSION, PKG_NAME, PKG_VENDOR, PKG_DESCRIPTION, PKG_URL, PKG_CID, PKG_READONLY_SIZE, PKG_DATA_SIZE, PKG_PARENT_ID,"
61 " PKG_ATTRIBUTE, PKG_ROOTPATH, PKG_STORAGE_TYPE, PKG_INSTALLATION_DATE, PKG_STATE, PKG_INITIATOR) "
62 "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
64 std::unique_ptr< DbStatement > pStmt(_PackageManagerImpl::CreateStatementN(db, query));
65 TryReturn(pStmt, false, "CreateStatementN() failed. [%s]", GetErrorMessage(GetLastResult()));
67 PackageId packageId = pContext->__packageId;
68 String version = pContext->__version;
69 String apiVersion = pContext->__apiVersion;
70 String name = pContext->__displayName;
71 String rootPath = pContext->__rootPath;
73 if (!packageId.IsEmpty())
75 r = pStmt.get()->BindString(0, packageId);
76 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
79 if (!version.IsEmpty())
81 r = pStmt->BindString(2, version);
82 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
85 if (!apiVersion.IsEmpty())
87 r = pStmt->BindString(5, apiVersion);
88 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
93 r = pStmt->BindString(6, name);
94 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
97 if (!rootPath.IsEmpty())
99 r = pStmt->BindString(15, rootPath);
100 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
103 std::unique_ptr< DbEnumerator > pEnum(_PackageManagerImpl::ExecuteStatementN(db, pStmt.get()));
104 TryReturn(!IsFailed(GetLastResult()), false, "ExecuteStatementN() failed. [%s]", GetErrorMessage(GetLastResult()));
106 res = RegisterPrivilegeInfo(pContext, db);
107 TryReturn(res == true, false, "RegisterPrivilegeInfo() failed. [%s]", GetErrorMessage(GetLastResult()));
109 res = RegisterAppInfoList(pContext, db);
110 TryReturn(res == true, false, "RegisterAppInfoList() failed. [%s]", GetErrorMessage(GetLastResult()));
116 DatabaseManager::RegisterPrivilegeInfo(InstallationContext* pContext, Database& db) const
118 result r = E_SUCCESS;
120 PackageId packageId = pContext->__packageId;
122 query.Format(1024, L"INSERT INTO PkgPrivileges (ID, PRIVILEGES, HMAC_PPRIVILEGES, CERTIFICATE_TYPE, STR_PRIVILEGES) "
123 "VALUES ((SELECT PkgInfo.UNIQUE_ID FROM PkgInfo WHERE PkgInfo.PKG_ID = '%ls'), ?, ?, ?, ?)", packageId.GetPointer());
125 std::unique_ptr< DbStatement > pStmt(_PackageManagerImpl::CreateStatementN(db, query));
126 TryReturn(pStmt, false, "CreateStatementN() failed. [%s]", GetErrorMessage(GetLastResult()));
128 String privileges = pContext->__privileges;
129 String hmacPrivileges = pContext->__hmacPrivileges;
130 int certType = pContext->__certType;
131 ArrayList* pStringPrivilegeList = pContext->__pStringPrivilegeList;
133 if (!privileges.IsEmpty())
135 r = pStmt->BindString(0, privileges);
136 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
139 if (!hmacPrivileges.IsEmpty())
141 r = pStmt->BindString(1, hmacPrivileges);
142 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
147 r = pStmt->BindInt(2, certType);
148 TryReturn(r == E_SUCCESS, false, "BindInt() failed. [%s]", GetErrorMessage(r));
151 if (pStringPrivilegeList != null)
153 IEnumerator* pEnum = pStringPrivilegeList->GetEnumeratorN();
155 while(pEnum->MoveNext() == E_SUCCESS)
157 MergedString.Append(*(static_cast<String*>(pEnum->GetCurrent())));
158 MergedString.Append(L"#");
162 r = pStmt->BindString(3, MergedString);
163 TryReturn(r == E_SUCCESS, false, "BindInt() failed. [%s]", GetErrorMessage(r));
166 std::unique_ptr< DbEnumerator > pEnum(_PackageManagerImpl::ExecuteStatementN(db, pStmt.get()));
167 TryReturn(!IsFailed(GetLastResult()), false, "ExecuteStatementN() failed. [%s]", GetErrorMessage(GetLastResult()));
173 DatabaseManager::RegisterAppInfoList(InstallationContext* pContext, Database& db) const
175 result r = E_SUCCESS;
179 IListT<AppData*>* pAppDataList = pContext->__pAppDataList;
180 TryReturn(pAppDataList, false, "pAppDataList is null");
182 int count = pAppDataList->GetCount();
184 for (int i = 0; i < count; i++)
186 AppData* pAppData = null;
187 pAppDataList->GetAt(i, pAppData);
191 String name = pAppData->__name;
192 String main = pAppData->__main;
193 String mainmenuIcon = pAppData->__mainmenuIcon;
194 String settingIcon = pAppData->__settingIcon;
195 String notificationIcon = pAppData->__notificationIcon;
196 int feature = pAppData->__feature;
197 String appId = pAppData->__appId;
198 String type = pAppData->__type;
200 query.Format(1024, L"INSERT INTO AppInfo "
201 "(ID, APP_NAME, APP_DEFAULT, APP_MAINMENU_ICON, APP_SETTING_ICON, APP_TICKER_ICON, APP_QUICKPANEL_ICON, APP_LAUNCHIMAGE_ICON, APP_FEATURE, PACKAGE_NAME, APP_TYPE) "
202 "VALUES ((SELECT PkgInfo.UNIQUE_ID FROM PkgInfo WHERE PkgInfo.PKG_ID = '%ls'),?,?,?,?,?,?,?,?,?,?)", pContext->__packageId.GetPointer());
204 std::unique_ptr< DbStatement > pStmt(_PackageManagerImpl::CreateStatementN(db, query));
205 TryReturn(pStmt, false, "CreateStatementN() failed. [%s]", GetErrorMessage(GetLastResult()));
209 r = pStmt->BindString(0, name);
210 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
215 r = pStmt->BindString(1, main);
216 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
219 if (!mainmenuIcon.IsEmpty())
221 r = pStmt->BindString(2, mainmenuIcon);
222 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
225 if (!settingIcon.IsEmpty())
227 r = pStmt->BindString(3, settingIcon);
228 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
231 if (!notificationIcon.IsEmpty())
233 r = pStmt->BindString(5, notificationIcon);
234 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
239 r = pStmt->BindInt(7, feature);
240 TryReturn(r == E_SUCCESS, false, "BindInt() failed. [%s]", GetErrorMessage(r));
243 if (!appId.IsEmpty())
245 r = pStmt->BindString(8, appId);
246 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
251 r = pStmt->BindString(9, type);
252 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
255 std::unique_ptr< DbEnumerator > pEnum(_PackageManagerImpl::ExecuteStatementN(db, pStmt.get()));
256 TryReturn(!IsFailed(GetLastResult()), false, "ExecuteStatementN() failed. [%s]", GetErrorMessage(GetLastResult()));
258 if (pAppData->__pLaunchConditionList)
260 res = RegisterLaunchConditionList(pAppData, db);
261 TryReturn(res == true, false, "RegisterLaunchConditionList() failed. [%s]", GetErrorMessage(r));
264 if (pAppData->__pFeatureList)
266 res = RegisterAppFeatureList(pAppData, db);
267 TryReturn(res == true, false, "RegisterAppFeatureList() failed. [%s]", GetErrorMessage(r));
270 if (pAppData->__pDataControlList)
272 res = RegisterDataControlList(pAppData, db);
273 TryReturn(res == true, false, "RegisterDataControlList() failed. [%s]", GetErrorMessage(r));
282 DatabaseManager::RegisterLaunchConditionList(AppData* pAppData, Database& db) const
284 TryReturn(pAppData, E_SYSTEM, "pAppData is null.");
285 TryReturn(pAppData->__pLaunchConditionList, E_SYSTEM, "__pLaunchConditionList is null.");
287 result r = E_SUCCESS;
288 MultiHashMap* pList = pAppData->__pLaunchConditionList;
290 std::unique_ptr< IMapEnumerator > pEnum(pList->GetMapEnumeratorN());
291 TryReturn(pEnum, false, "GetMapEnumeratorN() failed. [%s]", GetErrorMessage(GetLastResult()));
293 while (pEnum->MoveNext() == E_SUCCESS)
295 String* pKey = static_cast< String* > (pEnum->GetKey());
296 TryReturn(pEnum, false, "GetKey() failed. [%s]", GetErrorMessage(GetLastResult()));
298 String* pValue = static_cast< String* > (pEnum->GetValue());
299 TryReturn(pEnum, false, "GetValue() failed. [%s]", GetErrorMessage(GetLastResult()));
302 query.Format(1024, L"INSERT INTO LaunchCondition (ID, NAME, VALUE) VALUES ((SELECT AppInfo.UNIQUE_ID FROM AppInfo WHERE AppInfo.PACKAGE_NAME = '%ls'),?,?)", pAppData->__appId.GetPointer());
304 std::unique_ptr< DbStatement > pStmt(_PackageManagerImpl::CreateStatementN(db, query));
305 TryReturn(pStmt, false, "CreateStatementN() failed. [%s]", GetErrorMessage(GetLastResult()));
307 if (!(pKey->IsEmpty()))
309 r = pStmt->BindString(0, *pKey);
310 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
313 if (!(pValue->IsEmpty()))
315 r = pStmt->BindString(1, *pValue);
316 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
319 std::unique_ptr< DbEnumerator > pEnum(_PackageManagerImpl::ExecuteStatementN(db, pStmt.get()));
320 TryReturn(!IsFailed(GetLastResult()), false, "ExecuteStatementN() failed. [%s]", GetErrorMessage(GetLastResult()));
327 DatabaseManager::RegisterAppFeatureList(AppData* pAppData, Database& db) const
329 TryReturn(pAppData, E_SYSTEM, "pAppData is null.");
330 TryReturn(pAppData->__pFeatureList, E_SYSTEM, "__pFeatureList is null.");
332 result r = E_SUCCESS;
333 HashMap* pList = pAppData->__pFeatureList;
335 std::unique_ptr< IMapEnumerator > pEnum(pList->GetMapEnumeratorN());
336 TryReturn(pEnum, false, "GetMapEnumeratorN() failed. [%s]", GetErrorMessage(GetLastResult()));
338 while (pEnum->MoveNext() == E_SUCCESS)
340 String* pKey = static_cast< String* > (pEnum->GetKey());
341 TryReturn(pEnum, false, "GetKey() failed. [%s]", GetErrorMessage(GetLastResult()));
343 String* pValue = static_cast< String* > (pEnum->GetValue());
344 TryReturn(pEnum, false, "GetValue() failed. [%s]", GetErrorMessage(GetLastResult()));
347 query.Format(1024, L"INSERT INTO AppFeature (ID, NAME, VALUE) VALUES ((SELECT AppInfo.UNIQUE_ID FROM AppInfo WHERE AppInfo.PACKAGE_NAME = '%ls'),?,?)", pAppData->__appId.GetPointer());
349 std::unique_ptr< DbStatement > pStmt(_PackageManagerImpl::CreateStatementN(db, query));
350 TryReturn(pStmt, false, "CreateStatementN() failed. [%s]", GetErrorMessage(GetLastResult()));
352 if (!(pKey->IsEmpty()))
354 r = pStmt->BindString(0, *pKey);
355 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
358 if (!(pValue->IsEmpty()))
360 r = pStmt->BindString(1, *pValue);
361 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
364 std::unique_ptr< DbEnumerator > pEnum(_PackageManagerImpl::ExecuteStatementN(db, pStmt.get()));
365 TryReturn(!IsFailed(GetLastResult()), false, "ExecuteStatementN() failed. [%s]", GetErrorMessage(GetLastResult()));
372 DatabaseManager::RegisterDataControlList(AppData* pAppData, Database& db) const
374 TryReturn(pAppData, E_SYSTEM, "pAppData is null.");
375 TryReturn(pAppData->__pDataControlList, E_SYSTEM, "__pDataControlList is null.");
377 result r = E_SUCCESS;
379 IListT<DataControlInfo*>* pDataControlList = pAppData->__pDataControlList;
380 TryReturn(pDataControlList, false, "pDataControlList is null.");
382 for (int i = 0; i < pDataControlList->GetCount(); i++)
384 DataControlInfo* pDataControlInfo = null;
385 pDataControlList->GetAt(i, pDataControlInfo);
386 TryReturn(pDataControlInfo, false, "pDataControlInfo is null.");
388 String providerId = pDataControlInfo->__providerId;
389 IListT<DataControlType*>* pTypeList = pDataControlInfo->__pControlTypeList;
390 TryReturn(pTypeList, false, "pTypeList is null.");
392 for (int j = 0; j < pTypeList->GetCount(); j++)
394 DataControlType* pDataControlType = null;
395 pTypeList->GetAt(j, pDataControlType);
396 TryReturn(pDataControlType, false, "pDataControlType is null.");
398 String access = pDataControlType->__access;
399 String type = pDataControlType->__type;
402 query.Format(1024, L"INSERT INTO DataControl (ID, PROVIDER_ID, TYPE, ACCESS) VALUES ((SELECT AppInfo.UNIQUE_ID FROM AppInfo WHERE AppInfo.PACKAGE_NAME = '%ls'),?,?,?)", pAppData->__appId.GetPointer());
404 std::unique_ptr< DbStatement > pStmt(_PackageManagerImpl::CreateStatementN(db, query));
405 TryReturn(pStmt, false, "CreateStatementN() failed. [%s]", GetErrorMessage(GetLastResult()));
407 if (!providerId.IsEmpty())
409 r = pStmt->BindString(0, providerId);
410 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
415 r = pStmt->BindString(1, type);
416 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
419 if (!access.IsEmpty())
421 r = pStmt->BindString(2, access);
422 TryReturn(r == E_SUCCESS, false, "BindString() failed. [%s]", GetErrorMessage(r));
425 std::unique_ptr< DbEnumerator > pEnum(_PackageManagerImpl::ExecuteStatementN(db, pStmt.get()));
426 TryReturn(!IsFailed(GetLastResult()), false, "ExecuteStatementN() failed. [%s]", GetErrorMessage(GetLastResult()));
434 DatabaseManager::UnregisterPackageInfo(InstallationContext* pContext) const
438 PackageId packageId = pContext->__packageId;
440 result r = db.Construct(L"/opt/usr/dbspace/.app-package.db", "r+");
441 TryReturn(r == E_SUCCESS, false, "db.Construct failed. [%s]", GetErrorMessage(r));
444 query.Format(1024, L"DELETE FROM DataControl WHERE DataControl.ID IN "
445 "(SELECT AppInfo.UNIQUE_ID FROM PkgInfo, AppInfo "
446 "WHERE AppInfo.ID = PkgInfo.UNIQUE_ID and PkgInfo.PKG_ID = '%ls')", packageId.GetPointer());
447 r = db.ExecuteSql(query, true);
450 AppLog("ExecuteSql() failed. [%ls][%s]", query.GetPointer(), GetErrorMessage(r));
455 query.Format(1024, L"DELETE FROM LaunchCondition WHERE LaunchCondition.ID IN "
456 "(SELECT AppInfo.UNIQUE_ID FROM PkgInfo, AppInfo "
457 "WHERE AppInfo.ID = PkgInfo.UNIQUE_ID and PkgInfo.PKG_ID = '%ls')", packageId.GetPointer());
458 r = db.ExecuteSql(query, true);
461 AppLog("ExecuteSql() failed. [%ls][%s]", query.GetPointer(), GetErrorMessage(r));
466 query.Format(1024, L"DELETE FROM Notification WHERE Notification.ID IN "
467 "(SELECT AppInfo.UNIQUE_ID FROM PkgInfo, AppInfo "
468 "WHERE AppInfo.ID = PkgInfo.UNIQUE_ID and PkgInfo.PKG_ID = '%ls')", packageId.GetPointer());
469 r = db.ExecuteSql(query, true);
472 AppLog("ExecuteSql() failed. [%ls][%s]", query.GetPointer(), GetErrorMessage(r));
477 query.Format(1024, L"DELETE FROM AppFeature WHERE AppFeature.ID IN "
478 "(SELECT AppInfo.UNIQUE_ID FROM PkgInfo, AppInfo "
479 "WHERE AppInfo.ID = PkgInfo.UNIQUE_ID and PkgInfo.PKG_ID = '%ls')", packageId.GetPointer());
480 r = db.ExecuteSql(query, true);
483 AppLog("ExecuteSql() failed. [%ls][%s]", query.GetPointer(), GetErrorMessage(r));
488 query.Format(1024, L"DELETE FROM AppInfo WHERE AppInfo.ID IN "
489 "(SELECT PkgInfo.UNIQUE_ID FROM PkgInfo, AppInfo "
490 "WHERE PkgInfo.UNIQUE_ID = AppInfo.ID and PkgInfo.PKG_ID = '%ls')", packageId.GetPointer());
491 r = db.ExecuteSql(query, true);
494 AppLog("ExecuteSql() failed. [%ls][%s]", query.GetPointer(), GetErrorMessage(r));
499 query.Format(1024, L"DELETE FROM PkgPrivileges WHERE PkgPrivileges.ID IN "
500 "(SELECT PkgInfo.UNIQUE_ID FROM PkgInfo, PkgPrivileges "
501 "WHERE PkgInfo.UNIQUE_ID = PkgPrivileges.ID and PkgInfo.PKG_ID = '%ls')", packageId.GetPointer());
502 r = db.ExecuteSql(query, true);
505 AppLog("ExecuteSql() failed. [%ls][%s]", query.GetPointer(), GetErrorMessage(r));
510 query.Format(1024, L"DELETE FROM PkgInfo WHERE PKG_ID = '%ls'", packageId.GetPointer());
511 r = db.ExecuteSql(query, true);
514 AppLog("ExecuteSql() failed. [%ls][%s]", query.GetPointer(), GetErrorMessage(r));
522 DatabaseManager::CreatePackageTables(void) const
524 if (File::IsFileExist(PACKAGE_DATABASE_FILE_NAME) == true)
529 result r = E_SUCCESS;
533 r = db.Construct(PACKAGE_DATABASE_FILE_NAME, true);
534 TryReturn(r == E_SUCCESS, false, "db.Construct is failed. [%s]", GetErrorMessage(r));
537 createQuery.Format(1024, L"CREATE TABLE IF NOT EXISTS PkgInfo"
538 "( UNIQUE_ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,"
544 "PKG_APIVERSION TEXT,"
547 "PKG_DESCRIPTION TEXT,"
550 "PKG_READONLY_SIZE INTEGER,"
551 "PKG_DATA_SIZE INTEGER,"
552 "PKG_PARENT_ID TEXT,"
553 "PKG_ATTRIBUTE INTEGER,"
555 "PKG_STORAGE_TYPE INTEGER,"
556 "PKG_INSTALLATION_DATE TEXT,"
558 "PKG_INITIATOR INTEGER )");
559 r = db.ExecuteSql(createQuery, true);
560 TryReturn(r == E_SUCCESS, false, "db.ExecuteSql is failed. [%s]", GetErrorMessage(r));
564 createQuery.Format(1024, L"CREATE TABLE IF NOT EXISTS PkgPrivileges"
567 "HMAC_PPRIVILEGES TEXT,"
568 "CERTIFICATE_TYPE INTEGER,"
569 "STR_PRIVILEGES TEXT )");
570 r = db.ExecuteSql(createQuery, true);
571 TryReturn(r == E_SUCCESS, false, "db.ExecuteSql is failed. [%s]", GetErrorMessage(r));
575 createQuery.Format(1024, L"CREATE TABLE IF NOT EXISTS PkgIntegrity"
578 "HMAC_APPSECRET TEXT,"
580 "SLOT_NUM INTEGER )");
581 r = db.ExecuteSql(createQuery, true);
582 TryReturn(r == E_SUCCESS, false, "db.ExecuteSql is failed. [%s]", GetErrorMessage(r));
586 createQuery.Format(1024, L"CREATE TABLE IF NOT EXISTS AppInfo"
587 "( UNIQUE_ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,"
592 "APP_MAINMENU_ICON TEXT,"
593 "APP_SETTING_ICON TEXT,"
594 "APP_TICKER_ICON TEXT,"
595 "APP_QUICKPANEL_ICON TEXT,"
596 "APP_LAUNCHIMAGE_ICON TEXT,"
597 "APP_FEATURE INTEGER,"
598 "PACKAGE_NAME TEXT )");
599 r = db.ExecuteSql(createQuery, true);
600 TryReturn(r == E_SUCCESS, false, "db.ExecuteSql is failed. [%s]", GetErrorMessage(r));
604 createQuery.Format(1024, L"CREATE TABLE IF NOT EXISTS Notification"
608 r = db.ExecuteSql(createQuery, true);
609 TryReturn(r == E_SUCCESS, false, "db.ExecuteSql is failed. [%s]", GetErrorMessage(r));
613 createQuery.Format(1024, L"CREATE TABLE IF NOT EXISTS AppFeature"
617 r = db.ExecuteSql(createQuery, true);
618 TryReturn(r == E_SUCCESS, false, "db.ExecuteSql is failed. [%s]", GetErrorMessage(r));
622 createQuery.Format(1024, L"CREATE TABLE IF NOT EXISTS LaunchCondition"
626 r = db.ExecuteSql(createQuery, true);
627 TryReturn(r == E_SUCCESS, false, "db.ExecuteSql is failed. [%s]", GetErrorMessage(r));
631 createQuery.Format(1024, L"CREATE TABLE IF NOT EXISTS DataControl"
636 r = db.ExecuteSql(createQuery, true);
637 TryReturn(r == E_SUCCESS, false, "db.ExecuteSql is failed. [%s]", GetErrorMessage(r));
641 createQuery.Format(1024, L"CREATE TABLE IF NOT EXISTS Capability"
642 "( ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,"
643 "OPERATION_ID TEXT )");
644 r = db.ExecuteSql(createQuery, true);
645 TryReturn(r == E_SUCCESS, false, "db.ExecuteSql is failed. [%s]", GetErrorMessage(r));
648 // ResolutionUriScheme
649 createQuery.Format(1024, L"CREATE TABLE IF NOT EXISTS ResolutionUriScheme"
650 "( ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,"
651 "URI_SCHEME TEXT )");
652 r = db.ExecuteSql(createQuery, true);
653 TryReturn(r == E_SUCCESS, false, "db.ExecuteSql is failed. [%s]", GetErrorMessage(r));
656 // ResolutionMimeType
657 createQuery.Format(1024, L"CREATE TABLE IF NOT EXISTS ResolutionMimeType"
658 "( ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,"
660 r = db.ExecuteSql(createQuery, true);
661 TryReturn(r == E_SUCCESS, false, "db.ExecuteSql is failed. [%s]", GetErrorMessage(r));
665 createQuery.Format(1024, L"CREATE TABLE IF NOT EXISTS AppControl"
666 "( ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,"
669 r = db.ExecuteSql(createQuery, true);
670 TryReturn(r == E_SUCCESS, false, "db.ExecuteSql is failed. [%s]", GetErrorMessage(r));
674 createQuery.Format(1024, L"CREATE TABLE IF NOT EXISTS AppInfoLookup"
675 "( AppInfoID INTEGER,"
676 "CapabilityID INTEGER,"
677 "ResolutionUriSchemeID INTEGER,"
678 "ResolutionMimeTypeID INTEGER,"
679 "AppControlID INTEGER )");
680 r = db.ExecuteSql(createQuery, true);
681 TryReturn(r == E_SUCCESS, false, "db.ExecuteSql is failed. [%s]", GetErrorMessage(r));
684 String label("app-package::db");
685 String dbPath("/opt/usr/dbspace/.app-package.db");
686 String dbJournalPath("/opt/usr/dbspace/.app-package.db-journal");
688 SmackManager smackManager;
689 smackManager.AddLabelDir(label, dbPath);
690 smackManager.AddLabelDir(label, dbJournalPath);