Search in sources :

Example 11 with UserData

use of com.pratilipi.data.client.UserData in project pratilipi by Pratilipi.

the class UserAuthorDataUtil method getUserFollowList.

public static DataListCursorTuple<AuthorData> getUserFollowList(Long userId, String cursor, Integer offset, Integer resultCount) {
    DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
    User user = dataAccessor.getUser(userId);
    if (user.getFollowCount() == 0L)
        return new DataListCursorTuple<>(new ArrayList<AuthorData>(0), null, 0L);
    DataListCursorTuple<Long> authorIdListCursorTuple = dataAccessor.getUserAuthorFollowList(userId, null, cursor, offset, resultCount);
    List<Long> authorIdList = authorIdListCursorTuple.getDataList();
    List<AuthorData> authorDataList = AuthorDataUtil.createAuthorDataList(authorIdList, true);
    // Setting AuthorData.isFollowing flag
    if (userId.equals(AccessTokenFilter.getAccessToken().getUserId())) {
        for (AuthorData authorData : authorDataList) authorData.setFollowing(true);
    } else {
        List<UserAuthor> userAuthorList = dataAccessor.getUserAuthorList(AccessTokenFilter.getAccessToken().getUserId(), authorIdList);
        if (userAuthorList.size() != 0)
            for (int i = 0; i < authorIdList.size(); i++) if (userAuthorList.get(i) != null && userAuthorList.get(i).getFollowState() == UserFollowState.FOLLOWING)
                authorDataList.get(i).setFollowing(true);
    }
    // Setting UserData.isFollowing flag
    Author author = dataAccessor.getAuthorByUserId(AccessTokenFilter.getAccessToken().getUserId());
    if (author != null) {
        List<Long> userIdList = new ArrayList<>(authorDataList.size());
        List<UserData> userDataList = new ArrayList<>(authorDataList.size());
        for (AuthorData authorData : authorDataList) {
            if (authorData.getUser() != null && authorData.getUser().getId() != null) {
                userIdList.add(authorData.getUser().getId());
                userDataList.add(authorData.getUser());
            }
        }
        List<UserAuthor> userAuthorList = dataAccessor.getUserAuthorList(userIdList, author.getId());
        if (userAuthorList != null) {
            for (UserAuthor userAuthor : userAuthorList) if (userAuthor != null && userAuthor.getFollowState() == UserFollowState.FOLLOWING)
                userDataList.get(userIdList.indexOf(userAuthor.getUserId())).setFollowing(true);
        }
    }
    return new DataListCursorTuple<>(authorDataList, authorIdListCursorTuple.getCursor(), user.getFollowCount());
}
Also used : User(com.pratilipi.data.type.User) UserData(com.pratilipi.data.client.UserData) DataAccessor(com.pratilipi.data.DataAccessor) ArrayList(java.util.ArrayList) DataListCursorTuple(com.pratilipi.data.DataListCursorTuple) UserAuthorData(com.pratilipi.data.client.UserAuthorData) AuthorData(com.pratilipi.data.client.AuthorData) UserAuthor(com.pratilipi.data.type.UserAuthor) UserAuthor(com.pratilipi.data.type.UserAuthor) Author(com.pratilipi.data.type.Author)

Example 12 with UserData

use of com.pratilipi.data.client.UserData in project pratilipi by Pratilipi.

