00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "Collection.h"
00026
00027 namespace cmlabs {
00028
00029
00030
00031
00032
00033 Collection::Collection()
00034 {
00035 objectTable.type = "collection";
00036 }
00037
00038 Collection::Collection(const JString& xml) : CollectionBase(xml) {
00039 objectTable.type = "collection";
00040 }
00041
00042 Collection::Collection(XMLNode *node) : CollectionBase(node) {
00043 objectTable.type = "collection";
00044 }
00045
00046
00047 Collection::~Collection()
00048 {
00049
00050 }
00051
00052 bool Collection::addAll(const CollectionBase* c) {
00053 return CollectionBase::copyAll(c);
00054 }
00055
00056 bool Collection::addAll(const CollectionBase& c) {
00057 return CollectionBase::copyAll(c);
00058 }
00059
00060 Collection::Collection(const Collection &c) {
00061 objectTable.copyAll(c.objectTable);
00062 objectTable.type = c.objectTable.type;
00063 objectTable.sorting = c.objectTable.sorting;
00064 }
00065
00066 const Collection& Collection::operator = (const Collection& c) {
00067 objectTable.removeAll();
00068 objectTable.copyAll(c.objectTable);
00069 objectTable.type = c.objectTable.type;
00070 objectTable.sorting = c.objectTable.sorting;
00071 return *this;
00072 }
00073
00074
00075 bool Collection::contains(const JString& value) const {
00076 return (objectTable.contains(&value));
00077 }
00078
00079 int Collection::getPos(const JString& value) const {
00080 return(objectTable.getPos(&value));
00081 }
00082
00083
00084 JString Collection::getFirst() {
00085 JString* str = (JString*) objectTable.getFirst();
00086 if (str == NULL)
00087 return "";
00088 else
00089 return *str;
00090 }
00091
00092 JString Collection::getLast() {
00093 JString* str = (JString*) objectTable.getLast();
00094 if (str == NULL)
00095 return "";
00096 else
00097 return *str;
00098 }
00099
00100 JString Collection::getNext() {
00101 JString* str = (JString*) objectTable.getNext();
00102 if (str == NULL)
00103 return "";
00104 else
00105 return *str;
00106 }
00107
00108 JString Collection::getPrevious() {
00109 JString* str = (JString*) objectTable.getPrevious();
00110 if (str == NULL)
00111 return "";
00112 else
00113 return *str;
00114 }
00115
00116 JString Collection::operator [](int pos) const {
00117 return get(pos);
00118 }
00119
00120 JString Collection::get(int pos) const {
00121 JString* str = (JString*) objectTable.get(pos);
00122 if (str == NULL)
00123 return "";
00124 else
00125 return *str;
00126 }
00127
00128 JString Collection::get(int pos) {
00129 JString* str = (JString*) objectTable.get(pos);
00130 if (str == NULL)
00131 return "";
00132 else
00133 return *str;
00134 }
00135
00136 JString Collection::take(int pos) {
00137 JString* str = (JString*) objectTable.take(pos);
00138 if (str == NULL)
00139 return "";
00140 else
00141 return *str;
00142 }
00143
00144 bool Collection::add(const JString& value) {
00145 JString* str = new JString(value);
00146 if (!objectTable.add(NULL, str)) {
00147 delete(str);
00148 return false;
00149 }
00150 else
00151 return true;
00152 }
00153
00154 bool Collection::addFirst(const JString& value) {
00155 JString* str = new JString(value);
00156 if (!objectTable.addFirst(NULL, str)) {
00157 delete(str);
00158 return false;
00159 }
00160 else
00161 return true;
00162 }
00163
00164 bool Collection::addLast(const JString& value) {
00165 JString* str = new JString(value);
00166 if (!objectTable.addLast(NULL, str)) {
00167 delete(str);
00168 return false;
00169 }
00170 else
00171 return true;
00172 }
00173
00174 bool Collection::addAfter(int pos, const JString& value) {
00175 JString* str = new JString(value);
00176 if (!objectTable.addAfter(pos, NULL, str)) {
00177 delete(str);
00178 return false;
00179 }
00180 else
00181 return true;
00182 }
00183
00184 bool Collection::addBefore(int pos, const JString& value) {
00185 JString* str = new JString(value);
00186 if (!objectTable.addBefore(pos, NULL, str)) {
00187 delete(str);
00188 return false;
00189 }
00190 else
00191 return true;
00192 }
00193
00194 bool Collection::replace(int pos, const JString& value) {
00195 JString* str = new JString(value);
00196 if (!objectTable.replace(pos, NULL, str)) {
00197 delete(str);
00198 return false;
00199 }
00200 else
00201 return true;
00202 }
00203
00204 int Collection::replace(const JString& oldvalue, const JString& value) {
00205 JString* str = new JString(value);
00206 if (!objectTable.replace(&oldvalue, NULL, str)) {
00207 delete(str);
00208 return false;
00209 }
00210 else
00211 return true;
00212 }
00213
00214 int Collection::removeEntries(const JString& value) {
00215 return objectTable.remove(&value, true);
00216 }
00217
00218 bool Collection::remove(const JString& value) {
00219 return (objectTable.remove(&value, false) > 0);
00220 }
00221
00222 bool Collection::remove(int pos) {
00223 return objectTable.remove(pos);
00224 }
00225
00226 bool Collection::removeNoDelete(int pos) {
00227 return objectTable.remove(pos);
00228 }
00229
00230 bool Collection::removeAllNoDelete() {
00231 return objectTable.removeAll();
00232 }
00233
00234 void Collection::noDelete() {
00235 objectTable.doDelete();
00236 }
00237
00238 void Collection::doDelete() {
00239 objectTable.doDelete();
00240 }
00241
00242
00243
00244 bool Collection::unitTest() {
00245
00246 Collection* oc = new Collection();
00247
00248 oc->add("Test1");
00249 oc->add("Test2");
00250 oc->add("Test3");
00251 oc->add("Test4");
00252 oc->add("Test5");
00253 oc->add("Test6");
00254
00255 if (!oc->getFirst().equals("Test1"))
00256 return false;
00257 if (!oc->getNext().equals("Test2"))
00258 return false;
00259 if (!oc->getNext().equals("Test3"))
00260 return false;
00261 if (!oc->getNext().equals("Test4"))
00262 return false;
00263 if (!oc->getNext().equals("Test5"))
00264 return false;
00265 if (!oc->getNext().equals("Test6"))
00266 return false;
00267
00268 Collection oc2;
00269
00270 oc2 = *oc;
00271
00272 if (!oc2.getFirst().equals("Test1"))
00273 return false;
00274 if (!oc2.getNext().equals("Test2"))
00275 return false;
00276 if (!oc2.getNext().equals("Test3"))
00277 return false;
00278 if (!oc2.getNext().equals("Test4"))
00279 return false;
00280 if (!oc2.getNext().equals("Test5"))
00281 return false;
00282 if (!oc2.getNext().equals("Test6"))
00283 return false;
00284
00285 oc->removeAll();
00286
00287 if (oc->getCount() != 0)
00288 return false;
00289
00290 JString str = "1=2=3=4=5";
00291
00292 Collection oc3, oc4;
00293
00294 oc3 = str.split("=");
00295 oc4 = str.split("=");
00296
00297 if (oc3 != oc4)
00298 return false;
00299
00300 if (!(oc3 == oc4))
00301 return false;
00302
00303 if (oc3.getCount() != 5)
00304 return false;
00305
00306 if (!oc3.getFirst().equals("1"))
00307 return false;
00308 if (!oc3.getNext().equals("2"))
00309 return false;
00310 if (!oc3.getNext().equals("3"))
00311 return false;
00312 if (!oc3.getNext().equals("4"))
00313 return false;
00314 if (!oc3.getNext().equals("5"))
00315 return false;
00316
00317
00318 JString s1 = "Hello World";
00319 JString s2 = "Hello World";
00320 JString s3 = "Hello world";
00321
00322 if (s1 != s2)
00323 return false;
00324
00325 if (!(s1 == s2))
00326 return false;
00327
00328 if (s1 == s3)
00329 return false;
00330
00331 if (!(s1 != s3))
00332 return false;
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344 delete(oc);
00345 return true;
00346 }
00347
00348
00349
00350
00351 }