Search in sources :

Example 31 with Get

use of com.pratilipi.api.annotation.Get in project pratilipi by Pratilipi.

the class EmailProcessApi method get.

@Get
public GenericResponse get(GenericRequest request) throws UnexpectedServerException {
    DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
    RtdbAccessor rtdbAccessor = DataAccessorFactory.getRtdbAccessor();
    Map<Long, UserPreferenceRtdb> userPreferences = null;
    List<Email> emailList = new ArrayList<>();
    DataListIterator<Email> it = dataAccessor.getEmailListIteratorForStatePending(null, false);
    Set<Long> userIds = new HashSet<>();
    while (it.hasNext()) {
        Email email = it.next();
        emailList.add(email);
        userIds.add(email.getUserId());
    }
    userPreferences = rtdbAccessor.getUserPreferences(userIds);
    Map<Long, User> users = dataAccessor.getUsers(userPreferences.keySet());
    // Re-scheduling for all Emails
    DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss z");
    dateFormat.setTimeZone(TimeZone.getTimeZone("IST"));
    for (Email email : emailList) {
        UserPreferenceRtdb preference = userPreferences.get(email.getUserId());
        User user = users.get(email.getUserId());
        if (email.getScheduledDate().before(new Date()))
            continue;
        if (email.getScheduledDate().equals(preference.getEmailFrequency().getNextSchedule(user.getLastEmailedDate())))
            continue;
        email.setScheduledDate(preference.getEmailFrequency().getNextSchedule(user.getLastEmailedDate()));
        email.setLastUpdated(new Date());
        if (email.getScheduledDate() == null) {
            // User changed setting to NEVER -> Scheduled Date will be null
            email.setState(EmailState.DROPPED);
        } else {
            logger.log(Level.INFO, "Rescheduling email: " + email.getId() + " from " + dateFormat.format(email.getScheduledDate()) + " to " + dateFormat.format(preference.getEmailFrequency().getNextSchedule(user.getLastEmailedDate())));
        }
    }
    // Creating Tasks
    List<Task> taskList = new ArrayList<>();
    Set<Long> userIdTaskSet = new HashSet<>();
    for (Email email : emailList) {
        if (// User changed setting to NEVER -> Email Dropped
        email.getState() != EmailState.PENDING)
            continue;
        if (email.getScheduledDate().after(new Date()))
            continue;
        UserPreferenceRtdb preference = userPreferences.get(email.getUserId());
        if (preference.getEmailFrequency() == EmailFrequency.IMMEDIATELY)
            taskList.add(TaskQueueFactory.newTask().setUrl("/email/process").addParam("emailId", email.getId().toString()));
        else
            userIdTaskSet.add(email.getUserId());
        email.setState(EmailState.IN_PROGRESS);
        email.setLastUpdated(new Date());
    }
    for (Long userId : userIdTaskSet) taskList.add(TaskQueueFactory.newTask().setUrl("/email/process").addParam("userId", userId.toString()));
    TaskQueueFactory.getEmailHpTaskQueue().addAll(taskList);
    emailList = dataAccessor.createOrUpdateEmailList(emailList);
    return new GenericResponse();
}
Also used : Task(com.pratilipi.taskqueue.Task) Email(com.pratilipi.data.type.Email) User(com.pratilipi.data.type.User) GenericResponse(com.pratilipi.api.shared.GenericResponse) DataAccessor(com.pratilipi.data.DataAccessor) ArrayList(java.util.ArrayList) Date(java.util.Date) RtdbAccessor(com.pratilipi.data.RtdbAccessor) SimpleDateFormat(java.text.SimpleDateFormat) DateFormat(java.text.DateFormat) UserPreferenceRtdb(com.pratilipi.data.type.UserPreferenceRtdb) SimpleDateFormat(java.text.SimpleDateFormat) HashSet(java.util.HashSet) Get(com.pratilipi.api.annotation.Get)

Example 32 with Get

use of com.pratilipi.api.annotation.Get in project pratilipi by Pratilipi.

the class EcsContentApi method get.

@Get
public GenericResponse get(GetRequest request) throws InvalidArgumentException, UnexpectedServerException {
    DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
    Pratilipi pratilipi = dataAccessor.getPratilipi(request.pratilipiId);
    if (pratilipi != null && pratilipi.getState() == PratilipiState.DELETED)
        throw new InvalidArgumentException("Deleted pratilipiId");
    return new GetResponse(request.pratilipiId, PratilipiDocUtil._validateChapterIdInContent(request.pratilipiId));
}
Also used : InvalidArgumentException(com.pratilipi.common.exception.InvalidArgumentException) DataAccessor(com.pratilipi.data.DataAccessor) Pratilipi(com.pratilipi.data.type.Pratilipi) Get(com.pratilipi.api.annotation.Get)

