1 package org.openkilda.log.service;
3 import org.springframework.beans.factory.annotation.Autowired;
4 import org.springframework.beans.factory.annotation.Value;
5 import org.springframework.stereotype.Service;
6 import org.springframework.transaction.annotation.Propagation;
7 import org.springframework.transaction.annotation.Transactional;
9 import java.util.ArrayList;
10 import java.util.Calendar;
11 import java.util.Date;
12 import java.util.List;
24 @Transactional(propagation = Propagation.REQUIRES_NEW)
33 @Value(
"${log.duration}")
34 private int logDuration;
36 @Transactional(readOnly =
false)
37 public
void logUserActivity(final
LogInfo logInfo) {
39 userActivityRepository.save(userActivityEntity);
42 @Transactional(readOnly =
true)
43 public List<
LogInfo> getLogs(final List<Long> users, List<String> activities, final String start,
45 activities = (
ValidatorUtil.
isNull(activities) || activities.contains(
"all")) ? null : activities;
46 List<Long> activityIds =
new ArrayList<Long>();
48 for (String activity : activities) {
50 if (activityType != null) {
51 activityIds.add(activityType.
getId());
56 Date startTime = start != null ?
new Date(Long.parseLong(start)) : getDefaultStartDate();
57 Date endTime = end != null ?
new Date(Long.parseLong(end)) : Calendar.getInstance().getTime();
59 validateLogRequest(startTime, endTime);
60 return getLogs(users, activityIds, startTime, endTime);
63 private List<LogInfo> getLogs(
final List<Long> userIds,
final List<Long> activityIds,
final Date startTime,
65 List<UserActivityEntity> userActivityEntityList =
new ArrayList<>();
68 userActivityEntityList = userActivityRepository
69 .findByActivityTimeGreaterThanEqualAndActivityTimeLessThanEqual(startTime, endTime);
70 }
else if (!ValidatorUtil.isNull(userIds) && ValidatorUtil.isNull(activityIds)) {
71 userActivityEntityList = userActivityRepository
72 .findByUserIdInAndActivityTimeGreaterThanEqualAndActivityTimeLessThanEqual(userIds, startTime,
74 }
else if (!ValidatorUtil.isNull(userIds) && !ValidatorUtil.isNull(activityIds)) {
75 userActivityEntityList = userActivityRepository
76 .findByUserIdInAndActivityTimeGreaterThanEqualAndActivityTimeLessThanEqualAndActivity_IdIn(userIds,
77 startTime, endTime, activityIds);
78 }
else if (ValidatorUtil.isNull(userIds)) {
79 userActivityEntityList = userActivityRepository
80 .findByActivityTimeGreaterThanEqualAndActivityTimeLessThanEqualAndActivity_IdIn(startTime, endTime,
84 List<LogInfo> logs =
new ArrayList<LogInfo>();
85 for (UserActivityEntity userActivityEntity : userActivityEntityList) {
86 logs.add(LogConversionUtil.getLogInfo(userActivityEntity));
92 Calendar cal = Calendar.getInstance();
93 cal.add(Calendar.DATE, -logDuration);
98 if (startTime.after(endTime)) {
static ActivityType getActivityByName(final String name)
static boolean isNull(final Object obj)
static UserActivityEntity getUserActivity(final LogInfo info)
Date getDefaultStartDate()
void validateLogRequest(final Date startTime, final Date endTime)