Search in sources :

Example 26 with Get

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

the class PratilipiIdfApi method get.

@Get
public GenericResponse get(GenericRequest request) throws UnexpectedServerException {
    Date idfGenerationDate = new Date();
    DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
    PratilipiFilter pratilipiFilter = new PratilipiFilter();
    String cursor = null;
    DataListCursorTuple<Long> pratilipiIdListCursorTupe = dataAccessor.getPratilipiIdList(pratilipiFilter, cursor, null, null);
    List<Long> pratilipiIdList = pratilipiIdListCursorTupe.getDataList();
    // Populate Keyword-Frequency map.
    final HashMap<String, Integer> keywordFrequencyMap = new HashMap<>();
    for (Long pratilipiId : pratilipiIdList) {
        String[] keywords = PratilipiDataUtil.getPratilipiKeywords(pratilipiId).split("\\s+");
        if (keywords == null)
            continue;
        for (String keyword : keywords) {
            if (keywordFrequencyMap.containsKey(keyword))
                keywordFrequencyMap.put(keyword, keywordFrequencyMap.get(keyword) + 1);
            else
                keywordFrequencyMap.put(keyword, 1);
        }
    }
    // Sort Keyword-Frequency map in descending order of frequency
    Comparator<String> comparator = new Comparator<String>() {

        @Override
        public int compare(String a, String b) {
            return keywordFrequencyMap.get(a) >= keywordFrequencyMap.get(b) ? -1 : 1;
        }
    };
    TreeMap<String, Integer> sortedKeywordFrequencyMap = new TreeMap<>(comparator);
    sortedKeywordFrequencyMap.putAll(keywordFrequencyMap);
    // Transform sorted map to csv string
    StringBuilder csv = new StringBuilder();
    for (Map.Entry<String, Integer> entry : sortedKeywordFrequencyMap.entrySet()) {
        csv.append(entry.getKey() + ",");
        csv.append(entry.getValue().toString() + ",");
        csv.append("\n");
    }
    // Persist csv string in BlobStore
    BlobAccessor blobAccessor = DataAccessorFactory.getBlobAccessor();
    BlobEntry blobEntry = blobAccessor.newBlob("pratilipi/" + new SimpleDateFormat("yyyy-MM-dd-HH:mm").format(idfGenerationDate) + "-idf.csv", null, "text/plain");
    blobEntry.setData(csv.toString().getBytes(Charset.forName("UTF-8")));
    blobAccessor.createOrUpdateBlob(blobEntry);
    logger.log(Level.INFO, "Generated IDF with " + keywordFrequencyMap.size() + " keywords.");
    return new GenericResponse();
}
Also used : HashMap(java.util.HashMap) GenericResponse(com.pratilipi.api.shared.GenericResponse) DataAccessor(com.pratilipi.data.DataAccessor) BlobEntry(com.pratilipi.data.type.BlobEntry) TreeMap(java.util.TreeMap) Date(java.util.Date) Comparator(java.util.Comparator) PratilipiFilter(com.pratilipi.common.util.PratilipiFilter) BlobAccessor(com.pratilipi.data.BlobAccessor) HashMap(java.util.HashMap) TreeMap(java.util.TreeMap) Map(java.util.Map) SimpleDateFormat(java.text.SimpleDateFormat) Get(com.pratilipi.api.annotation.Get)

Example 27 with Get

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

the class UserV2Api method get.

@Get
public Response get(GetRequest request) throws InsufficientAccessException {
    if (request.userId == null || request.userId.equals(UserDataUtil.getCurrentUser().getId()))
        return new Response(UserDataUtil.getCurrentUser(), UserV2Api.class);
    if (!UserAccessUtil.hasUserAccess(UserDataUtil.getCurrentUser().getId(), UxModeFilter.getWebsite().getFilterLanguage(), AccessType.AUTHOR_ADD))
        throw new InsufficientAccessException();
    UserData userData = UserDataUtil.createUserData(DataAccessorFactory.getDataAccessor().getUser(request.userId), null);
    userData.setAuthor(new AuthorData());
    return new Response(userData, UserV2Api.class);
}
Also used : GenericResponse(com.pratilipi.api.shared.GenericResponse) UserData(com.pratilipi.data.client.UserData) AuthorData(com.pratilipi.data.client.AuthorData) InsufficientAccessException(com.pratilipi.common.exception.InsufficientAccessException) Get(com.pratilipi.api.annotation.Get)

Example 28 with Get

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

the class UserProcessApi method get.

@Get
public GenericResponse get(GenericRequest request) {
    DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
    // Fetching AppProperty
    AppProperty appProperty = dataAccessor.getAppProperty(appPropertyId);
    if (appProperty == null) {
        appProperty = dataAccessor.newAppProperty(appPropertyId);
        appProperty.setValue(new Date(0));
    }
    List<Key<UserEntity>> keyList = ObjectifyService.ofy().load().type(UserEntity.class).filter("SIGN_UP_DATE >", appProperty.getValue()).order("SIGN_UP_DATE").limit(10000).keys().list();
    // Creating task for each user.
    List<Task> taskList = new ArrayList<>(keyList.size());
    for (Key<UserEntity> key : keyList) {
        Task task = TaskQueueFactory.newTask().setUrl("/user/process").addParam("userId", key.getId() + "").addParam("validateData", "true");
        taskList.add(task);
    }
    TaskQueueFactory.getUserOfflineTaskQueue().addAll(taskList);
    logger.log(Level.INFO, "Added " + taskList.size() + " tasks.");
    // Updating AppProperty.
    if (taskList.size() > 0) {
        appProperty.setValue(dataAccessor.getUser(keyList.get(keyList.size() - 1).getId()).getSignUpDate());
        dataAccessor.createOrUpdateAppProperty(appProperty);
    }
    return new GenericResponse();
}
Also used : Task(com.pratilipi.taskqueue.Task) GenericResponse(com.pratilipi.api.shared.GenericResponse) DataAccessor(com.pratilipi.data.DataAccessor) ArrayList(java.util.ArrayList) AppProperty(com.pratilipi.data.type.AppProperty) Date(java.util.Date) UserEntity(com.pratilipi.data.type.gae.UserEntity) Key(com.googlecode.objectify.Key) Get(com.pratilipi.api.annotation.Get)

Aggregations

Get (com.pratilipi.api.annotation.Get)28 GenericResponse (com.pratilipi.api.shared.GenericResponse)25 DataAccessor (com.pratilipi.data.DataAccessor)20 Date (java.util.Date)9 ArrayList (java.util.ArrayList)7 PratilipiFilter (com.pratilipi.common.util.PratilipiFilter)6 Task (com.pratilipi.taskqueue.Task)6 PratilipiData (com.pratilipi.data.client.PratilipiData)5 AppProperty (com.pratilipi.data.type.AppProperty)5 Author (com.pratilipi.data.type.Author)5 Gson (com.google.gson.Gson)4 Pratilipi (com.pratilipi.data.type.Pratilipi)4 SimpleDateFormat (java.text.SimpleDateFormat)4 GsonBuilder (com.google.gson.GsonBuilder)3 AuthorFilter (com.pratilipi.common.util.AuthorFilter)3 BlobAccessor (com.pratilipi.data.BlobAccessor)3 DocAccessor (com.pratilipi.data.DocAccessor)3 AuthorData (com.pratilipi.data.client.AuthorData)3 BlobEntry (com.pratilipi.data.type.BlobEntry)3 Event (com.pratilipi.data.type.Event)3