summaryrefslogtreecommitdiff
path: root/src/main/java/com/p4square/ccbapi/model/GetGroupProfilesRequest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/p4square/ccbapi/model/GetGroupProfilesRequest.java')
-rw-r--r--src/main/java/com/p4square/ccbapi/model/GetGroupProfilesRequest.java145
1 files changed, 145 insertions, 0 deletions
diff --git a/src/main/java/com/p4square/ccbapi/model/GetGroupProfilesRequest.java b/src/main/java/com/p4square/ccbapi/model/GetGroupProfilesRequest.java
new file mode 100644
index 0000000..85bf752
--- /dev/null
+++ b/src/main/java/com/p4square/ccbapi/model/GetGroupProfilesRequest.java
@@ -0,0 +1,145 @@
+package com.p4square.ccbapi.model;
+
+import java.time.LocalDate;
+
+/**
+ * GetGroupProfilesRequest is the set of options for retrieving group profiles.
+ *
+ * If {@link #withGroupId(int)} is used, this request will return only the
+ * requested group.
+ *
+ * Otherwise, this request allows you to pass in a given date and have all
+ * groups created or modified since that date returned to you. If a date is
+ * not provided, all groups in the system will be returned.
+ *
+ * The image link in the image element will expire, and should be cached.
+ * Including it will significantly increase the runtime of the service and may
+ * cause a timeout. Please consider using {@link #withPerPage(int)} and
+ * {@link #withPage(int)} if you want to get the images from your groups.
+ */
+public class GetGroupProfilesRequest {
+
+ // Used with group_profile_from_id
+ private int id;
+
+ // Used with group_profiles
+ private LocalDate modifiedSince;
+ private int page;
+ private int perPage;
+ private Boolean includeParticipants;
+
+ // Used with any.
+ private Boolean includeImageLink;
+
+ public int getId() {
+ return id;
+ }
+
+ /**
+ * Request the {@link GroupProfile} for the given group id.
+ *
+ * @param id The id.
+ * @return this.
+ */
+ public GetGroupProfilesRequest withGroupId(final int id) {
+ this.id = id;
+ return this;
+ }
+
+ public Boolean getIncludeImageUrl() {
+ return includeImageLink;
+ }
+
+ /**
+ * Include the image URL in the result.
+ *
+ * Note: The image link in the image element will expire, and should be cached.
+ *
+ * @param value True if the image link should be included.
+ * @return this.
+ */
+ public GetGroupProfilesRequest withIncludeImageUrl(final boolean value) {
+ this.includeImageLink = value;
+ return this;
+ }
+
+ public LocalDate getModifiedSince() {
+ return modifiedSince;
+ }
+
+ /**
+ * Retrieve all groups modified since the given time.
+ *
+ * Note: This cannot be used with {@link #withGroupId(int)}.
+ *
+ * @param modifiedSince The given time.
+ * @return this.
+ */
+ public GetGroupProfilesRequest withModifiedSince(final LocalDate modifiedSince) {
+ this.modifiedSince = modifiedSince;
+ return this;
+ }
+
+ public int getPage() {
+ return page;
+ }
+
+
+ /**
+ * Select the page of results when paginating results.
+ *
+ * Note: This cannot be used with {@link #withGroupId(int)}.
+ *
+ * Defaults to 1 if {@link #withPerPage(int)} is specified on the request.
+ *
+ * @param page The starting page number.
+ * @return this.
+ */
+ public GetGroupProfilesRequest withPage(final int page) {
+ this.page = page;
+ return this;
+ }
+
+ public int getPerPage() {
+ return perPage;
+ }
+
+ /**
+ * Limit the number of groups returned.
+ *
+ * Note: This cannot be used with {@link #withGroupId(int)}.
+ *
+ * Defaults to 25 if {@link #withPage(int)} is specified on the request.
+ *
+ * @param perPage The maximum number to return.
+ * @return this.
+ */
+ public GetGroupProfilesRequest withPerPage(final int perPage) {
+ this.perPage = perPage;
+ return this;
+ }
+
+ public Boolean getIncludeParticipants() {
+ return includeParticipants;
+ }
+
+ /**
+ * Include all participants from the group in the response.
+ *
+ * {@link GroupProfile#getMainLeader()} and {@link GroupProfile#getLeaders()}
+ * are always populated, regardless of the value.
+ *
+ * Note: This cannot be used with {@link #withGroupId(int)}.
+ *
+ * Defaults to True.
+ *
+ * @see {@link GroupProfile#getParticipants()}
+ *
+ * @param includeParticipants
+ * @return this.
+ */
+ public GetGroupProfilesRequest withIncludeParticipants(final boolean includeParticipants) {
+ this.includeParticipants = includeParticipants;
+ return this;
+ }
+}