the class PratilipiSite method doGet.

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
    DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
    // Setting user's author profile's default language, if not set already
    if (UxModeFilter.getFilterLanguage() != null) {
        Author author = dataAccessor.getAuthorByUserId(AccessTokenFilter.getAccessToken().getUserId());
        if (author != null && author.getLanguage() == null) {
            author.setLanguage(UxModeFilter.getFilterLanguage());
            dataAccessor.createOrUpdateAuthor(author);
        }
    }
    String uri = request.getRequestURI();
    String canonicalUrl = "https://" + UxModeFilter.getWebsite().getHostName() + uri;
    String alternateUrl = "https://" + UxModeFilter.getWebsite().getMobileHostName() + uri;
    // User
    UserData userData = UserDataUtil.getCurrentUser();
    // BasicMode
    boolean basicMode = UxModeFilter.isBasicMode();
    // Language
    Language displayLanguage = UxModeFilter.getDisplayLanguage();
    Language filterLanguage = UxModeFilter.getFilterLanguage();
    // Navigation List
    List<Navigation> navigationList = dataAccessor.getNavigationList(filterLanguage == null ? Language.ENGLISH : filterLanguage);
    // Common resource list
    Set<String> resourceList = getResourceList(basicMode);
    Set<String> deferredResourceList = new HashSet<>();
    if (basicMode) {
        resourceList.add(ThirdPartyResource.BOOTSTRAP_CSS.getTag());
    } else {
        deferredResourceList.add(ThirdPartyResource.BOOTSTRAP_CSS.getTag());
        deferredResourceList.add(ThirdPartyResource.GOOGLE_TRANSLITERATION.getTag());
    }
    // Load PWA
    boolean loadPWA = true;
    if (UxModeFilter.isCrawler())
        loadPWA = false;
    if (UxModeFilter.isBasicMode())
        loadPWA = false;
    if (uri.equals("/write") || uri.equals("/pratilipi-write") || uri.equals("/admin") || uri.startsWith("/admin/") || uri.equals("/edit-event") || uri.equals("/edit-blog"))
        loadPWA = false;
    if (uri.equals("/") && (UxModeFilter.getWebsite() == Website.ALL_LANGUAGE || UxModeFilter.getWebsite() == Website.GAMMA_ALL_LANGUAGE))
        loadPWA = false;
    // TODO: Hack - Remove it soon
    if (request.getParameter("loadPWA") != null) {
        loadPWA = Boolean.parseBoolean(request.getParameter("loadPWA"));
    }
    // Data Model for FreeMarker
    Map<String, Object> dataModel = null;
    String templateName = null;
    // ga_location
    String ga_location = null;
    try {
        // Search Engine Crawlers
        if (uri.equals("/sitemap") && SystemProperty.STAGE.equals(SystemProperty.STAGE_PROD)) {
            String content = PageDataUtil.getSitemap(request.getParameter(RequestParameter.SITEMAP_TYPE.getName()), request.getParameter(RequestParameter.SITEMAP_CURSOR.getName()), UxModeFilter.getWebsite(), basicMode);
            _dispatchResponse(content, "application/xml", "UTF-8", response);
            return;
        }
        // Robots.txt
        if (uri.equals("/robots.txt")) {
            dataModel = new HashMap<>();
            dataModel.put("stage", SystemProperty.STAGE);
            templateName = templateFilePrefix + "RobotsTxt.ftl";
            String robotsTxt = FreeMarkerUtil.processTemplate(dataModel, templateName);
            _dispatchResponse(robotsTxt, "text/plain", "UTF-8", response);
            return;
        }
        // PWA
        if (loadPWA) {
            templateName = "PWA.ftl";
            dataModel = new HashMap<>();
            // Hack: Not to minify the html file
            dataModel.put("stage", "pwa");
            dataModel.put("website", UxModeFilter.getWebsite());
            dataModel.put("lang", displayLanguage.getCode());
            dataModel.put("language", displayLanguage);
            dataModel.put("templateName", templateName);
            String html = FreeMarkerUtil.processTemplate(dataModel, templateFilePrefix + "MainTemplate.ftl");
            logger.log(Level.INFO, "Website Version : Mark-7");
            _dispatchResponse(html, "text/html", "UTF-8", response);
            return;
        }
        // Page Entity
        Page page = dataAccessor.getPage(uri);
        // Hard-coded links
        if (uri.equals("/")) {
            if (UxModeFilter.getWebsite() == Website.ALL_LANGUAGE || UxModeFilter.getWebsite() == Website.GAMMA_ALL_LANGUAGE) {
                ga_location = "MasterHomePage";
                dataModel = createDataModelForMasterHomePage(filterLanguage);
                templateName = "MasterHome.ftl";
            } else {
                ga_location = "HomePage";
                dataModel = createDataModelForHomePage(basicMode, filterLanguage);
                templateName = (basicMode ? "HomeBasic.ftl" : "Home.ftl");
            }
        } else if (uri.equals("/library")) {
            ga_location = "LibraryPage";
            dataModel = createDataModelForLibraryPage(basicMode, filterLanguage);
            templateName = (basicMode ? "LibraryBasic.ftl" : "Library.ftl");
        } else if (uri.equals("/notifications")) {
            ga_location = "NotificationsPage";
            dataModel = createDataModelForNotificationsPage(filterLanguage, basicMode);
            if (request.getParameter("action") != null)
                dataModel.put("action", request.getParameter("action"));
            templateName = (basicMode ? "NotificationBasic.ftl" : "Notification.ftl");
        } else if (uri.equals("/search")) {
            ga_location = "SearchPage";
            if (request.getQueryString() != null) {
                canonicalUrl = canonicalUrl + "?" + request.getQueryString();
                alternateUrl = alternateUrl + "?" + request.getQueryString();
            }
            dataModel = createDataModelForSearchPage(basicMode, filterLanguage, request);
            templateName = (basicMode ? "SearchBasic.ftl" : "Search.ftl");
        } else if (uri.equals("/event")) {
            ga_location = "AllEventsPage";
            dataModel = createDataModelForEventsPage(filterLanguage, basicMode);
            templateName = (basicMode ? "EventListBasic.ftl" : "EventList.ftl");
        } else if (uri.equals("/followers")) {
            ga_location = "FollowersPage";
            Long authorId = null;
            if (request.getParameter(RequestParameter.AUTHOR_ID.getName()) != null) {
                authorId = Long.parseLong(request.getParameter(RequestParameter.AUTHOR_ID.getName()));
            } else {
                Long userId = AccessTokenFilter.getAccessToken().getUserId();
                if (userId != null && userId != 0L)
                    authorId = dataAccessor.getAuthorByUserId(userId).getId();
            }
            Integer currentPage = request.getParameter(RequestParameter.LIST_PAGE_NUMBER.getName()) != null && !request.getParameter(RequestParameter.LIST_PAGE_NUMBER.getName()).trim().isEmpty() ? Integer.parseInt(request.getParameter(RequestParameter.LIST_PAGE_NUMBER.getName())) : 1;
            if (authorId == null) {
                dataModel = new HashMap<String, Object>();
                dataModel.put("title", SEOTitleUtil.getFollowersPageTitle(authorId, filterLanguage));
            } else {
                dataModel = createDataModelForFollowersPage(authorId, currentPage, filterLanguage, basicMode);
            }
            templateName = (basicMode ? "FollowersListBasic.ftl" : "FollowersList.ftl");
        } else if (uri.equals("/following")) {
            ga_location = "FollowingPage";
            Long userId = null;
            if (request.getParameter(RequestParameter.USER_ID.getName()) != null)
                userId = Long.parseLong(request.getParameter(RequestParameter.USER_ID.getName()));
            else
                userId = AccessTokenFilter.getAccessToken().getUserId();
            Integer currentPage = request.getParameter(RequestParameter.LIST_PAGE_NUMBER.getName()) != null && !request.getParameter(RequestParameter.LIST_PAGE_NUMBER.getName()).trim().isEmpty() ? Integer.parseInt(request.getParameter(RequestParameter.LIST_PAGE_NUMBER.getName())) : 1;
            if (userId == null || userId == 0L) {
                dataModel = new HashMap<String, Object>();
                dataModel.put("title", SEOTitleUtil.getFollowersPageTitle(userId, filterLanguage));
            } else {
                dataModel = createDataModelForFollowingPage(userId, currentPage, filterLanguage, basicMode);
            }
            templateName = (basicMode ? "FollowingListBasic.ftl" : "FollowingList.ftl");
        } else if (uri.equals("/pratilipi-2016")) {
            ga_location = "Pratilipi2016Page";
            dataModel = new HashMap<String, Object>();
            dataModel.put("title", "Pratilipi in 2016");
            templateName = (basicMode ? "Pratilipi2016Basic.ftl" : "Pratilipi2016.ftl");
        // Master website specific links
        } else if (filterLanguage == null && uri.equals("/books")) {
            ga_location = "ListPage";
            dataModel = createDataModelForListPage(PratilipiType.BOOK, basicMode, displayLanguage, filterLanguage, request);
            templateName = (basicMode ? "ListBasic.ftl" : "List.ftl");
        } else if (filterLanguage == null && uri.equals("/stories")) {
            ga_location = "ListPage";
            dataModel = createDataModelForListPage(PratilipiType.STORY, basicMode, displayLanguage, filterLanguage, request);
            templateName = (basicMode ? "ListBasic.ftl" : "List.ftl");
        } else if (filterLanguage == null && uri.equals("/poems")) {
            ga_location = "ListPage";
            dataModel = createDataModelForListPage(PratilipiType.POEM, basicMode, displayLanguage, filterLanguage, request);
            templateName = (basicMode ? "ListBasic.ftl" : "List.ftl");
        } else if (filterLanguage == null && uri.equals("/articles")) {
            ga_location = "ListPage";
            dataModel = createDataModelForListPage(PratilipiType.ARTICLE, basicMode, displayLanguage, filterLanguage, request);
            templateName = (basicMode ? "ListBasic.ftl" : "List.ftl");
        } else if (filterLanguage == null && uri.equals("/magazines")) {
            ga_location = "ListPage";
            dataModel = createDataModelForListPage(PratilipiType.MAGAZINE, basicMode, displayLanguage, filterLanguage, request);
            templateName = (basicMode ? "ListBasic.ftl" : "List.ftl");
        // Gujarati website specific links
        } else if (filterLanguage == Language.GUJARATI && uri.equals("/short-stories")) {
            ga_location = "ListPage";
            dataModel = createDataModelForListPage(PratilipiType.STORY, basicMode, displayLanguage, filterLanguage, request);
            templateName = (basicMode ? "ListBasic.ftl" : "List.ftl");
        } else if (filterLanguage == Language.GUJARATI && uri.equals("/poetry")) {
            ga_location = "ListPage";
            dataModel = createDataModelForListPage(PratilipiType.POEM, basicMode, displayLanguage, filterLanguage, request);
            templateName = (basicMode ? "ListBasic.ftl" : "List.ftl");
        } else if (filterLanguage == Language.GUJARATI && uri.equals("/non-fiction")) {
            ga_location = "ListPage";
            dataModel = createDataModelForListPage(PratilipiType.ARTICLE, basicMode, displayLanguage, filterLanguage, request);
            templateName = (basicMode ? "ListBasic.ftl" : "List.ftl");
        // Standard Mode links only
        } else if (!basicMode && uri.equals("/pratilipi-write")) {
            ga_location = "Writer";
            if (request.getQueryString() != null) {
                canonicalUrl = canonicalUrl + "?" + request.getQueryString();
                alternateUrl = alternateUrl + "?" + request.getQueryString();
            }
            resourceList.remove(ThirdPartyResource.POLYMER_ELEMENTS.getTag());
            resourceList.add(ThirdPartyResource.BOOTSTRAP_CSS.getTag());
            resourceList.add(ThirdPartyResource.TINYMCE.getTag());
            Long authorId = request.getParameter(RequestParameter.AUTHOR_ID.getName()) != null ? Long.parseLong(request.getParameter(RequestParameter.AUTHOR_ID.getName())) : null;
            Long pratilipiId = Long.parseLong(request.getParameter(RequestParameter.CONTENT_ID.getName()));
            PratilipiV2Api.GetRequest pratilipiRequest = new PratilipiV2Api.GetRequest();
            pratilipiRequest.setPratilipiId(pratilipiId);
            PratilipiV2Api.Response pratilipiResponse = ApiRegistry.getApi(PratilipiV2Api.class).get(pratilipiRequest);
            PratilipiContentIndexApi.GetRequest indexReq = new PratilipiContentIndexApi.GetRequest();
            indexReq.setPratilipiId(pratilipiId);
            PratilipiContentIndexApi.Response indexResponse = ApiRegistry.getApi(PratilipiContentIndexApi.class).getIndex(indexReq);
            List<TagData> tags = TagDataUtil.getTags(pratilipiResponse.getLanguage(), pratilipiResponse.getType());
            dataModel = new HashMap<String, Object>();
            dataModel.put("title", SEOTitleUtil.getWritePageTitle(pratilipiId, filterLanguage));
            dataModel.put("authorId", authorId);
            dataModel.put("pratilipiId", pratilipiId);
            dataModel.put("pratilipi", pratilipiResponse);
            dataModel.put("pratilipiJson", new Gson().toJson(pratilipiResponse));
            dataModel.put("indexJson", new Gson().toJson(indexResponse));
            dataModel.put("tags", tags);
            dataModel.put("ga_websiteVersion", "Mark-7");
            String action = request.getParameter("action");
            if (action != null)
                dataModel.put("action", action);
            templateName = "WriterV2.ftl";
        // Basic Mode links only
        } else if (basicMode && uri.equals("/account")) {
            ga_location = "AccountPage";
            canonicalUrl = "https://" + UxModeFilter.getWebsite().getMobileHostName() + uri;
            dataModel = new HashMap<String, Object>();
            dataModel.put("title", "My Account");
            templateName = "AccountBasic.ftl";
        } else if (basicMode && uri.equals("/navigation")) {
            ga_location = "NavigationPage";
            canonicalUrl = "https://" + UxModeFilter.getWebsite().getMobileHostName() + uri;
            dataModel = new HashMap<String, Object>();
            dataModel.put("title", "Menu");
            dataModel.put("navigationList", navigationList);
            templateName = "NavigationBasic.ftl";
        } else if (basicMode && uri.equals("/updatepassword")) {
            ga_location = "UpdatePasswordPage";
            canonicalUrl = "https://" + UxModeFilter.getWebsite().getMobileHostName() + uri;
            dataModel = new HashMap<String, Object>();
            if (request.getParameter(RequestParameter.PASSWORD_RESET_EMAIL_EMAIL.getName()) != null && request.getParameter(RequestParameter.PASSWORD_RESET_EMAIL_TOKEN.getName()) != null) {
                dataModel.put("passwordResetFromMail", true);
                dataModel.put("email", request.getParameter(RequestParameter.PASSWORD_RESET_EMAIL_EMAIL.getName()));
                dataModel.put("verificationToken", request.getParameter(RequestParameter.PASSWORD_RESET_EMAIL_TOKEN.getName()));
            }
            dataModel.put("title", "Update Password");
            templateName = "PasswordUpdateBasic.ftl";
        } else if (basicMode && uri.equals("/share")) {
            ga_location = "SharePage";
            canonicalUrl = "https://" + UxModeFilter.getWebsite().getMobileHostName() + uri;
            dataModel = new HashMap<String, Object>();
            dataModel.put("title", "Share");
            templateName = "ShareBasic.ftl";
        } else if (uri.equals("/register") && basicMode) {
            ga_location = "RegisterPage";
            canonicalUrl = "https://" + UxModeFilter.getWebsite().getMobileHostName() + uri;
            dataModel = new HashMap<String, Object>();
            dataModel.put("title", "Register");
            templateName = "RegisterBasic.ftl";
        } else if (uri.equals("/login") && basicMode) {
            ga_location = "LoginPage";
            canonicalUrl = "https://" + UxModeFilter.getWebsite().getMobileHostName() + uri;
            dataModel = new HashMap<String, Object>();
            dataModel.put("title", "Login");
            templateName = "LoginBasic.ftl";
        } else if (uri.equals("/forgot-password") && basicMode) {
            ga_location = "ForgotPasswordPage";
            canonicalUrl = "https://" + UxModeFilter.getWebsite().getMobileHostName() + uri;
            dataModel = new HashMap<String, Object>();
            dataModel.put("title", "Reset Password");
            templateName = "PasswordResetBasic.ftl";
        // Internal links - Standard Version only
        } else if (!basicMode && uri.startsWith("/admin")) {
            ga_location = "AdminPage";
            if (uri.equals("/admin")) {
                dataModel = new HashMap<>();
                dataModel.put("title", "Pratilipi - Admin Access");
                templateName = "Admin.ftl";
            } else if (uri.equals("/admin/authors")) {
                dataModel = createDataModelForAuthorsPage(filterLanguage);
                templateName = "AuthorList.ftl";
            } else if (uri.equals("/admin/batch-process")) {
                dataModel = createDataModelForBatchProcessListPage();
                templateName = "BatchProcessList.ftl";
            } else if (uri.equals("/admin/email-templates")) {
                dataModel = createDataModelForEmailTemplatesPage(filterLanguage);
                templateName = "EmailTemplate.ftl";
            } else if (uri.equals("/admin/translations")) {
                dataModel = new HashMap<>();
                templateName = "Translation.ftl";
            }
        } else if (!basicMode && uri.equals("/edit-event")) {
            ga_location = "EditEventPage";
            resourceList.add(ThirdPartyResource.CKEDITOR.getTag());
            Long eventId = request.getParameter(RequestParameter.CONTENT_ID.getName()) != null ? Long.parseLong(request.getParameter(RequestParameter.CONTENT_ID.getName())) : null;
            dataModel = new HashMap<String, Object>();
            dataModel.put("title", "Create or Edit Event");
            if (eventId != null) {
                EventApi.GetRequest eventRequest = new EventApi.GetRequest();
                eventRequest.setEventId(eventId);
                EventApi.Response eventResponse = ApiRegistry.getApi(EventApi.class).get(eventRequest);
                dataModel.put("eventJson", new Gson().toJson(eventResponse));
            }
            templateName = "EventEdit.ftl";
        } else if (!basicMode && uri.equals("/edit-blog")) {
            ga_location = "EditBlogPage";
            resourceList.add(ThirdPartyResource.CKEDITOR.getTag());
            Long blogPostId = request.getParameter(RequestParameter.CONTENT_ID.getName()) != null ? Long.parseLong(request.getParameter(RequestParameter.CONTENT_ID.getName())) : null;
            Long blogId = request.getParameter("blogId") != null ? Long.parseLong(request.getParameter("blogId")) : null;
            dataModel = new HashMap<String, Object>();
            dataModel.put("title", "Create or Edit Blog");
            dataModel.put("blogId", blogId);
            if (blogPostId != null) {
                BlogPostApi.GetRequest blogPostRequest = new BlogPostApi.GetRequest();
                blogPostRequest.setBlogPostId(blogPostId);
                BlogPostApi.Response blogPostResponse = ApiRegistry.getApi(BlogPostApi.class).get(blogPostRequest);
                dataModel.put("blogPostJson", new Gson().toJson(blogPostResponse));
            }
            templateName = "BlogEdit.ftl";
        // Non - hardcoded links
        } else if (page != null && page.getType() == PageType.PRATILIPI) {
            ga_location = "PratilipiPage";
            resourceList.addAll(createFbOpenGraphTags(page.getPrimaryContentId()));
            dataModel = createDataModelForPratilipiPage(page.getPrimaryContentId(), filterLanguage, basicMode, request);
            templateName = (basicMode ? "PratilipiBasic.ftl" : "Pratilipi.ftl");
        } else if (page != null && page.getType() == PageType.AUTHOR) {
            ga_location = userData.getAuthor().getId() != null && userData.getAuthor().getId() == page.getPrimaryContentId() ? "UserPage" : "AuthorPage";
            dataModel = createDataModelForAuthorPage(page.getPrimaryContentId(), filterLanguage, basicMode, request);
            templateName = (basicMode ? "AuthorBasic.ftl" : "Author.ftl");
        } else if (page != null && page.getType() == PageType.EVENT) {
            ga_location = "EventPage";
            dataModel = createDataModelForEventPage(page.getPrimaryContentId(), filterLanguage, basicMode, request);
            templateName = (basicMode ? "EventBasic.ftl" : "Event.ftl");
        } else if (page != null && page.getType() == PageType.BLOG) {
            ga_location = page.getUri().equals("/blog") ? "AllBlogsPage" : "AllAuthorInterviewsPage";
            dataModel = createDataModelForBlogPage(page.getPrimaryContentId(), filterLanguage, basicMode);
            templateName = (basicMode ? "BlogPostListBasic.ftl" : "BlogPostList.ftl");
        } else if (page != null && page.getType() == PageType.BLOG_POST) {
            ga_location = page.getUri().startsWith("/blog") ? "BlogPage" : "AuthorInterviewPage";
            dataModel = createDataModelForBlogPostPage(page.getPrimaryContentId(), filterLanguage, basicMode);
            templateName = (basicMode ? "BlogPostBasic.ftl" : "BlogPost.ftl");
        } else if (page != null && page.getType() == PageType.READ) {
            ga_location = "Reader";
            if (request.getQueryString() != null) {
                canonicalUrl = canonicalUrl + "?" + request.getQueryString();
                alternateUrl = alternateUrl + "?" + request.getQueryString();
            }
            Long pratilipiId = Long.parseLong(request.getParameter(RequestParameter.CONTENT_ID.getName()));
            String fontSize = AccessTokenFilter.getCookieValue(RequestCookie.FONT_SIZE.getName(), request);
            String imageSize = AccessTokenFilter.getCookieValue(RequestCookie.IMAGE_SIZE.getName(), request);
            String action = request.getParameter("action") != null ? request.getParameter("action") : "read";
            String pageNoPattern = "reader_page_number_" + pratilipiId;
            Integer pageNo = null;
            if (request.getParameter(RequestParameter.READER_PAGE_NUMBER.getName()) != null)
                pageNo = Integer.parseInt(request.getParameter(RequestParameter.READER_PAGE_NUMBER.getName()));
            else if (AccessTokenFilter.getCookieValue(pageNoPattern, request) != null)
                pageNo = Integer.parseInt(AccessTokenFilter.getCookieValue(pageNoPattern, request));
            else
                pageNo = 1;
            dataModel = createDataModelForReadPage(pratilipiId, pageNo, request.getParameter(RequestParameter.API_VERSION.getName()), filterLanguage, basicMode);
            dataModel.put("fontSize", fontSize != null ? Integer.parseInt(fontSize) : 14);
            dataModel.put("imageSize", imageSize != null ? Integer.parseInt(imageSize) : 636);
            dataModel.put("action", action);
            templateName = (basicMode ? "ReadBasic.ftl" : "Read.ftl");
        } else if (uri.matches("^/[a-z0-9-]+$") && (dataModel = createDataModelForListPage(uri.substring(1), basicMode, displayLanguage, filterLanguage, request)) != null) {
            ga_location = "ListPage";
            templateName = (basicMode ? "ListBasic.ftl" : "List.ftl");
        } else if (uri.matches("^/[a-z0-9-/]+$") && (dataModel = createDataModelForStaticPage(uri.substring(1).replaceAll("/", "_"), displayLanguage)) != null) {
            ga_location = "StaticPage";
            templateName = (basicMode ? "StaticBasic.ftl" : "Static.ftl");
        } else if (uri.matches("^/[a-z0-9-/]+$") && (dataModel = createDataModelForStaticPage(uri.substring(1).replaceAll("/", "_"), Language.ENGLISH)) != null) {
            ga_location = "StaticPage";
            templateName = (basicMode ? "StaticBasic.ftl" : "Static.ftl");
        } else {
            ga_location = "PageNotFound";
            dataModel = new HashMap<String, Object>();
            dataModel.put("title", "Page Not Found !");
            templateName = (basicMode ? "error/PageNotFoundBasic.ftl" : "error/PageNotFound.ftl");
            response.setStatus(HttpServletResponse.SC_NOT_FOUND);
        }
    } catch (InsufficientAccessException e) {
        ga_location = "UnauthorisedErrorPage";
        resourceList = getResourceList(basicMode);
        dataModel = new HashMap<String, Object>();
        dataModel.put("title", "Unauthorized Access !");
        templateName = (basicMode ? "error/AuthorizationErrorBasic.ftl" : "error/AuthorizationError.ftl");
        logger.log(Level.SEVERE, "Unauthorised Exception: ", e);
        response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
    } catch (InvalidArgumentException | UnexpectedServerException e) {
        ga_location = "ServerErrorPage";
        resourceList = getResourceList(basicMode);
        dataModel = new HashMap<String, Object>();
        dataModel.put("title", "Server Error !");
        templateName = (basicMode ? "error/ServerErrorBasic.ftl" : "error/ServerError.ftl");
        logger.log(Level.SEVERE, "Service Unavailable: ", e);
        response.setStatus(HttpServletResponse.SC_SERVICE_UNAVAILABLE);
    }
    // Adding common data to the Data Model
    Gson gson = new Gson();
    UserV1Api.Response userResponse = new UserV1Api.Response(userData, UserV1Api.class);
    Map<PratilipiType, Map<String, String>> pratilipiTypes = new HashMap<>();
    for (PratilipiType pratilipiType : PratilipiType.values()) {
        Map<String, String> pratilipiTypeMap = new HashMap<>();
        pratilipiTypeMap.put("name", I18n.getString(pratilipiType.getStringId(), displayLanguage));
        pratilipiTypeMap.put("namePlural", I18n.getString(pratilipiType.getPluralStringId(), displayLanguage));
        pratilipiTypes.put(pratilipiType, pratilipiTypeMap);
    }
    Map<String, String> languageMap = new HashMap<String, String>();
    for (Website website : Website.values()) {
        if (!website.toString().startsWith("PROD_") && !website.toString().startsWith("GAMMA_") && !website.toString().startsWith("DEVO_") && website != Website.ALL_LANGUAGE && website != Website.ALPHA) {
            languageMap.put(website.toString(), website.getFilterLanguage().getName());
        }
    }
    dataModel.put("ga_userId", userData.getId().toString());
    dataModel.put("ga_website", UxModeFilter.getWebsite().toString());
    dataModel.put("ga_websiteMode", UxModeFilter.isBasicMode() ? "Basic" : "Standard");
    if (dataModel.get("ga_websiteVersion") == null)
        /* Set to Mark-7 on writer panel */
        dataModel.put("ga_websiteVersion", "Mark-6");
    dataModel.put("ga_location", ga_location);
    dataModel.put("lang", displayLanguage.getCode());
    dataModel.put("language", displayLanguage);
    dataModel.put("website_host", UxModeFilter.getWebsite().getHostName());
    dataModel.put("website_mobile_host", UxModeFilter.getWebsite().getMobileHostName());
    dataModel.put("canonical_url", canonicalUrl);
    dataModel.put("alternate_url", alternateUrl);
    dataModel.put("languageMap", gson.toJson(languageMap));
    dataModel.put("_strings", I18n.getStrings(displayLanguage));
    dataModel.put("resourceList", resourceList);
    dataModel.put("deferredResourceList", deferredResourceList);
    dataModel.put("user", userResponse);
    dataModel.put("userJson", gson.toJson(userResponse));
    dataModel.put("pratilipiTypesJson", gson.toJson(pratilipiTypes));
    dataModel.put("navigationListJson", gson.toJson(navigationList));
    dataModel.put("stage", SystemProperty.STAGE);
    dataModel.put("basicMode", basicMode);
    if (basicMode) {
        StringBuffer requestUrl = new StringBuffer(request.getRequestURI());
        if (request.getQueryString() != null)
            requestUrl.append('?').append(request.getQueryString());
        dataModel.put("requestUrl", URLEncoder.encode(requestUrl.toString(), "UTF-8"));
    }
    // Generating response html
    String html = null;
    for (int i = 0; i < 2 && html == null; i++) {
        try {
            dataModel.put("templateName", templateName);
            // The magic
            html = FreeMarkerUtil.processTemplate(dataModel, templateFilePrefix + "MainTemplate.ftl");
        } catch (UnexpectedServerException e) {
            logger.log(Level.SEVERE, "Exception occured while processing template.", e);
            resourceList = getResourceList(basicMode);
            templateName = (basicMode ? "error/ServerErrorBasic.ftl" : "error/ServerError.ftl");
        }
    }
    // Dispatching response
    logger.log(Level.INFO, "Website Version : Mark-6");
    _dispatchResponse(html, "text/html", "UTF-8", response);
}
Also used : UserData(com.pratilipi.data.client.UserData) HashMap(java.util.HashMap) DataAccessor(com.pratilipi.data.DataAccessor) Gson(com.google.gson.Gson) Website(com.pratilipi.common.type.Website) Page(com.pratilipi.data.type.Page) PratilipiType(com.pratilipi.common.type.PratilipiType) InvalidArgumentException(com.pratilipi.common.exception.InvalidArgumentException) UnexpectedServerException(com.pratilipi.common.exception.UnexpectedServerException) Language(com.pratilipi.common.type.Language) PratilipiV2Api(com.pratilipi.api.impl.pratilipi.PratilipiV2Api) TagData(com.pratilipi.data.client.TagData) HashSet(java.util.HashSet) Navigation(com.pratilipi.data.type.Navigation) BlogPostApi(com.pratilipi.api.impl.blogpost.BlogPostApi) UserV1Api(com.pratilipi.api.impl.user.UserV1Api) EventApi(com.pratilipi.api.impl.event.EventApi) InsufficientAccessException(com.pratilipi.common.exception.InsufficientAccessException) PratilipiContentIndexApi(com.pratilipi.api.impl.pratilipi.PratilipiContentIndexApi) HttpServletResponse(javax.servlet.http.HttpServletResponse) Author(com.pratilipi.data.type.Author) JsonObject(com.google.gson.JsonObject) Map(java.util.Map) HashMap(java.util.HashMap)

