package com.nicusa.converter; import com.nicusa.domain.NotificationSetting; import com.nicusa.domain.NotificationSubject; import com.nicusa.domain.NotificationType; import com.nicusa.domain.UserProfile; import com.nicusa.resource.NotificationSettingResource; import com.nicusa.resource.PortfolioResource; import com.nicusa.resource.UserProfileResource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import java.util.ArrayList; import java.util.Collection; @Component public class UserProfileResourceToDomainConverter extends ResourceToDomainConverter<UserProfileResource, UserProfile> { @PersistenceContext private EntityManager entityManager; @Autowired private PortfolioResourceToDomainConverter portfolioResourceToDomainConverter; @Override public UserProfile convert(UserProfileResource userProfileResource) { UserProfile userProfile = entityManager.find(UserProfile.class, userProfileResource.getId()); if (userProfile == null) { userProfile = new UserProfile(); } userProfile.setName(userProfileResource.getName()); PortfolioResource portfolioResource = new PortfolioResource(); portfolioResource.getLinks().put("self", userProfileResource.getLinks().get("portfolio")); userProfile.setPortfolio(portfolioResourceToDomainConverter.convert(portfolioResource)); userProfile.setEmailAddress(userProfileResource.getEmailAddress()); userProfile.setUserId(userProfileResource.getUserId()); Collection<NotificationSetting> notificationSettings = new ArrayList<>(); if (userProfileResource.getNotificationSettingResources() != null) { for (NotificationSettingResource notificationSettingResource : userProfileResource.getNotificationSettingResources()) { NotificationSetting notificationSetting = new NotificationSetting(); notificationSetting.setNotificationSubject(NotificationSubject.valueOf(notificationSettingResource .getNotificationSubjectResource().name())); notificationSetting.setNotificationType(NotificationType.valueOf(notificationSettingResource .getNotificationTypeResource().name())); notificationSettings.add(notificationSetting); } } userProfile.setNotificationSettings(notificationSettings); return userProfile; } }