Imported Upstream version 0.8~alpha1
[platform/upstream/syncevolution.git] / src / client-api / src / c++ / common / filter / WhereClause.cpp
1 /*
2  * Funambol is a mobile platform developed by Funambol, Inc. 
3  * Copyright (C) 2003 - 2007 Funambol, Inc.
4  * 
5  * This program is free software; you can redistribute it and/or modify it under
6  * the terms of the GNU Affero General Public License version 3 as published by
7  * the Free Software Foundation with the addition of the following permission 
8  * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED
9  * WORK IN WHICH THE COPYRIGHT IS OWNED BY FUNAMBOL, FUNAMBOL DISCLAIMS THE 
10  * WARRANTY OF NON INFRINGEMENT  OF THIRD PARTY RIGHTS.
11  * 
12  * This program is distributed in the hope that it will be useful, but WITHOUT
13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14  * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
15  * details.
16  * 
17  * You should have received a copy of the GNU Affero General Public License 
18  * along with this program; if not, see http://www.gnu.org/licenses or write to
19  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20  * MA 02110-1301 USA.
21  * 
22  * You can contact Funambol, Inc. headquarters at 643 Bair Island Road, Suite 
23  * 305, Redwood City, CA 94063, USA, or at email address info@funambol.com.
24  * 
25  * The interactive user interfaces in modified source and object code versions
26  * of this program must display Appropriate Legal Notices, as required under
27  * Section 5 of the GNU Affero General Public License version 3.
28  * 
29  * In accordance with Section 7(b) of the GNU Affero General Public License
30  * version 3, these Appropriate Legal Notices must retain the display of the
31  * "Powered by Funambol" logo. If the display of the logo is not reasonably 
32  * feasible for technical reasons, the Appropriate Legal Notices must display
33  * the words "Powered by Funambol".
34  */
35 #include "base/util/utils.h"
36 #include "filter/WhereClause.h"
37 #include "base/globalsdef.h"
38
39 USE_NAMESPACE
40
41
42 WhereClause::WhereClause() : property(NULL), value(NULL), op(UNKNOWN), caseSensitive(true) {
43     type = WHERE_CLAUSE;
44 }
45
46 WhereClause::WhereClause(const char* p, const char* v, WhereClauseOperator o, bool s) {
47     type = WHERE_CLAUSE;
48     property = NULL; if (p) property = stringdup(p);
49     value = NULL; if (v) value = stringdup(v);
50     op = o;
51     caseSensitive = s;
52 }
53
54 WhereClause::~WhereClause() {
55     if (property) {
56         delete [] property;
57     }
58     if (value) {
59         delete [] value;
60     }
61 }
62
63 /*
64  * Gets property
65  *
66  * @return  the current property's value
67  *
68  */
69 const char* WhereClause::getProperty() {
70     return property;
71 }
72
73 /*
74  * Sets property
75  *
76  * @param property the new value
77  *
78  */
79 void WhereClause::setProperty(const char*property) {
80     if (this->property) {
81         delete this->property; this->property = NULL;
82     }
83
84     if (property) {
85         this->property = stringdup(property);
86     }
87 }
88
89 /*
90  * Gets value
91  *
92  * @return  the current value's value
93  *
94  */
95 const char* WhereClause::getValue() {
96     return value;
97 }
98
99 /*
100  * Sets value
101  *
102  * @param value the new value
103  *
104  */
105 void WhereClause::setValue(const char*value) {
106     if (this->value) {
107         delete this->value; this->value = NULL;
108     }
109
110     if (value) {
111         this->value = stringdup(value);
112     }
113 }
114
115 /*
116  * Gets operator
117  *
118  * @return  the current operator's value
119  *
120  */
121 WhereClauseOperator WhereClause::getOperator() {
122     return op;
123 }
124
125 /*
126  * Sets operator
127  *
128  * @param operator the new value
129  *
130  */
131 void WhereClause::setOperator(WhereClauseOperator o) {
132     op = o;
133 }
134
135 bool WhereClause::isCaseSensitive() {
136     return (caseSensitive == true);
137 }
138
139 void WhereClause::setCaseSensitive(bool s) {
140     caseSensitive = s;
141 }
142
143 ArrayElement* WhereClause::clone() {
144     return (ArrayElement*)new WhereClause(property, value, op, caseSensitive);
145 }