Example 13 with UserData

use of com.pratilipi.data.client.UserData in project pratilipi by Pratilipi.

the class UserDataUtil method getCurrentUser.

public static UserData getCurrentUser() {
    AccessToken accessToken = AccessTokenFilter.getAccessToken();
    Long userId = accessToken.getUserId();
    if (userId.equals(0L) || accessToken.isExpired()) {
        UserData userData = new UserData(0L);
        userData.setAuthor(new AuthorData());
        userData.setFirstName("Guest");
        userData.setLastName("User");
        userData.setState(UserState.GUEST);
        return userData;
    } else {
        return createUserData(DataAccessorFactory.getDataAccessor().getUser(accessToken.getUserId()));
    }
}
Also used : UserData(com.pratilipi.data.client.UserData) AccessToken(com.pratilipi.data.type.AccessToken) AuthorData(com.pratilipi.data.client.AuthorData)

Example 14 with UserData

use of com.pratilipi.data.client.UserData in project pratilipi by Pratilipi.

the class UserPratilipiDataUtil method createUserPratilipiData.

private static UserPratilipiData createUserPratilipiData(UserPratilipiDoc userPratilipiDoc) {
    DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
    User user = dataAccessor.getUser(userPratilipiDoc.getUserId());
    UserData userData = UserDataUtil.createUserData(user);
    UserPratilipiData userPratilipiData = new UserPratilipiData();
    userPratilipiData.setId(userPratilipiDoc.getId());
    userPratilipiData.setUserId(userPratilipiDoc.getUserId());
    userPratilipiData.setUser(userData);
    userPratilipiData.setUserName(userData.getDisplayName());
    userPratilipiData.setUserImageUrl(userData.getProfileImageUrl());
    userPratilipiData.setUserProfilePageUrl(userData.getProfilePageUrl());
    userPratilipiData.setRating(userPratilipiDoc.getRating());
    userPratilipiData.setReview(processReview(userPratilipiDoc.getReviewTitle(), userPratilipiDoc.getReview()));
    userPratilipiData.setReviewDate(userPratilipiDoc.getReviewDate());
    userPratilipiData.setLikeCount(userPratilipiDoc.getLikeCount());
    userPratilipiData.setCommentCount(userPratilipiDoc.getCommentCount());
    userPratilipiData.setLiked(userPratilipiDoc.getLikedByUserIds().contains(AccessTokenFilter.getAccessToken().getUserId()));
    return userPratilipiData;
}
Also used : User(com.pratilipi.data.type.User) UserData(com.pratilipi.data.client.UserData) DataAccessor(com.pratilipi.data.DataAccessor) UserPratilipiData(com.pratilipi.data.client.UserPratilipiData)

