001// Generated by delombok at Sun Apr 14 14:59:49 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.StringUtils.isBlank;
026import java.util.ArrayList;
027import java.util.Collections;
028import java.util.List;
029import com.restfb.Facebook;
030
031/**
032 * Base class which encapsulates behavior and properties common to most
033 * <a href="http://developers.facebook.com/docs/reference/api/">Graph API types</a>.
034 * 
035 * @author <a href="http://restfb.com">Mark Allen</a>
036 * @since 1.5
037 */
038public class FacebookType extends AbstractFacebookType {
039  /**
040   * This object's unique Facebook ID.
041   * 
042   */
043  @Facebook
044  private String id;
045  /**
046   * This object's metadata, available by including the {@code metadata=1} URL parameter in an API request.
047   */
048  @Facebook
049  private Metadata metadata;
050  @Facebook
051  private String type;
052  private static final long serialVersionUID = 1L;
053
054
055  /**
056   * Represents <a href="http://developers.facebook.com/docs/api#introspection">Facebook Object metadata</a>, available
057   * by including the {@code metadata=1} URL parameter in an API request.
058   * 
059   * @author <a href="http://restfb.com">Mark Allen</a>
060   * @since 1.5
061   */
062  public static class Metadata extends AbstractFacebookType {
063    /**
064     * The available connections for this object.
065     * -- GETTER --
066     * @return The available connections for this object.
067     */
068    @Facebook
069    private Connections connections;
070    /**
071     * The metadata type of the object
072     * -- GETTER --
073     * @return the metadata type
074     * @since 1.6.16
075     */
076    @Facebook
077    private String type;
078    @Facebook
079    private List<NamedFacebookType> fields = new ArrayList<>();
080    private static final long serialVersionUID = 1L;
081
082    /**
083     * Represents <a href="http://developers.facebook.com/docs/api#introspection">Facebook Object connections
084     * metadata</a>, available by including the {@code metadata=1} URL parameter in an API request.
085     * 
086     * @author <a href="http://restfb.com">Mark Allen</a>
087     * @since 1.5
088     */
089    public static class Connections extends AbstractFacebookType {
090      /**
091       * This object's 'home' connection URL.
092       * -- GETTER --
093       * @return This object's 'home' connection URL, or {@code null} if it doesn't have one.
094       */
095      @Facebook
096      private String home;
097      /**
098       * This object's 'feed' connection URL.
099       * -- GETTER --
100       * @return This object's 'feed' connection URL, or {@code null} if it doesn't have one.
101       */
102      @Facebook
103      private String feed;
104      /**
105       * This object's 'friends' connection URL.
106       * -- GETTER --
107       * @return This object's 'friends' connection URL, or {@code null} if it doesn't have one.
108       */
109      @Facebook
110      private String friends;
111      /**
112       * This object's 'family' connection URL.
113       * -- GETTER --
114       * @return This object's 'family' connection URL, or {@code null} if it doesn't have one.
115       */
116      @Facebook
117      private String family;
118      /**
119       * This object's 'activities' connection URL.
120       * -- GETTER --
121       * @return This object's 'activities' connection URL, or {@code null} if it doesn't have one.
122       */
123      @Facebook
124      private String activities;
125      /**
126       * This object's 'interests' connection URL.
127       * -- GETTER --
128       * @return This object's 'interests' connection URL, or {@code null} if it doesn't have one.
129       */
130      @Facebook
131      private String interests;
132      /**
133       * This object's 'music' connection URL.
134       * -- GETTER --
135       * @return This object's 'music' connection URL, or {@code null} if it doesn't have one.
136       */
137      @Facebook
138      private String music;
139      /**
140       * This object's 'books' connection URL.
141       * -- GETTER --
142       * @return This object's 'books' connection URL, or {@code null} if it doesn't have one.
143       */
144      @Facebook
145      private String books;
146      /**
147       * This object's 'movies' connection URL.
148       * -- GETTER --
149       * @return This object's 'movies' connection URL, or {@code null} if it doesn't have one.
150       */
151      @Facebook
152      private String movies;
153      /**
154       * This object's 'television' connection URL.
155       * -- GETTER --
156       * @return This object's 'television' connection URL, or {@code null} if it doesn't have one.
157       */
158      @Facebook
159      private String television;
160      /**
161       * This object's 'likes' connection URL.
162       * -- GETTER --
163       * @return This object's 'likes' connection URL, or {@code null} if it doesn't have one.
164       */
165      @Facebook
166      private String likes;
167      /**
168       * This object's 'posts' connection URL.
169       * -- GETTER --
170       * @return This object's 'posts' connection URL, or {@code null} if it doesn't have one.
171       */
172      @Facebook
173      private String posts;
174      /**
175       * This object's 'tagged' connection URL.
176       * -- GETTER --
177       * @return This object's 'tagged' connection URL, or {@code null} if it doesn't have one.
178       */
179      @Facebook
180      private String tagged;
181      /**
182       * This object's 'statuses' connection URL.
183       * -- GETTER --
184       * @return This object's 'statuses' connection URL, or {@code null} if it doesn't have one.
185       */
186      @Facebook
187      private String statuses;
188      /**
189       * This object's 'links' connection URL.
190       * -- GETTER --
191       * @return This object's 'links' connection URL, or {@code null} if it doesn't have one.
192       */
193      @Facebook
194      private String links;
195      /**
196       * This object's 'notes' connection URL.
197       * -- GETTER --
198       * @return This object's 'notes' connection URL, or {@code null} if it doesn't have one.
199       */
200      @Facebook
201      private String notes;
202      /**
203       * This object's 'photos' connection URL.
204       * -- GETTER --
205       * @return This object's 'photos' connection URL, or {@code null} if it doesn't have one.
206       */
207      @Facebook
208      private String photos;
209      /**
210       * This object's 'albums' connection URL.
211       * -- GETTER --
212       * @return This object's 'albums' connection URL, or {@code null} if it doesn't have one.
213       */
214      @Facebook
215      private String albums;
216      /**
217       * This object's 'events' connection URL.
218       * -- GETTER --
219       * @return This object's 'events' connection URL, or {@code null} if it doesn't have one.
220       */
221      @Facebook
222      private String events;
223      /**
224       * This object's 'groups' connection URL.
225       * -- GETTER --
226       * @return This object's 'groups' connection URL, or {@code null} if it doesn't have one.
227       */
228      @Facebook
229      private String groups;
230      /**
231       * This object's 'videos' connection URL.
232       * -- GETTER --
233       * @return This object's 'videos' connection URL, or {@code null} if it doesn't have one.
234       */
235      @Facebook
236      private String videos;
237      /**
238       * This object's 'picture' connection URL.
239       * -- GETTER --
240       * @return This object's 'picture' connection URL, or {@code null} if it doesn't have one.
241       */
242      @Facebook
243      private String picture;
244      /**
245       * This object's 'inbox' connection URL.
246       * -- GETTER --
247       * @return This object's 'inbox' connection URL, or {@code null} if it doesn't have one.
248       */
249      @Facebook
250      private String inbox;
251      /**
252       * This object's 'outbox' connection URL.
253       * -- GETTER --
254       * @return This object's 'outbox' connection URL, or {@code null} if it doesn't have one.
255       */
256      @Facebook
257      private String outbox;
258      /**
259       * This object's 'updates' connection URL.
260       * -- GETTER --
261       * @return This object's 'updates' connection URL, or {@code null} if it doesn't have one.
262       */
263      @Facebook
264      private String updates;
265      private static final long serialVersionUID = 1L;
266
267      /**
268       * Does this object have a 'home' connection?
269       * 
270       * @return {@code true} if this object has a 'home' connection, {@code false} otherwise.
271       */
272      public Boolean hasHome() {
273        return !isBlank(home);
274      }
275
276      /**
277       * Does this object have a 'feed' connection?
278       * 
279       * @return {@code true} if this object has a 'feed' connection, {@code false} otherwise.
280       */
281      public Boolean hasFeed() {
282        return !isBlank(feed);
283      }
284
285      /**
286       * Does this object have a 'friends' connection?
287       * 
288       * @return {@code true} if this object has a 'friends' connection, {@code false} otherwise.
289       */
290      public Boolean hasFriends() {
291        return !isBlank(friends);
292      }
293
294      /**
295       * Does this object have a 'family' connection?
296       * 
297       * @return {@code true} if this object has a 'family' connection, {@code false} otherwise.
298       */
299      public Boolean hasFamily() {
300        return !isBlank(family);
301      }
302
303      /**
304       * Does this object have an 'activities' connection?
305       * 
306       * @return {@code true} if this object has an 'activities' connection, {@code false} otherwise.
307       */
308      public Boolean hasActivities() {
309        return !isBlank(activities);
310      }
311
312      /**
313       * Does this object have an 'interests' connection?
314       * 
315       * @return {@code true} if this object has an 'interests' connection, {@code false} otherwise.
316       */
317      public Boolean hasInterests() {
318        return !isBlank(interests);
319      }
320
321      /**
322       * Does this object have a 'music' connection?
323       * 
324       * @return {@code true} if this object has a 'music' connection, {@code false} otherwise.
325       */
326      public Boolean hasMusic() {
327        return !isBlank(music);
328      }
329
330      /**
331       * Does this object have a 'books' connection?
332       * 
333       * @return {@code true} if this object has a 'books' connection, {@code false} otherwise.
334       */
335      public Boolean hasBooks() {
336        return !isBlank(books);
337      }
338
339      /**
340       * Does this object have a 'movies' connection?
341       * 
342       * @return {@code true} if this object has a 'movies' connection, {@code false} otherwise.
343       */
344      public Boolean hasMovies() {
345        return !isBlank(movies);
346      }
347
348      /**
349       * Does this object have a 'television' connection?
350       * 
351       * @return {@code true} if this object has a 'television' connection, {@code false} otherwise.
352       */
353      public Boolean hasTelevision() {
354        return !isBlank(television);
355      }
356
357      /**
358       * Does this object have a 'likes' connection?
359       * 
360       * @return {@code true} if this object has a 'likes' connection, {@code false} otherwise.
361       */
362      public Boolean hasLikes() {
363        return !isBlank(likes);
364      }
365
366      /**
367       * Does this object have a 'posts' connection?
368       * 
369       * @return {@code true} if this object has a 'posts' connection, {@code false} otherwise.
370       */
371      public Boolean hasPosts() {
372        return !isBlank(posts);
373      }
374
375      /**
376       * Does this object have a 'tagged' connection?
377       * 
378       * @return {@code true} if this object has a 'tagged' connection, {@code false} otherwise.
379       */
380      public Boolean hasTagged() {
381        return !isBlank(tagged);
382      }
383
384      /**
385       * Does this object have a 'statuses' connection?
386       * 
387       * @return {@code true} if this object has a 'statuses' connection, {@code false} otherwise.
388       */
389      public Boolean hasStatuses() {
390        return !isBlank(statuses);
391      }
392
393      /**
394       * Does this object have a 'links' connection?
395       * 
396       * @return {@code true} if this object has a 'links' connection, {@code false} otherwise.
397       */
398      public Boolean hasLinks() {
399        return !isBlank(links);
400      }
401
402      /**
403       * Does this object have a 'notes' connection?
404       * 
405       * @return {@code true} if this object has a 'notes' connection, {@code false} otherwise.
406       */
407      public Boolean hasNotes() {
408        return !isBlank(notes);
409      }
410
411      /**
412       * Does this object have a 'photos' connection?
413       * 
414       * @return {@code true} if this object has a 'photos' connection, {@code false} otherwise.
415       */
416      public Boolean hasPhotos() {
417        return !isBlank(photos);
418      }
419
420      /**
421       * Does this object have an 'albums' connection?
422       * 
423       * @return {@code true} if this object has an 'albums' connection, {@code false} otherwise.
424       */
425      public Boolean hasAlbums() {
426        return !isBlank(albums);
427      }
428
429      /**
430       * Does this object have an 'events' connection?
431       * 
432       * @return {@code true} if this object has an 'events' connection, {@code false} otherwise.
433       */
434      public Boolean hasEvents() {
435        return !isBlank(events);
436      }
437
438      /**
439       * Does this object have a 'groups' connection?
440       * 
441       * @return {@code true} if this object has a 'groups' connection, {@code false} otherwise.
442       */
443      public Boolean hasGroups() {
444        return !isBlank(groups);
445      }
446
447      /**
448       * Does this object have a 'videos' connection?
449       * 
450       * @return {@code true} if this object has a 'videos' connection, {@code false} otherwise.
451       */
452      public Boolean hasVideos() {
453        return !isBlank(videos);
454      }
455
456      /**
457       * Does this object have a 'picture' connection?
458       * 
459       * @return {@code true} if this object has a 'picture' connection, {@code false} otherwise.
460       */
461      public Boolean hasPicture() {
462        return !isBlank(picture);
463      }
464
465      /**
466       * Does this object have an 'inbox' connection?
467       * 
468       * @return {@code true} if this object has an 'inbox' connection, {@code false} otherwise.
469       */
470      public Boolean hasInbox() {
471        return !isBlank(inbox);
472      }
473
474      /**
475       * Does this object have an 'outbox' connection?
476       * 
477       * @return {@code true} if this object has an 'outbox' connection, {@code false} otherwise.
478       */
479      public Boolean hasOutbox() {
480        return !isBlank(outbox);
481      }
482
483      /**
484       * Does this object have an 'updates' connection?
485       * 
486       * @return {@code true} if this object has an 'updates' connection, {@code false} otherwise.
487       */
488      public Boolean hasUpdates() {
489        return !isBlank(updates);
490      }
491
492      @java.lang.SuppressWarnings("all")
493      public String getHome() {
494        return this.home;
495      }
496
497      @java.lang.SuppressWarnings("all")
498      public void setHome(final String home) {
499        this.home = home;
500      }
501
502      @java.lang.SuppressWarnings("all")
503      public String getFeed() {
504        return this.feed;
505      }
506
507      @java.lang.SuppressWarnings("all")
508      public void setFeed(final String feed) {
509        this.feed = feed;
510      }
511
512      @java.lang.SuppressWarnings("all")
513      public String getFriends() {
514        return this.friends;
515      }
516
517      @java.lang.SuppressWarnings("all")
518      public void setFriends(final String friends) {
519        this.friends = friends;
520      }
521
522      @java.lang.SuppressWarnings("all")
523      public String getFamily() {
524        return this.family;
525      }
526
527      @java.lang.SuppressWarnings("all")
528      public void setFamily(final String family) {
529        this.family = family;
530      }
531
532      @java.lang.SuppressWarnings("all")
533      public String getActivities() {
534        return this.activities;
535      }
536
537      @java.lang.SuppressWarnings("all")
538      public void setActivities(final String activities) {
539        this.activities = activities;
540      }
541
542      @java.lang.SuppressWarnings("all")
543      public String getInterests() {
544        return this.interests;
545      }
546
547      @java.lang.SuppressWarnings("all")
548      public void setInterests(final String interests) {
549        this.interests = interests;
550      }
551
552      @java.lang.SuppressWarnings("all")
553      public String getMusic() {
554        return this.music;
555      }
556
557      @java.lang.SuppressWarnings("all")
558      public void setMusic(final String music) {
559        this.music = music;
560      }
561
562      @java.lang.SuppressWarnings("all")
563      public String getBooks() {
564        return this.books;
565      }
566
567      @java.lang.SuppressWarnings("all")
568      public void setBooks(final String books) {
569        this.books = books;
570      }
571
572      @java.lang.SuppressWarnings("all")
573      public String getMovies() {
574        return this.movies;
575      }
576
577      @java.lang.SuppressWarnings("all")
578      public void setMovies(final String movies) {
579        this.movies = movies;
580      }
581
582      @java.lang.SuppressWarnings("all")
583      public String getTelevision() {
584        return this.television;
585      }
586
587      @java.lang.SuppressWarnings("all")
588      public void setTelevision(final String television) {
589        this.television = television;
590      }
591
592      @java.lang.SuppressWarnings("all")
593      public String getLikes() {
594        return this.likes;
595      }
596
597      @java.lang.SuppressWarnings("all")
598      public void setLikes(final String likes) {
599        this.likes = likes;
600      }
601
602      @java.lang.SuppressWarnings("all")
603      public String getPosts() {
604        return this.posts;
605      }
606
607      @java.lang.SuppressWarnings("all")
608      public void setPosts(final String posts) {
609        this.posts = posts;
610      }
611
612      @java.lang.SuppressWarnings("all")
613      public String getTagged() {
614        return this.tagged;
615      }
616
617      @java.lang.SuppressWarnings("all")
618      public void setTagged(final String tagged) {
619        this.tagged = tagged;
620      }
621
622      @java.lang.SuppressWarnings("all")
623      public String getStatuses() {
624        return this.statuses;
625      }
626
627      @java.lang.SuppressWarnings("all")
628      public void setStatuses(final String statuses) {
629        this.statuses = statuses;
630      }
631
632      @java.lang.SuppressWarnings("all")
633      public String getLinks() {
634        return this.links;
635      }
636
637      @java.lang.SuppressWarnings("all")
638      public void setLinks(final String links) {
639        this.links = links;
640      }
641
642      @java.lang.SuppressWarnings("all")
643      public String getNotes() {
644        return this.notes;
645      }
646
647      @java.lang.SuppressWarnings("all")
648      public void setNotes(final String notes) {
649        this.notes = notes;
650      }
651
652      @java.lang.SuppressWarnings("all")
653      public String getPhotos() {
654        return this.photos;
655      }
656
657      @java.lang.SuppressWarnings("all")
658      public void setPhotos(final String photos) {
659        this.photos = photos;
660      }
661
662      @java.lang.SuppressWarnings("all")
663      public String getAlbums() {
664        return this.albums;
665      }
666
667      @java.lang.SuppressWarnings("all")
668      public void setAlbums(final String albums) {
669        this.albums = albums;
670      }
671
672      @java.lang.SuppressWarnings("all")
673      public String getEvents() {
674        return this.events;
675      }
676
677      @java.lang.SuppressWarnings("all")
678      public void setEvents(final String events) {
679        this.events = events;
680      }
681
682      @java.lang.SuppressWarnings("all")
683      public String getGroups() {
684        return this.groups;
685      }
686
687      @java.lang.SuppressWarnings("all")
688      public void setGroups(final String groups) {
689        this.groups = groups;
690      }
691
692      @java.lang.SuppressWarnings("all")
693      public String getVideos() {
694        return this.videos;
695      }
696
697      @java.lang.SuppressWarnings("all")
698      public void setVideos(final String videos) {
699        this.videos = videos;
700      }
701
702      @java.lang.SuppressWarnings("all")
703      public String getPicture() {
704        return this.picture;
705      }
706
707      @java.lang.SuppressWarnings("all")
708      public void setPicture(final String picture) {
709        this.picture = picture;
710      }
711
712      @java.lang.SuppressWarnings("all")
713      public String getInbox() {
714        return this.inbox;
715      }
716
717      @java.lang.SuppressWarnings("all")
718      public void setInbox(final String inbox) {
719        this.inbox = inbox;
720      }
721
722      @java.lang.SuppressWarnings("all")
723      public String getOutbox() {
724        return this.outbox;
725      }
726
727      @java.lang.SuppressWarnings("all")
728      public void setOutbox(final String outbox) {
729        this.outbox = outbox;
730      }
731
732      @java.lang.SuppressWarnings("all")
733      public String getUpdates() {
734        return this.updates;
735      }
736
737      @java.lang.SuppressWarnings("all")
738      public void setUpdates(final String updates) {
739        this.updates = updates;
740      }
741    }
742
743    /**
744     * Existing fields in the current type
745     * 
746     * @return list of field of the current type
747     * @since 1.6.16
748     */
749    public List<NamedFacebookType> getFields() {
750      return Collections.unmodifiableList(fields);
751    }
752
753    public boolean addField(NamedFacebookType field) {
754      return fields.add(field);
755    }
756
757    public boolean removeField(NamedFacebookType field) {
758      return fields.remove(field);
759    }
760
761    @java.lang.SuppressWarnings("all")
762    public Connections getConnections() {
763      return this.connections;
764    }
765
766    @java.lang.SuppressWarnings("all")
767    public void setConnections(final Connections connections) {
768      this.connections = connections;
769    }
770
771    @java.lang.SuppressWarnings("all")
772    public String getType() {
773      return this.type;
774    }
775
776    @java.lang.SuppressWarnings("all")
777    public void setType(final String type) {
778      this.type = type;
779    }
780  }
781
782  /**
783   * This object's unique Facebook ID.
784   * 
785   * @return This object's unique Facebook ID.
786   */
787  @java.lang.SuppressWarnings("all")
788  public String getId() {
789    return this.id;
790  }
791
792  /**
793   * This object's unique Facebook ID.
794   * 
795   */
796  @java.lang.SuppressWarnings("all")
797  public void setId(final String id) {
798    this.id = id;
799  }
800
801  /**
802   * @return This object's metadata, available by including the {@code metadata=1} URL parameter in an API request.
803   */
804  @java.lang.SuppressWarnings("all")
805  public Metadata getMetadata() {
806    return this.metadata;
807  }
808
809  /**
810   * This object's metadata, available by including the {@code metadata=1} URL parameter in an API request.
811   */
812  @java.lang.SuppressWarnings("all")
813  public void setMetadata(final Metadata metadata) {
814    this.metadata = metadata;
815  }
816
817  @java.lang.SuppressWarnings("all")
818  public String getType() {
819    return this.type;
820  }
821
822  @java.lang.SuppressWarnings("all")
823  public void setType(final String type) {
824    this.type = type;
825  }
826}