Skip to content

Commit 9b59572

Browse files
committed
Add support for organizations
1 parent 2347b14 commit 9b59572

File tree

3 files changed

+231
-0
lines changed

3 files changed

+231
-0
lines changed

src/main/java/org/zendesk/client/v2/ZenDesk.java

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.zendesk.client.v2.model.Comment;
2121
import org.zendesk.client.v2.model.Field;
2222
import org.zendesk.client.v2.model.Identity;
23+
import org.zendesk.client.v2.model.Organization;
2324
import org.zendesk.client.v2.model.Ticket;
2425
import org.zendesk.client.v2.model.User;
2526

@@ -503,6 +504,7 @@ public org.zendesk.client.v2.model.Request createRequest(org.zendesk.client.v2.m
503504
JSON, json(Collections.singletonMap("request", request))),
504505
handle(org.zendesk.client.v2.model.Request.class, "request")));
505506
}
507+
506508
public org.zendesk.client.v2.model.Request updateRequest(org.zendesk.client.v2.model.Request request) {
507509
checkHasId(request);
508510
return complete(submit(req("PUT", tmpl("/requests/{id}.json").set("id", request.getId()),
@@ -537,6 +539,65 @@ public Comment getRequestComment(int requestId, int commentId) {
537539
handle(Comment.class, "comment")));
538540
}
539541

542+
public Iterable<Organization> getOrganizations() {
543+
return new PagedIterable<Organization>(cnst("/organizations.json"),
544+
handleList(Organization.class, "organizations"));
545+
}
546+
547+
public Iterable<Organization> getAutoCompleteOrganizations(String name) {
548+
if (name == null || name.length() < 2) {
549+
throw new IllegalArgumentException("Name must be at least 2 characters long");
550+
}
551+
return new PagedIterable<Organization>(tmpl("/organizations/autocomplete.json{?name}").set("name", name),
552+
handleList(Organization.class, "organizations"));
553+
}
554+
555+
// TODO getOrganizationRelatedInformation
556+
557+
public Organization getOrganization(int id) {
558+
return complete(submit(req("GET", tmpl("/organizations/{id}.json").set("id", id)),
559+
handle(Organization.class, "organization")));
560+
}
561+
562+
public Organization createOrganization(Organization organization) {
563+
return complete(submit(req("POST", cnst("/organizations.json"), JSON, json(
564+
Collections.singletonMap("organization", organization))), handle(Organization.class, "organization")));
565+
}
566+
567+
public List<Organization> createOrganizations(Organization... organizations) {
568+
return createOrganizations(Arrays.asList(organizations));
569+
}
570+
571+
public List<Organization> createOrganizations(List<Organization> organizations) {
572+
return complete(submit(req("POST", cnst("/organizations/create_many.json"), JSON, json(
573+
Collections.singletonMap("organizations", organizations))), handleList(Organization.class, "results")));
574+
}
575+
576+
public Organization updateOrganization(Organization organization) {
577+
checkHasId(organization);
578+
return complete(submit(req("PUT", tmpl("/organizations/{id}.json").set("id", organization.getId()), JSON, json(
579+
Collections.singletonMap("organization", organization))), handle(Organization.class, "organization")));
580+
}
581+
582+
public void deleteOrganization(Organization organization) {
583+
checkHasId(organization);
584+
deleteOrganization(organization.getId());
585+
}
586+
587+
public void deleteOrganization(int id) {
588+
complete(submit(req("DELETE", tmpl("/organizations/{id}.json").set("id", id)), handleStatus()));
589+
}
590+
591+
public Iterable<Organization> lookupOrganizationsByExternalId(String externalId) {
592+
if (externalId == null || externalId.length() < 2) {
593+
throw new IllegalArgumentException("Name must be at least 2 characters long");
594+
}
595+
return new PagedIterable<Organization>(tmpl("/organizations/search.json{?external_id}").set("external_id", externalId),
596+
handleList(Organization.class, "organizations"));
597+
}
598+
599+
600+
540601
//////////////////////////////////////////////////////////////////////
541602
// Helper methods
542603
//////////////////////////////////////////////////////////////////////
@@ -752,6 +813,12 @@ private static void checkHasId(Identity identity) {
752813
}
753814
}
754815

816+
private static void checkHasId(Organization organization) {
817+
if (organization.getId() == null) {
818+
throw new IllegalArgumentException("Organization requires id");
819+
}
820+
}
821+
755822
private static void checkHasToken(Attachment.Upload upload) {
756823
if (upload.getToken() == null) {
757824
throw new IllegalArgumentException("Upload requires token");
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
package org.zendesk.client.v2.model;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
5+
import java.util.Date;
6+
import java.util.List;
7+
8+
/**
9+
* @author stephenc
10+
* @since 22/04/2013 15:38
11+
*/
12+
public class Organization {
13+
private Integer id;
14+
private String externalId;
15+
private String name;
16+
private Date createdAt;
17+
private Date updatedAt;
18+
private List<String> domainNames;
19+
private String details;
20+
private String notes;
21+
private Integer groupId;
22+
private Boolean sharedTickets;
23+
private Boolean sharedComments;
24+
private List<String> tags;
25+
26+
public Organization() {
27+
}
28+
29+
@JsonProperty("created_at")
30+
public Date getCreatedAt() {
31+
return createdAt;
32+
}
33+
34+
public void setCreatedAt(Date createdAt) {
35+
this.createdAt = createdAt;
36+
}
37+
38+
public String getDetails() {
39+
return details;
40+
}
41+
42+
public void setDetails(String details) {
43+
this.details = details;
44+
}
45+
46+
@JsonProperty("domain_names")
47+
public List<String> getDomainNames() {
48+
return domainNames;
49+
}
50+
51+
public void setDomainNames(List<String> domainNames) {
52+
this.domainNames = domainNames;
53+
}
54+
55+
@JsonProperty("external_id")
56+
public String getExternalId() {
57+
return externalId;
58+
}
59+
60+
public void setExternalId(String externalId) {
61+
this.externalId = externalId;
62+
}
63+
64+
@JsonProperty("group_id")
65+
public Integer getGroupId() {
66+
return groupId;
67+
}
68+
69+
public void setGroupId(Integer groupId) {
70+
this.groupId = groupId;
71+
}
72+
73+
public Integer getId() {
74+
return id;
75+
}
76+
77+
public void setId(Integer id) {
78+
this.id = id;
79+
}
80+
81+
public String getName() {
82+
return name;
83+
}
84+
85+
public void setName(String name) {
86+
this.name = name;
87+
}
88+
89+
public String getNotes() {
90+
return notes;
91+
}
92+
93+
public void setNotes(String notes) {
94+
this.notes = notes;
95+
}
96+
97+
@JsonProperty("shared_comments")
98+
public Boolean getSharedComments() {
99+
return sharedComments;
100+
}
101+
102+
public void setSharedComments(Boolean sharedComments) {
103+
this.sharedComments = sharedComments;
104+
}
105+
106+
@JsonProperty("shared_tickets")
107+
public Boolean getSharedTickets() {
108+
return sharedTickets;
109+
}
110+
111+
public void setSharedTickets(Boolean sharedTickets) {
112+
this.sharedTickets = sharedTickets;
113+
}
114+
115+
public List<String> getTags() {
116+
return tags;
117+
}
118+
119+
public void setTags(List<String> tags) {
120+
this.tags = tags;
121+
}
122+
123+
@JsonProperty("updated_at")
124+
public Date getUpdatedAt() {
125+
return updatedAt;
126+
}
127+
128+
public void setUpdatedAt(Date updatedAt) {
129+
this.updatedAt = updatedAt;
130+
}
131+
132+
@Override
133+
public String toString() {
134+
final StringBuilder sb = new StringBuilder("Organization{");
135+
sb.append("id=").append(id);
136+
sb.append(", externalId='").append(externalId).append('\'');
137+
sb.append(", name='").append(name).append('\'');
138+
sb.append(", createdAt=").append(createdAt);
139+
sb.append(", updatedAt=").append(updatedAt);
140+
sb.append(", domainNames=").append(domainNames);
141+
sb.append(", details='").append(details).append('\'');
142+
sb.append(", notes='").append(notes).append('\'');
143+
sb.append(", groupId=").append(groupId);
144+
sb.append(", sharedTickets=").append(sharedTickets);
145+
sb.append(", sharedComments=").append(sharedComments);
146+
sb.append(", tags=").append(tags);
147+
sb.append('}');
148+
return sb.toString();
149+
}
150+
}

src/test/java/org/zendesk/client/v2/RealSmokeTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.zendesk.client.v2.model.Comment;
99
import org.zendesk.client.v2.model.Field;
1010
import org.zendesk.client.v2.model.Identity;
11+
import org.zendesk.client.v2.model.Organization;
1112
import org.zendesk.client.v2.model.Request;
1213
import org.zendesk.client.v2.model.Ticket;
1314
import org.zendesk.client.v2.model.User;
@@ -218,4 +219,17 @@ public void getUserRequests() throws Exception {
218219
}
219220
}
220221
}
222+
223+
@Test
224+
public void getOrganizations() throws Exception {
225+
createClientWithToken();
226+
int count = 0;
227+
for (Organization t : instance.getOrganizations()) {
228+
assertThat(t.getName(), notNullValue());
229+
if (++count > 10) {
230+
break;
231+
}
232+
}
233+
}
234+
221235
}

0 commit comments

Comments
 (0)