Example 15 with UserData

use of com.pratilipi.data.client.UserData in project pratilipi by Pratilipi.

the class UserDataUtil method registerUser.

public static UserData registerUser(String firstName, String lastName, String email, String password, UserSignUpSource signUpSource) throws InvalidArgumentException {
    DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
    User user = dataAccessor.getUserByEmail(email.toLowerCase());
    if (user == null || user.getState() == UserState.DELETED) {
        user = dataAccessor.newUser();
    } else if (user.getState() != UserState.REFERRAL) {
        JsonObject errorMessages = new JsonObject();
        errorMessages.addProperty("email", GenericRequest.ERR_EMAIL_REGISTERED_ALREADY);
        throw new InvalidArgumentException(errorMessages);
    }
    AuditLog auditLog = dataAccessor.newAuditLog(AccessTokenFilter.getAccessToken(), AccessType.USER_ADD, user);
    user.setPassword(PasswordUtil.getSaltedHash(password));
    user.setEmail(email.toLowerCase());
    user.setState(UserState.REGISTERED);
    user.setSignUpDate(new Date());
    user.setSignUpSource(signUpSource);
    user = dataAccessor.createOrUpdateUser(user, auditLog);
    UserData userData = createUserData(user);
    userData.setFirstName(firstName);
    userData.setLastName(lastName);
    return userData;
}
Also used : User(com.pratilipi.data.type.User) InvalidArgumentException(com.pratilipi.common.exception.InvalidArgumentException) UserData(com.pratilipi.data.client.UserData) DataAccessor(com.pratilipi.data.DataAccessor) JsonObject(com.google.gson.JsonObject) AuditLog(com.pratilipi.data.type.AuditLog) Date(java.util.Date)

Aggregations

UserData (com.pratilipi.data.client.UserData)28 DataAccessor (com.pratilipi.data.DataAccessor)14 User (com.pratilipi.data.type.User)7 Date (java.util.Date)7 HashMap (java.util.HashMap)7 Post (com.pratilipi.api.annotation.Post)6 AuthorData (com.pratilipi.data.client.AuthorData)6 JsonObject (com.google.gson.JsonObject)5 InvalidArgumentException (com.pratilipi.common.exception.InvalidArgumentException)5 Gson (com.google.gson.Gson)4 InsufficientAccessException (com.pratilipi.common.exception.InsufficientAccessException)4 UserPratilipiData (com.pratilipi.data.client.UserPratilipiData)4 Author (com.pratilipi.data.type.Author)4 ArrayList (java.util.ArrayList)4 UnexpectedServerException (com.pratilipi.common.exception.UnexpectedServerException)3 PratilipiData (com.pratilipi.data.client.PratilipiData)3 AuditLog (com.pratilipi.data.type.AuditLog)3 JsonElement (com.google.gson.JsonElement)2 GenericResponse (com.pratilipi.api.shared.GenericResponse)2 Language (com.pratilipi.common.type.Language)2