diff options
Diffstat (limited to 'src')
7 files changed, 198 insertions, 0 deletions
diff --git a/src/main/java/com/p4square/ccbapi/CCBAPI.java b/src/main/java/com/p4square/ccbapi/CCBAPI.java index 6b9ba2e..86bc8ea 100644 --- a/src/main/java/com/p4square/ccbapi/CCBAPI.java +++ b/src/main/java/com/p4square/ccbapi/CCBAPI.java @@ -29,6 +29,14 @@ public interface CCBAPI extends Closeable { GetLookupTableResponse getLookupTable(GetLookupTableRequest request) throws IOException; /** + * Retrieve the list of campuses. + * + * @return A {@link GetCampusListResponse} containing the campus ids and names. + * @throws IOException on failure. + */ + GetCampusListResponse getCampusList() throws IOException; + + /** * Retrieve one or more {@link IndividualProfile}s. * * 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 a0335ba..2c75d62 100644 --- a/src/main/java/com/p4square/ccbapi/CCBAPIClient.java +++ b/src/main/java/com/p4square/ccbapi/CCBAPIClient.java @@ -151,6 +151,11 @@ public class CCBAPIClient implements CCBAPI { } @Override + public GetCampusListResponse getCampusList() throws IOException { + return makeRequest("campus_list", EMPTY_MAP, null, GetCampusListResponse.class); + } + + @Override public UpdateIndividualProfileResponse updateIndividualProfile(UpdateIndividualProfileRequest request) throws IOException { diff --git a/src/main/java/com/p4square/ccbapi/model/Campus.java b/src/main/java/com/p4square/ccbapi/model/Campus.java new file mode 100644 index 0000000..9d3288f --- /dev/null +++ b/src/main/java/com/p4square/ccbapi/model/Campus.java @@ -0,0 +1,78 @@ +package com.p4square.ccbapi.model; + +import javax.xml.bind.annotation.*; +import java.time.LocalDateTime; + +/** + * Representation of a Campus. + */ +@XmlRootElement(name="campus") +@XmlAccessorType(XmlAccessType.NONE) +public class Campus { + + @XmlAttribute(name="id") + private int id; + + @XmlElement(name="name") + private String name; + + @XmlElement(name="active") + private boolean active; + + @XmlElement(name="creator") + private IndividualReference createdBy; + + @XmlElement(name="created") + private LocalDateTime createdTime; + + @XmlElement(name="modifier") + private IndividualReference modifiedBy; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + + public IndividualReference getCreatedBy() { + return createdBy; + } + + public void setCreatedBy(IndividualReference createdBy) { + this.createdBy = createdBy; + } + + public LocalDateTime getCreatedTime() { + return createdTime; + } + + public void setCreatedTime(LocalDateTime createdTime) { + this.createdTime = createdTime; + } + + public IndividualReference getModifiedBy() { + return modifiedBy; + } + + public void setModifiedBy(IndividualReference modifiedBy) { + this.modifiedBy = modifiedBy; + } +} diff --git a/src/main/java/com/p4square/ccbapi/model/GetCampusListResponse.java b/src/main/java/com/p4square/ccbapi/model/GetCampusListResponse.java new file mode 100644 index 0000000..e5cbcaa --- /dev/null +++ b/src/main/java/com/p4square/ccbapi/model/GetCampusListResponse.java @@ -0,0 +1,37 @@ +package com.p4square.ccbapi.model; + +import javax.xml.bind.annotation.*; +import java.util.ArrayList; +import java.util.List; + +/** + * A GetCampusListResponse contains a list of campuses. + */ +@XmlRootElement(name="response") +@XmlAccessorType(XmlAccessType.NONE) +public class GetCampusListResponse extends CCBAPIResponse { + + @XmlElementWrapper(name = "campuses") + @XmlElement(name="campus") + private List<Campus> campuses; + + public GetCampusListResponse() { + campuses = new ArrayList<>(); + } + + /** + * @return The list of campuses. + */ + public List<Campus> getCampuses() { + return campuses; + } + + /** + * Set the list of campuses. + * + * @param campuses The list of campuses. + */ + public void setCampuses(final List<Campus> campuses) { + this.campuses = campuses; + } +}
\ No newline at end of file diff --git a/src/test/java/com/p4square/ccbapi/CCBAPIClientTest.java b/src/test/java/com/p4square/ccbapi/CCBAPIClientTest.java index 9c7bbd6..22f9046 100644 --- a/src/test/java/com/p4square/ccbapi/CCBAPIClientTest.java +++ b/src/test/java/com/p4square/ccbapi/CCBAPIClientTest.java @@ -129,6 +129,24 @@ public class CCBAPIClientTest { assertEquals("High School Graduation", response.getItems().get(0).getName()); } + @Test + public void testGetCampusList() throws Exception { + // Set expectation. + URI expectedURI = new URI("https://localhost:8080/api.php?srv=campus_list"); + InputStream is = getClass().getResourceAsStream("model/ccb_campus_list_response.xml"); + EasyMock.expect(mockHttpClient.sendPostRequest(expectedURI, null)) + .andReturn(is); + EasyMock.replay(mockHttpClient); + + // Test significant_event_list. + GetCampusListResponse response = client.getCampusList(); + + // Verify results. + EasyMock.verify(mockHttpClient); + assertNull(response.getErrors()); + assertEquals(1, response.getCampuses().size()); + } + @Test(expected = IllegalArgumentException.class) public void testGetLookupTableListWithNullType() throws Exception { // This should throw an IllegalArgumentException. diff --git a/src/test/java/com/p4square/ccbapi/model/GetCampusListResponseTest.java b/src/test/java/com/p4square/ccbapi/model/GetCampusListResponseTest.java new file mode 100644 index 0000000..9b635db --- /dev/null +++ b/src/test/java/com/p4square/ccbapi/model/GetCampusListResponseTest.java @@ -0,0 +1,30 @@ +package com.p4square.ccbapi.model; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Tests for parsing GetCampusListResponseTest. + */ +public class GetCampusListResponseTest extends XmlBinderTestBase { + + /** + * Assert that all of the fields bind appropriately. + */ + @Test + public void testGetCampusListResponse() throws Exception { + final GetCampusListResponse response = parseFile("ccb_campus_list_response.xml", + GetCampusListResponse.class); + + assertNull("Response should not have errors", response.getErrors()); + assertNotNull(response.getCampuses()); + assertEquals(1, response.getCampuses().size()); + + final Campus campus = response.getCampuses().get(0); + + assertEquals(1, campus.getId()); + assertEquals("Sample Church", campus.getName()); + assertEquals(true, campus.isActive()); + } +}
\ No newline at end of file diff --git a/src/test/resources/com/p4square/ccbapi/model/ccb_campus_list_response.xml b/src/test/resources/com/p4square/ccbapi/model/ccb_campus_list_response.xml new file mode 100644 index 0000000..d50d00e --- /dev/null +++ b/src/test/resources/com/p4square/ccbapi/model/ccb_campus_list_response.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ccb_api> + <request> + <parameters> + <argument value="campus_list" name="srv"/> + </parameters> + </request> + <response> + <service>campus_list</service> + <service_action>execute</service_action> + <availability>public</availability> + <campuses count="1"> + <campus id="1"> + <name>Sample Church</name> + <active>1</active> + <creator id="0">System User</creator> + <modifier id="12">System User</modifier> + <created>2015-10-22 16:52:44</created> + </campus> + </campuses> + </response> +</ccb_api> |