2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 * property_dao_read_only.cpp
19 * Created on: Nov 16, 2011
20 * Author: Krzysztof Jackiewicz(k.jackiewicz@samsung.com)
23 #include <dpl/wrt-dao-ro/property_dao_read_only.h>
24 #include <dpl/wrt-dao-ro/widget_dao_read_only.h>
25 #include <dpl/log/log.h>
26 #include <dpl/foreach.h>
27 #include <dpl/wrt-dao-ro/webruntime_database.h>
28 #include <dpl/wrt-dao-ro/WrtDatabase.h>
29 #include <orm_generator_wrt.h>
32 namespace PropertyDAOReadOnly {
36 typedef DPL::DB::ORM::wrt::WidgetPreference::key_name::ColumnType
38 typedef DPL::DB::ORM::wrt::WidgetPreference::key_value::ColumnType
39 ORMWidgetPropertyValue;
40 typedef std::list<DPL::DB::ORM::wrt::WidgetPreference::Row> ORMWidgetPreferenceList;
41 typedef std::list<WidgetPropertyKey> ORMWidgetPropertyKeyList;
44 void convertPropertyKey(const ORMWidgetPropertyKey& ormKey,
45 WidgetPropertyKey& key)
50 void convertPropertyValue(const ORMWidgetPropertyValue& ormPropertyVal,
51 WidgetPropertyValue& propertyVal)
53 propertyVal = ormPropertyVal;
56 void convertWidgetPreferenceRow(const ORMWidgetPreferenceList& ormWidgetPrefRow,
57 WidgetPreferenceList& prefRow)
59 FOREACH(it, ormWidgetPrefRow) {
60 WidgetPreferenceRow row;
62 row.pkgname = it->Get_pkgname();
63 row.key_name = it->Get_key_name();
64 row.key_value = it->Get_key_value();
65 row.readonly = it->Get_readonly();
67 prefRow.push_back(row);
71 void convertWidgetPropertyKeyList(const ORMWidgetPropertyKeyList& propKeyList,
72 WidgetPropertyKeyList& keyList)
74 FOREACH(it, propKeyList) {
75 keyList.push_back(*it);
83 DPL::OptionalInt CheckPropertyReadFlag(DbWidgetHandle widgetHandle,
84 const WidgetPropertyKey &key)
86 return CheckPropertyReadFlag(WidgetDAOReadOnly::getPkgName(widgetHandle),
90 DPL::OptionalInt CheckPropertyReadFlag(WidgetPkgName pkgName,
91 const WidgetPropertyKey &key)
93 LogDebug("Checking Property flag. pkgName: " << pkgName <<
97 using namespace DPL::DB::ORM;
98 using namespace DPL::DB::ORM::wrt;
99 WRT_DB_SELECT(select, WidgetPreference, &WrtDatabase::interface())
100 select->Where(And(Equals<WidgetPreference::pkgname>(pkgName),
101 Equals<WidgetPreference::key_name>(key)));
103 return select->GetSingleValue<WidgetPreference::readonly>();
105 Catch(DPL::DB::SqlConnection::Exception::Base){
106 ReThrowMsg(Exception::DatabaseError,
107 "Failure during checking readonly flag for property");
112 WidgetPropertyKeyList GetPropertyKeyList(DbWidgetHandle widgetHandle)
114 return GetPropertyKeyList(WidgetDAOReadOnly::getPkgName(widgetHandle));
117 WidgetPropertyKeyList GetPropertyKeyList(WidgetPkgName pkgName)
119 LogDebug("Get PropertyKey list. pkgName: " << pkgName);
121 using namespace DPL::DB::ORM;
122 using namespace DPL::DB::ORM::wrt;
123 ORMWidgetPropertyKeyList keyList;
124 WRT_DB_SELECT(select, WidgetPreference, &WrtDatabase::interface())
125 select->Where(Equals<WidgetPreference::pkgname>(pkgName));
126 keyList = select->GetValueList<WidgetPreference::key_name>();
128 WidgetPropertyKeyList retKeyList;
130 convertWidgetPropertyKeyList(keyList, retKeyList);
133 Catch(DPL::DB::SqlConnection::Exception::Base){
134 ReThrowMsg(Exception::DatabaseError,
135 "Failure during getting propertykey list");
140 WidgetPreferenceList GetPropertyList(DbWidgetHandle widgetHandle)
143 WidgetPkgName pkgName=WidgetDAOReadOnly::getPkgName(widgetHandle);
144 return GetPropertyList(pkgName);
145 }Catch(WidgetDAOReadOnly::Exception::WidgetNotExist){
146 WidgetPreferenceList empty;
151 WidgetPreferenceList GetPropertyList(WidgetPkgName pkgName)
153 LogDebug("Get Property list. pkgName: " << pkgName);
155 using namespace DPL::DB::ORM;
156 using namespace DPL::DB::ORM::wrt;
157 WRT_DB_SELECT(select, WidgetPreference, &WrtDatabase::interface())
158 select->Where(Equals<WidgetPreference::pkgname>(pkgName));
160 ORMWidgetPreferenceList ormPrefList = select->GetRowList();
161 WidgetPreferenceList prefList;
162 convertWidgetPreferenceRow(ormPrefList, prefList);
166 Catch(DPL::DB::SqlConnection::Exception::Base){
167 ReThrowMsg(Exception::DatabaseError,
168 "Failure during getting property list");
173 WidgetPropertyValue GetPropertyValue(DbWidgetHandle widgetHandle,
174 const WidgetPropertyKey &key)
176 return GetPropertyValue(WidgetDAOReadOnly::getPkgName(widgetHandle),key);
179 WidgetPropertyValue GetPropertyValue(WidgetPkgName pkgName,
180 const WidgetPropertyKey &key)
182 LogDebug("Get Property value. pkgName: " << pkgName <<
185 using namespace DPL::DB::ORM;
186 using namespace DPL::DB::ORM::wrt;
187 WRT_DB_SELECT(select, WidgetPreference, &WrtDatabase::interface())
188 select->Where(And(Equals<WidgetPreference::pkgname>(pkgName),
189 Equals<WidgetPreference::key_name>(key)));
191 ORMWidgetPropertyValue ormPropValue =
192 select->GetSingleValue<WidgetPreference::key_value>();
194 WidgetPropertyValue propValue;
196 convertPropertyValue(ormPropValue, propValue);
200 Catch(DPL::DB::SqlConnection::Exception::Base){
201 ReThrowMsg(Exception::DatabaseError,
202 "Failure during getting property");
206 } // namespace PropertyDAOReadOnly