1 /* 2 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"). 5 * You may not use this file except in compliance with the License. 6 * A copy of the License is located at 7 * 8 * http://aws.amazon.com/apache2.0 9 * 10 * or in the "license" file accompanying this file. This file is distributed 11 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 12 * express or implied. See the License for the specific language governing 13 * permissions and limitations under the License. 14 */ 15 16 package software.amazon.awssdk.benchmark.enhanced.dynamodb; 17 18 import com.amazonaws.util.ImmutableMapParameter; 19 import java.lang.reflect.Method; 20 import java.nio.ByteBuffer; 21 import java.util.Arrays; 22 import java.util.HashMap; 23 import java.util.List; 24 import java.util.Map; 25 import java.util.Random; 26 import java.util.stream.Collectors; 27 import java.util.stream.IntStream; 28 import software.amazon.awssdk.core.SdkBytes; 29 30 abstract class ItemFactory<T> { 31 private static final String ALPHA = "abcdefghijklmnopqrstuvwxyz"; 32 33 private static final Random RNG = new Random(); 34 tiny()35 public final Map<String, T> tiny() { 36 return asItem(tinyBean()); 37 } 38 small()39 public final Map<String, T> small() { 40 return asItem(smallBean()); 41 } 42 huge()43 public final Map<String, T> huge() { 44 return asItem(hugeBean()); 45 } 46 hugeFlat()47 public final Map<String, T> hugeFlat() { 48 return asItem(hugeBeanFlat()); 49 } 50 tinyBean()51 public final TinyBean tinyBean() { 52 TinyBean b = new TinyBean(); 53 b.setStringAttr(randomS()); 54 return b; 55 } 56 smallBean()57 public final SmallBean smallBean() { 58 SmallBean b = new SmallBean(); 59 b.setStringAttr(randomS()); 60 b.setBinaryAttr(randomBytes()); 61 b.setListAttr(Arrays.asList(randomS(), randomS(), randomS())); 62 return b; 63 } 64 hugeBean()65 public final HugeBean hugeBean() { 66 HugeBean b = new HugeBean(); 67 b.setHashKey(randomS()); 68 b.setStringAttr(randomS()); 69 b.setBinaryAttr(randomBytes()); 70 b.setListAttr(IntStream.range(0, 32).mapToObj(i -> randomS()).collect(Collectors.toList())); 71 72 Map<String, SdkBytes> mapAttr1 = new HashMap<>(); 73 mapAttr1.put("key1", randomBytes()); 74 mapAttr1.put("key2", randomBytes()); 75 mapAttr1.put("key3", randomBytes()); 76 77 b.setMapAttr1(mapAttr1); 78 79 Map<String, List<SdkBytes>> mapAttr2 = new HashMap<>(); 80 mapAttr2.put("key1", Arrays.asList(randomBytes())); 81 mapAttr2.put("key2", IntStream.range(0, 2).mapToObj(i -> randomBytes()).collect(Collectors.toList())); 82 mapAttr2.put("key3", IntStream.range(0, 4).mapToObj(i -> randomBytes()).collect(Collectors.toList())); 83 mapAttr2.put("key4", IntStream.range(0, 8).mapToObj(i -> randomBytes()).collect(Collectors.toList())); 84 mapAttr2.put("key5", IntStream.range(0, 16).mapToObj(i -> randomBytes()).collect(Collectors.toList())); 85 86 b.setMapAttr2(mapAttr2); 87 88 ImmutableMapParameter.Builder<String, List<Map<String, List<SdkBytes>>>> mapAttr3Builder = 89 ImmutableMapParameter.builder(); 90 91 List<Map<String, List<SdkBytes>>> value = Arrays.asList( 92 ImmutableMapParameter.<String, List<SdkBytes>>builder() 93 .put("key1", IntStream.range(0, 2).mapToObj(i -> randomBytes()).collect(Collectors.toList())) 94 .build(), 95 ImmutableMapParameter.<String, List<SdkBytes>>builder() 96 .put("key2", IntStream.range(0, 4).mapToObj(i -> randomBytes()).collect(Collectors.toList())) 97 .build(), 98 ImmutableMapParameter.<String, List<SdkBytes>>builder() 99 .put("key3", IntStream.range(0, 8).mapToObj(i -> randomBytes()).collect(Collectors.toList())) 100 .build() 101 ); 102 103 mapAttr3Builder.put("key1", value) 104 .put("key2", value) 105 .build(); 106 107 b.setMapAttr3(mapAttr3Builder.build()); 108 109 return b; 110 } 111 hugeBeanFlat()112 public HugeBeanFlat hugeBeanFlat() { 113 HugeBeanFlat b = new HugeBeanFlat(); 114 Class<HugeBeanFlat> clazz = HugeBeanFlat.class; 115 for (int i = 1; i <= 63; ++i) { 116 try { 117 Method setter = clazz.getMethod("setStringAttr" + i, String.class); 118 setter.setAccessible(true); 119 setter.invoke(b, randomS()); 120 } catch (Throwable t) { 121 throw new RuntimeException(t); 122 } 123 } 124 return b; 125 } 126 asItem(TinyBean b)127 protected abstract Map<String, T> asItem(TinyBean b); 128 asItem(SmallBean b)129 protected abstract Map<String, T> asItem(SmallBean b); 130 asItem(HugeBean b)131 protected abstract Map<String, T> asItem(HugeBean b); 132 asItem(HugeBeanFlat b)133 protected final Map<String, T> asItem(HugeBeanFlat b) { 134 Map<String, T> item = new HashMap<>(); 135 Class<HugeBeanFlat> clazz = HugeBeanFlat.class; 136 for (int i = 1; i <= 63; ++i) { 137 try { 138 Method getter = clazz.getMethod("getStringAttr" + i); 139 getter.setAccessible(true); 140 item.put("stringAttr" + i, av((String) getter.invoke(b))); 141 } catch (Throwable t) { 142 throw new RuntimeException(t); 143 } 144 } 145 return item; 146 } 147 av(String val)148 protected abstract T av(String val); 149 av(List<T> val)150 protected abstract T av(List<T> val); 151 av(Map<String, T> val)152 protected abstract T av(Map<String, T> val); 153 av(SdkBytes val)154 protected abstract T av(SdkBytes val); 155 randomS(int len)156 private static String randomS(int len) { 157 StringBuilder sb = new StringBuilder(len); 158 for (int i = 0; i < len; ++i) { 159 sb.append(ALPHA.charAt(RNG.nextInt(ALPHA.length()))); 160 } 161 return sb.toString(); 162 } 163 randomS()164 private static String randomS() { 165 return randomS(16); 166 } 167 randomB(int len)168 private static ByteBuffer randomB(int len) { 169 byte[] b = new byte[len]; 170 RNG.nextBytes(b); 171 return ByteBuffer.wrap(b); 172 } 173 randomB()174 private static ByteBuffer randomB() { 175 return randomB(16); 176 } 177 randomBytes()178 private static SdkBytes randomBytes() { 179 return SdkBytes.fromByteBuffer(randomB()); 180 } 181 182 public static class TinyBean { 183 private String stringAttr; 184 getStringAttr()185 public String getStringAttr() { 186 return stringAttr; 187 } 188 setStringAttr(String stringAttr)189 public void setStringAttr(String stringAttr) { 190 this.stringAttr = stringAttr; 191 } 192 } 193 194 public static class SmallBean { 195 private String stringAttr; 196 private SdkBytes binaryAttr; 197 private List<String> listAttr; 198 getStringAttr()199 public String getStringAttr() { 200 return stringAttr; 201 } 202 setStringAttr(String stringAttr)203 public void setStringAttr(String stringAttr) { 204 this.stringAttr = stringAttr; 205 } 206 getBinaryAttr()207 public SdkBytes getBinaryAttr() { 208 return binaryAttr; 209 } 210 setBinaryAttr(SdkBytes binaryAttr)211 public void setBinaryAttr(SdkBytes binaryAttr) { 212 this.binaryAttr = binaryAttr; 213 } 214 getListAttr()215 public List<String> getListAttr() { 216 return listAttr; 217 } 218 setListAttr(List<String> listAttr)219 public void setListAttr(List<String> listAttr) { 220 this.listAttr = listAttr; 221 } 222 } 223 224 public static class HugeBean { 225 private String hashKey; 226 private String stringAttr; 227 private SdkBytes binaryAttr; 228 private List<String> listAttr; 229 230 private Map<String, SdkBytes> mapAttr1; 231 private Map<String, List<SdkBytes>> mapAttr2; 232 private Map<String, List<Map<String, List<SdkBytes>>>> mapAttr3; 233 getHashKey()234 public String getHashKey() { 235 return hashKey; 236 } 237 setHashKey(String hashKey)238 public void setHashKey(String hashKey) { 239 this.hashKey = hashKey; 240 } 241 getStringAttr()242 public String getStringAttr() { 243 return stringAttr; 244 } 245 setStringAttr(String stringAttr)246 public void setStringAttr(String stringAttr) { 247 this.stringAttr = stringAttr; 248 } 249 getBinaryAttr()250 public SdkBytes getBinaryAttr() { 251 return binaryAttr; 252 } 253 setBinaryAttr(SdkBytes binaryAttr)254 public void setBinaryAttr(SdkBytes binaryAttr) { 255 this.binaryAttr = binaryAttr; 256 } 257 getListAttr()258 public List<String> getListAttr() { 259 return listAttr; 260 } 261 setListAttr(List<String> listAttr)262 public void setListAttr(List<String> listAttr) { 263 this.listAttr = listAttr; 264 } 265 getMapAttr1()266 public Map<String, SdkBytes> getMapAttr1() { 267 return mapAttr1; 268 } 269 setMapAttr1(Map<String, SdkBytes> mapAttr1)270 public void setMapAttr1(Map<String, SdkBytes> mapAttr1) { 271 this.mapAttr1 = mapAttr1; 272 } 273 getMapAttr2()274 public Map<String, List<SdkBytes>> getMapAttr2() { 275 return mapAttr2; 276 } 277 setMapAttr2(Map<String, List<SdkBytes>> mapAttr2)278 public void setMapAttr2(Map<String, List<SdkBytes>> mapAttr2) { 279 this.mapAttr2 = mapAttr2; 280 } 281 getMapAttr3()282 public Map<String, List<Map<String, List<SdkBytes>>>> getMapAttr3() { 283 return mapAttr3; 284 } 285 setMapAttr3(Map<String, List<Map<String, List<SdkBytes>>>> mapAttr3)286 public void setMapAttr3(Map<String, List<Map<String, List<SdkBytes>>>> mapAttr3) { 287 this.mapAttr3 = mapAttr3; 288 } 289 } 290 291 public static class HugeBeanFlat { 292 private String stringAttr1; 293 private String stringAttr2; 294 private String stringAttr3; 295 private String stringAttr4; 296 private String stringAttr5; 297 private String stringAttr6; 298 private String stringAttr7; 299 private String stringAttr8; 300 private String stringAttr9; 301 private String stringAttr10; 302 private String stringAttr11; 303 private String stringAttr12; 304 private String stringAttr13; 305 private String stringAttr14; 306 private String stringAttr15; 307 private String stringAttr16; 308 private String stringAttr17; 309 private String stringAttr18; 310 private String stringAttr19; 311 private String stringAttr20; 312 private String stringAttr21; 313 private String stringAttr22; 314 private String stringAttr23; 315 private String stringAttr24; 316 private String stringAttr25; 317 private String stringAttr26; 318 private String stringAttr27; 319 private String stringAttr28; 320 private String stringAttr29; 321 private String stringAttr30; 322 private String stringAttr31; 323 private String stringAttr32; 324 private String stringAttr33; 325 private String stringAttr34; 326 private String stringAttr35; 327 private String stringAttr36; 328 private String stringAttr37; 329 private String stringAttr38; 330 private String stringAttr39; 331 private String stringAttr40; 332 private String stringAttr41; 333 private String stringAttr42; 334 private String stringAttr43; 335 private String stringAttr44; 336 private String stringAttr45; 337 private String stringAttr46; 338 private String stringAttr47; 339 private String stringAttr48; 340 private String stringAttr49; 341 private String stringAttr50; 342 private String stringAttr51; 343 private String stringAttr52; 344 private String stringAttr53; 345 private String stringAttr54; 346 private String stringAttr55; 347 private String stringAttr56; 348 private String stringAttr57; 349 private String stringAttr58; 350 private String stringAttr59; 351 private String stringAttr60; 352 private String stringAttr61; 353 private String stringAttr62; 354 private String stringAttr63; 355 getStringAttr1()356 public String getStringAttr1() { 357 return stringAttr1; 358 } 359 setStringAttr1(String stringAttr1)360 public void setStringAttr1(String stringAttr1) { 361 this.stringAttr1 = stringAttr1; 362 } 363 getStringAttr2()364 public String getStringAttr2() { 365 return stringAttr2; 366 } 367 setStringAttr2(String stringAttr2)368 public void setStringAttr2(String stringAttr2) { 369 this.stringAttr2 = stringAttr2; 370 } 371 getStringAttr3()372 public String getStringAttr3() { 373 return stringAttr3; 374 } 375 setStringAttr3(String stringAttr3)376 public void setStringAttr3(String stringAttr3) { 377 this.stringAttr3 = stringAttr3; 378 } 379 getStringAttr4()380 public String getStringAttr4() { 381 return stringAttr4; 382 } 383 setStringAttr4(String stringAttr4)384 public void setStringAttr4(String stringAttr4) { 385 this.stringAttr4 = stringAttr4; 386 } 387 getStringAttr5()388 public String getStringAttr5() { 389 return stringAttr5; 390 } 391 setStringAttr5(String stringAttr5)392 public void setStringAttr5(String stringAttr5) { 393 this.stringAttr5 = stringAttr5; 394 } 395 getStringAttr6()396 public String getStringAttr6() { 397 return stringAttr6; 398 } 399 setStringAttr6(String stringAttr6)400 public void setStringAttr6(String stringAttr6) { 401 this.stringAttr6 = stringAttr6; 402 } 403 getStringAttr7()404 public String getStringAttr7() { 405 return stringAttr7; 406 } 407 setStringAttr7(String stringAttr7)408 public void setStringAttr7(String stringAttr7) { 409 this.stringAttr7 = stringAttr7; 410 } 411 getStringAttr8()412 public String getStringAttr8() { 413 return stringAttr8; 414 } 415 setStringAttr8(String stringAttr8)416 public void setStringAttr8(String stringAttr8) { 417 this.stringAttr8 = stringAttr8; 418 } 419 getStringAttr9()420 public String getStringAttr9() { 421 return stringAttr9; 422 } 423 setStringAttr9(String stringAttr9)424 public void setStringAttr9(String stringAttr9) { 425 this.stringAttr9 = stringAttr9; 426 } 427 getStringAttr10()428 public String getStringAttr10() { 429 return stringAttr10; 430 } 431 setStringAttr10(String stringAttr10)432 public void setStringAttr10(String stringAttr10) { 433 this.stringAttr10 = stringAttr10; 434 } 435 getStringAttr11()436 public String getStringAttr11() { 437 return stringAttr11; 438 } 439 setStringAttr11(String stringAttr11)440 public void setStringAttr11(String stringAttr11) { 441 this.stringAttr11 = stringAttr11; 442 } 443 getStringAttr12()444 public String getStringAttr12() { 445 return stringAttr12; 446 } 447 setStringAttr12(String stringAttr12)448 public void setStringAttr12(String stringAttr12) { 449 this.stringAttr12 = stringAttr12; 450 } 451 getStringAttr13()452 public String getStringAttr13() { 453 return stringAttr13; 454 } 455 setStringAttr13(String stringAttr13)456 public void setStringAttr13(String stringAttr13) { 457 this.stringAttr13 = stringAttr13; 458 } 459 getStringAttr14()460 public String getStringAttr14() { 461 return stringAttr14; 462 } 463 setStringAttr14(String stringAttr14)464 public void setStringAttr14(String stringAttr14) { 465 this.stringAttr14 = stringAttr14; 466 } 467 getStringAttr15()468 public String getStringAttr15() { 469 return stringAttr15; 470 } 471 setStringAttr15(String stringAttr15)472 public void setStringAttr15(String stringAttr15) { 473 this.stringAttr15 = stringAttr15; 474 } 475 getStringAttr16()476 public String getStringAttr16() { 477 return stringAttr16; 478 } 479 setStringAttr16(String stringAttr16)480 public void setStringAttr16(String stringAttr16) { 481 this.stringAttr16 = stringAttr16; 482 } 483 getStringAttr17()484 public String getStringAttr17() { 485 return stringAttr17; 486 } 487 setStringAttr17(String stringAttr17)488 public void setStringAttr17(String stringAttr17) { 489 this.stringAttr17 = stringAttr17; 490 } 491 getStringAttr18()492 public String getStringAttr18() { 493 return stringAttr18; 494 } 495 setStringAttr18(String stringAttr18)496 public void setStringAttr18(String stringAttr18) { 497 this.stringAttr18 = stringAttr18; 498 } 499 getStringAttr19()500 public String getStringAttr19() { 501 return stringAttr19; 502 } 503 setStringAttr19(String stringAttr19)504 public void setStringAttr19(String stringAttr19) { 505 this.stringAttr19 = stringAttr19; 506 } 507 getStringAttr20()508 public String getStringAttr20() { 509 return stringAttr20; 510 } 511 setStringAttr20(String stringAttr20)512 public void setStringAttr20(String stringAttr20) { 513 this.stringAttr20 = stringAttr20; 514 } 515 getStringAttr21()516 public String getStringAttr21() { 517 return stringAttr21; 518 } 519 setStringAttr21(String stringAttr21)520 public void setStringAttr21(String stringAttr21) { 521 this.stringAttr21 = stringAttr21; 522 } 523 getStringAttr22()524 public String getStringAttr22() { 525 return stringAttr22; 526 } 527 setStringAttr22(String stringAttr22)528 public void setStringAttr22(String stringAttr22) { 529 this.stringAttr22 = stringAttr22; 530 } 531 getStringAttr23()532 public String getStringAttr23() { 533 return stringAttr23; 534 } 535 setStringAttr23(String stringAttr23)536 public void setStringAttr23(String stringAttr23) { 537 this.stringAttr23 = stringAttr23; 538 } 539 getStringAttr24()540 public String getStringAttr24() { 541 return stringAttr24; 542 } 543 setStringAttr24(String stringAttr24)544 public void setStringAttr24(String stringAttr24) { 545 this.stringAttr24 = stringAttr24; 546 } 547 getStringAttr25()548 public String getStringAttr25() { 549 return stringAttr25; 550 } 551 setStringAttr25(String stringAttr25)552 public void setStringAttr25(String stringAttr25) { 553 this.stringAttr25 = stringAttr25; 554 } 555 getStringAttr26()556 public String getStringAttr26() { 557 return stringAttr26; 558 } 559 setStringAttr26(String stringAttr26)560 public void setStringAttr26(String stringAttr26) { 561 this.stringAttr26 = stringAttr26; 562 } 563 getStringAttr27()564 public String getStringAttr27() { 565 return stringAttr27; 566 } 567 setStringAttr27(String stringAttr27)568 public void setStringAttr27(String stringAttr27) { 569 this.stringAttr27 = stringAttr27; 570 } 571 getStringAttr28()572 public String getStringAttr28() { 573 return stringAttr28; 574 } 575 setStringAttr28(String stringAttr28)576 public void setStringAttr28(String stringAttr28) { 577 this.stringAttr28 = stringAttr28; 578 } 579 getStringAttr29()580 public String getStringAttr29() { 581 return stringAttr29; 582 } 583 setStringAttr29(String stringAttr29)584 public void setStringAttr29(String stringAttr29) { 585 this.stringAttr29 = stringAttr29; 586 } 587 getStringAttr30()588 public String getStringAttr30() { 589 return stringAttr30; 590 } 591 setStringAttr30(String stringAttr30)592 public void setStringAttr30(String stringAttr30) { 593 this.stringAttr30 = stringAttr30; 594 } 595 getStringAttr31()596 public String getStringAttr31() { 597 return stringAttr31; 598 } 599 setStringAttr31(String stringAttr31)600 public void setStringAttr31(String stringAttr31) { 601 this.stringAttr31 = stringAttr31; 602 } 603 getStringAttr32()604 public String getStringAttr32() { 605 return stringAttr32; 606 } 607 setStringAttr32(String stringAttr32)608 public void setStringAttr32(String stringAttr32) { 609 this.stringAttr32 = stringAttr32; 610 } 611 getStringAttr33()612 public String getStringAttr33() { 613 return stringAttr33; 614 } 615 setStringAttr33(String stringAttr33)616 public void setStringAttr33(String stringAttr33) { 617 this.stringAttr33 = stringAttr33; 618 } 619 getStringAttr34()620 public String getStringAttr34() { 621 return stringAttr34; 622 } 623 setStringAttr34(String stringAttr34)624 public void setStringAttr34(String stringAttr34) { 625 this.stringAttr34 = stringAttr34; 626 } 627 getStringAttr35()628 public String getStringAttr35() { 629 return stringAttr35; 630 } 631 setStringAttr35(String stringAttr35)632 public void setStringAttr35(String stringAttr35) { 633 this.stringAttr35 = stringAttr35; 634 } 635 getStringAttr36()636 public String getStringAttr36() { 637 return stringAttr36; 638 } 639 setStringAttr36(String stringAttr36)640 public void setStringAttr36(String stringAttr36) { 641 this.stringAttr36 = stringAttr36; 642 } 643 getStringAttr37()644 public String getStringAttr37() { 645 return stringAttr37; 646 } 647 setStringAttr37(String stringAttr37)648 public void setStringAttr37(String stringAttr37) { 649 this.stringAttr37 = stringAttr37; 650 } 651 getStringAttr38()652 public String getStringAttr38() { 653 return stringAttr38; 654 } 655 setStringAttr38(String stringAttr38)656 public void setStringAttr38(String stringAttr38) { 657 this.stringAttr38 = stringAttr38; 658 } 659 getStringAttr39()660 public String getStringAttr39() { 661 return stringAttr39; 662 } 663 setStringAttr39(String stringAttr39)664 public void setStringAttr39(String stringAttr39) { 665 this.stringAttr39 = stringAttr39; 666 } 667 getStringAttr40()668 public String getStringAttr40() { 669 return stringAttr40; 670 } 671 setStringAttr40(String stringAttr40)672 public void setStringAttr40(String stringAttr40) { 673 this.stringAttr40 = stringAttr40; 674 } 675 getStringAttr41()676 public String getStringAttr41() { 677 return stringAttr41; 678 } 679 setStringAttr41(String stringAttr41)680 public void setStringAttr41(String stringAttr41) { 681 this.stringAttr41 = stringAttr41; 682 } 683 getStringAttr42()684 public String getStringAttr42() { 685 return stringAttr42; 686 } 687 setStringAttr42(String stringAttr42)688 public void setStringAttr42(String stringAttr42) { 689 this.stringAttr42 = stringAttr42; 690 } 691 getStringAttr43()692 public String getStringAttr43() { 693 return stringAttr43; 694 } 695 setStringAttr43(String stringAttr43)696 public void setStringAttr43(String stringAttr43) { 697 this.stringAttr43 = stringAttr43; 698 } 699 getStringAttr44()700 public String getStringAttr44() { 701 return stringAttr44; 702 } 703 setStringAttr44(String stringAttr44)704 public void setStringAttr44(String stringAttr44) { 705 this.stringAttr44 = stringAttr44; 706 } 707 getStringAttr45()708 public String getStringAttr45() { 709 return stringAttr45; 710 } 711 setStringAttr45(String stringAttr45)712 public void setStringAttr45(String stringAttr45) { 713 this.stringAttr45 = stringAttr45; 714 } 715 getStringAttr46()716 public String getStringAttr46() { 717 return stringAttr46; 718 } 719 setStringAttr46(String stringAttr46)720 public void setStringAttr46(String stringAttr46) { 721 this.stringAttr46 = stringAttr46; 722 } 723 getStringAttr47()724 public String getStringAttr47() { 725 return stringAttr47; 726 } 727 setStringAttr47(String stringAttr47)728 public void setStringAttr47(String stringAttr47) { 729 this.stringAttr47 = stringAttr47; 730 } 731 getStringAttr48()732 public String getStringAttr48() { 733 return stringAttr48; 734 } 735 setStringAttr48(String stringAttr48)736 public void setStringAttr48(String stringAttr48) { 737 this.stringAttr48 = stringAttr48; 738 } 739 getStringAttr49()740 public String getStringAttr49() { 741 return stringAttr49; 742 } 743 setStringAttr49(String stringAttr49)744 public void setStringAttr49(String stringAttr49) { 745 this.stringAttr49 = stringAttr49; 746 } 747 getStringAttr50()748 public String getStringAttr50() { 749 return stringAttr50; 750 } 751 setStringAttr50(String stringAttr50)752 public void setStringAttr50(String stringAttr50) { 753 this.stringAttr50 = stringAttr50; 754 } 755 getStringAttr51()756 public String getStringAttr51() { 757 return stringAttr51; 758 } 759 setStringAttr51(String stringAttr51)760 public void setStringAttr51(String stringAttr51) { 761 this.stringAttr51 = stringAttr51; 762 } 763 getStringAttr52()764 public String getStringAttr52() { 765 return stringAttr52; 766 } 767 setStringAttr52(String stringAttr52)768 public void setStringAttr52(String stringAttr52) { 769 this.stringAttr52 = stringAttr52; 770 } 771 getStringAttr53()772 public String getStringAttr53() { 773 return stringAttr53; 774 } 775 setStringAttr53(String stringAttr53)776 public void setStringAttr53(String stringAttr53) { 777 this.stringAttr53 = stringAttr53; 778 } 779 getStringAttr54()780 public String getStringAttr54() { 781 return stringAttr54; 782 } 783 setStringAttr54(String stringAttr54)784 public void setStringAttr54(String stringAttr54) { 785 this.stringAttr54 = stringAttr54; 786 } 787 getStringAttr55()788 public String getStringAttr55() { 789 return stringAttr55; 790 } 791 setStringAttr55(String stringAttr55)792 public void setStringAttr55(String stringAttr55) { 793 this.stringAttr55 = stringAttr55; 794 } 795 getStringAttr56()796 public String getStringAttr56() { 797 return stringAttr56; 798 } 799 setStringAttr56(String stringAttr56)800 public void setStringAttr56(String stringAttr56) { 801 this.stringAttr56 = stringAttr56; 802 } 803 getStringAttr57()804 public String getStringAttr57() { 805 return stringAttr57; 806 } 807 setStringAttr57(String stringAttr57)808 public void setStringAttr57(String stringAttr57) { 809 this.stringAttr57 = stringAttr57; 810 } 811 getStringAttr58()812 public String getStringAttr58() { 813 return stringAttr58; 814 } 815 setStringAttr58(String stringAttr58)816 public void setStringAttr58(String stringAttr58) { 817 this.stringAttr58 = stringAttr58; 818 } 819 getStringAttr59()820 public String getStringAttr59() { 821 return stringAttr59; 822 } 823 setStringAttr59(String stringAttr59)824 public void setStringAttr59(String stringAttr59) { 825 this.stringAttr59 = stringAttr59; 826 } 827 getStringAttr60()828 public String getStringAttr60() { 829 return stringAttr60; 830 } 831 setStringAttr60(String stringAttr60)832 public void setStringAttr60(String stringAttr60) { 833 this.stringAttr60 = stringAttr60; 834 } 835 getStringAttr61()836 public String getStringAttr61() { 837 return stringAttr61; 838 } 839 setStringAttr61(String stringAttr61)840 public void setStringAttr61(String stringAttr61) { 841 this.stringAttr61 = stringAttr61; 842 } 843 getStringAttr62()844 public String getStringAttr62() { 845 return stringAttr62; 846 } 847 setStringAttr62(String stringAttr62)848 public void setStringAttr62(String stringAttr62) { 849 this.stringAttr62 = stringAttr62; 850 } 851 getStringAttr63()852 public String getStringAttr63() { 853 return stringAttr63; 854 } 855 setStringAttr63(String stringAttr63)856 public void setStringAttr63(String stringAttr63) { 857 this.stringAttr63 = stringAttr63; 858 } 859 } 860 } 861