diff options
Diffstat (limited to 'src/main/java')
7 files changed, 201 insertions, 2 deletions
| diff --git a/src/main/java/com/p4square/ccbapi/CCBAPI.java b/src/main/java/com/p4square/ccbapi/CCBAPI.java index f81a02f..bae2272 100644 --- a/src/main/java/com/p4square/ccbapi/CCBAPI.java +++ b/src/main/java/com/p4square/ccbapi/CCBAPI.java @@ -18,6 +18,16 @@ public interface CCBAPI extends Closeable {      GetCustomFieldLabelsResponse getCustomFieldLabels() throws IOException;      /** +     * Retrieve the list of items in a particular lookup table. +     * +     * Lookup tables provide the list of options for various pulldown fields. +     * +     * @return A GetLookupTableResponse containing the item ids and labels. +     * @throws IOException on failure. +     */ +    GetLookupTableResponse getLookupTable(GetLookupTableRequest request) throws IOException; + +    /**       * Retrieve one or more IndividualProfiles.       *       * If any of the following properties are set on the request, diff --git a/src/main/java/com/p4square/ccbapi/CCBAPIClient.java b/src/main/java/com/p4square/ccbapi/CCBAPIClient.java index 404253a..e3750cf 100644 --- a/src/main/java/com/p4square/ccbapi/CCBAPIClient.java +++ b/src/main/java/com/p4square/ccbapi/CCBAPIClient.java @@ -2,9 +2,7 @@ package com.p4square.ccbapi;  import com.p4square.ccbapi.exception.CCBErrorResponseException;  import com.p4square.ccbapi.model.*; -import com.p4square.ccbapi.serializer.AddressFormSerializer;  import com.p4square.ccbapi.serializer.IndividualProfileSerializer; -import com.p4square.ccbapi.serializer.PhoneFormSerializer;  import java.io.IOException;  import java.io.InputStream; @@ -134,6 +132,18 @@ public class CCBAPIClient implements CCBAPI {      }      @Override +    public GetLookupTableResponse getLookupTable(final GetLookupTableRequest request) throws IOException { + +        if (request.getType() == null) { +            throw new IllegalArgumentException("LookupTableType must not be null."); +        } + +        final String service = request.getType().getIdentifier() + "_list"; + +        return makeRequest(service, EMPTY_MAP, null, GetLookupTableResponse.class); +    } + +    @Override      public UpdateIndividualProfileResponse updateIndividualProfile(UpdateIndividualProfileRequest request)              throws IOException { diff --git a/src/main/java/com/p4square/ccbapi/model/CustomField.java b/src/main/java/com/p4square/ccbapi/model/CustomField.java index c9917e4..5b52bb3 100644 --- a/src/main/java/com/p4square/ccbapi/model/CustomField.java +++ b/src/main/java/com/p4square/ccbapi/model/CustomField.java @@ -71,4 +71,13 @@ public class CustomField {      public void setAdminOnly(boolean adminOnly) {          this.adminOnly = adminOnly;      } + +    @Override +    public String toString() { +        return "CustomField::{" + +                "name='" + name + '\'' + +                ", label='" + label + '\'' + +                ", adminOnly=" + adminOnly + +                '}'; +    }  } diff --git a/src/main/java/com/p4square/ccbapi/model/GetLookupTableRequest.java b/src/main/java/com/p4square/ccbapi/model/GetLookupTableRequest.java new file mode 100644 index 0000000..4da877e --- /dev/null +++ b/src/main/java/com/p4square/ccbapi/model/GetLookupTableRequest.java @@ -0,0 +1,27 @@ +package com.p4square.ccbapi.model; + +/** + * GetLookupTableRequest contains the information necessary to get a list of lookup table values. + */ +public class GetLookupTableRequest { + +    private LookupTableType type; + +    public LookupTableType getType() { +        return type; +    } + +    /** +     * Specify the type of lookup table to query. +     * +     * @param type A non-null lookup table type. +     * @return this +     */ +    public GetLookupTableRequest withType(final LookupTableType type) { +        if (type == null) { +            throw new IllegalArgumentException("type may not be null."); +        } +        this.type = type; +        return this; +    } +} diff --git a/src/main/java/com/p4square/ccbapi/model/GetLookupTableResponse.java b/src/main/java/com/p4square/ccbapi/model/GetLookupTableResponse.java new file mode 100644 index 0000000..e1feb1e --- /dev/null +++ b/src/main/java/com/p4square/ccbapi/model/GetLookupTableResponse.java @@ -0,0 +1,37 @@ +package com.p4square.ccbapi.model; + +import javax.xml.bind.annotation.*; +import java.util.ArrayList; +import java.util.List; + +/** + * A GetLookupTableResponse contains a list of lookup table values. + */ +@XmlRootElement(name="response") +@XmlAccessorType(XmlAccessType.NONE) +public class GetLookupTableResponse extends CCBAPIResponse { + +    @XmlElementWrapper(name = "items") +    @XmlElement(name="item") +    private List<LookupTableItem> items; + +    public GetLookupTableResponse() { +        items = new ArrayList<>(); +    } + +    /** +     * @return The list of items in the lookup table. +     */ +    public List<LookupTableItem> getItems() { +        return items; +    } + +    /** +     * Set the list of lookup table items. +     * +     * @param items  The list of items in the lookup table. +     */ +    public void setItems(final List<LookupTableItem> items) { +        this.items = items; +    } +}
\ No newline at end of file diff --git a/src/main/java/com/p4square/ccbapi/model/LookupTableItem.java b/src/main/java/com/p4square/ccbapi/model/LookupTableItem.java new file mode 100644 index 0000000..07b39eb --- /dev/null +++ b/src/main/java/com/p4square/ccbapi/model/LookupTableItem.java @@ -0,0 +1,59 @@ +package com.p4square.ccbapi.model; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +/** + * LookupTableItem is the definition of an item in a pulldown list. + */ +@XmlRootElement(name="item") +@XmlAccessorType(XmlAccessType.NONE) +public class LookupTableItem { + +    @XmlElement +    private int id; + +    @XmlElement +    private int order; + +    @XmlElement +    private String name; + +    public int getId() { +        return id; +    } + +    public LookupTableItem setId(final int id) { +        this.id = id; +        return this; +    } + +    public int getOrder() { +        return order; +    } + +    public LookupTableItem setOrder(final int order) { +        this.order = order; +        return this; +    } + +    public String getName() { +        return name; +    } + +    public LookupTableItem setName(final String name) { +        this.name = name; +        return this; +    } + +    @Override +    public String toString() { +        return "LookupTableItem::{" + +                "id=" + id + +                ", order=" + order + +                ", name='" + name + '\'' + +                '}'; +    } +} diff --git a/src/main/java/com/p4square/ccbapi/model/LookupTableType.java b/src/main/java/com/p4square/ccbapi/model/LookupTableType.java new file mode 100644 index 0000000..e80abde --- /dev/null +++ b/src/main/java/com/p4square/ccbapi/model/LookupTableType.java @@ -0,0 +1,47 @@ +package com.p4square.ccbapi.model; + +/** + * A collection of lookup table types supported by CCB. + */ +public enum LookupTableType { +    ABILITY, +    ACTIVITY, +    AGE_BRACKET, +    AREA, +    CHURCH_SERVICE, +    DEPARTMENT, +    EVENT_GROUPING, +    GIFT, +    GROUP_GROUPING, +    GROUP_TYPE, +    HOW_JOINED_CHURCH, +    HOW_THEY_HEARD, +    MEET_DAY, +    MEET_TIME, +    MEMBERSHIP_TYPE, +    PASSION, +    REASON_LEFT_CHURCH, +    SCHOOL, +    SCHOOL_GRADE, +    SIGNIFICANT_EVENT, +    SPIRITUAL_MATURITY, +    STYLE, +    TRANSACTION_GROUPING, +    UDF_GRP_PULLDOWN_1, +    UDF_GRP_PULLDOWN_2, +    UDF_GRP_PULLDOWN_3, +    UDF_IND_PULLDOWN_1, +    UDF_IND_PULLDOWN_2, +    UDF_IND_PULLDOWN_3, +    UDF_IND_PULLDOWN_4, +    UDF_IND_PULLDOWN_5, +    UDF_IND_PULLDOWN_6, +    UDF_RESOURCE_PULLDOWN_1; + +    /** +     * @return the identifier used by the CCB API. +     */ +    public String getIdentifier() { +        return toString().toLowerCase(); +    } +} | 
