Search in sources :

Example 1 with Async

use of com.pratilipi.common.util.Async in project pratilipi by Pratilipi.

the class NotificationProcessApi method get.

@Get
public GenericResponse get(GenericRequest request) throws UnexpectedServerException {
    DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
    List<Notification> notifList = dataAccessor.getNotificationListWithFcmPending(1000);
    logger.log(Level.INFO, "Total pending notifications = " + notifList.size());
    Map<Long, List<Notification>> userIdNotifListMap = new HashMap<>();
    for (Notification notif : notifList) {
        List<Notification> userNotifList = userIdNotifListMap.get(notif.getUserId());
        if (userNotifList == null) {
            userNotifList = new LinkedList<>();
            userIdNotifListMap.put(notif.getUserId(), userNotifList);
        }
        userNotifList.add(notif);
    }
    for (final Entry<Long, List<Notification>> entry : userIdNotifListMap.entrySet()) {
        Async async = new Async() {

            @Override
            public void exec() {
                for (Notification notif : entry.getValue()) {
                    Task task = TaskQueueFactory.newTask().setUrl("/notification/process").addParam("notificationId", notif.getId().toString());
                    TaskQueueFactory.getNotificationTaskQueue().add(task);
                    logger.log(Level.INFO, "Task created for notification id " + notif.getId());
                }
            }
        };
        NotificationDataUtil.updateFirebaseDb(entry.getKey(), entry.getValue(), async);
    }
    return new GenericResponse();
}
Also used : Task(com.pratilipi.taskqueue.Task) HashMap(java.util.HashMap) GenericResponse(com.pratilipi.api.shared.GenericResponse) DataAccessor(com.pratilipi.data.DataAccessor) Async(com.pratilipi.common.util.Async) List(java.util.List) LinkedList(java.util.LinkedList) Notification(com.pratilipi.data.type.Notification) Get(com.pratilipi.api.annotation.Get)

Aggregations

Get (com.pratilipi.api.annotation.Get)1 GenericResponse (com.pratilipi.api.shared.GenericResponse)1 Async (com.pratilipi.common.util.Async)1 DataAccessor (com.pratilipi.data.DataAccessor)1 Notification (com.pratilipi.data.type.Notification)1 Task (com.pratilipi.taskqueue.Task)1 HashMap (java.util.HashMap)1 LinkedList (java.util.LinkedList)1 List (java.util.List)1