001// Generated by delombok at Fri Oct 04 16:05:59 CEST 2024 002/* 003 * Copyright (c) 2010-2024 Mark Allen, Norbert Bartels. 004 * 005 * Permission is hereby granted, free of charge, to any person obtaining a copy 006 * of this software and associated documentation files (the "Software"), to deal 007 * in the Software without restriction, including without limitation the rights 008 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 009 * copies of the Software, and to permit persons to whom the Software is 010 * furnished to do so, subject to the following conditions: 011 * 012 * The above copyright notice and this permission notice shall be included in 013 * all copies or substantial portions of the Software. 014 * 015 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 016 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 017 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 018 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 019 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 020 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 021 * THE SOFTWARE. 022 */ 023package com.restfb.types; 024 025import static com.restfb.util.DateUtils.toDateFromLongFormat; 026import static com.restfb.util.DateUtils.toDateFromShortFormat; 027import static java.util.Collections.unmodifiableList; 028import java.util.ArrayList; 029import java.util.Date; 030import java.util.List; 031import com.restfb.Facebook; 032import com.restfb.JsonMapper; 033import com.restfb.JsonMapper.JsonMappingCompleted; 034import com.restfb.annotation.GraphAPI; 035import com.restfb.types.features.HasCover; 036import com.restfb.types.features.HasProfilePicture; 037 038/** 039 * Represents the <a href="http://developers.facebook.com/docs/reference/api/event">Event Graph API type</a>. 040 * 041 * @author <a href="http://restfb.com">Mark Allen</a> 042 * @since 1.5 043 */ 044public class Event extends NamedFacebookType implements HasProfilePicture, HasCover { 045 /** 046 * The user who owns the event. 047 * 048 */ 049 @Facebook 050 private Owner owner; 051 /** 052 * The category of the event. 053 */ 054 @Facebook 055 @GraphAPI(since = "2.4") 056 private String category; 057 /** 058 * Can guests invite friends. 059 */ 060 @Facebook("can_guests_invite") 061 private Boolean canGuestsInvite; 062 /** 063 * Can see guest list. 064 */ 065 @Facebook("guest_list_enabled") 066 private Boolean guestListEnabled; 067 /** 068 * The long-form HTML description of the event. 069 * 070 */ 071 @Facebook 072 private String description; 073 @Facebook("start_time") 074 private transient String rawStartTime; 075 @Facebook("end_time") 076 private transient String rawEndTime; 077 /** 078 * The start time of the event. 079 * 080 */ 081 private Date startTime; 082 /** 083 * The end time of the event. 084 * 085 */ 086 private Date endTime; 087 /** 088 * Whether the event has been marked as canceled 089 */ 090 @Facebook("is_canceled") 091 private Boolean isCanceled; 092 /** 093 * The RSVP status of this event. 094 * 095 */ 096 @Facebook("rsvp_status") 097 private String rsvpStatus; 098 /** 099 * Number of people interested in the event. 100 */ 101 @Facebook("interested_count") 102 @GraphAPI(since = "2.1") 103 private Long interestedCount; 104 /** 105 * Whether the event is created by page or not. 106 */ 107 @Facebook("is_page_owned") 108 private Boolean isPageOwned; 109 /** 110 * The visibility of this event. Can be 'OPEN', 'CLOSED', or 'SECRET'. 111 * 112 */ 113 @Facebook 114 private String privacy; 115 /** 116 * The last time the event was updated. 117 * 118 */ 119 @Facebook("updated_time") 120 private Date updatedTime; 121 /** 122 * The URL to a location to buy tickets for this event (on Events for Pages only). 123 * 124 * @since 1.6.13 125 */ 126 @Facebook("ticket_uri") 127 private String ticketUri; 128 /** 129 * The event's picture. 130 * 131 * @since 1.6.13 132 */ 133 private ProfilePictureSource picture; 134 @Facebook("picture") 135 private transient String rawPicture; 136 /** 137 * The group the event belongs to, if any. 138 * 139 */ 140 @Facebook("parent_group") 141 private Group parentGroup; 142 /** 143 * Location associated with the event, if any. 144 */ 145 @Facebook 146 @GraphAPI(since = "2.3") 147 private Place place; 148 /** 149 * Should the time information be ignored in the dates for this event? 150 * 151 * @since 1.6.13 152 */ 153 @Facebook("is_date_only") 154 private Boolean isDateOnly; 155 /** 156 * the timezone of the event 157 */ 158 @Facebook 159 private String timezone; 160 /** 161 * Cover picture 162 */ 163 @Facebook 164 private CoverPhoto cover; 165 /** 166 * Number of people attending the event 167 */ 168 @Facebook("attending_count") 169 @GraphAPI(since = "2.1") 170 private Integer attendingCount; 171 /** 172 * Number of people who declined the event 173 */ 174 @Facebook("declined_count") 175 @GraphAPI(since = "2.1") 176 private Integer declinedCount; 177 /** 178 * Number of people who maybe going to the event 179 */ 180 @Facebook("maybe_count") 181 @GraphAPI(since = "2.1") 182 private Integer maybeCount; 183 /** 184 * Number of people who did not reply to the event 185 */ 186 @Facebook("noreply_count") 187 @GraphAPI(since = "2.1") 188 private Integer noreplyCount; 189 private static final long serialVersionUID = 2L; 190 191 192 /** 193 * Represents the <a href="http://developers.facebook.com/docs/reference/api/event">Event Owner Graph API type</a>. 194 * 195 * @author <a href="http://restfb.com">Mark Allen</a> 196 * @since 1.6.13 197 */ 198 public static class Owner extends AbstractFacebookType { 199 /** 200 * The unique identifier for this owner. 201 * 202 */ 203 @Facebook 204 private String id; 205 /** 206 * The name of this owner. 207 * 208 */ 209 @Facebook 210 private String name; 211 /** 212 * The category for this owner. 213 * 214 */ 215 @Facebook 216 private String category; 217 @Facebook("category_list") 218 private List<Category> categoryList = new ArrayList<>(); 219 private static final long serialVersionUID = 1L; 220 221 public boolean addCategory(Category category) { 222 return categoryList.add(category); 223 } 224 225 public boolean removeCategory(Category category) { 226 return categoryList.remove(category); 227 } 228 229 /** 230 * List of other categories for this owner. 231 * 232 * @return List of other categories for this owner. 233 */ 234 public List<Category> getCategoryList() { 235 return unmodifiableList(categoryList); 236 } 237 238 /** 239 * The unique identifier for this owner. 240 * 241 * @return The unique identifier for this owner. 242 */ 243 @java.lang.SuppressWarnings("all") 244 public String getId() { 245 return this.id; 246 } 247 248 /** 249 * The unique identifier for this owner. 250 * 251 */ 252 @java.lang.SuppressWarnings("all") 253 public void setId(final String id) { 254 this.id = id; 255 } 256 257 /** 258 * The name of this owner. 259 * 260 * @return The name of this owner. 261 */ 262 @java.lang.SuppressWarnings("all") 263 public String getName() { 264 return this.name; 265 } 266 267 /** 268 * The name of this owner. 269 * 270 */ 271 @java.lang.SuppressWarnings("all") 272 public void setName(final String name) { 273 this.name = name; 274 } 275 276 /** 277 * The category for this owner. 278 * 279 * @return The category for this owner. 280 */ 281 @java.lang.SuppressWarnings("all") 282 public String getCategory() { 283 return this.category; 284 } 285 286 /** 287 * The category for this owner. 288 * 289 */ 290 @java.lang.SuppressWarnings("all") 291 public void setCategory(final String category) { 292 this.category = category; 293 } 294 } 295 296 297 /** 298 * Represents the <a href="http://developers.facebook.com/docs/reference/api/event">Event Owner Category Graph API 299 * type</a>. 300 * 301 * @author <a href="http://restfb.com">Mark Allen</a> 302 * @since 1.6.13 303 */ 304 public static class Category extends AbstractFacebookType { 305 /** 306 * The unique identifier for this category. 307 * 308 */ 309 @Facebook 310 private String id; 311 /** 312 * The name of this category. 313 * 314 */ 315 @Facebook 316 private String name; 317 private static final long serialVersionUID = 1L; 318 319 /** 320 * The unique identifier for this category. 321 * 322 * @return The unique identifier for this category. 323 */ 324 @java.lang.SuppressWarnings("all") 325 public String getId() { 326 return this.id; 327 } 328 329 /** 330 * The unique identifier for this category. 331 * 332 */ 333 @java.lang.SuppressWarnings("all") 334 public void setId(final String id) { 335 this.id = id; 336 } 337 338 /** 339 * The name of this category. 340 * 341 * @return The name of this category. 342 */ 343 @java.lang.SuppressWarnings("all") 344 public String getName() { 345 return this.name; 346 } 347 348 /** 349 * The name of this category. 350 * 351 */ 352 @java.lang.SuppressWarnings("all") 353 public void setName(final String name) { 354 this.name = name; 355 } 356 } 357 358 @JsonMappingCompleted 359 void convertTime() { 360 // Sometimes the date comes back in short form - if long form parsing 361 // failed, try short instead 362 Date dateEnd = toDateFromLongFormat(rawEndTime); 363 endTime = dateEnd == null ? toDateFromShortFormat(rawEndTime) : dateEnd; 364 Date dateStart = toDateFromLongFormat(rawStartTime); 365 startTime = dateStart == null ? toDateFromShortFormat(rawStartTime) : dateStart; 366 } 367 368 @JsonMappingCompleted 369 protected void fillProfilePicture(JsonMapper jsonMapper) { 370 picture = convertPicture(jsonMapper, rawPicture); 371 } 372 373 /** 374 * The user who owns the event. 375 * 376 * @return The user who owns the event. 377 */ 378 @java.lang.SuppressWarnings("all") 379 public Owner getOwner() { 380 return this.owner; 381 } 382 383 /** 384 * The user who owns the event. 385 * 386 */ 387 @java.lang.SuppressWarnings("all") 388 public void setOwner(final Owner owner) { 389 this.owner = owner; 390 } 391 392 /** 393 * The category of the event. 394 * 395 * @return The category of the event 396 */ 397 @GraphAPI(since = "2.4") 398 @java.lang.SuppressWarnings("all") 399 public String getCategory() { 400 return this.category; 401 } 402 403 /** 404 * The category of the event. 405 */ 406 @java.lang.SuppressWarnings("all") 407 public void setCategory(final String category) { 408 this.category = category; 409 } 410 411 /** 412 * Can guests invite friends. 413 * 414 * @return Can guests invite friends 415 */ 416 @java.lang.SuppressWarnings("all") 417 public Boolean getCanGuestsInvite() { 418 return this.canGuestsInvite; 419 } 420 421 /** 422 * Can guests invite friends. 423 */ 424 @java.lang.SuppressWarnings("all") 425 public void setCanGuestsInvite(final Boolean canGuestsInvite) { 426 this.canGuestsInvite = canGuestsInvite; 427 } 428 429 /** 430 * Can see guest list. 431 * 432 * @return Can see guest list 433 */ 434 @java.lang.SuppressWarnings("all") 435 public Boolean getGuestListEnabled() { 436 return this.guestListEnabled; 437 } 438 439 /** 440 * Can see guest list. 441 */ 442 @java.lang.SuppressWarnings("all") 443 public void setGuestListEnabled(final Boolean guestListEnabled) { 444 this.guestListEnabled = guestListEnabled; 445 } 446 447 /** 448 * The long-form HTML description of the event. 449 * 450 * @return The long-form HTML description of the event. 451 */ 452 @java.lang.SuppressWarnings("all") 453 public String getDescription() { 454 return this.description; 455 } 456 457 /** 458 * The long-form HTML description of the event. 459 * 460 */ 461 @java.lang.SuppressWarnings("all") 462 public void setDescription(final String description) { 463 this.description = description; 464 } 465 466 /** 467 * The start time of the event. 468 * 469 * @return The start time of the event. 470 */ 471 @java.lang.SuppressWarnings("all") 472 public Date getStartTime() { 473 return this.startTime; 474 } 475 476 /** 477 * The start time of the event. 478 * 479 */ 480 @java.lang.SuppressWarnings("all") 481 public void setStartTime(final Date startTime) { 482 this.startTime = startTime; 483 } 484 485 /** 486 * The end time of the event. 487 * 488 * @return The end time of the event. 489 */ 490 @java.lang.SuppressWarnings("all") 491 public Date getEndTime() { 492 return this.endTime; 493 } 494 495 /** 496 * The end time of the event. 497 * 498 */ 499 @java.lang.SuppressWarnings("all") 500 public void setEndTime(final Date endTime) { 501 this.endTime = endTime; 502 } 503 504 /** 505 * Whether the event has been marked as canceled 506 * 507 * @return Whether the event has been marked as canceled 508 */ 509 @java.lang.SuppressWarnings("all") 510 public Boolean getIsCanceled() { 511 return this.isCanceled; 512 } 513 514 /** 515 * Whether the event has been marked as canceled 516 */ 517 @java.lang.SuppressWarnings("all") 518 public void setIsCanceled(final Boolean isCanceled) { 519 this.isCanceled = isCanceled; 520 } 521 522 /** 523 * The RSVP status of this event. 524 * 525 * @return The RSVP status of this event. 526 */ 527 @java.lang.SuppressWarnings("all") 528 public String getRsvpStatus() { 529 return this.rsvpStatus; 530 } 531 532 /** 533 * The RSVP status of this event. 534 * 535 */ 536 @java.lang.SuppressWarnings("all") 537 public void setRsvpStatus(final String rsvpStatus) { 538 this.rsvpStatus = rsvpStatus; 539 } 540 541 /** 542 * Number of people interested in the event. 543 * 544 * @return Number of people interested in the event 545 */ 546 @GraphAPI(since = "2.1") 547 @java.lang.SuppressWarnings("all") 548 public Long getInterestedCount() { 549 return this.interestedCount; 550 } 551 552 /** 553 * Number of people interested in the event. 554 */ 555 @java.lang.SuppressWarnings("all") 556 public void setInterestedCount(final Long interestedCount) { 557 this.interestedCount = interestedCount; 558 } 559 560 /** 561 * Whether the event is created by page or not. 562 * 563 * @return Whether the event is created by page or not 564 */ 565 @java.lang.SuppressWarnings("all") 566 public Boolean getIsPageOwned() { 567 return this.isPageOwned; 568 } 569 570 /** 571 * Whether the event is created by page or not. 572 */ 573 @java.lang.SuppressWarnings("all") 574 public void setIsPageOwned(final Boolean isPageOwned) { 575 this.isPageOwned = isPageOwned; 576 } 577 578 /** 579 * The visibility of this event. Can be 'OPEN', 'CLOSED', or 'SECRET'. 580 * 581 * @return The visibility of this event. Can be 'OPEN', 'CLOSED', or 'SECRET'. 582 */ 583 @java.lang.SuppressWarnings("all") 584 public String getPrivacy() { 585 return this.privacy; 586 } 587 588 /** 589 * The visibility of this event. Can be 'OPEN', 'CLOSED', or 'SECRET'. 590 * 591 */ 592 @java.lang.SuppressWarnings("all") 593 public void setPrivacy(final String privacy) { 594 this.privacy = privacy; 595 } 596 597 /** 598 * The last time the event was updated. 599 * 600 * @return The last time the event was updated. 601 */ 602 @java.lang.SuppressWarnings("all") 603 public Date getUpdatedTime() { 604 return this.updatedTime; 605 } 606 607 /** 608 * The last time the event was updated. 609 * 610 */ 611 @java.lang.SuppressWarnings("all") 612 public void setUpdatedTime(final Date updatedTime) { 613 this.updatedTime = updatedTime; 614 } 615 616 /** 617 * The URL to a location to buy tickets for this event (on Events for Pages only). 618 * 619 * @return The URL to a location to buy tickets for this event (on Events for Pages only). 620 * @since 1.6.13 621 */ 622 @java.lang.SuppressWarnings("all") 623 public String getTicketUri() { 624 return this.ticketUri; 625 } 626 627 /** 628 * The URL to a location to buy tickets for this event (on Events for Pages only). 629 * 630 * @since 1.6.13 631 */ 632 @java.lang.SuppressWarnings("all") 633 public void setTicketUri(final String ticketUri) { 634 this.ticketUri = ticketUri; 635 } 636 637 /** 638 * The event's picture. 639 * 640 * @return The event's picture (only returned if you explicitly include picture in the fields param; example: 641 * ?fields=id,name,picture) 642 * @since 1.6.13 643 */ 644 @Override 645 @java.lang.SuppressWarnings("all") 646 public ProfilePictureSource getPicture() { 647 return this.picture; 648 } 649 650 /** 651 * The event's picture. 652 * 653 * @since 1.6.13 654 */ 655 @java.lang.SuppressWarnings("all") 656 public void setPicture(final ProfilePictureSource picture) { 657 this.picture = picture; 658 } 659 660 /** 661 * The group the event belongs to, if any. 662 * 663 * @return The group the event belongs to, if any. 664 */ 665 @java.lang.SuppressWarnings("all") 666 public Group getParentGroup() { 667 return this.parentGroup; 668 } 669 670 /** 671 * The group the event belongs to, if any. 672 * 673 */ 674 @java.lang.SuppressWarnings("all") 675 public void setParentGroup(final Group parentGroup) { 676 this.parentGroup = parentGroup; 677 } 678 679 /** 680 * Location associated with the event, if any. 681 * 682 * @return Location associated with the event, if any 683 */ 684 @GraphAPI(since = "2.3") 685 @java.lang.SuppressWarnings("all") 686 public Place getPlace() { 687 return this.place; 688 } 689 690 /** 691 * Location associated with the event, if any. 692 */ 693 @java.lang.SuppressWarnings("all") 694 public void setPlace(final Place place) { 695 this.place = place; 696 } 697 698 /** 699 * Should the time information be ignored in the dates for this event? 700 * 701 * @return <tt>true</tt> if the time information be ignored in the dates for this event, <tt>false</tt> otherwise. 702 * @since 1.6.13 703 */ 704 @java.lang.SuppressWarnings("all") 705 public Boolean getIsDateOnly() { 706 return this.isDateOnly; 707 } 708 709 /** 710 * Should the time information be ignored in the dates for this event? 711 * 712 * @since 1.6.13 713 */ 714 @java.lang.SuppressWarnings("all") 715 public void setIsDateOnly(final Boolean isDateOnly) { 716 this.isDateOnly = isDateOnly; 717 } 718 719 /** 720 * the timezone of the event 721 */ 722 @java.lang.SuppressWarnings("all") 723 public String getTimezone() { 724 return this.timezone; 725 } 726 727 /** 728 * the timezone of the event 729 */ 730 @java.lang.SuppressWarnings("all") 731 public void setTimezone(final String timezone) { 732 this.timezone = timezone; 733 } 734 735 /** 736 * Cover picture 737 * 738 * @return Cover picture 739 */ 740 @Override 741 @java.lang.SuppressWarnings("all") 742 public CoverPhoto getCover() { 743 return this.cover; 744 } 745 746 /** 747 * Cover picture 748 */ 749 @java.lang.SuppressWarnings("all") 750 public void setCover(final CoverPhoto cover) { 751 this.cover = cover; 752 } 753 754 /** 755 * Number of people attending the event 756 * 757 * @return Number of people attending the event 758 */ 759 @GraphAPI(since = "2.1") 760 @java.lang.SuppressWarnings("all") 761 public Integer getAttendingCount() { 762 return this.attendingCount; 763 } 764 765 /** 766 * Number of people attending the event 767 */ 768 @java.lang.SuppressWarnings("all") 769 public void setAttendingCount(final Integer attendingCount) { 770 this.attendingCount = attendingCount; 771 } 772 773 /** 774 * Number of people who declined the event 775 * 776 * @return Number of people who declined the event 777 */ 778 @GraphAPI(since = "2.1") 779 @java.lang.SuppressWarnings("all") 780 public Integer getDeclinedCount() { 781 return this.declinedCount; 782 } 783 784 /** 785 * Number of people who declined the event 786 */ 787 @java.lang.SuppressWarnings("all") 788 public void setDeclinedCount(final Integer declinedCount) { 789 this.declinedCount = declinedCount; 790 } 791 792 /** 793 * Number of people who maybe going to the event 794 * 795 * @return Number of people who maybe going to the event 796 */ 797 @GraphAPI(since = "2.1") 798 @java.lang.SuppressWarnings("all") 799 public Integer getMaybeCount() { 800 return this.maybeCount; 801 } 802 803 /** 804 * Number of people who maybe going to the event 805 */ 806 @java.lang.SuppressWarnings("all") 807 public void setMaybeCount(final Integer maybeCount) { 808 this.maybeCount = maybeCount; 809 } 810 811 /** 812 * Number of people who did not reply to the event 813 * 814 * @return Number of people who did not reply to the event 815 */ 816 @GraphAPI(since = "2.1") 817 @java.lang.SuppressWarnings("all") 818 public Integer getNoreplyCount() { 819 return this.noreplyCount; 820 } 821 822 /** 823 * Number of people who did not reply to the event 824 */ 825 @java.lang.SuppressWarnings("all") 826 public void setNoreplyCount(final Integer noreplyCount) { 827 this.noreplyCount = noreplyCount; 828 } 829}