2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
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 * @file FCntContentSearch.h
18 * @brief This is the header file for the %ContentSearch class.
20 * This header file contains the declarations of the %ContentSearch class.
23 #ifndef _FCNT_CONTENT_SEARCH_H_
24 #define _FCNT_CONTENT_SEARCH_H_
26 #include <FBaseString.h>
27 #include <FCntTypes.h>
29 namespace Tizen { namespace Base { namespace Collection
34 namespace Tizen { namespace Content
37 class _ContentSearchImpl;
40 * @class ContentSearch
41 * @brief This class provides methods for the content search.
45 * The %ContentSearch class provides methods to search content based on conditions and to retrieve the results for a specific
46 * column. It enables searching for content stored on the %Tizen device. The local content is stored in the form of database columns.
48 * For more information on the database columns and their corresponding content types, see <a href="../org.tizen.native.appprogramming/html/guide/content/content_search_device.htm">Content Search on the Device</a>.
50 * The following example demonstrates how to use the %ContentSearch class.
53 * #include <FContent.h>
55 * using namespace Tizen::Base;
56 * using namespace Tizen::Base::Collection;
57 * using namespace Tizen::Content;
62 * // Call Construct() of ContentSearch
63 * ContentSearch search;
64 * result r = search.Construct(CONTENT_TYPE_AUDIO);
67 * // Do something for an error
70 * // Call SearchN() of ContentSearch as the first page
72 * int countPerPage = 5;
75 * IList* pContentInfoList = search.SearchN(pageNo, countPerPage, totalPage, totalCount,
76 * L"Artist='rain'", L"Title", SORT_ORDER_ASCENDING);
77 * if (IsFailed(GetLastResult()))
79 * // Do something for an error
83 * pContentInfoList->RemoveAll(true);
84 * delete pContentInfoList;
90 class _OSP_EXPORT_ ContentSearch
91 : virtual public Tizen::Base::Object
96 * The object is not fully constructed after this constructor is called. @n
97 * For full construction, the Construct() method must be called right after calling this constructor.
104 * This destructor overrides Tizen::Base::Object::~Object().
108 virtual ~ContentSearch(void);
111 * Initializes this instance of %ContentSearch with the specified parameter.
115 * @return An error code
116 * @param[in] type The content type
117 * @exception E_SUCCESS The method is successful.
118 * @exception E_INVALID_ARG The specified input parameter is invalid.
119 * @exception E_OUT_OF_MEMORY The memory is insufficient.
120 * @exception E_SYSTEM A system error has occurred.
122 * @remarks To search a specific type, use the content type as @c CONTENT_TYPE_OTHER, @c CONTENT_TYPE_IMAGE, @c CONTENT_TYPE_AUDIO, or @c CONTENT_TYPE_VIDEO.
124 * The following example demonstrates how to use the %Construct() method.
128 * // Call Construct() of ContentSearch
129 * ContentSearch search;
130 * result r = search.Construct(CONTENT_TYPE_IMAGE);
133 * // Do something for an error
138 result Construct(ContentType type);
141 * Searches the content and returns the search result list according to the query.
145 * @privilege %http://tizen.org/privilege/content.read
147 * @return A pointer to a list containing the ContentSearchResult instances @n
148 * An empty list is returned if there is no result and there is no error, @n
149 * else @c null if an exception occurs.
150 * @param[in] pageNo The page number @n
151 * It must be equal to or greater than @c 1.
152 * @param[in] countPerPage The count of the search results per page @n
153 * It must be equal to or greater than @c 1.
154 * @param[out] totalPageCount The total page count of the search result
155 * @param[out] totalCount The total count of the search result
156 * @param[in] whereExpr The search condition like an sql "where" expression style @n
157 * If it uses the default value, L"", it searches for all the content of the content type set in the constructor. @n
158 * In case of the "DateTime" condition, the range starts from '01/01/1970 00:00:00'. @n
159 * Every type of value has to be covered with single quotation marks, even if it is a decimal type.
160 * @param[in] sortColumn The sort <a href="../org.tizen.native.appprogramming/html/guide/content/content_search_device.htm">column</a> @n
161 * The default value is @c L"".
162 * @param[in] sortOrder The sort order
163 * @exception E_SUCCESS The method is successful.
164 * @exception E_OUT_OF_MEMORY The memory is insufficient.
165 * @exception E_INVALID_ARG Either of the following conditions has occurred: @n
166 * - The specified @c column is either invalid or empty. @n
167 * - The content is searched with @c type set as ::CONTENT_TYPE_UNKNOWN. @n
168 * - The length of the specified @c whereExpr parameter exceeds 512 characters.
169 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
170 * @exception E_SYSTEM A system error has occurred.
172 * - The specific error code can be accessed using the GetLastResult() method.
173 * - The return value must be deleted.
174 * - ContentType supports ::CONTENT_TYPE_OTHER, ::CONTENT_TYPE_IMAGE, ::CONTENT_TYPE_AUDIO, and ::CONTENT_TYPE_VIDEO. @n
175 * If %ContentType in Construct() uses ::CONTENT_TYPE_UNKNOWN or an invalid value, @c E_INVALID_ARG occurs.
177 * The following example demonstrates how to use the %SearchN() method.
181 * // Call Construct() of ContentSearch
182 * ContentSearch search;
183 * result r = search.Construct(CONTENT_TYPE_AUDIO);
186 * // Do something for an error
189 * // Call SearchN() of ContentSearch as the first page
191 * int countPerPage = 5;
193 * int totalCount = 0;
194 * IList* pContentInfoList = search.SearchN(pageNo, countPerPage, totalPage, totalCount,
195 * L"Artist='rain'", L"Title", SORT_ORDER_ASCENDING);
196 * if (IsFailed(GetLastResult()))
198 * // Do something for an error
204 * pContentInfoList->RemoveAll(true);
205 * delete pContentInfoList;
209 Tizen::Base::Collection::IList* SearchN(int pageNo, int countPerPage, int& totalPageCount, int& totalCount, const Tizen::Base::String& whereExpr = L"", const Tizen::Base::String& sortColumn = L"", Tizen::Base::SortOrder sortOrder = Tizen::Base::SORT_ORDER_NONE) const;
212 * Gets the value list of the specified column within a specified range.
216 * @privilege %http://tizen.org/privilege/content.read
218 * @return A pointer to a list containing the values of a column @n
219 * The type of value can be Tizen::Base::Float, Tizen::Base::Double, Tizen::Base::LongLong, Tizen::Base::DateTime, or Tizen::Base::String. @n
220 * An empty list is returned if the specified column has no value and there is no error, @n
221 * else @c null if an exception occurs.
222 * @param[in] pageNo The page number @n
223 * It must be equal to or greater than @c 1.
224 * @param[in] countPerPage The count of the value list per page @n
225 * It must be equal to or greater than @c 1.
226 * @param[out] totalPageCount The total page count of the value list
227 * @param[out] totalCount The total count of the value list
228 * @param[in] column The <a href="../org.tizen.native.appprogramming/html/guide/content/content_search_device.htm">column</a> name
229 * @param[in] sortOrder The sort order
230 * @exception E_SUCCESS The method is successful.
231 * @exception E_OUT_OF_MEMORY The memory is insufficient.
232 * @exception E_INVALID_ARG The specified @c column is either invalid or empty, or
233 * the content is searched with @c type set as ::CONTENT_TYPE_UNKNOWN.
234 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
235 * @exception E_SYSTEM A system error has occurred.
237 * - The specific error code can be accessed using the GetLastResult() method.
238 * - The return value must be deleted. @n
239 * The result of GetValueListN() returns a distinct value.
240 * - ContentType supports ::CONTENT_TYPE_OTHER, ::CONTENT_TYPE_IMAGE, ::CONTENT_TYPE_AUDIO, and ::CONTENT_TYPE_VIDEO. @n
241 * If %ContentType in Construct() uses ::CONTENT_TYPE_UNKNOWN or an invalid value, @c E_INVALID_ARG occurs.
243 * The following example demonstrates how to use the %GetValueListN() method.
247 * // Call Construct() of ContentSearch
248 * ContentSearch search;
249 * result r = search.Construct(CONTENT_TYPE_AUDIO);
252 * // Do something for an error
255 * // Call GetValueListN() of ContentSearch
257 * int countPerPage = 10;
259 * int totalCount = 0;
260 * IList* pValueList = search.GetValueListN(pageNo, countPerPage, totalPage, totalCount, L"Genre", SORT_ORDER_NONE);
262 * if (IsFailed(GetLastResult()))
264 * // Do something for an error
270 * pValueList->RemoveAll(true);
275 Tizen::Base::Collection::IList* GetValueListN(int pageNo, int countPerPage, int& totalPageCount, int& totalCount, const Tizen::Base::String& column, Tizen::Base::SortOrder sortOrder = Tizen::Base::SORT_ORDER_NONE) const;
279 * Gets the list consisting of values of a specified column in the specified order.
281 * @brief <i> [Deprecated] </i>
282 * @deprecated This method is deprecated. Instead of using this method, it is recommended to use the GetValueListN(int, int, int&, int&, const Tizen::Base::String&, @n
283 * Tizen::Base::SortOrder) method, that gets the value list of the specified column.
286 * @privilege %http://tizen.org/privilege/content.read
288 * @return A pointer to a list containing the values of a column @n
289 * The type of value can be Tizen::Base::Integer, Tizen::Base::Double, Tizen::Base::LongLong, Tizen::Base::DateTime, or Tizen::Base::String. @n
290 * An empty list is returned if the specified column has no value and there is no error, @n
291 * else @c null if an exception occurs.
292 * @param[in] column The <a href="../org.tizen.native.appprogramming/html/guide/content/content_search_device.htm">column</a> name
293 * @param[in] sortOrder The sort order
294 * @exception E_SUCCESS The method is successful.
295 * @exception E_OUT_OF_MEMORY The memory is insufficient.
296 * @exception E_INVALID_ARG The specified @c column is either invalid or empty, or the content is searched with @c type set as CONTENT_TYPE_UNKNOWN.
297 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
298 * @exception E_SYSTEM A system error has occurred.
300 * - The specific error code can be accessed using the GetLastResult() method.
301 * - The return value must be deleted. @n
302 * The result of GetValueListN() returns a distinct value.
303 * - ContentType supports ::CONTENT_TYPE_OTHER, ::CONTENT_TYPE_IMAGE, ::CONTENT_TYPE_AUDIO, and ::CONTENT_TYPE_VIDEO. @n
304 * If %ContentType in Construct() uses ::CONTENT_TYPE_UNKNOWN or an invalid value, @c E_INVALID_ARG occurs.
306 * The following example demonstrates how to use the %GetValueListN() method.
310 * // Call Construct() of ContentSearch
311 * ContentSearch search;
312 * result r = search.Construct(CONTENT_TYPE_AUDIO);
315 * // Do something for an error
318 * // Call GetValueListN() of ContentSearch
319 * IList* pValueList = search.GetValueListN(L"Artist", SORT_ORDER_NONE);
321 * if (IsFailed(GetLastResult()))
323 * // Do something for an error
329 * pValueList->RemoveAll(true);
335 Tizen::Base::Collection::IList* GetValueListN(const Tizen::Base::String& column, Tizen::Base::SortOrder sortOrder = Tizen::Base::SORT_ORDER_NONE);
338 * The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects.
340 ContentSearch(const ContentSearch& rhs);
343 * The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects.
345 ContentSearch& operator =(const ContentSearch& rhs);
347 _ContentSearchImpl* __pImpl;
349 friend class _ContentSearchImpl;
350 }; // class ContentSearch
354 #endif // _FCNT_CONTENT_SEARCH_H_