Package org.encuestame.mvc.page

Source Code of org.encuestame.mvc.page.HomeController

/*
************************************************************************************
* Copyright (C) 2001-2011 encuestame: system online surveys Copyright (C) 2011
* encuestame Development Team.
* Licensed under the Apache Software License version 2.0
* 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.encuestame.mvc.page;

import java.util.List;

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

import org.apache.commons.collections.ListUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.encuestame.core.config.EnMePlaceHolderConfigurer;
import org.encuestame.core.security.util.WidgetUtil;
import org.encuestame.core.service.imp.IFrontEndService;
import org.encuestame.core.util.ConvertDomainBean;
import org.encuestame.core.util.EnMeUtils;
import org.encuestame.mvc.controller.AbstractViewController;
import org.encuestame.persistence.domain.security.UserAccount;
import org.encuestame.persistence.exception.EnMeNoResultsFoundException;
import org.encuestame.persistence.exception.EnMeSearchException;
import org.encuestame.utils.enums.TypeSearchResult;
import org.encuestame.utils.json.HomeBean;
import org.encuestame.utils.web.UserAccountBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
* Home or FrontEnd Controller.
* @author Picado, Juan juanATencuestame.org
* @since Mar 6, 2010 10:58:02 AM
*/
@Controller
public class HomeController extends AbstractViewController {

   /**
    * Log.
    */
    private Log log = LogFactory.getLog(this.getClass());

    /**
     * Default max of home beans to display.
     */
    @Value("${front.home.items}") private Integer homeMaxItems;

    /**
     * Default max of hashtag to display.
     */
    @Value("${front.hashtags.items}") private Integer homeHashtagMaxItems;

    /**
     *
     */
    @Value("${front.profile.items}") private Integer profileDefaultItems;

    /**
     * Default date range.
     */
    private final String SHOW_ALL_RESULTS = "all";

   /**
    * Home Controller.
    * @param model model
    * @return template
    */
    @RequestMapping(value = "/home", method = RequestMethod.GET)
    public String homeController(ModelMap model, HttpServletRequest request,
            HttpServletResponse response) {
        final Boolean privateHome = EnMePlaceHolderConfigurer
                .getBooleanProperty("application.private");
        addi18nProperty(model, "home_item_comments", request, response);
        addi18nProperty(model, "submited_by", request, response);
        addi18nProperty(model, "home_item_votes", request, response);
        addi18nProperty(model, "home_item_views", request, response);
        addi18nProperty(model, "added", request, response);
        if (privateHome) {
            log.debug("signup is disabled");
            return "redirect:/user/signin";
        } else {
            final String view = filterValue(request.getParameter("view"));
            String period = filterValue(request.getParameter("period"));
            period = (period.isEmpty() ? SHOW_ALL_RESULTS : period);
            final IFrontEndService service = getFrontService();
            try {
                if (view.isEmpty()) {
                    model.addAttribute("items", service.getFrontEndItems(period, EnMeUtils.DEFAULT_START , this.homeMaxItems, request));
                } else {
                    if ("tweetpoll".equals(view)) {
                        model.addAttribute("items", ConvertDomainBean
                                .convertTweetPollListToHomeBean(service
                                        .searchItemsByTweetPoll(period, EnMeUtils.DEFAULT_START,
                                                this.homeMaxItems, request)));
                    } else if ("poll".equals(view)) {
                        model.addAttribute("items",
                                ConvertDomainBean
                                        .convertPollListToHomeBean(service
                                                .searchItemsByPoll(period, EnMeUtils.DEFAULT_START,
                                                        this.homeMaxItems)));
                    } else if ("survey".equals(view)) {
                        //TODO: ENCUESTAME-345
                        model.addAttribute("items", ListUtils.EMPTY_LIST);
                    } else {
                        model.addAttribute("items", service
                                .searchItemsByTweetPoll(period, EnMeUtils.DEFAULT_START, this.homeMaxItems,
                                        request));
                    }
                }
                //TODO: review this code, is used?
                model.addAttribute("hashTags", service.getHashTags(this.homeHashtagMaxItems, EnMeUtils.DEFAULT_START, ""));
                //TODO: search hashtags and other information.
                //TODO: comments: ENCUESTAME-346
            } catch (EnMeSearchException e) {
                log.error(e);
                return "error";
            }
            return "home";
        }
    }

    /**
    * Index view.
    * @param model
    * @param request
    * @param response
    * @return
    */
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String index(ModelMap model, HttpServletRequest request,
            HttpServletResponse response) {
        return "redirect:/home";
    }

