Replacing widget handle with tizenid in property DAO
[framework/web/wrt-commons.git] / modules / widget_dao / dao / property_dao_read_only.cpp
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 /*
17  * property_dao_read_only.cpp
18  *
19  *  Created on: Nov 16, 2011
20  *      Author: Krzysztof Jackiewicz(k.jackiewicz@samsung.com)
21  */
22 #include <stddef.h>
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>
30
31 namespace WrtDB {
32 namespace PropertyDAOReadOnly {
33
34 namespace {
35
36 typedef DPL::DB::ORM::wrt::WidgetPreference::key_name::ColumnType
37     ORMWidgetPropertyKey;
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;
42
43
44 void convertPropertyKey(const ORMWidgetPropertyKey& ormKey,
45                         WidgetPropertyKey& key)
46 {
47     key = ormKey;
48 }
49
50 void convertPropertyValue(const ORMWidgetPropertyValue& ormPropertyVal,
51                           WidgetPropertyValue& propertyVal)
52 {
53     propertyVal = ormPropertyVal;
54 }
55
56 void convertWidgetPreferenceRow(const ORMWidgetPreferenceList& ormWidgetPrefRow,
57                                 WidgetPreferenceList& prefRow)
58 {
59     FOREACH(it, ormWidgetPrefRow) {
60         WidgetPreferenceRow row;
61
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();
66
67         prefRow.push_back(row);
68     }
69 }
70
71 void convertWidgetPropertyKeyList(const ORMWidgetPropertyKeyList& propKeyList,
72                                   WidgetPropertyKeyList& keyList)
73 {
74     FOREACH(it, propKeyList) {
75         keyList.push_back(*it);
76     }
77 }
78
79
80 }
81
82 //deprecated
83 DPL::OptionalInt CheckPropertyReadFlag(DbWidgetHandle widgetHandle,
84                                   const WidgetPropertyKey &key)
85 {
86     return CheckPropertyReadFlag(WidgetDAOReadOnly::getPkgName(widgetHandle),
87                                  key);
88 }
89
90 DPL::OptionalInt CheckPropertyReadFlag(WidgetPkgName pkgName,
91                                   const WidgetPropertyKey &key)
92 {
93     LogDebug("Checking Property flag. pkgName: " << pkgName <<
94              ", key: " << key);
95
96     Try {
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)));
102
103         return select->GetSingleValue<WidgetPreference::readonly>();
104     }
105     Catch(DPL::DB::SqlConnection::Exception::Base){
106         ReThrowMsg(Exception::DatabaseError,
107                    "Failure during checking readonly flag for property");
108     }
109 }
110
111 //deprecated
112 WidgetPropertyKeyList GetPropertyKeyList(DbWidgetHandle widgetHandle)
113 {
114     return GetPropertyKeyList(WidgetDAOReadOnly::getPkgName(widgetHandle));
115 }
116
117 WidgetPropertyKeyList GetPropertyKeyList(WidgetPkgName pkgName)
118 {
119     LogDebug("Get PropertyKey list. pkgName: " << pkgName);
120     Try {
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>();
127
128         WidgetPropertyKeyList retKeyList;
129
130         convertWidgetPropertyKeyList(keyList, retKeyList);
131         return retKeyList;
132     }
133     Catch(DPL::DB::SqlConnection::Exception::Base){
134         ReThrowMsg(Exception::DatabaseError,
135                    "Failure during getting propertykey list");
136     }
137 }
138
139 //deprecated
140 WidgetPreferenceList GetPropertyList(DbWidgetHandle widgetHandle)
141 {
142     Try{
143         WidgetPkgName pkgName=WidgetDAOReadOnly::getPkgName(widgetHandle);
144         return GetPropertyList(pkgName);
145     }Catch(WidgetDAOReadOnly::Exception::WidgetNotExist){
146         WidgetPreferenceList empty;
147         return empty;
148     }
149 }
150
151 WidgetPreferenceList GetPropertyList(WidgetPkgName pkgName)
152 {
153     LogDebug("Get Property list. pkgName: " << pkgName);
154     Try {
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));
159
160         ORMWidgetPreferenceList ormPrefList = select->GetRowList();
161         WidgetPreferenceList prefList;
162         convertWidgetPreferenceRow(ormPrefList, prefList);
163
164         return prefList;
165     }
166     Catch(DPL::DB::SqlConnection::Exception::Base){
167         ReThrowMsg(Exception::DatabaseError,
168                    "Failure during getting property list");
169     }
170 }
171
172 //deprecated
173 WidgetPropertyValue GetPropertyValue(DbWidgetHandle widgetHandle,
174                                      const WidgetPropertyKey &key)
175 {
176     return GetPropertyValue(WidgetDAOReadOnly::getPkgName(widgetHandle),key);
177 }
178
179 WidgetPropertyValue GetPropertyValue(WidgetPkgName pkgName,
180                                      const WidgetPropertyKey &key)
181 {
182     LogDebug("Get Property value. pkgName: " << pkgName <<
183              ", key: " << key);
184     Try {
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)));
190
191         ORMWidgetPropertyValue ormPropValue =
192                 select->GetSingleValue<WidgetPreference::key_value>();
193
194         WidgetPropertyValue propValue;
195
196         convertPropertyValue(ormPropValue, propValue);
197
198         return propValue;
199     }
200     Catch(DPL::DB::SqlConnection::Exception::Base){
201         ReThrowMsg(Exception::DatabaseError,
202                    "Failure during getting property");
203     }
204 }
205
206 } // namespace PropertyDAOReadOnly
207 } // namespace WrtDB