Skip to content

Commit

Permalink
Update user detail mapper and user service entry
Browse files Browse the repository at this point in the history
Using MapperStruct to create a mapper for user detail to make it more generic

Refactor user service entry

Update a more complicated example for user service
  • Loading branch information
symphony-hong committed Sep 1, 2020
1 parent 44bae4d commit 97b9a41
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 65 deletions.
8 changes: 8 additions & 0 deletions symphony-bdk-bom/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
<commons-io.version>2.6</commons-io.version>
<commons-lang3.version>3.9</commons-lang3.version>
<lombok.version>1.18.12</lombok.version>
<mapstruct.version>1.3.1.Final</mapstruct.version>
<jackson.version>2.11.2</jackson.version>
<jackson-databind-nullable.version>0.2.1</jackson-databind-nullable.version>
<jersey.version>2.29.1</jersey.version>
Expand Down Expand Up @@ -203,6 +204,13 @@
<version>${spring-boot-configuration-processor.version}</version>
</dependency>

<!-- MapStruct -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${mapstruct.version}</version>
</dependency>

<!-- Swagger -->
<dependency>
<groupId>io.swagger</groupId>
Expand Down
31 changes: 30 additions & 1 deletion symphony-bdk-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@

<!-- Plugins -->
<maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
<mapstruct.version>1.3.1.Final</mapstruct.version>
<lombok.version>1.18.12</lombok.version>

</properties>

Expand Down Expand Up @@ -102,6 +105,11 @@
<artifactId>resilience4j-retry</artifactId>
</dependency>

<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
</dependency>

<!-- ******************************** -->
<!-- * CodeGen related dependencies * -->
<!-- ******************************** -->
Expand Down Expand Up @@ -261,7 +269,28 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>

</project>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
import com.symphony.bdk.core.service.user.UserService;
import com.symphony.bdk.gen.api.DatafeedApi;
import com.symphony.bdk.gen.api.MessagesApi;

import com.symphony.bdk.gen.api.UserApi;

import com.symphony.bdk.gen.api.UsersApi;

import lombok.extern.slf4j.Slf4j;
Expand All @@ -40,7 +42,7 @@ public class SymphonyBdk {
private final OboAuthenticator oboAuthenticator;

private final DatafeedService datafeedService;
private UserService userService;
private final UserService userService;

public SymphonyBdk(BdkConfig config) throws AuthInitializationException, AuthUnauthorizedException {

Expand All @@ -60,6 +62,8 @@ public SymphonyBdk(BdkConfig config) throws AuthInitializationException, AuthUna
} else {
this.datafeedService = new DatafeedServiceV1(datafeedApi, this.botSession, config);
}
// setup other services
this.userService = new UserService(new UserApi(this.podClient), new UsersApi(this.podClient), this.botSession);
}

