KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > jonas > jtests > clients > entity > F_EjbqlEC2


1 /*
2  * JOnAS: Java(TM) Open Application Server
3  * Copyright (C) 1999 Bull S.A.
4  * Contact: jonas-team@objectweb.org
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty offind
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
19  * USA
20  */

21
22 package org.objectweb.jonas.jtests.clients.entity;
23
24 import javax.naming.NamingException JavaDoc;
25 import javax.rmi.PortableRemoteObject JavaDoc;
26 import junit.framework.Test;
27 import junit.framework.TestSuite;
28 import org.objectweb.jonas.jtests.beans.ejbql.*;
29 import java.util.ArrayList JavaDoc;
30 import java.util.Calendar JavaDoc;
31 import java.util.Collection JavaDoc;
32 import java.util.Date JavaDoc;
33 import java.util.HashSet JavaDoc;
34 import java.util.Iterator JavaDoc;
35 import java.util.Set JavaDoc;
36
37 /**
38  * This is an advanced test suite for home interface on entity bean EJBQL.
39  */

40 public class F_EjbqlEC2 extends A_Cmp2Util {
41
42     private static String JavaDoc BEAN_HOME_SESSION_TEST = "EjbqlSessionTestHomeRemote";
43     private static String JavaDoc BEAN_HOME_CUSTOMER = "CustomerHomeRemote";
44     private static String JavaDoc BEAN_HOME_RESERVATION = "ReservationHomeRemote";
45     private static String JavaDoc BEAN_HOME_CRUISE = "CruiseHomeRemote";
46     private static String JavaDoc BEAN_HOME_SHIP = "ShipHomeRemote";
47     private static String JavaDoc BEAN_HOME_CABIN = "CabinHomeRemote";
48     private static String JavaDoc BEAN_HOME_ADDRESS = "AddressHomeRemote";
49
50     protected static SessionTestHomeRemote sessiontesthome = null;
51     protected static CustomerHomeRemote customerhome = null;
52     protected static ReservationHomeRemote reservationhome = null;
53     protected static CruiseHomeRemote cruisehome = null;
54     protected static ShipHomeRemote shiphome = null;
55     protected static CabinHomeRemote cabinhome = null;
56     protected static AddressHomeRemote addresshome = null;
57     protected static CreditCardHomeRemote creditcardhome = null;
58
59     public F_EjbqlEC2(String JavaDoc name) {
60         super(name);
61     }
62
63     protected static boolean isInit = false;
64
65     protected void setUp() {
66         super.setUp();
67         boolean ok = false;
68         int nbtry = 0;
69         while (!ok && nbtry < 3) {
70             if (!isInit) {
71                 // load bean if not loaded yet
72
useBeans("ejbql", false);
73                 // lookup home used in the tests
74

75                 try {
76                     sessiontesthome = (SessionTestHomeRemote)
77                         PortableRemoteObject.narrow(ictx.lookup(BEAN_HOME_SESSION_TEST),
78                                                     SessionTestHomeRemote.class);
79                     customerhome = (CustomerHomeRemote)
80                         PortableRemoteObject.narrow(ictx.lookup(BEAN_HOME_CUSTOMER),
81                                                     CustomerHomeRemote.class);
82                     shiphome = (ShipHomeRemote)
83                         PortableRemoteObject.narrow(ictx.lookup(BEAN_HOME_SHIP),
84                                                     ShipHomeRemote.class);
85                     cruisehome = (CruiseHomeRemote)
86                         PortableRemoteObject.narrow(ictx.lookup(BEAN_HOME_CRUISE),
87                                                     CruiseHomeRemote.class);
88                     reservationhome = (ReservationHomeRemote)
89                         PortableRemoteObject.narrow(ictx.lookup(BEAN_HOME_RESERVATION),
90                                                     ReservationHomeRemote.class);
91                     cabinhome = (CabinHomeRemote)
92                         PortableRemoteObject.narrow(ictx.lookup(BEAN_HOME_CABIN),
93                                                     CabinHomeRemote.class);
94                     addresshome = (AddressHomeRemote)
95                         PortableRemoteObject.narrow(ictx.lookup(BEAN_HOME_ADDRESS),
96                                                     AddressHomeRemote.class);
97                 } catch (NamingException JavaDoc e) {
98                     fail("Cannot get bean home: " + e.getMessage());
99                 }
100                 // check if tables have been initialized
101
try {
102                     customerhome.findByPrimaryKey(new Integer JavaDoc(80));
103                 } catch (Exception JavaDoc e) {
104                     // Make the initialization needed for the tests
105
try {
106                         utx.begin();
107                         String JavaDoc cities[] = new String JavaDoc[6];
108                         cities[0] = "Minneapolis"; cities[1] = "St. Paul"; cities[2] = "Rochester";
109                         cities[3] = "Winona"; cities[4] = "Wayzata"; cities[5] = "Eagan";
110                         ShipRemote shipA = null;
111                         CruiseRemote cruiseA = null;
112                         shipA = shiphome.create(new Integer JavaDoc(10772), "Ship A", 30000.0);
113                         cruiseA = cruisehome.create("Cruise A", new Integer JavaDoc(10772));
114                         for (int jj = 1; jj <= 10; jj++) {
115                             ShipRemote ship = shiphome.create(new Integer JavaDoc(jj), "Ship " + jj, 30000.0 + (10000.0 * jj));
116                         }
117                         cruiseA = null;
118                         CruiseRemote cruiseB = null;
119                         ShipRemote ship1 = shiphome.findByPrimaryKey(new Integer JavaDoc(1));
120                         cruiseA = cruisehome.create("Alaska Cruise", new Integer JavaDoc(1));
121                         cruiseB = cruisehome.create("Bohemian Cruise", new Integer JavaDoc(1));
122                         for (int kk = 80; kk <= 99; kk++) {
123                             CustomerRemote customer = null;
124
125                             customer = customerhome.create(new Integer JavaDoc(kk));
126                             customer.setName(new Name("Smith"+kk,"John") );
127                             customer.addPhoneNumber("612-555-12"+kk,(byte) 1);
128
129                             customer.setAddress("10"+kk+" Elm Street",
130                                                 cities[(kk-80)%6],
131                                                 (kk%2==0?"MN":"CA"),
132                                                 "5540"+(kk%5+1));
133                             customer.setHasGoodCredit((kk%4 == 0));
134                             if (kk%4 == 0)
135                                 customer.setCreditCard(new Date JavaDoc(System.currentTimeMillis()+100000), "100001"+kk, "MasterCard", "CA" ,"CETELEM", "rue de jeunet", cities[0], "France", "3888" );
136                         }
137                         // Creating Customers 1-6, each with 2 reservations for 2 cabins
138
Calendar JavaDoc date = Calendar.getInstance();
139                         date.set(2002,10,1);
140
141                         for (int kk=201; kk<207; kk++) {
142                             Collection JavaDoc customers = new ArrayList JavaDoc();
143                             CustomerRemote cust = customerhome.create(new Integer JavaDoc(kk));
144                             cust.setName(new Name("Customer "+kk,"Mike"));
145                             cust.setHasGoodCredit( (kk%2==0) ); // odds are bums
146
cust.setAddress("50"+kk+" Main Street","Minneapolis","MN","5510"+kk);
147                             customers.add(new Integer JavaDoc(kk)); // put this single customer in the collection
148

149                             Collection JavaDoc reservations = new ArrayList JavaDoc();
150
151                             for (int jj=0; jj<2; jj++) {
152
153                                 ReservationRemote reservation = reservationhome.create(cruiseA.getId(), customers);
154                                 reservation.setDate(date.getTime());
155                                 reservation.setAmountPaid(1000*kk+100*jj+2000);
156
157                                 date.add(Calendar.DAY_OF_MONTH, 7);
158
159                                 Set JavaDoc cabins = new HashSet JavaDoc();
160                                 CabinRemote cabin = cabinhome.create(new Integer JavaDoc(1000+kk*100+jj));
161                                 cabin.setDeckLevel(kk-200);
162                                 cabin.setName("Cabin "+kk+"0"+jj+"1");
163
164                                 cabins.add(cabin.getId());
165                                 cabin = cabinhome.create(new Integer JavaDoc(1000+kk*100+10+jj));
166                                 cabin.setDeckLevel(kk-200);
167                                 cabin.setName("Cabin "+kk+"0"+jj+"2");
168
169                                 cabins.add(cabin.getId());
170
171                                 reservation.setAllCabins(cabins); // this reservation has 2 cabins
172

173                             }
174                         }
175                         String JavaDoc fnames[] = new String JavaDoc[5];
176                         fnames[0]="John"; fnames[1]="Paul"; fnames[2]="Ringo";
177                         fnames[3]="Joe"; fnames[4]="Roger";
178
179                         String JavaDoc lnames[] = new String JavaDoc[3];
180                         lnames[0]="Smith"; lnames[1]="Johnson"; lnames[2]="Star";
181                         // Creating Customers 50-69
182
for (int kk=50; kk<=69; kk++) {
183                             CustomerRemote customer = customerhome.create(new Integer JavaDoc(kk));
184                             customer.setName( new Name(lnames[(kk-50)%3], fnames[(kk-50)%5]) );
185                             customer.addPhoneNumber("612-555-12"+kk,(byte)1);
186                             customer.setAddress("10"+kk+" Elm Street",
187                                                 cities[(kk-50)%6],
188                                                 (kk%2==0?"MN":"CA"),
189                                                 "5540"+(kk%5+1));
190                             customer.setHasGoodCredit((kk%4==0));
191
192                             // Some customers will have reservations already on one of the two cruises..
193
if (kk%3!=0) {
194                                 Collection JavaDoc customers = new ArrayList JavaDoc();
195                                 customers.add(customer.getId()); // put this single customer in the collection
196
ReservationRemote reservation = reservationhome.create((kk%3==1?cruiseA.getId():cruiseB.getId()), customers);
197                                 reservation.setDate(date.getTime());
198                                 reservation.setAmountPaid(10*kk+2000);
199                                 date.add(Calendar.DAY_OF_MONTH, 7);
200                             }
201                         }
202
203                         // Creating Customers 100-109
204

205                         for (int kk=100; kk<=109; kk++) {
206                             CustomerRemote customer = customerhome.create(new Integer JavaDoc(kk));
207                             customer.setName( new Name("Lennon"+kk, "Paul") );
208                             customer.addPhoneNumber("666-543-12"+kk,(byte)1);
209
210                             customer.setAddress("10"+kk+" Abbey Road",
211                                                 cities[(kk-100)%6],
212                                                 (kk%2==0?"FL":"WA"),
213                                                 "5540"+(kk%5+1));
214                             customer.setHasGoodCredit((kk%4==0));
215                         }
216
217                     } catch (Exception JavaDoc i) {
218                         i.printStackTrace(System.out);
219                         fail("InitialState creation problem: "+i);
220                     } finally {
221                         try {
222                             utx.commit();
223                         } catch (Exception JavaDoc ii) {
224                         }
225                     }
226                 }
227                 isInit = true;
228             }
229             // Check that all is OK. Sometimes, a test has failed and has corrupted
230
// the bean state in the database. We must unload and reload the bean then.
231
nbtry++;
232             try {
233                 if (initStateOK()) {
234                     ok = true;
235                 }
236             } catch (Exception JavaDoc e) {
237                 e.printStackTrace(System.out);
238             }
239             if (!ok) {
240                 isInit = false;
241                 unloadBeans("ejbql");
242             }
243         }
244     }
245
246
247     /*
248      * Check that we are in the same state as after the tables creation for thoses beans A and B
249      * (ie if it is the initial state)
250      */

251     boolean initStateOK() throws Exception JavaDoc {
252         // just verify that all ejb are correcly created. Nothing about relation here because we testing only ejbql
253
boolean isOk = true;
254
255         msgerror = new StringBuffer JavaDoc();
256
257         ShipRemote ship10772 = shiphome.findByPrimaryKey(new Integer JavaDoc(10772));
258         for (int i=1; i<=10; i++) {
259             ShipRemote ship = shiphome.findByPrimaryKey(new Integer JavaDoc(i));
260         }
261
262         CruiseRemote cruiseA = cruisehome.findByName("Cruise A");
263         CruiseRemote cruiseB = cruisehome.findByName("Alaska Cruise");
264         CruiseRemote cruiseC = cruisehome.findByName("Bohemian Cruise");
265         for (int j=10; j<=12; j++) {
266             CruiseRemote cruise = cruisehome.findByPrimaryKey(new Integer JavaDoc(j));
267         }
268
269         for (int k=80; k<=109; k++) {
270             CustomerRemote customer = customerhome.findByPrimaryKey(new Integer JavaDoc(k));
271         }
272
273         for (int l=201; l<=206; l++) {
274             CustomerRemote customer1 = customerhome.findByPrimaryKey(new Integer JavaDoc(l));
275         }
276
277         for (int p=50; p<=69; p++) {
278             CustomerRemote customer2 = customerhome.findByPrimaryKey(new Integer JavaDoc(p));
279         }
280         for (int kk=201;kk<207;kk++) {
281             for (int jj=0;jj<2;jj++) {
282                 CabinRemote cabin = cabinhome.findByPrimaryKey(new Integer JavaDoc(1000+kk*100+jj));
283                 CabinRemote cabin1 = cabinhome.findByPrimaryKey(new Integer JavaDoc(1000+kk*100+10+jj));
284             }
285         }
286
287         for (int kkh=10;kkh<=34;kkh++) {
288             ReservationRemote reservation = reservationhome.findByPrimaryKey(new Integer JavaDoc(kkh));
289         }
290
291         return isOk;
292     }
293
294     /**
295      * The execution of those two tests failed.
296      */

297     public void testSeries1() throws Exception JavaDoc {
298         testWildcards();
299         testWildcards();
300     }
301
302     /**
303      * Finding Customer having name 'John Smith85'
304      * SELECT OBJECT(c) FROM jt2_Customer c WHERE c.lastName = ?1 AND c.firstName = ?2
305      */

306     public void testAnd1() throws Exception JavaDoc {
307         CustomerRemote customer85 = customerhome.findByExactName("Smith85","John");
308         assertEquals("Wrong Customer : ",new Integer JavaDoc(85), customer85.getId());
309         // checkIsInitialState(); not necessary in this test
310
}
311
312     /**
313      * Finding Customer 'Smith90'
314      * SELECT OBJECT(c) FROM jt2_Customer c WHERE c.lastName = 'Smith90'
315      */

316     public void testEgalString() throws Exception JavaDoc {
317         CustomerRemote customer90 = customerhome.findSmith90();
318         assertEquals("Wrong Customer : ",new Integer JavaDoc(90), customer90.getId());
319         // checkIsInitialState(); not necessary in this test
320
}
321
322     /**
323      * Finding Customers having GoodCredit
324      * SELECT OBJECT(c) FROM jt2_Customer c WHERE c.hasGoodCredit = TRUE
325      */

326     public void testEgalBoolean() throws Exception JavaDoc {
327         Collection JavaDoc mplscustomers = customerhome.findByGoodCredit();
328         ArrayList JavaDoc customers_id = new ArrayList JavaDoc();
329         Iterator JavaDoc customer = mplscustomers.iterator();
330         while (customer.hasNext()) {
331             CustomerRemote customer_remote = (CustomerRemote) PortableRemoteObject.narrow(customer.next(), CustomerRemote.class);
332             customers_id.add(customer_remote.getId());
333         }
334         ArrayList JavaDoc result = new ArrayList JavaDoc();
335
336         for (int ii=80;ii<=96;ii=ii+4) {
337             result.add(new Integer JavaDoc(ii));
338         }
339
340         for (int ii=100;ii<=108;ii=ii+4) {
341             result.add(new Integer JavaDoc(ii));
342         }
343         for (int jj=202;jj<=206;jj=jj+2) {
344             result.add(new Integer JavaDoc(jj));
345         }
346
347         for (int kk=52;kk<=68;kk=kk+4) {
348             result.add(new Integer JavaDoc(kk));
349         }
350
351         assertTrue("Wrong result EJBQL Customer.findByGoogCredit() (required:" + result + ", found:" +customers_id
352                    + ")", isCollectionEqual(result, customers_id));
353
354         // checkIsInitialState(); not necessary in this test
355
}
356
357     /**
358      * Finding Customers having City = Minneapolis and STATE= MN
359      * SELECT OBJECT(c) FROM jt2_Customer c WHERE c.homeAddress.city = ?1 AND c.homeAddress.state = ?2
360      */

361     public void testAnd2() throws Exception JavaDoc {
362         Collection JavaDoc mplscustomers = customerhome.findByCity("Minneapolis","MN");
363
364         ArrayList JavaDoc customers_id = new ArrayList JavaDoc();
365         Iterator JavaDoc customer = mplscustomers.iterator();
366         while (customer.hasNext()) {
367             CustomerRemote customer_remote = (CustomerRemote) PortableRemoteObject.narrow(customer.next(), CustomerRemote.class);
368             customers_id.add(customer_remote.getId());
369         }
370         ArrayList JavaDoc result = new ArrayList JavaDoc();
371         result.add(new Integer JavaDoc(206));
372         result.add(new Integer JavaDoc(50));
373         result.add(new Integer JavaDoc(56));
374         result.add(new Integer JavaDoc(62));
375         result.add(new Integer JavaDoc(68));
376         result.add(new Integer JavaDoc(80));
377         result.add(new Integer JavaDoc(86));
378         result.add(new Integer JavaDoc(92));
379         result.add(new Integer JavaDoc(98));
380         result.add(new Integer JavaDoc(201));
381         result.add(new Integer JavaDoc(202));
382         result.add(new Integer JavaDoc(203));
383         result.add(new Integer JavaDoc(204));
384         result.add(new Integer JavaDoc(205));
385
386         assertTrue("Wrong result EJBQL Customer.findByCity(Minneapolis,MN) (required:" + result + ", found:" +customers_id
387                    + ")", isCollectionEqual(result, customers_id));
388
389         //checkIsInitialState();not necessary in this test
390
}
391     /**
392      * Finding Customer having a name exactly matching 'Joe Star' &
393      * Finding Customers having a name like 'Jo S' (no wildcards) &
394      * Finding Customers having a name like 'Jo% S%' (with wildcards)
395      * Finding Customers having a name like 'Jo% S%' and living in MN
396      * SELECT OBJECT(c) FROM jt2_Customer c WHERE c.lastName = ?1 AND c.firstName = ?2 &
397      * SELECT OBJECT(c) FROM jt2_Customer c WHERE c.lastName LIKE ?1 AND c.firstName LIKE ?2 &
398      * SELECT OBJECT(c) FROM jt2_Customer c WHERE c.lastName LIKE ?1 AND c.firstName LIKE ?2
399      * SELECT OBJECT(c) FROM jt2_Customer c WHERE c.lastName LIKE ?1 AND c.firstName LIKE ?2 AND c.homeAddress.state = ?3
400      */

401     public void testWildcards() throws Exception JavaDoc {
402         // first test : exactly matching
403
CustomerRemote customer = customerhome.findByExactName("Star","Joe");
404         assertEquals("Wrong Customer for customerhome.findByExactName(Star,Joe);: ",new Integer JavaDoc(58), customer.getId());
405
406         // second test : find with no wildcards
407
Collection JavaDoc customers = customerhome.findByName("S","Jo");
408         ArrayList JavaDoc customers_id = new ArrayList JavaDoc();
409         Iterator JavaDoc customerit1 = customers.iterator();
410         while (customerit1.hasNext()) {
411             CustomerRemote customer_remote = (CustomerRemote) PortableRemoteObject.narrow(customerit1.next(), CustomerRemote.class);
412             customers_id.add(customer_remote.getId());
413         }
414         ArrayList JavaDoc result = new ArrayList JavaDoc();
415         assertTrue("Wrong result EJBQL customerhome.findByName(S,Jo) (required:" + result + ", found:" +customers_id
416                    + ")", isCollectionEqual(result, customers_id));
417
418         // thirdth test : find with no wildcards
419
customers = customerhome.findByName("S%","Jo%");
420         customers_id = new ArrayList JavaDoc();
421         Iterator JavaDoc customerit2 = customers.iterator();
422         while (customerit2.hasNext()) {
423             CustomerRemote customer_remote = (CustomerRemote) PortableRemoteObject.narrow(customerit2.next(), CustomerRemote.class);
424             customers_id.add(customer_remote.getId());
425         }
426         result = new ArrayList JavaDoc();
427         result.add(new Integer JavaDoc(50));
428         result.add(new Integer JavaDoc(53));
429         result.add(new Integer JavaDoc(55));
430         result.add(new Integer JavaDoc(58));
431         result.add(new Integer JavaDoc(65));
432         result.add(new Integer JavaDoc(68));
433         for (int i=80;i<=99;i++) {
434             result.add(new Integer JavaDoc(i));
435         }
436         assertTrue("Wrong result EJBQL customerhome.findByName(S%,Jo%) (required:" + result + ", found:" +customers_id
437                    + ")", isCollectionEqual(result, customers_id));
438
439         customers = customerhome.findByNameAndState("S%","Jo%","MN");
440         customers_id = new ArrayList JavaDoc();
441         Iterator JavaDoc customerit3 = customers.iterator();
442         while (customerit3.hasNext()) {
443             CustomerRemote customer_remote = (CustomerRemote) PortableRemoteObject.narrow(customerit3.next(), CustomerRemote.class);
444             customers_id.add(customer_remote.getId());
445         }
446         result = new ArrayList JavaDoc();
447         result.add(new Integer JavaDoc(50));
448         result.add(new Integer JavaDoc(68));
449         result.add(new Integer JavaDoc(58));
450         for (int i=80;i<=99;i=i+2) {
451             result.add(new Integer JavaDoc(i));
452         }
453         assertTrue("Wrong result EJBQL customerhome.findByNameAndState(S%,Jo%,MN) (required:" + result + ", found:" +customers_id
454                    + ")", isCollectionEqual(result, customers_id));
455
456
457         // checkIsInitialState(); not necessary in this test
458
}
459
460     /**
461      * (Bug #300634)
462      * Finding Customers having a name not like 'Jo%' OR not like 'S%'
463      * SELECT OBJECT(c) FROM jt2_Customer c WHERE c.lastName NOT LIKE ?1 OR c.firstName NOT LIKE ?2
464      */

465     public void testNotLike() throws Exception JavaDoc {
466         Collection JavaDoc customers = customerhome.findByNotName("S%","Jo%");
467         ArrayList JavaDoc customers_id = new ArrayList JavaDoc();
468         Iterator JavaDoc customerit1 = customers.iterator();
469         while (customerit1.hasNext()) {
470             CustomerRemote customer_remote = (CustomerRemote) PortableRemoteObject.narrow(customerit1.next(), CustomerRemote.class);
471             customers_id.add(customer_remote.getId());
472         }
473         ArrayList JavaDoc result = new ArrayList JavaDoc();
474         result.add(new Integer JavaDoc(51));
475         result.add(new Integer JavaDoc(52));
476         result.add(new Integer JavaDoc(54));
477         result.add(new Integer JavaDoc(56));
478         result.add(new Integer JavaDoc(57));
479         result.add(new Integer JavaDoc(59));
480         for (int i=60;i<=64;i++) {
481             result.add(new Integer JavaDoc(i));
482         }
483         result.add(new Integer JavaDoc(66));
484         result.add(new Integer JavaDoc(67));
485         result.add(new Integer JavaDoc(69));
486         for (int i=100;i<=109;i++) {
487             result.add(new Integer JavaDoc(i));
488         }
489         for (int i=201;i<=206;i++) {
490             result.add(new Integer JavaDoc(i));
491         }
492         assertTrue("Wrong result EJBQL customerhome.findByNotName(S%,Jo%) (required:" + result + ", found:" +customers_id
493                    + ")", isCollectionEqual(result, customers_id));
494
495         // checkIsInitialState(); not necessary in this test
496
}
497
498     /**
499      * Retrieve a collection of all cabins on deck 3
500      * SELECT OBJECT(c) FROM Cabin as c WHERE c.deckLevel = ?1
501      */

502     public void testEgalInteger() throws Exception JavaDoc {
503         Collection JavaDoc cabins = cabinhome.findAllOnDeckLevel(new Integer JavaDoc(3));
504
505         ArrayList JavaDoc cabins_id = new ArrayList JavaDoc();
506         Iterator JavaDoc cabin = cabins.iterator();
507         while (cabin.hasNext()) {
508             CabinRemote cabin_remote = (CabinRemote) PortableRemoteObject.narrow(cabin.next(), CabinRemote.class);
509             cabins_id.add(cabin_remote.getId());
510         }
511         ArrayList JavaDoc result = new ArrayList JavaDoc();
512         result.add(new Integer JavaDoc(21300));
513         result.add(new Integer JavaDoc(21310));
514         result.add(new Integer JavaDoc(21301));
515         result.add(new Integer JavaDoc(21311));
516
517         assertTrue("Wrong result EJBQL cabinhome.findAllOnDeckLevel(new Integer(3))(required:" + result + ", found:" +cabins_id+
518                    ")", isCollectionEqual(result,cabins_id));
519
520         // checkIsInitialState(); not necessary in this test
521
}
522
523     /**
524      * Findng Customers Living in Warm Climates
525      * SELECT OBJECT(c) FROM jt2_Customer c WHERE c.homeAddress.state IN ('FL','TX','AZ','CA')
526      */

527     public void testInWhere() throws Exception JavaDoc {
528         Collection JavaDoc customers = customerhome.findInHotStates();
529
530         ArrayList JavaDoc customers_id = new ArrayList JavaDoc();
531         Iterator JavaDoc customer = customers.iterator();
532         while (customer.hasNext()) {
533             CustomerRemote customer_remote = (CustomerRemote) PortableRemoteObject.narrow(customer.next(), CustomerRemote.class);
534             customers_id.add(customer_remote.getId());
535         }
536         ArrayList JavaDoc result = new ArrayList JavaDoc();
537         for (int i=51;i<=69;i=i+2) {
538             result.add(new Integer JavaDoc(i));
539         }
540         for (int j=100;j<=109;j=j+2) {
541             result.add(new Integer JavaDoc(j));
542         }
543         for (int k=81;k<=99;k=k+2) {
544             result.add(new Integer JavaDoc(k));
545         }
546
547         assertTrue("Wrong result EJBQL customerhome.findInHotStates() (required:" + result + ", found:" +customers_id+
548                    ")", isCollectionEqual(result,customers_id));
549
550      &nb