Search in sources :

Example 1 with Page

use of com.pratilipi.data.type.Page in project pratilipi by Pratilipi.

the class UriAliasUtil method generateUriAlias.

public static String generateUriAlias(String oldUriAlias, String uriPrefix, String... keywords) {
    String uriAlias = uriPrefix;
    for (String keyword : keywords) if (keyword != null)
        uriAlias += keyword.trim().toLowerCase().replaceAll("[^a-z0-9]+", "-") + "-";
    uriAlias = uriAlias.replaceAll("[-]+", "-");
    if (uriAlias.length() > uriPrefix.length() + 1) {
        if (uriAlias.charAt(uriPrefix.length()) == '-')
            uriAlias = uriPrefix + uriAlias.substring(uriPrefix.length() + 1, uriAlias.length() - 1);
        else
            uriAlias = uriAlias.substring(0, uriAlias.length() - 1);
    } else {
        return null;
    }
    DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
    for (int i = 0; ; i++) {
        String aUriAlias = i == 0 ? uriAlias : uriAlias + "-" + i;
        if (oldUriAlias != null && oldUriAlias.equals(aUriAlias))
            return aUriAlias;
        Page page = dataAccessor.getPage(aUriAlias);
        if (page == null)
            return aUriAlias;
    }
}
Also used : DataAccessor(com.pratilipi.data.DataAccessor) Page(com.pratilipi.data.type.Page)

Example 2 with Page

use of com.pratilipi.data.type.Page in project pratilipi by Pratilipi.

the class DataAccessorGaeImpl method getPage.

@Override
public Page getPage(String uri) {
    String memcacheId = _createPageEntityMemcacheId(uri);
    Page page = memcache.get(memcacheId);
    if (page == null) {
        page = ObjectifyService.ofy().load().type(PageEntity.class).filter("URI_ALIAS", uri).order("CREATION_DATE").first().now();
        if (page != null)
            memcache.put(memcacheId, page);
    }
    if (page == null) {
        page = ObjectifyService.ofy().load().type(PageEntity.class).filter("URI", uri).order("CREATION_DATE").first().now();
        if (page != null)
            memcache.put(memcacheId, page);
    }
    if (page == null) {
        // Hack: This will save lots of DB queries.
        page = newPage();
        memcache.put(memcacheId, page);
    }
    return page.getId() == null ? null : page;
}
Also used : PageEntity(com.pratilipi.data.type.gae.PageEntity) Page(com.pratilipi.data.type.Page)

Example 3 with Page

use of com.pratilipi.data.type.Page in project pratilipi by Pratilipi.

the class DataAccessorGaeImpl method getPages.

@Override
public Map<String, Page> getPages(List<String> uriList) {
    Map<String, Page> pages = new HashMap<>(uriList.size());
    if (uriList.size() == 0)
        return pages;
    List<String> memcacheIdList = new ArrayList<>(uriList.size());
    for (String uri : uriList) memcacheIdList.add(_createPageEntityMemcacheId(uri));
    // Fetching entities from Memcache.
    Map<String, Page> keyValueMap = memcache.getAll(memcacheIdList);
    // Fetching missing entities from DataStore
    for (String uri : uriList) {
        Page page = keyValueMap.get(_createPageEntityMemcacheId(uri));
        if (page == null)
            page = getPage(uri);
        pages.put(uri, page);
    }
    return pages;
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Page(com.pratilipi.data.type.Page)

Example 4 with Page

use of com.pratilipi.data.type.Page in project pratilipi by Pratilipi.

the class BlogPostDataUtil method createBlogPostData.

public static BlogPostData createBlogPostData(BlogPost blogPost) {
    DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
    Page blogPostPage = dataAccessor.getPage(PageType.BLOG_POST, blogPost.getId());
    return createBlogPostData(blogPost, blogPostPage);
}
Also used : DataAccessor(com.pratilipi.data.DataAccessor) Page(com.pratilipi.data.type.Page)

Example 5 with Page

use of com.pratilipi.data.type.Page in project pratilipi by Pratilipi.

the class BlogPostDataUtil method _updateBlogPostPageUrl.

private static void _updateBlogPostPageUrl(BlogPost blogPost) {
    DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
    Page blogPage = dataAccessor.getPage(PageType.BLOG, blogPost.getBlogId());
    Page blogPostPage = dataAccessor.getPage(PageType.BLOG_POST, blogPost.getId());
    if (blogPost.getState() == BlogPostState.DELETED) {
        if (blogPostPage != null)
            dataAccessor.deletePage(blogPostPage);
        return;
    }
    boolean isNew = blogPostPage == null;
    if (isNew) {
        blogPostPage = dataAccessor.newPage();
        blogPostPage.setType(PageType.BLOG_POST);
        blogPostPage.setUri(PageType.BLOG_POST.getUrlPrefix() + blogPost.getId());
        blogPostPage.setPrimaryContentId(blogPost.getId());
        blogPostPage.setCreationDate(new Date());
    }
    String uriAlias = UriAliasUtil.generateUriAlias(blogPostPage.getUriAlias(), blogPage.getUriAlias() + "/", blogPost.getTitleEn() == null ? blogPost.getTitle() : blogPost.getTitleEn());
    if (isNew && uriAlias == null) {
    // Do Not Return
    } else if (uriAlias == blogPostPage.getUriAlias() || (uriAlias != null && uriAlias.equals(blogPostPage.getUriAlias())) || (blogPostPage.getUriAlias() != null && blogPostPage.getUriAlias().equals(uriAlias))) {
        // Do Nothing.
        return;
    } else {
        logger.log(Level.INFO, "Updating Event Page Url: '" + blogPostPage.getUriAlias() + "' -> '" + uriAlias + "'");
        blogPostPage.setUriAlias(uriAlias);
    }
    blogPostPage = dataAccessor.createOrUpdatePage(blogPostPage);
}
Also used : DataAccessor(com.pratilipi.data.DataAccessor) Page(com.pratilipi.data.type.Page) Date(java.util.Date)

Aggregations

Page (com.pratilipi.data.type.Page)32 DataAccessor (com.pratilipi.data.DataAccessor)23 Pratilipi (com.pratilipi.data.type.Pratilipi)9 UserPratilipi (com.pratilipi.data.type.UserPratilipi)6 ArrayList (java.util.ArrayList)6 HashMap (java.util.HashMap)6 JsonObject (com.google.gson.JsonObject)5 InvalidArgumentException (com.pratilipi.common.exception.InvalidArgumentException)4 UnexpectedServerException (com.pratilipi.common.exception.UnexpectedServerException)4 Author (com.pratilipi.data.type.Author)4 Event (com.pratilipi.data.type.Event)4 Gson (com.google.gson.Gson)3 GenericResponse (com.pratilipi.api.shared.GenericResponse)3 BlogPost (com.pratilipi.data.type.BlogPost)3 PageEntity (com.pratilipi.data.type.gae.PageEntity)3 Date (java.util.Date)3 LinkedList (java.util.LinkedList)3 Post (com.pratilipi.api.annotation.Post)2 PratilipiV2Api (com.pratilipi.api.impl.pratilipi.PratilipiV2Api)2 InsufficientAccessException (com.pratilipi.common.exception.InsufficientAccessException)2