Imported Upstream version 0.8~alpha1
[platform/upstream/syncevolution.git] / src / client-api / src / c++ / common / syncml / core / ItemizedCommand.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
36
37 #include "syncml/core/ItemizedCommand.h"
38 #include "base/globalsdef.h"
39
40 USE_NAMESPACE
41
42
43 ItemizedCommand::ItemizedCommand() {
44    initialize();
45
46 }
47 ItemizedCommand::~ItemizedCommand() {
48     if (items) {
49         /*items->clear();*/  
50         delete items;        items = NULL;
51     }
52     if (meta) {
53         delete meta; meta = NULL;
54     }
55
56 }
57 /**
58 * Create a new ItemizedCommand object with the given commandIdentifier,
59 * meta object and an array of item
60 *
61 * @param cmdID the command identifier - NOT NULL
62 * @param meta the meta object
63 * @param items an array of item - NOT NULL
64 *
65 */
66 ItemizedCommand::ItemizedCommand(CmdID* cmdID, Meta* meta, ArrayList* items) : AbstractCommand(cmdID) {
67     initialize();
68
69     if (cmdID == NULL) {
70         // TBD
71     }
72
73     //if (items == NULL) {
74     //    items = new ArrayList();
75     //}
76
77     setMeta(meta);
78     setItems(items);
79 }
80
81 /**
82 * Create a new ItemizedCommand object with the given commandIdentifier
83 * and an array of item
84 *
85 * @param cmdID the command identifier - NOT NULL
86 * @param items an array of item - NOT NULL
87 *
88 */
89 ItemizedCommand::ItemizedCommand(CmdID*  cmdID, ArrayList* items) : AbstractCommand(cmdID) {
90
91     initialize();
92     if (cmdID == NULL) {
93         // TBD
94     }
95
96     //if (items == NULL) {
97     //    items = new ArrayList();
98     //}
99
100     setMeta(NULL);
101     setItems(items);
102
103 }
104
105 void ItemizedCommand::initialize() {
106     items = NULL;  // Item[]
107     meta  = NULL;
108 }
109
110 /**
111 * Gets the array of items
112 *
113 * @return the array of items
114 */
115 ArrayList* ItemizedCommand::getItems() {
116     return items;
117 }
118
119 /**
120 * Sets an array of Item object
121 *
122 * @param items an array of Item object
123 */
124 void ItemizedCommand::setItems(ArrayList* items) {
125     if (this->items) {
126                 //this->items->clear(); 
127                 delete this->items;
128                 this->items = NULL;
129         }
130     if(items){
131         this->items = items->clone();
132     }else{
133         this->items = new ArrayList();
134     }
135
136 }
137
138 /**
139 * Gets the Meta object
140 *
141 * @return the Meta object
142 */
143 Meta* ItemizedCommand::getMeta() {
144     return meta;
145 }
146
147 /**
148 * Sets the Meta object
149 *
150 * @param meta the Meta object
151 *
152 */
153 void ItemizedCommand::setMeta(Meta* meta) {
154     if (this->meta) {
155         delete this->meta; this->meta = NULL;
156     }
157     if (meta) {
158         this->meta = meta->clone();
159     } else {
160         this->meta = NULL;
161     }
162 }