diff --git a/src/main/java/com/commafeed/backend/service/UserService.java b/src/main/java/com/commafeed/backend/service/UserService.java index 5609a265..0a92704c 100644 --- a/src/main/java/com/commafeed/backend/service/UserService.java +++ b/src/main/java/com/commafeed/backend/service/UserService.java @@ -12,7 +12,6 @@ import lombok.RequiredArgsConstructor; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.time.DateUtils; import com.commafeed.CommaFeedConfiguration; import com.commafeed.backend.dao.FeedCategoryDAO; @@ -21,6 +20,7 @@ import com.commafeed.backend.dao.UserSettingsDAO; import com.commafeed.backend.model.User; import com.commafeed.backend.model.UserRole; import com.commafeed.backend.model.UserRole.Role; +import com.commafeed.backend.service.internal.PostLoginActivities; import com.google.common.base.Optional; import com.google.common.base.Preconditions; @@ -107,25 +107,7 @@ public class UserService { * Note: Visibility changed to package private to enabled spying on this method */ void afterLogin(User user) { - Date lastLogin = user.getLastLogin(); - Date now = new Date(); - - boolean saveUser = false; - // only update lastLogin field every hour in order to not - // invalidate the cache everytime someone logs in - if (lastLogin == null || lastLogin.before(DateUtils.addHours(now, -1))) { - user.setLastLogin(now); - saveUser = true; - } - if (config.getApplicationSettings().isHeavyLoad() - && (user.getLastFullRefresh() == null || user.getLastFullRefresh().before(DateUtils.addMinutes(now, -30)))) { - user.setLastFullRefresh(now); - saveUser = true; - feedSubscriptionService.refreshAll(user); - } - if (saveUser) { - userDAO.merge(user); - } + new PostLoginActivities(userDAO, feedSubscriptionService, config).afterLogin(user); } public User register(String name, String password, String email, Collection roles) { diff --git a/src/main/java/com/commafeed/backend/service/internal/PostLoginActivities.java b/src/main/java/com/commafeed/backend/service/internal/PostLoginActivities.java new file mode 100644 index 00000000..170ea7ef --- /dev/null +++ b/src/main/java/com/commafeed/backend/service/internal/PostLoginActivities.java @@ -0,0 +1,45 @@ +package com.commafeed.backend.service.internal; + +import java.util.Date; + +import javax.inject.Inject; + +import lombok.RequiredArgsConstructor; + +import org.apache.commons.lang.time.DateUtils; + +import com.commafeed.CommaFeedConfiguration; +import com.commafeed.backend.dao.UserDAO; +import com.commafeed.backend.model.User; +import com.commafeed.backend.service.FeedSubscriptionService; + +@RequiredArgsConstructor(onConstructor = @__({ @Inject })) +public class PostLoginActivities { + + private final UserDAO userDAO; + private final FeedSubscriptionService feedSubscriptionService; + private final CommaFeedConfiguration config; + + public void afterLogin(User user) { + Date lastLogin = user.getLastLogin(); + Date now = new Date(); + + boolean saveUser = false; + // only update lastLogin field every hour in order to not + // invalidate the cache everytime someone logs in + if (lastLogin == null || lastLogin.before(DateUtils.addHours(now, -1))) { + user.setLastLogin(now); + saveUser = true; + } + if (config.getApplicationSettings().isHeavyLoad() + && (user.getLastFullRefresh() == null || user.getLastFullRefresh().before(DateUtils.addMinutes(now, -30)))) { + user.setLastFullRefresh(now); + saveUser = true; + feedSubscriptionService.refreshAll(user); + } + if (saveUser) { + userDAO.merge(user); + } + } + +}