00001 /* 00002 * Funambol is a mobile platform developed by Funambol, Inc. 00003 * Copyright (C) 2003 - 2007 Funambol, Inc. 00004 * 00005 * This program is free software; you can redistribute it and/or modify it under 00006 * the terms of the GNU Affero General Public License version 3 as published by 00007 * the Free Software Foundation with the addition of the following permission 00008 * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED 00009 * WORK IN WHICH THE COPYRIGHT IS OWNED BY FUNAMBOL, FUNAMBOL DISCLAIMS THE 00010 * WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS. 00011 * 00012 * This program is distributed in the hope that it will be useful, but WITHOUT 00013 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 00014 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 00015 * details. 00016 * 00017 * You should have received a copy of the GNU Affero General Public License 00018 * along with this program; if not, see http://www.gnu.org/licenses or write to 00019 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 00020 * MA 02110-1301 USA. 00021 * 00022 * You can contact Funambol, Inc. headquarters at 643 Bair Island Road, Suite 00023 * 305, Redwood City, CA 94063, USA, or at email address info@funambol.com. 00024 * 00025 * The interactive user interfaces in modified source and object code versions 00026 * of this program must display Appropriate Legal Notices, as required under 00027 * Section 5 of the GNU Affero General Public License version 3. 00028 * 00029 * In accordance with Section 7(b) of the GNU Affero General Public License 00030 * version 3, these Appropriate Legal Notices must retain the display of the 00031 * "Powered by Funambol" logo. If the display of the logo is not reasonably 00032 * feasible for technical reasons, the Appropriate Legal Notices must display 00033 * the words "Powered by Funambol". 00034 */ 00035 00036 00037 #ifndef INCL_ITEM 00038 #define INCL_ITEM 00039 /** @cond DEV */ 00040 00041 #include "base/fscapi.h" 00042 #include "base/util/ArrayElement.h" 00043 #include "syncml/core/Target.h" 00044 #include "syncml/core/Source.h" 00045 #include "syncml/core/Meta.h" 00046 #include "syncml/core/ComplexData.h" 00047 #include "base/globalsdef.h" 00048 00049 BEGIN_NAMESPACE 00050 00051 00052 00053 class Item : public ArrayElement { 00054 00055 // ------------------------------------------------------------ Private data 00056 private: 00057 Target* target; 00058 Source* source; 00059 char* targetParent; 00060 char* sourceParent; 00061 Meta* meta; 00062 ComplexData* data; 00063 bool moreData; 00064 00065 void initialize(); 00066 00067 public: 00068 00069 Item(); 00070 ~Item(); 00071 00072 /** 00073 * Creates a new Item object. 00074 * 00075 * @param target item target - NULL ALLOWED 00076 * @param source item source - NULL ALLOWED 00077 * @param targetParent item target parent - NULL ALLOWED (DEFAULT) 00078 * @param sourceParent item source parent - NULL ALLOWED (DEFAULT) 00079 * @param meta item meta data - NULL ALLOWED 00080 * @param data item data - NULL ALLOWED 00081 * 00082 */ 00083 Item(Target* target, 00084 Source* source, 00085 char* targetParent, 00086 char* sourceParent, 00087 Meta* meta , 00088 ComplexData* data, 00089 bool moreData); 00090 00091 /** 00092 * Creates a new Item object. 00093 * 00094 * @param target item target - NULL ALLOWED 00095 * @param source item source - NULL ALLOWED 00096 * @param meta item meta data - NULL ALLOWED 00097 * @param data item data - NULL ALLOWED 00098 * 00099 */ 00100 Item(Target* target, 00101 Source* source, 00102 Meta* meta , 00103 ComplexData* data, 00104 bool moreData); 00105 00106 /** 00107 * Returns the item target 00108 * 00109 * @return the item target 00110 */ 00111 Target* getTarget(); 00112 00113 /** 00114 * Sets the item target 00115 * 00116 * @param target the target 00117 * 00118 */ 00119 void setTarget(Target* target); 00120 00121 /** 00122 * Returns the item source 00123 * 00124 * @return the item source 00125 */ 00126 Source* getSource(); 00127 00128 /** 00129 * Sets the item source 00130 * 00131 * @param source the source 00132 * 00133 */ 00134 void setSource(Source* source); 00135 00136 /** 00137 * Returns the item targetParent 00138 * 00139 * @return the item target parent 00140 */ 00141 const char* getTargetParent(); 00142 00143 /** 00144 * Sets the item targetParent 00145 * 00146 * @param parent the target parent 00147 * 00148 */ 00149 void setTargetParent(const char* parent); 00150 00151 /** 00152 * Returns the item sourceParent 00153 * 00154 * @return the item source parent 00155 */ 00156 const char* getSourceParent(); 00157 00158 /** 00159 * Sets the item sourceParent 00160 * 00161 * @param parent the source parent 00162 * 00163 */ 00164 void setSourceParent(const char* parent); 00165 00166 /** 00167 * Returns the item meta element 00168 * 00169 * @return the item meta element 00170 */ 00171 Meta* getMeta(); 00172 00173 /** 00174 * Sets the meta item 00175 * 00176 * @param meta the item meta element 00177 * 00178 */ 00179 void setMeta(Meta* meta); 00180 00181 /** 00182 * Returns the item data 00183 * 00184 * @return the item data 00185 * 00186 */ 00187 ComplexData* getData(); 00188 00189 /** 00190 * Sets the item data 00191 * 00192 * @param data the item data 00193 * 00194 */ 00195 void setData(ComplexData* data); 00196 00197 /** 00198 * Gets the Boolean value of moreData 00199 * 00200 * @return true if the data item is incomplete and has further chunks 00201 * to come, false otherwise 00202 */ 00203 bool getMoreData(); 00204 00205 /** 00206 * Sets the moreData property 00207 * 00208 * @param moreData the moreData property 00209 */ 00210 void setMoreData(bool moreData); 00211 00212 ArrayElement* clone(); 00213 00214 }; 00215 00216 00217 END_NAMESPACE 00218 00219 /** @endcond */ 00220 #endif