package ik.am.jpetstore.app.account; import java.util.List; import javax.inject.Inject; import ik.am.jpetstore.domain.model.Account; import ik.am.jpetstore.domain.model.Product; import ik.am.jpetstore.domain.model.UserDetails; import ik.am.jpetstore.domain.service.account.AccountService; import ik.am.jpetstore.domain.service.catalog.CatalogService; import org.dozer.Mapper; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; @Component public class AccountHelper { @Inject protected Mapper beanMapper; @Inject protected AccountService accountService; @Inject protected CatalogService catalogService; public void newAccount(AccountForm form) { Account account = beanMapper.map(form, Account.class); accountService.insertAccount(account); } public void editAccount(AccountForm form) { UserDetails userDetails = (UserDetails) SecurityContextHolder .getContext().getAuthentication().getPrincipal(); Account account = userDetails.getAccount(); // does not map "username" to use that of session object beanMapper.map(form, account, "accountExcludeUsername"); accountService.updateAccount(account); // reflect new value to session object beanMapper.map(accountService.getAccount(account.getUsername()), account); List<Product> myList = catalogService.getProductListByCategory(account .getFavouriteCategoryId()); // update MyList userDetails.getMyList().clear(); userDetails.getMyList().addAll(myList); } }