2 // Tizen Web Device API
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 #include <CommonsJavaScript/Validator.h>
19 #include <CommonsJavaScript/JSUtils.h>
21 #include "DataSyncConverter.h"
22 #include "JSDataSyncManager.h"
23 #include "JSSyncServiceInfo.h"
24 #include "JSSyncProfileInfo.h"
25 #include "JSSyncStatistics.h"
28 using namespace WrtDeviceApis::Commons;
29 using namespace WrtDeviceApis::CommonsJavaScript;
34 DataSyncConverter::DataSyncConverter(JSContextRef context) : Converter(context)
38 DataSyncConverter::~DataSyncConverter()
42 SyncInfo::SyncMode DataSyncConverter::toSyncMode(std::string tizenValue) const
44 if(!tizenValue.compare(TIZEN_DATA_SYNC_MODE_MANUAL)) {
45 return SyncInfo::MANUAL_MODE;
46 } else if (!tizenValue.compare(TIZEN_DATA_SYNC_MODE_PERIODICL)) {
47 return SyncInfo::PERIODIC_MODE;
48 } else if (!tizenValue.compare(TIZEN_DATA_SYNC_MODE_PUSH)) {
49 return SyncInfo::PUSH_MODE;
51 ThrowMsg(ConversionException, "Invalid sync mode.");
55 std::string DataSyncConverter::toTizenValue(SyncInfo::SyncMode abstractValue) const
57 switch (abstractValue) {
58 case SyncInfo::MANUAL_MODE:
59 return TIZEN_DATA_SYNC_MODE_MANUAL;
60 case SyncInfo::PERIODIC_MODE:
61 return TIZEN_DATA_SYNC_MODE_PERIODICL;
62 case SyncInfo::PUSH_MODE:
63 return TIZEN_DATA_SYNC_MODE_PUSH;
66 LoggerW("Invalid sync mode.");
72 SyncInfo::SyncType DataSyncConverter::toSyncType(std::string tizenValue) const
74 if(!tizenValue.compare(TIZEN_DATA_SYNC_TYPE_TWO_WAY)) {
75 return SyncInfo::TWO_WAY_TYPE;
76 } else if (!tizenValue.compare(TIZEN_DATA_SYNC_TYPE_SLOW)) {
77 return SyncInfo::SLOW_TYPE;
78 } else if (!tizenValue.compare(TIZEN_DATA_SYNC_TYPE_ONE_WAY_FROM_CLIENT)) {
79 return SyncInfo::ONE_WAY_FROM_CLIENT_TYPE;
80 } else if (!tizenValue.compare(TIZEN_DATA_SYNC_TYPE_REFRESH_FROM_CLIENT)) {
81 return SyncInfo::REFRESH_FROM_CLIENT_TYPE;
82 } else if (!tizenValue.compare(TIZEN_DATA_SYNC_TYPE_ONE_WAY_FROM_SERVER)) {
83 return SyncInfo::ONE_WAY_FROM_SERVER_TYPE;
84 } else if (!tizenValue.compare(TIZEN_DATA_SYNC_TYPE_REFRESH_FROM_SERVER)) {
85 return SyncInfo::REFRESH_FROM_SERVER_TYPE;
87 ThrowMsg(ConversionException, "Invalid sync type.");
91 std::string DataSyncConverter::toTizenValue(SyncInfo::SyncType abstractValue) const
93 switch (abstractValue) {
94 case SyncInfo::TWO_WAY_TYPE:
95 return TIZEN_DATA_SYNC_TYPE_TWO_WAY;
96 case SyncInfo::SLOW_TYPE:
97 return TIZEN_DATA_SYNC_TYPE_SLOW;
98 case SyncInfo::ONE_WAY_FROM_CLIENT_TYPE:
99 return TIZEN_DATA_SYNC_TYPE_ONE_WAY_FROM_CLIENT;
100 case SyncInfo::REFRESH_FROM_CLIENT_TYPE:
101 return TIZEN_DATA_SYNC_TYPE_REFRESH_FROM_CLIENT;
102 case SyncInfo::ONE_WAY_FROM_SERVER_TYPE:
103 return TIZEN_DATA_SYNC_TYPE_ONE_WAY_FROM_SERVER;
104 case SyncInfo::REFRESH_FROM_SERVER_TYPE:
105 return TIZEN_DATA_SYNC_TYPE_REFRESH_FROM_SERVER;
108 LoggerW("Invalid sync type.");
114 SyncInfo::SyncInterval DataSyncConverter::toSyncInterval(std::string tizenValue) const
116 if(!tizenValue.compare(TIZEN_DATA_SYNC_INTERVAL_5_MINUTES)) {
117 return SyncInfo::INTERVAL_5_MINUTES;
118 } else if (!tizenValue.compare(TIZEN_DATA_SYNC_INTERVAL_15_MINUTES)) {
119 return SyncInfo::INTERVAL_15_MINUTES;
120 } else if (!tizenValue.compare(TIZEN_DATA_SYNC_INTERVAL_1_HOUR)) {
121 return SyncInfo::INTERVAL_1_HOUR;
122 } else if (!tizenValue.compare(TIZEN_DATA_SYNC_INTERVAL_4_HOURS)) {
123 return SyncInfo::INTERVAL_4_HOURS;
124 } else if (!tizenValue.compare(TIZEN_DATA_SYNC_INTERVAL_12_HOURS)) {
125 return SyncInfo::INTERVAL_12_HOURS;
126 } else if (!tizenValue.compare(TIZEN_DATA_SYNC_INTERVAL_1_DAY)) {
127 return SyncInfo::INTERVAL_1_DAY;
128 } else if (!tizenValue.compare(TIZEN_DATA_SYNC_INTERVAL_1_WEEK)) {
129 return SyncInfo::INTERVAL_1_WEEK;
130 } else if (!tizenValue.compare(TIZEN_DATA_SYNC_INTERVAL_1_MONTH)) {
131 return SyncInfo::INTERVAL_1_MONTH;
133 ThrowMsg(ConversionException, "Invalid sync interval.");
137 std::string DataSyncConverter::toTizenValue(SyncInfo::SyncInterval abstractValue) const
139 switch (abstractValue) {
140 case SyncInfo::INTERVAL_5_MINUTES:
141 return TIZEN_DATA_SYNC_INTERVAL_5_MINUTES;
142 case SyncInfo::INTERVAL_15_MINUTES:
143 return TIZEN_DATA_SYNC_INTERVAL_15_MINUTES;
144 case SyncInfo::INTERVAL_1_HOUR:
145 return TIZEN_DATA_SYNC_INTERVAL_1_HOUR;
146 case SyncInfo::INTERVAL_4_HOURS:
147 return TIZEN_DATA_SYNC_INTERVAL_4_HOURS;
148 case SyncInfo::INTERVAL_12_HOURS:
149 return TIZEN_DATA_SYNC_INTERVAL_12_HOURS;
150 case SyncInfo::INTERVAL_1_DAY:
151 return TIZEN_DATA_SYNC_INTERVAL_1_DAY;
152 case SyncInfo::INTERVAL_1_WEEK:
153 return TIZEN_DATA_SYNC_INTERVAL_1_WEEK;
154 case SyncInfo::INTERVAL_1_MONTH:
155 return TIZEN_DATA_SYNC_INTERVAL_1_MONTH;
158 LoggerW("Invalid sync interval.");
164 SyncServiceInfo::SyncServiceType DataSyncConverter::toSyncServiceType(std::string tizenValue) const
166 if(!tizenValue.compare(TIZEN_DATA_SYNC_SERVICE_TYPE_CONTACT)) {
167 return SyncServiceInfo::CONTACT_SERVICE_TYPE;
168 } else if (!tizenValue.compare(TIZEN_DATA_SYNC_SERVICE_TYPE_EVENT)) {
169 return SyncServiceInfo::EVENT_SERVICE_TYPE;
171 ThrowMsg(ConversionException, "Invalid sync service type.");
175 std::string DataSyncConverter::toTizenValue(SyncServiceInfo::SyncServiceType abstractValue) const
177 switch (abstractValue) {
178 case SyncServiceInfo::CONTACT_SERVICE_TYPE:
179 return TIZEN_DATA_SYNC_SERVICE_TYPE_CONTACT;
180 case SyncServiceInfo::EVENT_SERVICE_TYPE:
181 return TIZEN_DATA_SYNC_SERVICE_TYPE_EVENT;
184 LoggerW("Invalid sync service type.");
190 std::string DataSyncConverter::toTizenValue(SyncStatistics::SyncStatus abstractValue) const
192 switch (abstractValue) {
193 case SyncStatistics::SUCCESS_STATUS:
194 return TIZEN_DATA_SYNC_STATUS_SUCCESS;
195 case SyncStatistics::FAIL_STATUS:
196 return TIZEN_DATA_SYNC_STATUS_FAIL;
197 case SyncStatistics::STOP_STATUS:
198 return TIZEN_DATA_SYNC_STATUS_STOP;
199 case SyncStatistics::NONE_STATUS:
200 return TIZEN_DATA_SYNC_STATUS_NONE;
203 LoggerW("Invalid sync status type.");
209 SyncServiceInfoPtr DataSyncConverter::toServiceInfo(JSValueRef serviceInfo)
211 return JSSyncServiceInfo::getPrivateObject(toJSObjectRef(serviceInfo));
214 SyncServiceInfoListPtr DataSyncConverter::toServiceInfoList(JSValueRef serviceInfoList)
216 SyncServiceInfoListPtr result(new SyncServiceInfoList());
218 std::vector<SyncServiceInfoPtr> resultVector;
219 JSObjectRef objArg = toJSObjectRef(serviceInfoList);
220 LoggerD("Array length "<<JSGetArrayLength(m_context, objArg));
221 for (std::size_t i = 0; i < JSGetArrayLength(m_context, objArg); i++) {
222 JSValueRef element = JSGetArrayElement(m_context, objArg, i);
223 if (!JSValueIsObjectOfClass(m_context, element, JSSyncServiceInfo::getClassRef())) {
224 ThrowMsg(ConversionException, "Wrong array element type.");
226 SyncServiceInfoPtr serviceInfo = JSSyncServiceInfo::getPrivateObject(toJSObjectRef(element));
227 resultVector.push_back(serviceInfo);
230 *result = resultVector;
234 JSValueRef DataSyncConverter::toJSValueRefServiceInfo(const SyncServiceInfoPtr& arg)
236 return JSUtils::makeObject(m_context, JSSyncServiceInfo::getClassRef(), arg);
239 JSValueRef DataSyncConverter::toJSValueRefServiceInfoList(const SyncServiceInfoListPtr &arg)
241 return toJSValueRef_(*arg, &DataSyncConverter::toJSValueRefServiceInfo, this);
244 JSValueRef DataSyncConverter::toJSValueRefProfileInfo(const SyncProfileInfoPtr& arg)
246 return JSUtils::makeObject(m_context, JSSyncProfileInfo::getClassRef(), arg);
249 JSValueRef DataSyncConverter::toJSValueRefProfileInfoList(const SyncProfileInfoListPtr &arg)
251 return toJSValueRef_(*arg, &DataSyncConverter::toJSValueRefProfileInfo, this);
254 JSValueRef DataSyncConverter::toJSValueRefSyncStatistics(const SyncStatisticsPtr& arg)
256 return JSUtils::makeObject(m_context, JSSyncStatistics::getClassRef(), arg);
259 JSValueRef DataSyncConverter::toJSValueRefSyncStatisticsList(const SyncStatisticsListPtr &arg)
261 return toJSValueRef_(*arg, &DataSyncConverter::toJSValueRefSyncStatistics, this);