001// Generated by delombok at Tue Dec 10 13:42:03 UTC 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 java.util.Collections.unmodifiableList; 026import java.util.ArrayList; 027import java.util.Date; 028import java.util.List; 029import com.restfb.Connection; 030import com.restfb.Facebook; 031import com.restfb.JsonMapper; 032import com.restfb.JsonMapper.JsonMappingCompleted; 033import com.restfb.annotation.GraphAPI; 034import com.restfb.exception.FacebookJsonMappingException; 035import com.restfb.json.Json; 036import com.restfb.json.JsonObject; 037import com.restfb.json.JsonValue; 038import com.restfb.types.features.HasComments; 039import com.restfb.types.features.HasCreatedTime; 040import com.restfb.types.features.HasMessage; 041 042/** 043 * Represents the <a href="https://developers.facebook.com/docs/graph-api/reference/post/">Post Graph API type</a>. 044 * 045 * @author <a href="http://restfb.com">Mark Allen</a> 046 * @since 1.5 047 */ 048@SuppressWarnings("deprecation") 049public class Post extends FacebookType implements HasComments, HasCreatedTime, HasMessage { 050 /** 051 * An object containing the ID and name of the user who posted the message. 052 */ 053 @Facebook 054 private From from; 055 /** 056 * Objectives under which this post can be advertised 057 */ 058 @Facebook("allowed_advertising_objects") 059 private String allowedAdvertisingObjects; 060 /** 061 * Objectives under which this post can be advertised 062 */ 063 @Facebook("allowed_advertising_objectives") 064 private List<String> allowedAdvertisingObjectives = new ArrayList<>(); 065 /** 066 * The call to action type used in any Page posts for mobile app engagement ads 067 */ 068 @Facebook("call_to_action") 069 private PostCallToAction callToAction; 070 @Facebook("child_attachments") 071 private List<Post> childAttachments = new ArrayList<>(); 072 /** 073 * If comments are being mirrored to an external site, this function returns the domain of that external site. 074 */ 075 @Facebook("comments_mirroring_domain") 076 private String commentsMirroringDomain; 077 /** 078 * The message. 079 */ 080 @Facebook 081 private String message; 082 /** 083 * ID of the parent post 084 */ 085 @Facebook("parent_id") 086 private String parentId; 087 /** 088 * The permanent static URL to the post on www.facebook.com. 089 * <p> 090 * Example: https://www.facebook.com/FacebookforDevelopers/posts/10153449196353553 091 * </p> 092 * 093 */ 094 @Facebook("permalink_url") 095 private String permalinkUrl; 096 /** 097 * If available, a link to the picture included with this post. 098 */ 099 @Facebook 100 private String picture; 101 /** 102 * The link attached to this post. 103 * 104 * Hint for Graph API 3.3: Use <code>attachment/url_unshimmed</code> instead 105 */ 106 @Facebook 107 @GraphAPI(until = "3.2") 108 private String link; 109 /** 110 * The name of the link. 111 * 112 * Hint for Graph API 3.3: Use <code>attachment/title</code> instead 113 */ 114 @Facebook 115 @GraphAPI(until = "3.2") 116 private String name; 117 /** 118 * The caption of the link (appears beneath the link name). 119 * 120 * Hint for Graph API 3.3: Use <code>attachment/title</code> instead 121 */ 122 @Facebook 123 @GraphAPI(until = "3.2") 124 private String caption; 125 /** 126 * A description of the link (appears beneath the link caption). 127 * 128 * Hint for Graph API 3.3: Use <code>attachment/description</code> instead 129 */ 130 @Facebook 131 @GraphAPI(until = "3.2") 132 private String description; 133 /** 134 * If available, the source link attached to this post (for example, a flash or video file). 135 * 136 * Hint for Graph API 3.3: Use <code>attachment/media/source</code> instead 137 */ 138 @Facebook 139 @GraphAPI(until = "3.2") 140 private String source; 141 /** 142 * The application used to create this post. 143 */ 144 @Facebook 145 private NamedFacebookType application; 146 /** 147 * A link to an icon representing the type of this post. 148 */ 149 @Facebook 150 private String icon; 151 /** 152 * The privacy settings for this post. 153 */ 154 @Facebook 155 private Privacy privacy; 156 /** 157 * Status of the promotion, if the post was promoted. 158 */ 159 @Facebook("promotion_status") 160 private String promotionStatus; 161 /** 162 * Object that controls news feed targeting for this post. 163 * 164 * To force Facebook to fill the <code>feed_targeting</code> field you have to fetch the post with the 165 * <code>fields=feed_targeting</code> parameter, otherwise the feedTargeting is <code>null</code>. 166 * 167 * 168 * @since 1.11.0 169 */ 170 @Facebook("feed_targeting") 171 private FeedTargeting feedTargeting; 172 /** 173 * Whether the viewer can send a private reply to this post (Page viewers only) 174 */ 175 @Facebook("can_reply_privately") 176 @GraphAPI(since = "2.5") 177 private Boolean canReplyPrivately; 178 /** 179 * The profile this was posted on if different from the author. 180 */ 181 @Facebook 182 @GraphAPI(since = "2.5") 183 private NamedFacebookType target; 184 /** 185 * Ads targeting information of the post. 186 */ 187 @Facebook 188 private Targeting targeting; 189 /** 190 * Timeline visibility information of the post. 191 */ 192 @Facebook("timeline_visibility") 193 private String timelineVisibility; 194 /** 195 * Duplicate mapping for "likes" since FB can return it differently in different situations. 196 */ 197 @Facebook("likes") 198 private Long likesCount = 0L; 199 /** 200 * Duplicate mapping for "likes" since FB can return it differently in different situations. 201 * 202 * -- GETTER -- The likes on this post. 203 * <p> 204 * Sometimes this can be {@code null} - check {@link #getLikesCount()} instead in that case. 205 */ 206 @Facebook 207 private Likes likes; 208 /** 209 * The time the post was initially published. 210 */ 211 @Facebook("created_time") 212 private Date createdTime; 213 /** 214 * The time of the last comment on this post. 215 */ 216 @Facebook("updated_time") 217 private Date updatedTime; 218 /** 219 * This field is available on tagged Posts. 220 */ 221 @Facebook("tagged_time") 222 private Date taggedTime; 223 /** 224 * The Facebook object id for an uploaded photo or video. 225 * 226 * Hint for Graph API 3.3: Use <code>attachment/target/id</code> instead 227 * 228 * @since 1.6.5 229 */ 230 @Facebook("object_id") 231 @GraphAPI(until = "3.2") 232 private String objectId; 233 /** 234 * The {@code status_type} of post this is, for example {@code "approved_friend"}. 235 * 236 * @since 1.6.12 237 */ 238 @Facebook("status_type") 239 private String statusType; 240 /** 241 * Text from stories not intentionally generated by users 242 * 243 * @since 1.6.16 244 */ 245 @Facebook 246 private String story; 247 /** 248 * The comments for this post. 249 */ 250 @Facebook 251 private Comments comments; 252 /** 253 * The reactions for this post. 254 */ 255 @Facebook 256 private Reactions reactions; 257 /** 258 * The place where this post occurred. 259 * 260 * @since 1.6.8 261 */ 262 @Facebook 263 private Place place; 264 @Facebook 265 private List<NamedFacebookType> to = new ArrayList<>(); 266 @Facebook 267 private List<Action> actions = new ArrayList<>(); 268 @Facebook 269 private List<Property> properties = new ArrayList<>(); 270 @Facebook("message_tags") 271 private transient String rawMessageTags; 272 private List<MessageTag> messageTags = new ArrayList<>(); 273 @Facebook("story_tags") 274 private transient String rawStoryTags; 275 private List<MessageTag> storyTags = new ArrayList<>(); 276 @Facebook("sponsor_tags") 277 private List<NamedFacebookType> sponsorTags = new ArrayList<>(); 278 @Facebook 279 private Connection<Insight> insights; 280 /** 281 * UNIX timestamp of the scheduled publish time for the post. 282 */ 283 @Facebook("scheduled_publish_time") 284 private Date scheduledPublishTime; 285 /** 286 * Number of times the post has been shared. 287 */ 288 @Facebook 289 private Shares shares; 290 /** 291 * ID of admin who created the post. 292 * 293 * Applies to pages only 294 * 295 * @since 1.10.0 296 */ 297 @Facebook("admin_creator") 298 private NamedFacebookType adminCreator; 299 /** 300 * Whether the post can be promoted on Instagram. 301 * <p> 302 * It returns the enum <code>eligible</code> if it can be promoted. Otherwise it returns an enum for why it cannot be 303 * promoted 304 * </p> 305 * 306 */ 307 @Facebook("instagram_eligibility") 308 private String instagramEligibility; 309 /** 310 * Whether or not the post references an app. 311 */ 312 @Facebook("is_app_share") 313 private Boolean isAppShare; 314 @Facebook("is_eligible_for_promotion") 315 private Boolean isEligibleForPromotion; 316 /** 317 * Whether the post has expiration time that has passed 318 */ 319 @Facebook("is_expired") 320 private Boolean isExpired; 321 /** 322 * If this post is marked as hidden (applies to Pages only). 323 * 324 * @since 1.10.0 325 */ 326 @Facebook("is_hidden") 327 private Boolean isHidden; 328 /** 329 * Whether this post can be promoted in Instagram. 330 */ 331 @Facebook("is_instagram_eligible") 332 private Boolean isInstagramEligible; 333 /** 334 * Whether the post is currently popular. 335 * 336 * Based on whether the total actions as a percentage of reach exceeds a certain threshold 337 */ 338 @Facebook("is_popular") 339 private Boolean isPopular; 340 /** 341 * Indicates whether a scheduled post was published. (applies to scheduled Page Post only, for users post and 342 * instantly published posts this value is always <code>true</code>) 343 * 344 * @since 1.10.0 345 */ 346 @Facebook("is_published") 347 private Boolean isPublished; 348 /** 349 * Whether the post is a spherical video post. 350 */ 351 @Facebook("is_spherical") 352 private Boolean isSpherical; 353 /** 354 * Whether display the end card for a multi-link share post 355 */ 356 @Facebook("multi_share_end_card") 357 private Boolean multiShareEndCard; 358 /** 359 * Whether automatically select the order of the links in multi-link share post when used in an ad 360 */ 361 @Facebook("multi_share_optimized") 362 private Boolean multiShareOptimized; 363 /** 364 * Attachments added to a post. 365 * 366 * To force Facebook to fill the <code>attachments</code> field you have to fetch the post with the 367 * <code>fields=attachments</code> parameter, otherwise the attachments are <code>null</code>. 368 */ 369 @Facebook 370 private Attachments attachments; 371 /** 372 * Full picture URL. 373 * 374 * you get the url to this posts full picture. 375 * 376 * To force Facebook to fill the <code>full_picture</code> field you have to fetch the post with the 377 * <code>fields=full_picture</code> parameter, otherwise the full_picture is <code>null</code>. 378 * 379 */ 380 @Facebook("full_picture") 381 private String fullPicture; 382 /** 383 * ID of the user or Page the post was shared from 384 */ 385 @Facebook 386 private String via; 387 388 /** 389 * A string indicating the object type of this post. 390 * 391 * Hint for Graph API 3.3: <code>attachment/media_type</code> If there is no <code>attachment</code> or <code>media_type=link</code>, the 392 * value is the same as <code>type=status</code>. 393 * 394 * @return A string indicating the object type of this post. 395 */ 396 @Override 397 @GraphAPI(until = "3.2") 398 public String getType() { 399 return super.getType(); 400 } 401 402 private static final long serialVersionUID = 3L; 403 404 /** 405 * Post-JSON-mapping operation that populates the {@code messageTags} field "by hand". 406 * <p> 407 * This is a temporary hack until we have formal public support for it/improved {@code JsonMapper} capabilities so it 408 * can handle arbitrary Map types. 409 * 410 * @param jsonMapper 411 * The {@code JsonMapper} that was used to map to this type. 412 * @since 1.6.11 413 */ 414 @JsonMappingCompleted 415 protected void jsonMappingCompleted(JsonMapper jsonMapper) { 416 if (rawMessageTags != null) { 417 messageTags = createTags(rawMessageTags, jsonMapper); 418 } 419 if (rawStoryTags != null) { 420 storyTags = createTags(rawStoryTags, jsonMapper); 421 } 422 } 423 424 private List<MessageTag> createTags(String rawTags, JsonMapper jsonMapper) { 425 try { 426 return jsonMapper.toJavaList(rawTags, MessageTag.class); 427 } catch (FacebookJsonMappingException je) { 428 } 429 // message tags not in Graph API 2.5 format, ignore this exception and try another way 430 try { 431 List<MessageTag> resultList = new ArrayList<>(); 432 JsonObject rawMessageTagsObject = jsonMapper.toJavaObject(rawTags, JsonObject.class); 433 for (String key : rawMessageTagsObject.names()) { 434 String tagArrayString = rawMessageTagsObject.get(key).toString(); 435 resultList.addAll(jsonMapper.toJavaList(tagArrayString, MessageTag.class)); 436 } 437 return resultList; 438 } catch (FacebookJsonMappingException je) { 439 return new ArrayList<>(); 440 } 441 } 442 443 444 /** 445 * Represents the undocumented {@code Property} type. 446 * 447 * @author <a href="http://restfb.com">Mark Allen</a> 448 * @since 1.6.4 449 */ 450 public static class Property extends AbstractFacebookType { 451 /** 452 * The name of the property. 453 */ 454 @Facebook 455 private String name; 456 /** 457 * The text of the property. 458 */ 459 @Facebook 460 private String text; 461 /** 462 * The URL of the property. 463 */ 464 @Facebook 465 private String href; 466 private static final long serialVersionUID = 1L; 467 468 /** 469 * The name of the property. 470 * 471 * @return The name of the property. 472 */ 473 @java.lang.SuppressWarnings("all") 474 public String getName() { 475 return this.name; 476 } 477 478 /** 479 * The name of the property. 480 */ 481 @java.lang.SuppressWarnings("all") 482 public void setName(final String name) { 483 this.name = name; 484 } 485 486 /** 487 * The text of the property. 488 * 489 * @return The text of the property. 490 */ 491 @java.lang.SuppressWarnings("all") 492 public String getText() { 493 return this.text; 494 } 495 496 /** 497 * The text of the property. 498 */ 499 @java.lang.SuppressWarnings("all") 500 public void setText(final String text) { 501 this.text = text; 502 } 503 504 /** 505 * The URL of the property. 506 * 507 * @return The URL of the property. 508 */ 509 @java.lang.SuppressWarnings("all") 510 public String getHref() { 511 return this.href; 512 } 513 514 /** 515 * The URL of the property. 516 */ 517 @java.lang.SuppressWarnings("all") 518 public void setHref(final String href) { 519 this.href = href; 520 } 521 } 522 523 524 /** 525 * Represents the <a href="http://developers.facebook.com/docs/reference/api/post">Action Graph API type</a>. 526 * 527 * @author <a href="http://restfb.com">Mark Allen</a> 528 * @since 1.5 529 */ 530 public static class Action extends AbstractFacebookType { 531 /** 532 * Gets the name of the action. 533 */ 534 @Facebook 535 private String name; 536 /** 537 * The link for the action. 538 */ 539 @Facebook 540 private String link; 541 private static final long serialVersionUID = 1L; 542 543 /** 544 * Gets the name of the action. 545 * 546 * @return Gets the name of the action. 547 */ 548 @java.lang.SuppressWarnings("all") 549 public String getName() { 550 return this.name; 551 } 552 553 /** 554 * Gets the name of the action. 555 */ 556 @java.lang.SuppressWarnings("all") 557 public void setName(final String name) { 558 this.name = name; 559 } 560 561 /** 562 * The link for the action. 563 * 564 * @return The link for the action. 565 */ 566 @java.lang.SuppressWarnings("all") 567 public String getLink() { 568 return this.link; 569 } 570 571 /** 572 * The link for the action. 573 */ 574 @java.lang.SuppressWarnings("all") 575 public void setLink(final String link) { 576 this.link = link; 577 } 578 } 579 580 581 public static class KeyedType extends NamedFacebookType { 582 private static final long serialVersionUID = 1L; 583 @Facebook 584 private String key; 585 586 @JsonMappingCompleted 587 private void replaceId() { 588 if (getId() == null && key != null) { 589 setId(key); 590 } 591 if (key == null && getId() != null) { 592 setKey(getId()); 593 } 594 } 595 596 @java.lang.SuppressWarnings("all") 597 public String getKey() { 598 return this.key; 599 } 600 601 @java.lang.SuppressWarnings("all") 602 public void setKey(final String key) { 603 this.key = key; 604 } 605 } 606 607 608 public static class Targeting extends AbstractFacebookType { 609 private static final long serialVersionUID = 1L; 610 @Facebook("geo_locations") 611 @GraphAPI(since = "2.8") 612 FeedTargeting geoLocations; 613 @Facebook 614 protected List<KeyedType> cities = new ArrayList<>(); 615 @Facebook 616 protected List<String> countries = new ArrayList<>(); 617 @Facebook 618 protected List<KeyedType> regions = new ArrayList<>(); 619 @Facebook("regions") 620 private transient String rawRegionsString; 621 622 @JsonMappingCompleted 623 private void convertList(JsonMapper mapper) { 624 if (rawRegionsString != null) { 625 JsonValue jsonValue = Json.parse(rawRegionsString); 626 if (jsonValue.isObject()) { 627 JsonObject rawRegions = jsonValue.asObject(); 628 for (String key : rawRegions.names()) { 629 String region = rawRegions.get(key).toString(); 630 regions.add(mapper.toJavaObject(region, KeyedType.class)); 631 } 632 } 633 } 634 } 635 636 @Facebook 637 protected List<Integer> locales = new ArrayList<>(); 638 639 public boolean addCity(KeyedType city) { 640 if (geoLocations != null) { 641 return geoLocations.addCity(city); 642 } 643 return cities.add(city); 644 } 645 646 public boolean addCountry(String country) { 647 if (geoLocations != null) { 648 return geoLocations.addCountry(country); 649 } 650 return countries.add(country); 651 } 652 653 public boolean addLocale(Integer locale) { 654 if (geoLocations != null) { 655 return geoLocations.addLocale(locale); 656 } 657 return locales.add(locale); 658 } 659 660 public boolean addRegion(KeyedType region) { 661 if (geoLocations != null) { 662 return geoLocations.addRegion(region); 663 } 664 return regions.add(region); 665 } 666 667 /** 668 * Values of targeting cities. 669 * 670 * Use type of adcity to find Targeting Options and use the returned key to specify. 671 * 672 * @return list of cities 673 */ 674 public List<KeyedType> getCities() { 675 if (geoLocations != null) { 676 return geoLocations.getCities(); 677 } 678 return unmodifiableList(cities); 679 } 680 681 /** 682 * Values of targeting countries. 683 * 684 * You can specify up to 25 countries. Use ISO 3166 format codes. 685 * 686 * @return list of targeting countries. 687 */ 688 public List<String> getCountries() { 689 if (geoLocations != null) { 690 return geoLocations.getCountries(); 691 } 692 return unmodifiableList(countries); 693 } 694 695 /** 696 * Targeted locales. 697 * 698 * Use type of adlocale to find Targeting Options and use the returned key to specify. 699 * 700 * @return list of locales 701 */ 702 public List<Integer> getLocales() { 703 if (geoLocations != null && !geoLocations.getLocales().isEmpty()) { 704 return geoLocations.getLocales(); 705 } 706 return unmodifiableList(locales); 707 } 708 709 /** 710 * Values of targeting regions. 711 * 712 * Use type of {@code adregion} to find Targeting Options and use the returned key to specify. 713 * 714 * @return list of regions 715 */ 716 public List<KeyedType> getRegions() { 717 if (geoLocations != null) { 718 return geoLocations.getRegions(); 719 } 720 return unmodifiableList(regions); 721 } 722 723 public boolean removeCity(NamedFacebookType city) { 724 if (geoLocations != null) { 725 return geoLocations.removeCity(city); 726 } 727 return cities.remove(city); 728 } 729 730 public boolean removeCountry(String country) { 731 if (geoLocations != null) { 732 return geoLocations.removeCountry(country); 733 } 734 return countries.remove(country); 735 } 736 737 public boolean removeLocale(Integer locale) { 738 if (geoLocations != null) { 739 return geoLocations.removeLocale(locale); 740 } 741 return locales.remove(locale); 742 } 743 744 public boolean removeRegion(NamedFacebookType region) { 745 if (geoLocations != null) { 746 return geoLocations.removeRegion(region); 747 } 748 return regions.remove(region); 749 } 750 751 @GraphAPI(since = "2.8") 752 @java.lang.SuppressWarnings("all") 753 public FeedTargeting getGeoLocations() { 754 return this.geoLocations; 755 } 756 757 @java.lang.SuppressWarnings("all") 758 public void setGeoLocations(final FeedTargeting geoLocations) { 759 this.geoLocations = geoLocations; 760 } 761 } 762 763 764 /** 765 * Object that controls news feed targeting for this post. 766 * 767 * Anyone in these groups will be more likely to see this post, others will be less likely, but may still see it 768 * anyway. Any of the targeting fields shown here can be used, none are required (applies to Pages only). 769 * 770 * Represents the <a href="http://developers.facebook.com/docs/reference/api/post#fields">Feed Targeting API type</a>. 771 */ 772 public static class FeedTargeting extends Targeting { 773 private static final long serialVersionUID = 1L; 774 /** 775 * Maximum age. 776 */ 777 @Facebook("age_max") 778 private Integer ageMax; 779 /** 780 * Must be 13 or higher. Default is 0 781 */ 782 @Facebook("age_min") 783 private Integer ageMin; 784 @Facebook("relevant_until_ts") 785 private Date relevantUntilTs; 786 @Facebook("college_majors") 787 private List<String> collegeMajors = new ArrayList<>(); 788 @Facebook("college_networks") 789 private List<FacebookType> collegeNetworks = new ArrayList<>(); 790 @Facebook("college_years") 791 private List<Integer> collegeYears = new ArrayList<>(); 792 @Facebook("education_statuses") 793 private List<Integer> educationStatuses = new ArrayList<>(); 794 @Facebook("fan_of") 795 private List<String> fanOf = new ArrayList<>(); 796 @Facebook 797 private List<Integer> genders = new ArrayList<>(); 798 @Facebook("interested_in") 799 private List<Integer> interestedIn = new ArrayList<>(); 800 @Facebook 801 private List<String> interests = new ArrayList<>(); 802 @Facebook("relationship_statuses") 803 private List<Integer> relationshipStatuses = new ArrayList<>(); 804 @Facebook("work_networks") 805 private List<NamedFacebookType> workNetworks = new ArrayList<>(); 806 807 /** 808 * Target people who majored in these college subjects. 809 * 810 * Limited to 200 college major values. Use type of adcollegemajor to find Targeting Options and use the returned 811 * name to specify. 812 * 813 * @return list of college majors 814 */ 815 public List<String> getCollegeMajors() { 816 return unmodifiableList(collegeMajors); 817 } 818 819 public boolean addCollegeMajor(String collegeMajor) { 820 return collegeMajors.add(collegeMajor); 821 } 822 823 public boolean removeCollegeMajor(String collegeMajor) { 824 return collegeMajors.remove(collegeMajor); 825 } 826 827 /** 828 * Colleges, for college graduates. 829 * 830 * Limit is 200 values. 831 * 832 * @return list of colleges 833 */ 834 public List<FacebookType> getCollegeNetworks() { 835 return unmodifiableList(collegeNetworks); 836 } 837 838 public boolean addCollegeNetwork(FacebookType collegeNetwork) { 839 return collegeNetworks.add(collegeNetwork); 840 } 841 842 public boolean removeCollegeNetwork(FacebookType collegeNetwork) { 843 return collegeNetworks.remove(collegeNetwork); 844 } 845 846 /** 847 * Array of integers for graduation year from college. 848 * 849 * @return graduation year list 850 */ 851 public List<Integer> getCollegeYears() { 852 return unmodifiableList(collegeYears); 853 } 854 855 public boolean addCollegeYear(Integer collegeYear) { 856 return collegeYears.add(collegeYear); 857 } 858 859 public boolean removeCollegeYear(Integer collegeYear) { 860 return collegeYears.remove(collegeYear); 861 } 862 863 /** 864 * Array of integers for targeting based on education level. 865 * 866 * Use 1 for high school, 2 for undergraduate, and 3 for alum (or localized equivalents). 867 * 868 * @return list of education levels 869 */ 870 public List<Integer> getEducationStatuses() { 871 return unmodifiableList(educationStatuses); 872 } 873 874 public boolean addEducationStatus(Integer educationStatus) { 875 return educationStatuses.add(educationStatus); 876 } 877 878 public boolean removeEducationStatus(Integer educationStatus) { 879 return educationStatuses.remove(educationStatus); 880 } 881 882 /** 883 * List of object ids. 884 * 885 * the user should be fan of these objects (interests). 886 * 887 * @return list of object ids 888 */ 889 public List<String> getFanOf() { 890 return unmodifiableList(fanOf); 891 } 892 893 public boolean addFanOf(String interestId) { 894 return fanOf.add(interestId); 895 } 896 897 public boolean removeFanOf(String interestId) { 898 return fanOf.remove(interestId); 899 } 900 901 /** 902 * Target specific genders. 903 * 904 * 1 targets all male viewers and 2 females. Default is to target both. 905 * 906 * @return list of genders 907 */ 908 public List<Integer> getGenders() { 909 return unmodifiableList(genders); 910 } 911 912 public boolean addGender(Integer gender) { 913 return genders.add(gender); 914 } 915 916 public boolean removeGender(Integer gender) { 917 return genders.remove(gender); 918 } 919 920 /** 921 * Indicates targeting based on the 'interested in' field of the user profile. 922 * 923 * You can specify an integer of 1 to indicate male, 2 indicates female. Default is all types. 924 * 925 * Please note 'interested in' targeting is not available in France due to local laws. 926 * 927 * @return list of 'interested in' types 928 */ 929 public List<Integer> getInterestedIn() { 930 return unmodifiableList(interestedIn); 931 } 932 933 public boolean addInterestedIn(Integer interest) { 934 return interestedIn.add(interest); 935 } 936 937 public boolean removeInterestedIn(Integer interest) { 938 return interestedIn.remove(interest); 939 } 940 941 /** 942 * Indicates targeting based on the 'interests' field of the user profile. 943 * 944 * @return list of 'interests' types 945 */ 946 public List<String> getInterests() { 947 return unmodifiableList(interests); 948 } 949 950 public boolean addInterests(String interest) { 951 return interests.add(interest); 952 } 953 954 public boolean removeInterests(String interest) { 955 return interests.remove(interest); 956 } 957 958 /** 959 * Array of integers for targeting based on relationship status. 960 * 961 * Use 1 for single, 2 for 'in a relationship', 3 for married, and 4 for engaged. Default is all types. 962 * 963 * @return list of relationship statuses 964 */ 965 public List<Integer> getRelationshipStatuses() { 966 return unmodifiableList(relationshipStatuses); 967 } 968 969 public boolean addRelationshipStatus(Integer relationshipStatus) { 970 return relationshipStatuses.add(relationshipStatus); 971 } 972 973 public boolean removeRelationshipStatus(Integer relationshipStatus) { 974 return relationshipStatuses.remove(relationshipStatus); 975 } 976 977 /** 978 * Company, organization, or other workplace. 979 * 980 * <b>Name</b>: Name of targeted workplace. Use type of adworkplace to find Targeting Options and use the returned 981 * name to specify this. 982 * 983 * <b>Id</b>: Unique ID of targeted workplace. Use type of adworkplace to find Targeting Options and use the 984 * returned key to specify this (must match paired name value). 985 * 986 * @return list of work networks 987 */ 988 public List<NamedFacebookType> getWorkNetworks() { 989 return unmodifiableList(workNetworks); 990 } 991 992 public boolean addWorkNetwork(NamedFacebookType workNetwork) { 993 return workNetworks.add(workNetwork); 994 } 995 996 public boolean removeWorkNetwork(NamedFacebookType workNetwork) { 997 return workNetworks.remove(workNetwork); 998 } 999 1000 /** 1001 * Maximum age. 1002 */ 1003 @java.lang.SuppressWarnings("all") 1004 public Integer getAgeMax() { 1005 return this.ageMax; 1006 } 1007 1008 /** 1009 * Maximum age. 1010 */ 1011 @java.lang.SuppressWarnings("all") 1012 public void setAgeMax(final Integer ageMax) { 1013 this.ageMax = ageMax; 1014 } 1015 1016 /** 1017 * Must be 13 or higher. Default is 0 1018 */ 1019 @java.lang.SuppressWarnings("all") 1020 public Integer getAgeMin() { 1021 return this.ageMin; 1022 } 1023 1024 /** 1025 * Must be 13 or higher. Default is 0 1026 */ 1027 @java.lang.SuppressWarnings("all") 1028 public void setAgeMin(final Integer ageMin) { 1029 this.ageMin = ageMin; 1030 } 1031 1032 @java.lang.SuppressWarnings("all") 1033 public Date getRelevantUntilTs() { 1034 return this.relevantUntilTs; 1035 } 1036 1037 @java.lang.SuppressWarnings("all") 1038 public void setRelevantUntilTs(final Date relevantUntilTs) { 1039 this.relevantUntilTs = relevantUntilTs; 1040 } 1041 } 1042 1043 1044 /** 1045 * Represents the Shares included the <a href="http://developers.facebook.com/docs/reference/api/post">Post</a> 1046 * response. Presently only supports count. 1047 * 1048 * @since 1.6.11 1049 */ 1050 public static class Shares extends AbstractFacebookType { 1051 /** 1052 * The number of shares. 1053 */ 1054 @Facebook 1055 private Long count = 0L; 1056 private static final long serialVersionUID = 1L; 1057 1058 /** 1059 * The number of shares. 1060 * 1061 * @return The number of shares. 1062 */ 1063 @java.lang.SuppressWarnings("all") 1064 public Long getCount() { 1065 return this.count; 1066 } 1067 1068 /** 1069 * The number of shares. 1070 */ 1071 @java.lang.SuppressWarnings("all") 1072 public void setCount(final Long count) { 1073 this.count = count; 1074 } 1075 } 1076 1077 1078 /** 1079 * Represents the attachments included in<a href="http://developers.facebook.com/docs/reference/api/post">Graph API 1080 * Post type</a>. 1081 * 1082 * @author <a href="https://github.com/kevinleturc/">Kevin Leturc</a> 1083 * @since 1.12.0 1084 */ 1085 public static class Attachments extends AbstractFacebookType { 1086 /** 1087 * All media attachments associated with this post. 1088 * 1089 * @return All media attachments associated with this post. 1090 */ 1091 @Facebook 1092 private List<StoryAttachment> data = new ArrayList<>(); 1093 private static final long serialVersionUID = 1L; 1094 1095 /** 1096 * The attachments. 1097 * 1098 * @return The attachments. 1099 */ 1100 public List<StoryAttachment> getData() { 1101 return unmodifiableList(data); 1102 } 1103 1104 public boolean addData(StoryAttachment attachment) { 1105 return data.add(attachment); 1106 } 1107 1108 public boolean removeData(StoryAttachment attachment) { 1109 return data.remove(attachment); 1110 } 1111 } 1112 1113 /** 1114 * The number of likes on this post. 1115 * 1116 * @return The number of likes on this post. 1117 */ 1118 public Long getLikesCount() { 1119 if (getLikes() != null) { 1120 return getLikes().getTotalCount(); 1121 } 1122 return likesCount; 1123 } 1124 1125 /** 1126 * The number of reactions on this post. 1127 * 1128 * @return The number of reactions on this post. 1129 */ 1130 public Long getReactionsCount() { 1131 if (getReactions() != null) { 1132 return getReactions().getTotalCount(); 1133 } 1134 return 0L; 1135 } 1136 1137 /** 1138 * The number of shares of this post. 1139 * 1140 * @return The number of shares of this post. 1141 */ 1142 public Long getSharesCount() { 1143 if (shares != null) { 1144 return shares.getCount(); 1145 } 1146 return 0L; 1147 } 1148 1149 /** 1150 * The number of comments of this post. 1151 * 1152 * @return The number of comments of this post. 1153 */ 1154 public Long getCommentsCount() { 1155 if (comments != null) { 1156 return comments.getTotalCount(); 1157 } 1158 return 0L; 1159 } 1160 1161 /** 1162 * A list of the profiles mentioned or targeted in this post. 1163 * 1164 * @return A list of the profiles mentioned or targeted in this post. 1165 */ 1166 public List<NamedFacebookType> getTo() { 1167 return unmodifiableList(to); 1168 } 1169 1170 public boolean addTo(NamedFacebookType profile) { 1171 return to.add(profile); 1172 } 1173 1174 public boolean removeTo(NamedFacebookType profile) { 1175 return to.remove(profile); 1176 } 1177 1178 /** 1179 * A list of available action names and links (including commenting, liking, and an optional app-specified action). 1180 * 1181 * @return A list of available action names and links (including commenting, liking, and an optional app-specified 1182 * action). 1183 */ 1184 public List<Action> getActions() { 1185 return unmodifiableList(actions); 1186 } 1187 1188 public boolean addAction(Action action) { 1189 return actions.add(action); 1190 } 1191 1192 public boolean removeAction(Action action) { 1193 return actions.remove(action); 1194 } 1195 1196 /** 1197 * A list of properties for this post. 1198 * <p> 1199 * This field is undocumented. 1200 * 1201 * @return A list of properties for this post. 1202 */ 1203 public List<Property> getProperties() { 1204 return unmodifiableList(properties); 1205 } 1206 1207 public boolean addProperty(Property property) { 1208 return properties.add(property); 1209 } 1210 1211 public boolean removeProperty(Property property) { 1212 return properties.remove(property); 1213 } 1214 1215 /** 1216 * Objects tagged in the message (Users, Pages, etc). 1217 * 1218 * @return Objects tagged in the message (Users, Pages, etc). 1219 * @since 1.6.10 1220 */ 1221 public List<MessageTag> getMessageTags() { 1222 return unmodifiableList(messageTags); 1223 } 1224 1225 public void addMessageTag(MessageTag messageTag) { 1226 messageTags.add(messageTag); 1227 } 1228 1229 public void removeMessageTag(MessageTag messageTag) { 1230 messageTags.remove(messageTag); 1231 } 1232 1233 /** 1234 * Objects tagged in the story (Users, Pages, etc). 1235 * 1236 * @return Objects tagged in the story (Users, Pages, etc). 1237 */ 1238 public List<MessageTag> getStoryTags() { 1239 return unmodifiableList(storyTags); 1240 } 1241 1242 public void addStoryTag(MessageTag messageTag) { 1243 storyTags.add(messageTag); 1244 } 1245 1246 public void removeStoryTag(MessageTag messageTag) { 1247 storyTags.remove(messageTag); 1248 } 1249 1250 /** 1251 * Sub-shares of a multi-link share post 1252 * 1253 * @return Sub-shares of a multi-link share post 1254 */ 1255 public List<Post> getChildAttachments() { 1256 return unmodifiableList(childAttachments); 1257 } 1258 1259 public void addChildAttachment(Post childAttachment) { 1260 childAttachments.add(childAttachment); 1261 } 1262 1263 public void removeChildAttachment(Post childAttachment) { 1264 childAttachments.remove(childAttachment); 1265 } 1266 1267 /** 1268 * A sponsor tag points to a Facebook Page. 1269 * 1270 * (Page owners can allow their business partners to directly boost their posts.) 1271 */ 1272 public List<NamedFacebookType> getSponsorTags() { 1273 return unmodifiableList(sponsorTags); 1274 } 1275 1276 public boolean addSponsorTag(NamedFacebookType sponsorTag) { 1277 return sponsorTags.add(sponsorTag); 1278 } 1279 1280 public boolean removeSponsorTag(NamedFacebookType sponsorTag) { 1281 return sponsorTags.remove(sponsorTag); 1282 } 1283 1284 /** 1285 * An object containing the ID and name of the user who posted the message. 1286 * 1287 * @return An object containing the ID and name of the user who posted the message. 1288 */ 1289 @java.lang.SuppressWarnings("all") 1290 public From getFrom() { 1291 return this.from; 1292 } 1293 1294 /** 1295 * An object containing the ID and name of the user who posted the message. 1296 */ 1297 @java.lang.SuppressWarnings("all") 1298 public void setFrom(final From from) { 1299 this.from = from; 1300 } 1301 1302 /** 1303 * Objectives under which this post can be advertised 1304 * 1305 * @return Objectives under which this post can be advertised 1306 */ 1307 @java.lang.SuppressWarnings("all") 1308 public String getAllowedAdvertisingObjects() { 1309 return this.allowedAdvertisingObjects; 1310 } 1311 1312 /** 1313 * Objectives under which this post can be advertised 1314 */ 1315 @java.lang.SuppressWarnings("all") 1316 public void setAllowedAdvertisingObjects(final String allowedAdvertisingObjects) { 1317 this.allowedAdvertisingObjects = allowedAdvertisingObjects; 1318 } 1319 1320 /** 1321 * Objectives under which this post can be advertised 1322 * 1323 * @return Objectives under which this post can be advertised 1324 */ 1325 @java.lang.SuppressWarnings("all") 1326 public List<String> getAllowedAdvertisingObjectives() { 1327 return this.allowedAdvertisingObjectives; 1328 } 1329 1330 /** 1331 * Objectives under which this post can be advertised 1332 */ 1333 @java.lang.SuppressWarnings("all") 1334 public void setAllowedAdvertisingObjectives(final List<String> allowedAdvertisingObjectives) { 1335 this.allowedAdvertisingObjectives = allowedAdvertisingObjectives; 1336 } 1337 1338 /** 1339 * The call to action type used in any Page posts for mobile app engagement ads 1340 */ 1341 @java.lang.SuppressWarnings("all") 1342 public PostCallToAction getCallToAction() { 1343 return this.callToAction; 1344 } 1345 1346 /** 1347 * The call to action type used in any Page posts for mobile app engagement ads 1348 */ 1349 @java.lang.SuppressWarnings("all") 1350 public void setCallToAction(final PostCallToAction callToAction) { 1351 this.callToAction = callToAction; 1352 } 1353 1354 /** 1355 * If comments are being mirrored to an external site, this function returns the domain of that external site. 1356 * 1357 * @return If comments are being mirrored to an external site, this function returns the domain of that external site. 1358 */ 1359 @java.lang.SuppressWarnings("all") 1360 public String getCommentsMirroringDomain() { 1361 return this.commentsMirroringDomain; 1362 } 1363 1364 /** 1365 * If comments are being mirrored to an external site, this function returns the domain of that external site. 1366 */ 1367 @java.lang.SuppressWarnings("all") 1368 public void setCommentsMirroringDomain(final String commentsMirroringDomain) { 1369 this.commentsMirroringDomain = commentsMirroringDomain; 1370 } 1371 1372 /** 1373 * The message. 1374 * 1375 * @return The message. 1376 */ 1377 @Override 1378 @java.lang.SuppressWarnings("all") 1379 public String getMessage() { 1380 return this.message; 1381 } 1382 1383 /** 1384 * The message. 1385 */ 1386 @java.lang.SuppressWarnings("all") 1387 public void setMessage(final String message) { 1388 this.message = message; 1389 } 1390 1391 /** 1392 * ID of the parent post 1393 * 1394 * @return ID of the parent post 1395 */ 1396 @java.lang.SuppressWarnings("all") 1397 public String getParentId() { 1398 return this.parentId; 1399 } 1400 1401 /** 1402 * ID of the parent post 1403 */ 1404 @java.lang.SuppressWarnings("all") 1405 public void setParentId(final String parentId) { 1406 this.parentId = parentId; 1407 } 1408 1409 /** 1410 * The permanent static URL to the post on www.facebook.com. 1411 * <p> 1412 * Example: https://www.facebook.com/FacebookforDevelopers/posts/10153449196353553 1413 * </p> 1414 * 1415 * @return The permanent static URL to the post on www.facebook.com. 1416 */ 1417 @java.lang.SuppressWarnings("all") 1418 public String getPermalinkUrl() { 1419 return this.permalinkUrl; 1420 } 1421 1422 /** 1423 * The permanent static URL to the post on www.facebook.com. 1424 * <p> 1425 * Example: https://www.facebook.com/FacebookforDevelopers/posts/10153449196353553 1426 * </p> 1427 * 1428 */ 1429 @java.lang.SuppressWarnings("all") 1430 public void setPermalinkUrl(final String permalinkUrl) { 1431 this.permalinkUrl = permalinkUrl; 1432 } 1433 1434 /** 1435 * If available, a link to the picture included with this post. 1436 * 1437 * @return If available, a link to the picture included with this post. 1438 */ 1439 @java.lang.SuppressWarnings("all") 1440 public String getPicture() { 1441 return this.picture; 1442 } 1443 1444 /** 1445 * If available, a link to the picture included with this post. 1446 */ 1447 @java.lang.SuppressWarnings("all") 1448 public void setPicture(final String picture) { 1449 this.picture = picture; 1450 } 1451 1452 /** 1453 * The link attached to this post. 1454 * 1455 * Hint for Graph API 3.3: Use <code>attachment/url_unshimmed</code> instead 1456 * 1457 * @return The link attached to this post. 1458 */ 1459 @GraphAPI(until = "3.2") 1460 @java.lang.SuppressWarnings("all") 1461 public String getLink() { 1462 return this.link; 1463 } 1464 1465 /** 1466 * The link attached to this post. 1467 * 1468 * Hint for Graph API 3.3: Use <code>attachment/url_unshimmed</code> instead 1469 */ 1470 @java.lang.SuppressWarnings("all") 1471 public void setLink(final String link) { 1472 this.link = link; 1473 } 1474 1475 /** 1476 * The name of the link. 1477 * 1478 * Hint for Graph API 3.3: Use <code>attachment/title</code> instead 1479 * 1480 * @return The name of the link. 1481 */ 1482 @GraphAPI(until = "3.2") 1483 @java.lang.SuppressWarnings("all") 1484 public String getName() { 1485 return this.name; 1486 } 1487 1488 /** 1489 * The name of the link. 1490 * 1491 * Hint for Graph API 3.3: Use <code>attachment/title</code> instead 1492 */ 1493 @java.lang.SuppressWarnings("all") 1494 public void setName(final String name) { 1495 this.name = name; 1496 } 1497 1498 /** 1499 * The caption of the link (appears beneath the link name). 1500 * 1501 * Hint for Graph API 3.3: Use <code>attachment/title</code> instead 1502 * 1503 * @return The caption of the link (appears beneath the link name). 1504 */ 1505 @GraphAPI(until = "3.2") 1506 @java.lang.SuppressWarnings("all") 1507 public String getCaption() { 1508 return this.caption; 1509 } 1510 1511 /** 1512 * The caption of the link (appears beneath the link name). 1513 * 1514 * Hint for Graph API 3.3: Use <code>attachment/title</code> instead 1515 */ 1516 @java.lang.SuppressWarnings("all") 1517 public void setCaption(final String caption) { 1518 this.caption = caption; 1519 } 1520 1521 /** 1522 * A description of the link (appears beneath the link caption). 1523 * 1524 * Hint for Graph API 3.3: Use <code>attachment/description</code> instead 1525 * 1526 * @return A description of the link (appears beneath the link caption). 1527 */ 1528 @GraphAPI(until = "3.2") 1529 @java.lang.SuppressWarnings("all") 1530 public String getDescription() { 1531 return this.description; 1532 } 1533 1534 /** 1535 * A description of the link (appears beneath the link caption). 1536 * 1537 * Hint for Graph API 3.3: Use <code>attachment/description</code> instead 1538 */ 1539 @java.lang.SuppressWarnings("all") 1540 public void setDescription(final String description) { 1541 this.description = description; 1542 } 1543 1544 /** 1545 * If available, the source link attached to this post (for example, a flash or video file). 1546 * 1547 * Hint for Graph API 3.3: Use <code>attachment/media/source</code> instead 1548 * 1549 * @return If available, the source link attached to this post (for example, a flash or video file). 1550 */ 1551 @GraphAPI(until = "3.2") 1552 @java.lang.SuppressWarnings("all") 1553 public String getSource() { 1554 return this.source; 1555 } 1556 1557 /** 1558 * If available, the source link attached to this post (for example, a flash or video file). 1559 * 1560 * Hint for Graph API 3.3: Use <code>attachment/media/source</code> instead 1561 */ 1562 @java.lang.SuppressWarnings("all") 1563 public void setSource(final String source) { 1564 this.source = source; 1565 } 1566 1567 /** 1568 * The application used to create this post. 1569 * 1570 * @return The application used to create this post. 1571 */ 1572 @java.lang.SuppressWarnings("all") 1573 public NamedFacebookType getApplication() { 1574 return this.application; 1575 } 1576 1577 /** 1578 * The application used to create this post. 1579 */ 1580 @java.lang.SuppressWarnings("all") 1581 public void setApplication(final NamedFacebookType application) { 1582 this.application = application; 1583 } 1584 1585 /** 1586 * A link to an icon representing the type of this post. 1587 * 1588 * @return A link to an icon representing the type of this post. 1589 */ 1590 @java.lang.SuppressWarnings("all") 1591 public String getIcon() { 1592 return this.icon; 1593 } 1594 1595 /** 1596 * A link to an icon representing the type of this post. 1597 */ 1598 @java.lang.SuppressWarnings("all") 1599 public void setIcon(final String icon) { 1600 this.icon = icon; 1601 } 1602 1603 /** 1604 * The privacy settings for this post. 1605 * 1606 * @return The privacy settings for this post. 1607 */ 1608 @java.lang.SuppressWarnings("all") 1609 public Privacy getPrivacy() { 1610 return this.privacy; 1611 } 1612 1613 /** 1614 * The privacy settings for this post. 1615 */ 1616 @java.lang.SuppressWarnings("all") 1617 public void setPrivacy(final Privacy privacy) { 1618 this.privacy = privacy; 1619 } 1620 1621 /** 1622 * Status of the promotion, if the post was promoted. 1623 * 1624 * @return Status of the promotion, if the post was promoted 1625 */ 1626 @java.lang.SuppressWarnings("all") 1627 public String getPromotionStatus() { 1628 return this.promotionStatus; 1629 } 1630 1631 /** 1632 * Status of the promotion, if the post was promoted. 1633 */ 1634 @java.lang.SuppressWarnings("all") 1635 public void setPromotionStatus(final String promotionStatus) { 1636 this.promotionStatus = promotionStatus; 1637 } 1638 1639 /** 1640 * Object that controls news feed targeting for this post. 1641 * 1642 * To force Facebook to fill the <code>feed_targeting</code> field you have to fetch the post with the 1643 * <code>fields=feed_targeting</code> parameter, otherwise the feedTargeting is <code>null</code>. 1644 * 1645 * 1646 * @since 1.11.0 1647 */ 1648 @java.lang.SuppressWarnings("all") 1649 public FeedTargeting getFeedTargeting() { 1650 return this.feedTargeting; 1651 } 1652 1653 /** 1654 * Object that controls news feed targeting for this post. 1655 * 1656 * To force Facebook to fill the <code>feed_targeting</code> field you have to fetch the post with the 1657 * <code>fields=feed_targeting</code> parameter, otherwise the feedTargeting is <code>null</code>. 1658 * 1659 * 1660 * @since 1.11.0 1661 */ 1662 @java.lang.SuppressWarnings("all") 1663 public void setFeedTargeting(final FeedTargeting feedTargeting) { 1664 this.feedTargeting = feedTargeting; 1665 } 1666 1667 /** 1668 * Whether the viewer can send a private reply to this post (Page viewers only) 1669 * 1670 * @return Whether the viewer can send a private reply to this post 1671 */ 1672 @GraphAPI(since = "2.5") 1673 @java.lang.SuppressWarnings("all") 1674 public Boolean getCanReplyPrivately() { 1675 return this.canReplyPrivately; 1676 } 1677 1678 /** 1679 * Whether the viewer can send a private reply to this post (Page viewers only) 1680 */ 1681 @java.lang.SuppressWarnings("all") 1682 public void setCanReplyPrivately(final Boolean canReplyPrivately) { 1683 this.canReplyPrivately = canReplyPrivately; 1684 } 1685 1686 /** 1687 * The profile this was posted on if different from the author. 1688 * 1689 * @return The profile this was posted on if different from the author 1690 */ 1691 @GraphAPI(since = "2.5") 1692 @java.lang.SuppressWarnings("all") 1693 public NamedFacebookType getTarget() { 1694 return this.target; 1695 } 1696 1697 /** 1698 * The profile this was posted on if different from the author. 1699 */ 1700 @java.lang.SuppressWarnings("all") 1701 public void setTarget(final NamedFacebookType target) { 1702 this.target = target; 1703 } 1704 1705 /** 1706 * Ads targeting information of the post. 1707 * 1708 * @return Ads targeting information of the post 1709 */ 1710 @java.lang.SuppressWarnings("all") 1711 public Targeting getTargeting() { 1712 return this.targeting; 1713 } 1714 1715 /** 1716 * Ads targeting information of the post. 1717 */ 1718 @java.lang.SuppressWarnings("all") 1719 public void setTargeting(final Targeting targeting) { 1720 this.targeting = targeting; 1721 } 1722 1723 /** 1724 * Timeline visibility information of the post. 1725 * 1726 * @return timeline visibility information of the post 1727 */ 1728 @java.lang.SuppressWarnings("all") 1729 public String getTimelineVisibility() { 1730 return this.timelineVisibility; 1731 } 1732 1733 /** 1734 * Timeline visibility information of the post. 1735 */ 1736 @java.lang.SuppressWarnings("all") 1737 public void setTimelineVisibility(final String timelineVisibility) { 1738 this.timelineVisibility = timelineVisibility; 1739 } 1740 1741 /** 1742 * Duplicate mapping for "likes" since FB can return it differently in different situations. 1743 * 1744 * -- GETTER -- The likes on this post. 1745 * <p> 1746 * Sometimes this can be {@code null} - check {@link #getLikesCount()} instead in that case. 1747 * 1748 * @return The likes on this post. 1749 */ 1750 @java.lang.SuppressWarnings("all") 1751 public Likes getLikes() { 1752 return this.likes; 1753 } 1754 1755 /** 1756 * Duplicate mapping for "likes" since FB can return it differently in different situations. 1757 * 1758 * -- GETTER -- The likes on this post. 1759 * <p> 1760 * Sometimes this can be {@code null} - check {@link #getLikesCount()} instead in that case. 1761 */ 1762 @java.lang.SuppressWarnings("all") 1763 public void setLikes(final Likes likes) { 1764 this.likes = likes; 1765 } 1766 1767 /** 1768 * The time the post was initially published. 1769 * 1770 * @return The time the post was initially published. 1771 */ 1772 @Override 1773 @java.lang.SuppressWarnings("all") 1774 public Date getCreatedTime() { 1775 return this.createdTime; 1776 } 1777 1778 /** 1779 * The time the post was initially published. 1780 */ 1781 @java.lang.SuppressWarnings("all") 1782 public void setCreatedTime(final Date createdTime) { 1783 this.createdTime = createdTime; 1784 } 1785 1786 /** 1787 * The time of the last comment on this post. 1788 * 1789 * @return The time of the last comment on this post. 1790 */ 1791 @java.lang.SuppressWarnings("all") 1792 public Date getUpdatedTime() { 1793 return this.updatedTime; 1794 } 1795 1796 /** 1797 * The time of the last comment on this post. 1798 */ 1799 @java.lang.SuppressWarnings("all") 1800 public void setUpdatedTime(final Date updatedTime) { 1801 this.updatedTime = updatedTime; 1802 } 1803 1804 /** 1805 * This field is available on tagged Posts. 1806 * 1807 * @return The tagging Date of the Post 1808 */ 1809 @java.lang.SuppressWarnings("all") 1810 public Date getTaggedTime() { 1811 return this.taggedTime; 1812 } 1813 1814 /** 1815 * This field is available on tagged Posts. 1816 */ 1817 @java.lang.SuppressWarnings("all") 1818 public void setTaggedTime(final Date taggedTime) { 1819 this.taggedTime = taggedTime; 1820 } 1821 1822 /** 1823 * The Facebook object id for an uploaded photo or video. 1824 * 1825 * Hint for Graph API 3.3: Use <code>attachment/target/id</code> instead 1826 * 1827 * @return The Facebook object id for an uploaded photo or video. 1828 * @since 1.6.5 1829 */ 1830 @GraphAPI(until = "3.2") 1831 @java.lang.SuppressWarnings("all") 1832 public String getObjectId() { 1833 return this.objectId; 1834 } 1835 1836 /** 1837 * The Facebook object id for an uploaded photo or video. 1838 * 1839 * Hint for Graph API 3.3: Use <code>attachment/target/id</code> instead 1840 * 1841 * @since 1.6.5 1842 */ 1843 @java.lang.SuppressWarnings("all") 1844 public void setObjectId(final String objectId) { 1845 this.objectId = objectId; 1846 } 1847 1848 /** 1849 * The {@code status_type} of post this is, for example {@code "approved_friend"}. 1850 * 1851 * @return The {@code status_type} of post this is, for example {@code "approved_friend"}. 1852 * @since 1.6.12 1853 */ 1854 @java.lang.SuppressWarnings("all") 1855 public String getStatusType() { 1856 return this.statusType; 1857 } 1858 1859 /** 1860 * The {@code status_type} of post this is, for example {@code "approved_friend"}. 1861 * 1862 * @since 1.6.12 1863 */ 1864 @java.lang.SuppressWarnings("all") 1865 public void setStatusType(final String statusType) { 1866 this.statusType = statusType; 1867 } 1868 1869 /** 1870 * Text from stories not intentionally generated by users 1871 * 1872 * @return Text from stories not intentionally generated by users 1873 * @since 1.6.16 1874 */ 1875 @java.lang.SuppressWarnings("all") 1876 public String getStory() { 1877 return this.story; 1878 } 1879 1880 /** 1881 * Text from stories not intentionally generated by users 1882 * 1883 * @since 1.6.16 1884 */ 1885 @java.lang.SuppressWarnings("all") 1886 public void setStory(final String story) { 1887 this.story = story; 1888 } 1889 1890 /** 1891 * The comments for this post. 1892 * 1893 * @return The comments for this post. 1894 */ 1895 @Override 1896 @java.lang.SuppressWarnings("all") 1897 public Comments getComments() { 1898 return this.comments; 1899 } 1900 1901 /** 1902 * The comments for this post. 1903 */ 1904 @java.lang.SuppressWarnings("all") 1905 public void setComments(final Comments comments) { 1906 this.comments = comments; 1907 } 1908 1909 /** 1910 * The reactions for this post. 1911 * 1912 * @return The reactions for this post. 1913 */ 1914 @java.lang.SuppressWarnings("all") 1915 public Reactions getReactions() { 1916 return this.reactions; 1917 } 1918 1919 /** 1920 * The reactions for this post. 1921 */ 1922 @java.lang.SuppressWarnings("all") 1923 public void setReactions(final Reactions reactions) { 1924 this.reactions = reactions; 1925 } 1926 1927 /** 1928 * The place where this post occurred. 1929 * 1930 * @return The place where this post occurred. 1931 * @since 1.6.8 1932 */ 1933 @java.lang.SuppressWarnings("all") 1934 public Place getPlace() { 1935 return this.place; 1936 } 1937 1938 /** 1939 * The place where this post occurred. 1940 * 1941 * @since 1.6.8 1942 */ 1943 @java.lang.SuppressWarnings("all") 1944 public void setPlace(final Place place) { 1945 this.place = place; 1946 } 1947 1948 @java.lang.SuppressWarnings("all") 1949 public Connection<Insight> getInsights() { 1950 return this.insights; 1951 } 1952 1953 @java.lang.SuppressWarnings("all") 1954 public void setInsights(final Connection<Insight> insights) { 1955 this.insights = insights; 1956 } 1957 1958 /** 1959 * UNIX timestamp of the scheduled publish time for the post. 1960 * 1961 * @return UNIX timestamp of the scheduled publish time for the post 1962 */ 1963 @java.lang.SuppressWarnings("all") 1964 public Date getScheduledPublishTime() { 1965 return this.scheduledPublishTime; 1966 } 1967 1968 /** 1969 * UNIX timestamp of the scheduled publish time for the post. 1970 */ 1971 @java.lang.SuppressWarnings("all") 1972 public void setScheduledPublishTime(final Date scheduledPublishTime) { 1973 this.scheduledPublishTime = scheduledPublishTime; 1974 } 1975 1976 /** 1977 * Number of times the post has been shared. 1978 * 1979 * @return Number of times the post has been shared 1980 */ 1981 @java.lang.SuppressWarnings("all") 1982 public Shares getShares() { 1983 return this.shares; 1984 } 1985 1986 /** 1987 * Number of times the post has been shared. 1988 */ 1989 @java.lang.SuppressWarnings("all") 1990 public void setShares(final Shares shares) { 1991 this.shares = shares; 1992 } 1993 1994 /** 1995 * ID of admin who created the post. 1996 * 1997 * Applies to pages only 1998 * 1999 * @return ID of admin who created the post. 2000 * @since 1.10.0 2001 */ 2002 @java.lang.SuppressWarnings("all") 2003 public NamedFacebookType getAdminCreator() { 2004 return this.adminCreator; 2005 } 2006 2007 /** 2008 * ID of admin who created the post. 2009 * 2010 * Applies to pages only 2011 * 2012 * @since 1.10.0 2013 */ 2014 @java.lang.SuppressWarnings("all") 2015 public void setAdminCreator(final NamedFacebookType adminCreator) { 2016 this.adminCreator = adminCreator; 2017 } 2018 2019 /** 2020 * Whether the post can be promoted on Instagram. 2021 * <p> 2022 * It returns the enum <code>eligible</code> if it can be promoted. Otherwise it returns an enum for why it cannot be 2023 * promoted 2024 * </p> 2025 * 2026 * @return Whether the post can be promoted on Instagram 2027 */ 2028 @java.lang.SuppressWarnings("all") 2029 public String getInstagramEligibility() { 2030 return this.instagramEligibility; 2031 } 2032 2033 /** 2034 * Whether the post can be promoted on Instagram. 2035 * <p> 2036 * It returns the enum <code>eligible</code> if it can be promoted. Otherwise it returns an enum for why it cannot be 2037 * promoted 2038 * </p> 2039 * 2040 */ 2041 @java.lang.SuppressWarnings("all") 2042 public void setInstagramEligibility(final String instagramEligibility) { 2043 this.instagramEligibility = instagramEligibility; 2044 } 2045 2046 /** 2047 * Whether or not the post references an app. 2048 * 2049 * @return Whether or not the post references an app 2050 */ 2051 @java.lang.SuppressWarnings("all") 2052 public Boolean getIsAppShare() { 2053 return this.isAppShare; 2054 } 2055 2056 /** 2057 * Whether or not the post references an app. 2058 */ 2059 @java.lang.SuppressWarnings("all") 2060 public void setIsAppShare(final Boolean isAppShare) { 2061 this.isAppShare = isAppShare; 2062 } 2063 2064 @java.lang.SuppressWarnings("all") 2065 public Boolean getIsEligibleForPromotion() { 2066 return this.isEligibleForPromotion; 2067 } 2068 2069 @java.lang.SuppressWarnings("all") 2070 public void setIsEligibleForPromotion(final Boolean isEligibleForPromotion) { 2071 this.isEligibleForPromotion = isEligibleForPromotion; 2072 } 2073 2074 /** 2075 * Whether the post has expiration time that has passed 2076 * 2077 * @return Whether the post has expiration time that has passed 2078 */ 2079 @java.lang.SuppressWarnings("all") 2080 public Boolean getIsExpired() { 2081 return this.isExpired; 2082 } 2083 2084 /** 2085 * Whether the post has expiration time that has passed 2086 */ 2087 @java.lang.SuppressWarnings("all") 2088 public void setIsExpired(final Boolean isExpired) { 2089 this.isExpired = isExpired; 2090 } 2091 2092 /** 2093 * If this post is marked as hidden (applies to Pages only). 2094 * 2095 * @since 1.10.0 2096 * @return if this post is marked as hidden 2097 */ 2098 @java.lang.SuppressWarnings("all") 2099 public Boolean getIsHidden() { 2100 return this.isHidden; 2101 } 2102 2103 /** 2104 * If this post is marked as hidden (applies to Pages only). 2105 * 2106 * @since 1.10.0 2107 */ 2108 @java.lang.SuppressWarnings("all") 2109 public void setIsHidden(final Boolean isHidden) { 2110 this.isHidden = isHidden; 2111 } 2112 2113 /** 2114 * Whether this post can be promoted in Instagram. 2115 * 2116 * @return Whether this post can be promoted in Instagram 2117 */ 2118 @java.lang.SuppressWarnings("all") 2119 public Boolean getIsInstagramEligible() { 2120 return this.isInstagramEligible; 2121 } 2122 2123 /** 2124 * Whether this post can be promoted in Instagram. 2125 */ 2126 @java.lang.SuppressWarnings("all") 2127 public void setIsInstagramEligible(final Boolean isInstagramEligible) { 2128 this.isInstagramEligible = isInstagramEligible; 2129 } 2130 2131 /** 2132 * Whether the post is currently popular. 2133 * 2134 * Based on whether the total actions as a percentage of reach exceeds a certain threshold 2135 * 2136 * @return Whether the post is currently popular 2137 */ 2138 @java.lang.SuppressWarnings("all") 2139 public Boolean getIsPopular() { 2140 return this.isPopular; 2141 } 2142 2143 /** 2144 * Whether the post is currently popular. 2145 * 2146 * Based on whether the total actions as a percentage of reach exceeds a certain threshold 2147 */ 2148 @java.lang.SuppressWarnings("all") 2149 public void setIsPopular(final Boolean isPopular) { 2150 this.isPopular = isPopular; 2151 } 2152 2153 /** 2154 * Indicates whether a scheduled post was published. (applies to scheduled Page Post only, for users post and 2155 * instantly published posts this value is always <code>true</code>) 2156 * 2157 * @since 1.10.0 2158 * @return indicates whether a scheduled post was published 2159 */ 2160 @java.lang.SuppressWarnings("all") 2161 public Boolean getIsPublished() { 2162 return this.isPublished; 2163 } 2164 2165 /** 2166 * Indicates whether a scheduled post was published. (applies to scheduled Page Post only, for users post and 2167 * instantly published posts this value is always <code>true</code>) 2168 * 2169 * @since 1.10.0 2170 */ 2171 @java.lang.SuppressWarnings("all") 2172 public void setIsPublished(final Boolean isPublished) { 2173 this.isPublished = isPublished; 2174 } 2175 2176 /** 2177 * Whether the post is a spherical video post. 2178 * 2179 * @return Whether the post is a spherical video post 2180 */ 2181 @java.lang.SuppressWarnings("all") 2182 public Boolean getIsSpherical() { 2183 return this.isSpherical; 2184 } 2185 2186 /** 2187 * Whether the post is a spherical video post. 2188 */ 2189 @java.lang.SuppressWarnings("all") 2190 public void setIsSpherical(final Boolean isSpherical) { 2191 this.isSpherical = isSpherical; 2192 } 2193 2194 /** 2195 * Whether display the end card for a multi-link share post 2196 */ 2197 @java.lang.SuppressWarnings("all") 2198 public Boolean getMultiShareEndCard() { 2199 return this.multiShareEndCard; 2200 } 2201 2202 /** 2203 * Whether display the end card for a multi-link share post 2204 */ 2205 @java.lang.SuppressWarnings("all") 2206 public void setMultiShareEndCard(final Boolean multiShareEndCard) { 2207 this.multiShareEndCard = multiShareEndCard; 2208 } 2209 2210 /** 2211 * Whether automatically select the order of the links in multi-link share post when used in an ad 2212 */ 2213 @java.lang.SuppressWarnings("all") 2214 public Boolean getMultiShareOptimized() { 2215 return this.multiShareOptimized; 2216 } 2217 2218 /** 2219 * Whether automatically select the order of the links in multi-link share post when used in an ad 2220 */ 2221 @java.lang.SuppressWarnings("all") 2222 public void setMultiShareOptimized(final Boolean multiShareOptimized) { 2223 this.multiShareOptimized = multiShareOptimized; 2224 } 2225 2226 /** 2227 * Attachments added to a post. 2228 * 2229 * To force Facebook to fill the <code>attachments</code> field you have to fetch the post with the 2230 * <code>fields=attachments</code> parameter, otherwise the attachments are <code>null</code>. 2231 * 2232 * @return Attachment on the post 2233 */ 2234 @java.lang.SuppressWarnings("all") 2235 public Attachments getAttachments() { 2236 return this.attachments; 2237 } 2238 2239 /** 2240 * Attachments added to a post. 2241 * 2242 * To force Facebook to fill the <code>attachments</code> field you have to fetch the post with the 2243 * <code>fields=attachments</code> parameter, otherwise the attachments are <code>null</code>. 2244 */ 2245 @java.lang.SuppressWarnings("all") 2246 public void setAttachments(final Attachments attachments) { 2247 this.attachments = attachments; 2248 } 2249 2250 /** 2251 * Full picture URL. 2252 * 2253 * you get the url to this posts full picture. 2254 * 2255 * To force Facebook to fill the <code>full_picture</code> field you have to fetch the post with the 2256 * <code>fields=full_picture</code> parameter, otherwise the full_picture is <code>null</code>. 2257 * 2258 * @return String representing the url to the post's full picture 2259 */ 2260 @java.lang.SuppressWarnings("all") 2261 public String getFullPicture() { 2262 return this.fullPicture; 2263 } 2264 2265 /** 2266 * Full picture URL. 2267 * 2268 * you get the url to this posts full picture. 2269 * 2270 * To force Facebook to fill the <code>full_picture</code> field you have to fetch the post with the 2271 * <code>fields=full_picture</code> parameter, otherwise the full_picture is <code>null</code>. 2272 * 2273 */ 2274 @java.lang.SuppressWarnings("all") 2275 public void setFullPicture(final String fullPicture) { 2276 this.fullPicture = fullPicture; 2277 } 2278 2279 /** 2280 * ID of the user or Page the post was shared from 2281 */ 2282 @java.lang.SuppressWarnings("all") 2283 public String getVia() { 2284 return this.via; 2285 } 2286 2287 /** 2288 * ID of the user or Page the post was shared from 2289 */ 2290 @java.lang.SuppressWarnings("all") 2291 public void setVia(final String via) { 2292 this.via = via; 2293 } 2294}