public MessageService messages() {
Expand Down Expand Up @@ -91,10 +95,7 @@ public DatafeedService datafeed() {
*
* @return {@link UserService} user service instance.
*/
public UserService user() {
if (this.userService == null) {
this.userService = new UserService(new UserApi(this.podClient), new UsersApi(this.podClient), this.botSession);
}
public UserService users() {
return this.userService;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,60 +1,15 @@
package com.symphony.bdk.core.service.user;

import com.symphony.bdk.gen.api.model.UserAttributes;
import com.symphony.bdk.gen.api.model.UserDetail;
import com.symphony.bdk.gen.api.model.V2UserAttributes;
import com.symphony.bdk.gen.api.model.V2UserDetail;

class UserDetailMapper {
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

protected static V2UserAttributes.AccountTypeEnum toV2AccountType(UserAttributes.AccountTypeEnum accountTypeEnum) {
if (accountTypeEnum != null) {
switch (accountTypeEnum) {
case SYSTEM:
return V2UserAttributes.AccountTypeEnum.SYSTEM;
case NORMAL:
return V2UserAttributes.AccountTypeEnum.NORMAL;
}
}
return null;
}
@Mapper
public interface UserDetailMapper {

protected static V2UserAttributes toV2UserAttribute(UserAttributes userAttributes) {
if (userAttributes != null) {
return new V2UserAttributes()
.emailAddress(userAttributes.getEmailAddress())
.firstName(userAttributes.getFirstName())
.lastName(userAttributes.getLastName())
.userName(userAttributes.getUserName())
.displayName(userAttributes.getDisplayName())
.companyName(userAttributes.getCompanyName())
.department(userAttributes.getDepartment())
.division(userAttributes.getDivision())
.title(userAttributes.getTitle())
.workPhoneNumber(userAttributes.getWorkPhoneNumber())
.mobilePhoneNumber(userAttributes.getMobilePhoneNumber())
.smsNumber(userAttributes.getSmsNumber())
.accountType(toV2AccountType(userAttributes.getAccountType()))
.location(userAttributes.getLocation())
.jobFunction(userAttributes.getJobFunction())
.assetClasses(userAttributes.getAssetClasses())
.industries(userAttributes.getIndustries());
}
return null;
}
UserDetailMapper INSTANCE = Mappers.getMapper(UserDetailMapper.class);

public static V2UserDetail toV2UserDetail(UserDetail userDetail) {
if (userDetail != null) {
return new V2UserDetail()
.userAttributes(toV2UserAttribute(userDetail.getUserAttributes()))
.userSystemInfo(userDetail.getUserSystemInfo())
.features(userDetail.getFeatures())
.apps(userDetail.getApps())
.groups(userDetail.getGroups())
.roles(userDetail.getRoles())
.disclaimers(userDetail.getDisclaimers())
.avatar(userDetail.getAvatar());
}
return null;
}
V2UserDetail userDetailToV2UserDetail(UserDetail userDetail);
}
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ public List<V2UserDetail> listUsersDetailByFilter(@Nullable UserFilter filter) {
return userApi.v2AdminUserListGet(authSession.getSessionToken(), null, null);
}
List<UserDetail> userDetailList = userApi.v1AdminUserFindPost(authSession.getSessionToken(), filter, null, null);
return userDetailList.stream().map(UserDetailMapper::toV2UserDetail).collect(Collectors.toList());
return userDetailList.stream().map(UserDetailMapper.INSTANCE::userDetailToV2UserDetail).collect(Collectors.toList());
} catch (ApiException apiException) {
throw new ApiRuntimeException(apiException);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,30 @@
import com.symphony.bdk.core.config.BdkConfigLoader;
import com.symphony.bdk.core.config.exception.BdkConfigException;
import com.symphony.bdk.core.config.model.BdkConfig;
import com.symphony.bdk.gen.api.model.UserV2;
import com.symphony.bdk.gen.api.model.UserFilter;
import com.symphony.bdk.gen.api.model.V2UserDetail;

import lombok.extern.slf4j.Slf4j;

import java.util.List;

@Slf4j
public class UserExampleMain {

private static final String BOT_USERNAME = "tibot";

public static void main(String[] args)
throws BdkConfigException, AuthUnauthorizedException, AuthInitializationException {

final BdkConfig config = BdkConfigLoader.loadFromClasspath("/config.yaml");

SymphonyBdk bdk = new SymphonyBdk(config);
log.info("Get user by username {}", BOT_USERNAME);
UserV2 user = bdk.user().getUserByUsername("tibot");
log.info("Bot's display name: {}", user.getDisplayName());
log.info("Bot's company: {}", user.getCompany());
UserFilter filter = new UserFilter().status(UserFilter.StatusEnum.DISABLED).feature("canCreatePublicRoom");
log.info("Get user by filter");
List<V2UserDetail> userDetailList = bdk.users().listUsersDetailByFilter(filter);
log.info("Retrieve {} records", userDetailList.size());
log.info("First record: ");
log.info(userDetailList.get(0).getUserAttributes().getUserName());
log.info("Account type: {}", userDetailList.get(0).getUserAttributes().getAccountType());
log.info("Company: {}", userDetailList.get(0).getUserAttributes().getCompanyName());
log.info("Role: {}", userDetailList.get(0).getRoles());
}
}

0 comments on commit 97b9a41

Please sign in to comment.