es.alvsanand.webpage.web.beans.cms.SearchBean.java Source code

Java tutorial

Introduction

Here is the source code for es.alvsanand.webpage.web.beans.cms.SearchBean.java

Source

/*
 * Copyright 2008-2010 the original author or authors.
 *
 * Licensed under 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 es.alvsanand.webpage.web.beans.cms;

import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import org.apache.commons.lang.StringUtils;

import es.alvsanand.webpage.AlvsanandException;
import es.alvsanand.webpage.common.Globals;
import es.alvsanand.webpage.common.Logger;
import es.alvsanand.webpage.model.Article;
import es.alvsanand.webpage.model.Tag;
import es.alvsanand.webpage.services.cms.SearchCmsService;
import es.alvsanand.webpage.services.cms.SearchCmsServiceImpl;

@SessionScoped
@ManagedBean(name = "searchBean")
public class SearchBean implements Serializable {
    /**
     * 
     */
    private static final long serialVersionUID = 4278071046272339705L;

    private transient static final Logger logger = new Logger(SearchBean.class);

    private transient static final String LIST_SEARCH_ARTICLES_VIEW_ID = "/xhtml/articlesByQuery.jsf";

    private transient static final String LIST_DATES_ARTICLES_VIEW_ID = "/xhtml/articlesByTag.jsf";

    public transient static final String[] DEFAULT_SORT_FIELDS = { "date" };

    private transient SearchCmsService searchCmsService;

    private String tagName;

    private String query;

    private List<Article> articles;

    private String date;

    public SearchBean() {
    }

    public String getTagName() {
        return tagName;
    }

    public void setTagName(String tagName) {
        this.tagName = tagName;
    }

    public String getQuery() {
        return query;
    }

    public void setQuery(String query) {
        this.query = query;
    }

    public String getEncodedQuery() throws UnsupportedEncodingException {
        return URLEncoder.encode(this.query, Globals.CHARACTER_ENCODING);
    }

    public void setEncodedQuery(String encodedQuery) throws UnsupportedEncodingException {
        this.query = URLDecoder.decode(encodedQuery, Globals.CHARACTER_ENCODING);
    }

    public List<Article> getArticles() {
        return articles;
    }

    public void setArticles(List<Article> articles) {
        this.articles = articles;
    }

    public SearchCmsService getSearchCmsService() {
        if (searchCmsService == null) {
            searchCmsService = new SearchCmsServiceImpl();
        }
        return searchCmsService;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    // JSF methods

    public void searchArticlesByTagName() throws AlvsanandException, UnsupportedEncodingException {
        logger.info("Launched SearchBean.searchArticlesByTagName[" + tagName + "]");

        Tag tag = new Tag();
        tag.setEncodedName(tagName);

        articles = getSearchCmsService().getArticlesByTag(tag);
    }

    public void searchArticlesByQueryNoNiew() throws AlvsanandException {
        logger.info("Launched SearchBean.searchArticlesByQueryNoNiew[" + query + "]");

        articles = getSearchCmsService().searchArticles(query);
    }

    public String searchArticlesByQuery() throws AlvsanandException {
        logger.info("Launched SearchBean.searchArticlesByQuery[" + query + "]");

        articles = getSearchCmsService().searchArticles(query);

        return LIST_SEARCH_ARTICLES_VIEW_ID;
    }

    public boolean isSearchEmpty() {
        if (articles == null || articles.size() == 0) {
            return true;
        } else {
            return false;
        }
    }

    public void searchArticlesByDate() throws AlvsanandException {
        logger.info("Launched SearchBean.searchArticlesByDate[date=" + date + "]");

        Calendar calendar = new GregorianCalendar();
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 1);

        if (StringUtils.isNotEmpty(date)) {
            String[] tmp = date.split(Globals.DATE_SEPARATOR);

            if (tmp.length > 0) {
                Date beginDate = null;
                Date endDate = null;

                switch (tmp.length) {
                case 1:
                    calendar.set(Calendar.YEAR, Integer.parseInt(tmp[0]));
                    calendar.set(Calendar.MONTH, 0);
                    calendar.set(Calendar.DAY_OF_MONTH, 1);

                    beginDate = calendar.getTime();

                    calendar.add(Calendar.YEAR, 1);
                    endDate = calendar.getTime();

                    break;
                case 2:
                    calendar.set(Calendar.YEAR, Integer.parseInt(tmp[0]));
                    calendar.set(Calendar.MONTH, Integer.parseInt(tmp[1]) - 1);
                    calendar.set(Calendar.DAY_OF_MONTH, 1);

                    beginDate = calendar.getTime();

                    calendar.add(Calendar.MONTH, 1);
                    endDate = calendar.getTime();

                    break;
                default:
                    calendar.set(Calendar.YEAR, Integer.parseInt(tmp[0]));
                    calendar.set(Calendar.MONTH, Integer.parseInt(tmp[1]) - 1);
                    calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(tmp[2]));

                    beginDate = calendar.getTime();

                    calendar.add(Calendar.DAY_OF_YEAR, 1);
                    endDate = calendar.getTime();

                    break;
                }

                articles = getSearchCmsService().getArticlesByDates(beginDate, endDate);
            }

        }
    }
}