org.myjerry.evenstar.web.blog.BlogHomeController.java Source code

Java tutorial

Introduction

Here is the source code for org.myjerry.evenstar.web.blog.BlogHomeController.java

Source

/**
 * myJerry | Evenstar
 * Copyright (C) 2010 myJerry Development Team
 * http://www.myjerry.org
 * 
 * The file is licensed under the the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * 
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 */
package org.myjerry.evenstar.web.blog;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.velocity.app.VelocityEngine;
import org.myjerry.evenstar.constants.BlogPreferenceConstants;
import org.myjerry.evenstar.helper.ControllerHelper;
import org.myjerry.evenstar.helper.TemplateHelper;
import org.myjerry.evenstar.model.Blog;
import org.myjerry.evenstar.model.BlogPost;
import org.myjerry.evenstar.service.BlogLayoutService;
import org.myjerry.evenstar.service.BlogPostService;
import org.myjerry.evenstar.service.BlogPreferenceService;
import org.myjerry.evenstar.service.BlogService;
import org.myjerry.evenstar.service.UserService;
import org.myjerry.evenstar.service.ViewPostService;
import org.myjerry.evenstar.web.EvenstarController;
import org.myjerry.util.ServerUtils;
import org.myjerry.util.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.ModelAndView;

public class BlogHomeController extends EvenstarController {

    private static final Logger log = Logger.getLogger(BlogHomeController.class.getName());

    @Autowired
    private BlogService blogService;

    @Autowired
    private BlogPreferenceService blogPreferenceService;

    @Autowired
    private BlogPostService blogPostService;

    @Autowired
    private VelocityEngine velocityEngine;

    @Autowired
    private BlogLayoutService blogLayoutService;

    @Autowired
    private ViewPostService viewPostService;

    @Autowired
    private UserService userService;

    @SuppressWarnings("unchecked")
    public ModelAndView view(HttpServletRequest request, HttpServletResponse response) throws Exception {
        Long older = StringUtils.getLong(request.getParameter("older"));
        Long newer = StringUtils.getLong(request.getParameter("newer"));

        ModelAndView mav = getModelAndView(request);
        Long blogID = ControllerHelper.convertToBlogID(request, this.blogService);

        if (blogID == null) {
            mav.setViewName(".evenstar");
        } else {
            Map<String, Object> model = new HashMap<String, Object>();

            Blog blog = this.blogService.getBlog(blogID);

            String numPostsString = this.blogPreferenceService.getPreference(blogID,
                    BlogPreferenceConstants.showNumPosts);
            int numPosts = 10;
            if (StringUtils.isNotEmpty(numPostsString)) {
                numPosts = Integer.valueOf(numPostsString);
            }

            Collection<BlogPost> postsCollection = null;
            if (older == null && newer == null) {
                postsCollection = this.blogPostService.getBlogPosts(blogID, numPosts);
            } else {
                if (older != null && newer != null) {
                    postsCollection = this.blogPostService.getBlogPosts(blogID, numPosts, older, newer);
                } else if (older != null) {
                    Date lastUpdatedDate = ServerUtils.getUniversalDate(older);
                    postsCollection = this.blogPostService.getOlderBlogPosts(blogID, numPosts, lastUpdatedDate);
                } else if (newer != null) {
                    Date lastUpdatedDate = ServerUtils.getUniversalDate(newer);
                    postsCollection = this.blogPostService.getNewerBlogPosts(blogID, numPosts, lastUpdatedDate);
                }
            }

            List<BlogPost> posts = null;
            if (postsCollection != null) {
                posts = new ArrayList<BlogPost>(postsCollection);
            } else {
                posts = new ArrayList<BlogPost>();
            }

            if (posts != null && posts.size() > 0) {
                if (posts.size() > numPosts) {
                    int last = posts.size() - 1;
                    BlogPost lastPost = posts.get(last);
                    model.put("olderPageUrl", "/showPosts.html?older="
                            + ServerUtils.getUniversalDateString(lastPost.getPostedDate()));
                    posts.remove(last);
                } else {
                    model.put("olderPageUrl", "");
                }

                if (!this.blogPostService.isFirstPost(posts.get(0))) {
                    model.put("newerPageUrl", "/showPosts.html?newer="
                            + ServerUtils.getUniversalDateString(posts.get(0).getPostedDate()));
                } else {
                    model.put("newerPageUrl", "");
                }
            }

            model.putAll(mav.getModel());
            model = this.viewPostService.getPostsViewModel(blog, posts, false, model);
            String generatedBlogPage = TemplateHelper.generateBlogPage(blogID, model, blogLayoutService,
                    velocityEngine);

            mav.addAllObjects(model);
            mav.addObject("generatedBlogPage", generatedBlogPage);
            mav.setViewName(".view.blog.home");
        }
        return mav;
    }

    /**
     * @return the blogService
     */
    public BlogService getBlogService() {
        return blogService;
    }

    /**
     * @param blogService the blogService to set
     */
    public void setBlogService(BlogService blogService) {
        this.blogService = blogService;
    }

    /**
     * @return the blogPreferenceService
     */
    public BlogPreferenceService getBlogPreferenceService() {
        return blogPreferenceService;
    }

    /**
     * @param blogPreferenceService the blogPreferenceService to set
     */
    public void setBlogPreferenceService(BlogPreferenceService blogPreferenceService) {
        this.blogPreferenceService = blogPreferenceService;
    }

    /**
     * @return the blogPostService
     */
    public BlogPostService getBlogPostService() {
        return blogPostService;
    }

    /**
     * @param blogPostService the blogPostService to set
     */
    public void setBlogPostService(BlogPostService blogPostService) {
        this.blogPostService = blogPostService;
    }

    /**
     * @return the velocityEngine
     */
    public VelocityEngine getVelocityEngine() {
        return velocityEngine;
    }

    /**
     * @param velocityEngine the velocityEngine to set
     */
    public void setVelocityEngine(VelocityEngine velocityEngine) {
        this.velocityEngine = velocityEngine;
    }

    /**
     * @return the blogLayoutService
     */
    public BlogLayoutService getBlogLayoutService() {
        return blogLayoutService;
    }

    /**
     * @param blogLayoutService the blogLayoutService to set
     */
    public void setBlogLayoutService(BlogLayoutService blogLayoutService) {
        this.blogLayoutService = blogLayoutService;
    }

    /**
     * @return the viewPostService
     */
    public ViewPostService getViewPostService() {
        return viewPostService;
    }

    /**
     * @param viewPostService the viewPostService to set
     */
    public void setViewPostService(ViewPostService viewPostService) {
        this.viewPostService = viewPostService;
    }

    /**
     * @return the userService
     */
    public UserService getUserService() {
        return userService;
    }

    /**
     * @param userService the userService to set
     */
    public void setUserService(UserService userService) {
        this.userService = userService;
    }

}