Skip to content

Commit d3575c0

Browse files
authored
Merge pull request #124 from intercom/update_user_companies
Update user companies
2 parents 12f251e + 622da0f commit d3575c0

File tree

2 files changed

+26
-9
lines changed

2 files changed

+26
-9
lines changed

intercom-java/src/main/java/io/intercom/api/CompanyUpdateBuilder.java

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package io.intercom.api;
22

3-
3+
import com.google.common.base.Objects;
4+
import com.google.common.base.Predicate;
5+
import com.google.common.collect.Iterables;
46
import com.google.common.collect.Lists;
57

6-
import java.util.ArrayList;
78
import java.util.List;
89

910
class CompanyUpdateBuilder {
@@ -13,11 +14,13 @@ class CompanyUpdateBuilder {
1314
*/
1415
static List<CompanyWithStringPlan> buildUserUpdateCompanies(CompanyCollection add, CompanyCollection remove) {
1516

16-
final ArrayList<CompanyWithStringPlan> updatableCompanies = Lists.newArrayList();
17+
final List<CompanyWithStringPlan> updatableCompanies = Lists.newArrayList();
1718
if (add != null) {
1819
final List<Company> companies = add.getPage();
1920
for (Company company : companies) {
20-
updatableCompanies.add(prepareUpdatableCompany(company));
21+
if (!isCompanyInList(company, remove)) {
22+
updatableCompanies.add(prepareUpdatableCompany(company));
23+
}
2124
}
2225
}
2326

@@ -31,14 +34,29 @@ static List<CompanyWithStringPlan> buildUserUpdateCompanies(CompanyCollection ad
3134
return updatableCompanies;
3235
}
3336

37+
private static boolean isCompanyInList(final Company company, CompanyCollection companyCollection) {
38+
if (companyCollection == null) {
39+
return false;
40+
}
41+
42+
return Iterables.any(companyCollection.getPage(), new Predicate<Company>() {
43+
@Override
44+
public boolean apply(Company e) {
45+
return Objects.equal(company.getCompanyID(), e.getCompanyID())
46+
|| Objects.equal(company.getId(), e.getId());
47+
}
48+
});
49+
}
50+
3451
private static CompanyWithStringPlan prepareUpdatableCompany(Company company) {
3552
final CompanyWithStringPlan updatableCompany = new CompanyWithStringPlan();
53+
updatableCompany.setId(company.getId());
3654
updatableCompany.setCompanyID(company.getCompanyID());
3755
updatableCompany.setName(company.getName());
3856
updatableCompany.setSessionCount(company.getSessionCount());
3957
updatableCompany.setMonthlySpend(company.getMonthlySpend());
4058
updatableCompany.setRemoteCreatedAt(company.getRemoteCreatedAt());
41-
if(company.getCustomAttributes() != null) {
59+
if (company.getCustomAttributes() != null) {
4260
updatableCompany.getCustomAttributes().putAll(company.getCustomAttributes());
4361
}
4462
if (company.getPlan() != null) {

intercom-java/src/test/java/io/intercom/api/CompanyUpdateBuilderTest.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,15 @@ public static void beforeClass() {
1919
mapper = MapperSupport.objectMapper();
2020
}
2121

22-
2322
@Test
2423
public void testRemove() throws Exception {
2524

2625
final Company bacon = new Company().setCompanyID("bacon");
2726
final Company pancake = new Company().setCompanyID("pancake");
2827

2928
final List<CompanyWithStringPlan> cos = CompanyUpdateBuilder.buildUserUpdateCompanies(
30-
new CompanyCollection(Lists.newArrayList(pancake)),
31-
new CompanyCollection(Lists.newArrayList(bacon))
32-
);
29+
new CompanyCollection(Lists.newArrayList(bacon, pancake)),
30+
new CompanyCollection(Lists.newArrayList(bacon)));
3331

3432
Boolean baconIsRemoved = null;
3533
Boolean pancakeIsRemoved = null;
@@ -59,6 +57,7 @@ public void testRemove() throws Exception {
5957
final String baconJson = mapper.writeValueAsString(baconCo);
6058
assertTrue(baconJson.contains("remove"));
6159
assertTrue(baconJson.contains("true"));
60+
6261
}
6362

6463
@Test

0 commit comments

Comments
 (0)