Example 33 with Get

use of com.pratilipi.api.annotation.Get in project pratilipi by Pratilipi.

the class AuthorListByReadCountApi method get.

@Get
public GetResponse get(GetRequest request) throws UnexpectedServerException {
    DataListCursorTuple<AuthorByReadCountData> dataListCursorTuple = AuthorDataUtil.getAuthorListByReadCount(request.getLanguage(), request.getResultCount(), request.getCursor());
    if (dataListCursorTuple == null) {
        Logger.getLogger(AuthorListByReadCountApi.class.getSimpleName()).log(Level.INFO, "DB returned null cursor tuple");
        throw new UnexpectedServerException();
    }
    Date date = AppPropertyUtil.getTopAuthorLoadDate();
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
    Logger.getLogger(AuthorListByReadCountApi.class.getSimpleName()).log(Level.INFO, "Date : " + dateFormat.format(date));
    return new GetResponse(dataListCursorTuple.getDataList(), dateFormat.format(date), dataListCursorTuple.getCursor());
}
Also used : UnexpectedServerException(com.pratilipi.common.exception.UnexpectedServerException) AuthorByReadCountData(com.pratilipi.data.client.AuthorByReadCountData) SimpleDateFormat(java.text.SimpleDateFormat) Date(java.util.Date) Get(com.pratilipi.api.annotation.Get)

Example 34 with Get

use of com.pratilipi.api.annotation.Get in project pratilipi by Pratilipi.

the class AuthorProcessApi method get.

@Get
public GenericResponse get(GenericRequest request) {
    DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
    // Fetching AppProperty
    String appPropertyId = "Api.AuthorProcess.ValidateData";
    AppProperty appProperty = dataAccessor.getAppProperty(appPropertyId);
    if (appProperty == null) {
        appProperty = dataAccessor.newAppProperty(appPropertyId);
        appProperty.setValue(new Date(0));
    }
    // Fetching list of author ids.
    AuthorFilter authorFilter = new AuthorFilter();
    authorFilter.setMinLastUpdate((Date) appProperty.getValue(), false);
    List<Long> authorIdList = dataAccessor.getAuthorIdList(authorFilter, null, 10000).getDataList();
    // Updating AppProperty.
    if (authorIdList.size() > 0) {
        appProperty.setValue(dataAccessor.getAuthor(authorIdList.get(authorIdList.size() - 1)).getLastUpdated());
        appProperty = dataAccessor.createOrUpdateAppProperty(appProperty);
    }
    return new GenericResponse();
}
Also used : GenericResponse(com.pratilipi.api.shared.GenericResponse) DataAccessor(com.pratilipi.data.DataAccessor) AuthorFilter(com.pratilipi.common.util.AuthorFilter) AppProperty(com.pratilipi.data.type.AppProperty) Date(java.util.Date) Get(com.pratilipi.api.annotation.Get)

Aggregations

Get (com.pratilipi.api.annotation.Get)34 GenericResponse (com.pratilipi.api.shared.GenericResponse)27 DataAccessor (com.pratilipi.data.DataAccessor)22 Date (java.util.Date)11 PratilipiFilter (com.pratilipi.common.util.PratilipiFilter)7 ArrayList (java.util.ArrayList)7 PratilipiData (com.pratilipi.data.client.PratilipiData)6 AppProperty (com.pratilipi.data.type.AppProperty)5 Author (com.pratilipi.data.type.Author)5 Task (com.pratilipi.taskqueue.Task)5 SimpleDateFormat (java.text.SimpleDateFormat)5 UnexpectedServerException (com.pratilipi.common.exception.UnexpectedServerException)4 Event (com.pratilipi.data.type.Event)4 Pratilipi (com.pratilipi.data.type.Pratilipi)4 Gson (com.google.gson.Gson)3 JsonObject (com.google.gson.JsonObject)3 InvalidArgumentException (com.pratilipi.common.exception.InvalidArgumentException)3 AuthorFilter (com.pratilipi.common.util.AuthorFilter)3 BlobAccessor (com.pratilipi.data.BlobAccessor)3 DocAccessor (com.pratilipi.data.DocAccessor)3