    /**
     * Humans Txt Definition.
     * @param model
     * @param request
     * @param response
     * @return
     */
    @RequestMapping(value = "/humans.txt", method = RequestMethod.GET)
    public String humansTxT(ModelMap model, HttpServletRequest request,
            HttpServletResponse response) {
        return "redirect:/home";
    }

    /**
     * Robots Txt Definition.
     * @param model
     * @param request
     * @param response
     * @return
     */
    @RequestMapping(value = "/robots.txt", method = RequestMethod.GET)
    public String robotsTxT(ModelMap model, HttpServletRequest request,
            HttpServletResponse response) {
        return "redirect:/home";
    }

    /**
     * Help View.
     * @param model model
     * @return template
     */
    @RequestMapping(value = "/user/help", method = RequestMethod.GET)
    public String dashBoardController(ModelMap model, UserAccount account) {
        return "user/help";
    }

    /**
     * Display a question view.
     * @param model {@link Model}
     * @param id the question id
     * @param slug the slug question name
     * @param request {@link HttpServletRequest}
     * @param response {@link HttpServletResponse}
     * @return the tile view
     */
    @RequestMapping(value = "/question/detail/{id}/{slug}", method = RequestMethod.GET)
    public String questionController(
            final ModelMap model,
            @PathVariable String id,
            @PathVariable String slug,
            HttpServletRequest request,
            HttpServletResponse response) {
            try {
                model.put("question", getSearchService().getQuestionInfo(Long.valueOf(id)));
            } catch (EnMeNoResultsFoundException | NumberFormatException e) {
                 e.printStackTrace();
                 log.error(e);
                return "500";
            }
            return "question/detail";
    }


    @RequestMapping(value = "/user/welcome", method = RequestMethod.GET)
    public String welcome(
            final ModelMap model,
            HttpServletRequest request,
            HttpServletResponse response) {

            final Boolean welcome = true;
            if (welcome) {
                request.setAttribute("hide_header_menu", true);
                return "user/welcome";
            } else {
                return "redirect:/user/dashboard";
            }

    }

    /**
     *
     * @param model
     * @param type
     * @param id
     * @param request
     * @param response
     * @return
     */
    @RequestMapping(value = "/embebed/iframe/preview/{type}/{id}", method = RequestMethod.GET)
    public String embebedPreviewIframe(
            final ModelMap model,
            @PathVariable String type,
            @PathVariable String id,
            HttpServletRequest request,
            HttpServletResponse response) {
            model.put("id", id);
            model.put("class_type", TypeSearchResult.getCSSClass(TypeSearchResult.getTypeSearchResult(type)));
            model.put("domain", WidgetUtil.getRelativeDomain(request));
            model.put("url", "#");
            return "display/iframe";
    }

    /**
     * Display the user profile.
     * @param model
     * @param username
     * @return
     */
    @RequestMapping(value = "/profile/{username:.*}", method = RequestMethod.GET)
    public String userProfileController(
            final ModelMap model,
            @PathVariable String username,
            HttpServletRequest request,
            HttpServletResponse response) {
        username = filterValue(username);
        try {
        final UserAccountBean accountBean = getSecurityService().searchUserByUsername(username);
            if (accountBean == null) {
                return "404";
            } else {
                //1 - load all items poll / survey / poll for {username} order by date
                //2 - hashtag created by {username}
                //3 - social link published by {username}
                //4 - last comments
                log.debug("user --> "+accountBean);
                model.put("profile", accountBean);
                final List<HomeBean> lastItems = getFrontService().getLastItemsPublishedFromUserAccount(username, this.profileDefaultItems, false,
                                     request);
                model.put("lastItems", lastItems);
                return "profile/view";
            }
        } catch (EnMeNoResultsFoundException e) {
             e.printStackTrace();
             log.error(e);
            return "500";
        }
    }

    /**
     * @param profileDefaultItems the profileDefaultItems to set
     */
    public void setProfileDefaultItems(final Integer profileDefaultItems) {
        this.profileDefaultItems = profileDefaultItems;
    }

    /**
     * @param homeMaxItems the homeMaxItems to set
     */
    public void setHomeMaxItems(final Integer homeMaxItems) {
        this.homeMaxItems = homeMaxItems;
    }

    /**
     * @param homeHashtagMaxItems the homeHashtagMaxItems to set
     */
    public void setHomeHashtagMaxItems(final Integer homeHashtagMaxItems) {
        this.homeHashtagMaxItems = homeHashtagMaxItems;
    }
}
TOP

Related Classes of org.encuestame.mvc.page.HomeController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.