| 1 21 22 package org.objectweb.jonas.jtests.clients.entity; 23 24 import javax.naming.NamingException ; 25 import javax.rmi.PortableRemoteObject ; 26 import junit.framework.Test; 27 import junit.framework.TestSuite; 28 import org.objectweb.jonas.jtests.beans.ejbql.*; 29 import java.util.ArrayList ; 30 import java.util.Calendar ; 31 import java.util.Collection ; 32 import java.util.Date ; 33 import java.util.HashSet ; 34 import java.util.Iterator ; 35 import java.util.Set ; 36 37 40 public class F_EjbqlEC2 extends A_Cmp2Util { 41 42 private static String BEAN_HOME_SESSION_TEST = "EjbqlSessionTestHomeRemote"; 43 private static String BEAN_HOME_CUSTOMER = "CustomerHomeRemote"; 44 private static String BEAN_HOME_RESERVATION = "ReservationHomeRemote"; 45 private static String BEAN_HOME_CRUISE = "CruiseHomeRemote"; 46 private static String BEAN_HOME_SHIP = "ShipHomeRemote"; 47 private static String BEAN_HOME_CABIN = "CabinHomeRemote"; 48 private static String 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 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 useBeans("ejbql", false); 73 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 e) { 98 fail("Cannot get bean home: " + e.getMessage()); 99 } 100 try { 102 customerhome.findByPrimaryKey(new Integer (80)); 103 } catch (Exception e) { 104 try { 106 utx.begin(); 107 String cities[] = new String [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 (10772), "Ship A", 30000.0); 113 cruiseA = cruisehome.create("Cruise A", new Integer (10772)); 114 for (int jj = 1; jj <= 10; jj++) { 115 ShipRemote ship = shiphome.create(new Integer (jj), "Ship " + jj, 30000.0 + (10000.0 * jj)); 116 } 117 cruiseA = null; 118 CruiseRemote cruiseB = null; 119 ShipRemote ship1 = shiphome.findByPrimaryKey(new Integer (1)); 120 cruiseA = cruisehome.create("Alaska Cruise", new Integer (1)); 121 cruiseB = cruisehome.create("Bohemian Cruise", new Integer (1)); 122 for (int kk = 80; kk <= 99; kk++) { 123 CustomerRemote customer = null; 124 125 customer = customerhome.create(new Integer (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 (System.currentTimeMillis()+100000), "100001"+kk, "MasterCard", "CA" ,"CETELEM", "rue de jeunet", cities[0], "France", "3888" ); 136 } 137 Calendar date = Calendar.getInstance(); 139 date.set(2002,10,1); 140 141 for (int kk=201; kk<207; kk++) { 142 Collection customers = new ArrayList (); 143 CustomerRemote cust = customerhome.create(new Integer (kk)); 144 cust.setName(new Name("Customer "+kk,"Mike")); 145 cust.setHasGoodCredit( (kk%2==0) ); cust.setAddress("50"+kk+" Main Street","Minneapolis","MN","5510"+kk); 147 customers.add(new Integer (kk)); 149 Collection reservations = new ArrayList (); 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 cabins = new HashSet (); 160 CabinRemote cabin = cabinhome.create(new Integer (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 (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); 173 } 174 } 175 String fnames[] = new String [5]; 176 fnames[0]="John"; fnames[1]="Paul"; fnames[2]="Ringo"; 177 fnames[3]="Joe"; fnames[4]="Roger"; 178 179 String lnames[] = new String [3]; 180 lnames[0]="Smith"; lnames[1]="Johnson"; lnames[2]="Star"; 181 for (int kk=50; kk<=69; kk++) { 183 CustomerRemote customer = customerhome.create(new Integer (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 if (kk%3!=0) { 194 Collection customers = new ArrayList (); 195 customers.add(customer.getId()); 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 205 for (int kk=100; kk<=109; kk++) { 206 CustomerRemote customer = customerhome.create(new Integer (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 i) { 218 i.printStackTrace(System.out); 219 fail("InitialState creation problem: "+i); 220 } finally { 221 try { 222 utx.commit(); 223 } catch (Exception ii) { 224 } 225 } 226 } 227 isInit = true; 228 } 229 nbtry++; 232 try { 233 if (initStateOK()) { 234 ok = true; 235 } 236 } catch (Exception e) { 237 e.printStackTrace(System.out); 238 } 239 if (!ok) { 240 isInit = false; 241 unloadBeans("ejbql"); 242 } 243 } 244 } 245 246 247 251 boolean initStateOK() throws Exception { 252 boolean isOk = true; 254 255 msgerror = new StringBuffer (); 256 257 ShipRemote ship10772 = shiphome.findByPrimaryKey(new Integer (10772)); 258 for (int i=1; i<=10; i++) { 259 ShipRemote ship = shiphome.findByPrimaryKey(new Integer (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 (j)); 267 } 268 269 for (int k=80; k<=109; k++) { 270 CustomerRemote customer = customerhome.findByPrimaryKey(new Integer (k)); 271 } 272 273 for (int l=201; l<=206; l++) { 274 CustomerRemote customer1 = customerhome.findByPrimaryKey(new Integer (l)); 275 } 276 277 for (int p=50; p<=69; p++) { 278 CustomerRemote customer2 = customerhome.findByPrimaryKey(new Integer (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 (1000+kk*100+jj)); 283 CabinRemote cabin1 = cabinhome.findByPrimaryKey(new Integer (1000+kk*100+10+jj)); 284 } 285 } 286 287 for (int kkh=10;kkh<=34;kkh++) { 288 ReservationRemote reservation = reservationhome.findByPrimaryKey(new Integer (kkh)); 289 } 290 291 return isOk; 292 } 293 294 297 public void testSeries1() throws Exception { 298 testWildcards(); 299 testWildcards(); 300 } 301 302 306 public void testAnd1() throws Exception { 307 CustomerRemote customer85 = customerhome.findByExactName("Smith85","John"); 308 assertEquals("Wrong Customer : ",new Integer (85), customer85.getId()); 309 } 311 312 316 public void testEgalString() throws Exception { 317 CustomerRemote customer90 = customerhome.findSmith90(); 318 assertEquals("Wrong Customer : ",new Integer (90), customer90.getId()); 319 } 321 322 326 public void testEgalBoolean() throws Exception { 327 Collection mplscustomers = customerhome.findByGoodCredit(); 328 ArrayList customers_id = new ArrayList (); 329 Iterator 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 result = new ArrayList (); 335 336 for (int ii=80;ii<=96;ii=ii+4) { 337 result.add(new Integer (ii)); 338 } 339 340 for (int ii=100;ii<=108;ii=ii+4) { 341 result.add(new Integer (ii)); 342 } 343 for (int jj=202;jj<=206;jj=jj+2) { 344 result.add(new Integer (jj)); 345 } 346 347 for (int kk=52;kk<=68;kk=kk+4) { 348 result.add(new Integer (kk)); 349 } 350 351 assertTrue("Wrong result EJBQL Customer.findByGoogCredit() (required:" + result + ", found:" +customers_id 352 + ")", isCollectionEqual(result, customers_id)); 353 354 } 356 357 361 public void testAnd2() throws Exception { 362 Collection mplscustomers = customerhome.findByCity("Minneapolis","MN"); 363 364 ArrayList customers_id = new ArrayList (); 365 Iterator 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 result = new ArrayList (); 371 result.add(new Integer (206)); 372 result.add(new Integer (50)); 373 result.add(new Integer (56)); 374 result.add(new Integer (62)); 375 result.add(new Integer (68)); 376 result.add(new Integer (80)); 377 result.add(new Integer (86)); 378 result.add(new Integer (92)); 379 result.add(new Integer (98)); 380 result.add(new Integer (201)); 381 result.add(new Integer (202)); 382 result.add(new Integer (203)); 383 result.add(new Integer (204)); 384 result.add(new Integer (205)); 385 386 assertTrue("Wrong result EJBQL Customer.findByCity(Minneapolis,MN) (required:" + result + ", found:" +customers_id 387 + ")", isCollectionEqual(result, customers_id)); 388 389 } 391 401 public void testWildcards() throws Exception { 402 CustomerRemote customer = customerhome.findByExactName("Star","Joe"); 404 assertEquals("Wrong Customer for customerhome.findByExactName(Star,Joe);: ",new Integer (58), customer.getId()); 405 406 Collection customers = customerhome.findByName("S","Jo"); 408 ArrayList customers_id = new ArrayList (); 409 Iterator 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 result = new ArrayList (); 415 assertTrue("Wrong result EJBQL customerhome.findByName(S,Jo) (required:" + result + ", found:" +customers_id 416 + ")", isCollectionEqual(result, customers_id)); 417 418 customers = customerhome.findByName("S%","Jo%"); 420 customers_id = new ArrayList (); 421 Iterator 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 (); 427 result.add(new Integer (50)); 428 result.add(new Integer (53)); 429 result.add(new Integer (55)); 430 result.add(new Integer (58)); 431 result.add(new Integer (65)); 432 result.add(new Integer (68)); 433 for (int i=80;i<=99;i++) { 434 result.add(new Integer (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 (); 441 Iterator 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 (); 447 result.add(new Integer (50)); 448 result.add(new Integer (68)); 449 result.add(new Integer (58)); 450 for (int i=80;i<=99;i=i+2) { 451 result.add(new Integer (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 } 459 460 465 public void testNotLike() throws Exception { 466 Collection customers = customerhome.findByNotName("S%","Jo%"); 467 ArrayList customers_id = new ArrayList (); 468 Iterator 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 result = new ArrayList (); 474 result.add(new Integer (51)); 475 result.add(new Integer (52)); 476 result.add(new Integer (54)); 477 result.add(new Integer (56)); 478 result.add(new Integer (57)); 479 result.add(new Integer (59)); 480 for (int i=60;i<=64;i++) { 481 result.add(new Integer (i)); 482 } 483 result.add(new Integer (66)); 484 result.add(new Integer (67)); 485 result.add(new Integer (69)); 486 for (int i=100;i<=109;i++) { 487 result.add(new Integer (i)); 488 } 489 for (int i=201;i<=206;i++) { 490 result.add(new Integer (i)); 491 } 492 assertTrue("Wrong result EJBQL customerhome.findByNotName(S%,Jo%) (required:" + result + ", found:" +customers_id 493 + ")", isCollectionEqual(result, customers_id)); 494 495 } 497 498 502 public void testEgalInteger() throws Exception { 503 Collection cabins = cabinhome.findAllOnDeckLevel(new Integer (3)); 504 505 ArrayList cabins_id = new ArrayList (); 506 Iterator 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 result = new ArrayList (); 512 result.add(new Integer (21300)); 513 result.add(new Integer (21310)); 514 result.add(new Integer (21301)); 515 result.add(new Integer (21311)); 516 517 assertTrue("Wrong result EJBQL cabinhome.findAllOnDeckLevel(new Integer(3))(required:" + result + ", found:" +cabins_id+ 518 ")", isCollectionEqual(result,cabins_id)); 519 520 } 522 523 527 public void testInWhere() throws Exception { 528 Collection customers = customerhome.findInHotStates(); 529 530 ArrayList customers_id = new ArrayList (); 531 Iterator 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 result = new ArrayList (); 537 for (int i=51;i<=69;i=i+2) { 538 result.add(new Integer (i)); 539 } 540 for (int j=100;j<=109;j=j+2) { 541 result.add(new Integer (j)); 542 } 543 for (int k=81;k<=99;k=k+2) { 544 result.add(new Integer (k)); 545 } 546 547 assertTrue("Wrong result EJBQL customerhome.findInHotStates() (required:" + result + ", found:" +customers_id+ 548 ")", isCollectionEqual(result,customers_id)); 549 550 &nb
|