Tizen 2.1 base
[framework/security/security-server.git] / ace / engine / SettingsLogic.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  *
18  *
19  * @file       SettingsLogic.cpp
20  * @author     Tomasz Swierczek (t.swierczek@samsung.com)
21  * @version    0.1
22  * @brief      SettingsLogic implementation
23  */
24
25 #include <ace/SettingsLogic.h>
26
27 #include <dpl/log/log.h>
28 #include <dpl/foreach.h>
29
30 #include <ace/Preference.h>
31
32 using namespace AceDB;
33
34 Preference SettingsLogic::findGlobalUserSettings(
35         const std::string &resource,
36         WidgetHandle handler)
37 {
38     Preference p = AceDAO::getWidgetDevCapSetting(resource, handler);
39     if (PreferenceTypes::PREFERENCE_DEFAULT == p) {
40         return AceDAO::getDevCapSetting(resource);
41     } else {
42         return p;
43     }
44 }
45
46 Preference SettingsLogic::findGlobalUserSettings(
47         const Request &request)
48 {
49     Request::DeviceCapabilitySet devset = request.getDeviceCapabilitySet();
50     Assert(!devset.empty() && "No device cap set in request");
51     return findGlobalUserSettings(
52         *(devset.begin()),
53         request.getWidgetHandle());
54 }
55
56 Preference SettingsLogic::getDevCapSetting(const std::string &resource)
57 {
58     return AceDAO::getDevCapSetting(resource);
59 }
60
61 void SettingsLogic::getDevCapSettings(PreferenceMap *globalSettingsMap)
62 {
63     AceDAO::getDevCapSettings(globalSettingsMap); // NULL check inside
64 }
65
66
67 void SettingsLogic::setDevCapSetting(const std::string &resource,
68                                        Preference preference)
69 {
70     if (resource.empty()) {
71         LogInfo("WARNING: setting resource settings for empty resource name");
72     }
73
74     AceDAO::addResource(resource);
75
76     if (preference == PreferenceTypes::PREFERENCE_DEFAULT) {
77         return;
78     }
79
80     Assert((PreferenceTypes::PREFERENCE_PERMIT == preference ||
81             PreferenceTypes::PREFERENCE_DENY == preference ||
82             PreferenceTypes::PREFERENCE_BLANKET_PROMPT == preference ||
83             PreferenceTypes::PREFERENCE_ONE_SHOT_PROMPT == preference ||
84             PreferenceTypes::PREFERENCE_SESSION_PROMPT == preference));
85
86     AceDAO::setDevCapSetting(resource,preference);
87 }
88
89 void SettingsLogic::setAllDevCapSettings(
90     const std::list < std::pair < const std::string*,
91     Preference > > &resourcesList)
92 {
93     std::list < std::pair < const std::string*,
94         Preference > >::const_iterator iter;
95     for (iter = resourcesList.begin(); iter != resourcesList.end(); ++iter) {
96         SettingsLogic::setDevCapSetting(*(iter->first), iter->second);
97     }
98 }
99
100 void SettingsLogic::removeDevCapSetting(const std::string &resource)
101 {
102     AceDAO::removeDevCapSetting(resource);
103 }
104
105 void SettingsLogic::updateDevCapSetting(const std::string &resource,
106                                         Preference p)
107 {
108     if (PreferenceTypes::PREFERENCE_DEFAULT == p) {
109         SettingsLogic::removeDevCapSetting(resource);
110     } else {
111         SettingsLogic::setDevCapSetting(resource, p);
112     }
113 }
114
115 Preference SettingsLogic::getWidgetDevCapSetting(
116         const std::string &resource,
117         WidgetHandle handler)
118 {
119     return AceDAO::getWidgetDevCapSetting(resource, handler);
120 }
121
122 void SettingsLogic::getWidgetDevCapSettings(PermissionList *outputList)
123 {
124     AceDAO::getWidgetDevCapSettings(outputList); // NULL check inside
125 }
126
127
128 void SettingsLogic::setWidgetDevCapSetting(
129         const std::string &resource,
130         WidgetHandle handler,
131         Preference preference)
132 {
133     if (resource.empty()) {
134         LogError("Empty resource");
135         return;
136     }
137
138     LogDebug("userSetting, resource: " << resource <<
139              " app_id: " << handler);
140
141     AceDAO::addResource(resource);
142     SettingsLogic::removeWidgetDevCapSetting(resource, handler);
143
144     if (PreferenceTypes::PREFERENCE_DEFAULT == preference) {
145         return;
146     }
147
148     Assert((PreferenceTypes::PREFERENCE_PERMIT == preference ||
149             PreferenceTypes::PREFERENCE_DENY == preference ||
150             PreferenceTypes::PREFERENCE_BLANKET_PROMPT == preference ||
151             PreferenceTypes::PREFERENCE_ONE_SHOT_PROMPT == preference ||
152             PreferenceTypes::PREFERENCE_SESSION_PROMPT == preference));
153
154     AceDAO::setWidgetDevCapSetting(resource, handler, preference);
155 }
156
157
158 void SettingsLogic::setWidgetDevCapSettings(const PermissionList &permissionsList)
159 {
160     FOREACH(i, permissionsList) {
161         SettingsLogic::setWidgetDevCapSetting(i->devCap,
162                 i->appId,
163                 i->access);
164     }
165 }
166
167
168 void SettingsLogic::removeWidgetDevCapSetting(const std::string &resource,
169                                               WidgetHandle handler)
170 {
171     AceDAO::removeWidgetDevCapSetting(resource, handler);
172 }