IDexterAction.java :  » Google-tech » dexter » actions » Java Open Source

Java Open Source » Google tech » dexter 
dexter » actions » IDexterAction.java
package actions;

import beans.CategoryBean;
import beans.SearchResultBean;
import ejb.ActivityFacadeRemote;
import ejb.URLDetailFacadeRemote;
import entity.Activity;
import entity.Category;
import entity.Channel;
import entity.URL;
import entity.URLDetail;
import entity.User;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import javax.naming.NamingException;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
import utilities.DateUtility;
import utilities.EJBUtility;
import utilities.UserUtility;

public class IDexterAction extends Action {

    private final static String KEY = "idexter";
    private String page;
    private String timeframe;
    private String category;
    private String visibleURL;
    private HttpSession session;
    private ServletContext servletContext;
    ArrayList<SearchResultBean> resultList;
    private User user;

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        /* Get Servlet Context */
        servletContext = servlet.getServletContext();

        /* Get Request Parameters */
        page = request.getParameter("page");
        timeframe = request.getParameter("timeframe");
        visibleURL = request.getParameter("channel");
        category = request.getParameter("category");

        /* Get Current Session */
        session = request.getSession();

        /* Get Current User */
        user = (User) session.getAttribute("userRecord");

        /* Get ArrayList of Submitted ResultBeans */
        resultList = getSubmittedResults();

        /* Sort ArrayList wrt. Votes */
        sortSubmittedResults();

        /* Save ArrayList in Servlet Context */
        servletContext.setAttribute(KEY, resultList);

        /* Get Redirect Flag */
        String redirectFlag = getredirectFlag();

        /* Return */
        return mapping.findForward(redirectFlag);
    }

    private void addRecord(URLDetail urlDetailRecord) throws NamingException {

        /* Create a Result Bean */
        SearchResultBean resultBean = new SearchResultBean();

        /* Populate Result Bean with Record */
        populateResultBean(urlDetailRecord, resultBean);

        /* Add Result Bean to ArrayList */
        resultList.add(resultBean);

    }

    private boolean checkCategory(URLDetail record) {

        /* Get Record Category Name */
        Category recordCategory = record.getUrl().getCategory();

        /* Check for Parent Category Filter */
        ArrayList<CategoryBean> childCategoryList = checkParentCategory();

        if (childCategoryList != null) {

            if (recordCategory.getParentCategory().getCategoryName().equalsIgnoreCase(category)) {
                return true;
            } else {
                return false;
            }

        } else {

            if (recordCategory.getCategoryName().equalsIgnoreCase(category)) {
                return true;
            } else {
                return false;
            }
        }
    }

    private boolean checkChannel(URLDetail record) {
        if (record.getVisibleURL().equalsIgnoreCase(visibleURL)) {
            return true;
        } else {
            return false;
        }
    }

    private ArrayList<CategoryBean> checkParentCategory() {

        /* Get Category Bean */
        ArrayList<CategoryBean> categoryList = (ArrayList<CategoryBean>) servletContext.getAttribute("category");

        /* Get Iterator */
        Iterator<CategoryBean> iterator = categoryList.iterator();

        /* Iterate ArrayList */
        while (iterator.hasNext()) {
            CategoryBean parentCategoryBean = iterator.next();
            if (parentCategoryBean.getCategoryname().equalsIgnoreCase(category)) {
                return (parentCategoryBean.getChild());
            }
        }

        /* Category Filter Selected is Not Parent Category */
        return (null);
    }

    private boolean checkTimeFrame(URLDetail record) {

        /* Get Days Passed Since Submission */
        String daysPassed = DateUtility.getDaysPassed(record.getUrl().getSubmissionDate());
        int days = Integer.parseInt(daysPassed);

        /* Check Timeframe */
        if (timeframe.equalsIgnoreCase("today")) {
            if (daysPassed.equalsIgnoreCase("0")) {
                return (true);
            } else {
                return (false);
            }
        }

        if (timeframe.equalsIgnoreCase("week")) {
            if (days <= 7) {
                return (true);
            } else {
                return (false);
            }
        }

        if (timeframe.equalsIgnoreCase("month")) {
            if (days <= 30) {
                return (true);
            } else {
                return (false);
            }
        }

        if (timeframe.equalsIgnoreCase("year")) {
            if (days <= 365) {
                return (true);
            } else {
                return (false);
            }
        }
        return false;
    }

    private String getChannelName(URL url) {

        String channelName;

        Channel channel = url.getChannel();
        if (channel != null) {
            channelName = channel.getChannelName();
        } else {
            channelName = null;
        }

        return channelName;
    }

    private ArrayList<SearchResultBean> getSubmittedResults() throws NamingException {

        /* Create ArrayList */
        resultList = new ArrayList<SearchResultBean>();

        /* Get Remote Object */
        URLDetailFacadeRemote urlDetailRemote = (URLDetailFacadeRemote) EJBUtility.lookup("URLDetailFacade");

        /* Get Recordset */
        List<URLDetail> urlDetailRecordset = urlDetailRemote.findAll();

        /* Iterate Recordset */
        Iterator<URLDetail> iterator = urlDetailRecordset.iterator();
        while (iterator.hasNext()) {

            URLDetail urlDetailRecord = iterator.next();

            /* Check Filters */
            if (isFilterON()) {
                if (isFilterConditionSatisfied(urlDetailRecord)) {
                    addRecord(urlDetailRecord);
                }
            } else {
                addRecord(urlDetailRecord);
            }
        }

        /* Return ArrayList */
        return resultList;

    }

    private String getURLID(long id) {
        Long iD = new Long(id);
        return (iD.toString());
    }

    private String getUserName(User user) {

        String firstName = user.getFirstName();
        String lastName = user.getLastName();
        String fullName = firstName + " " + lastName;
        return (fullName);
    }

    private boolean isFilterConditionSatisfied(URLDetail record) {

        boolean flag = false;

        if (!timeframe.equals("")) {
            flag = checkTimeFrame(record);
            if (!flag) {
                return flag;
            }
        }
        if (!visibleURL.equals("")) {
            flag = checkChannel(record);
            if (!flag) {
                return flag;
            }
        }
        if (!category.equals("")) {
            flag = checkCategory(record);
        }

        return (flag);
    }

    private boolean isFilterON() {
        if (timeframe == null && visibleURL == null && category == null) {
            return false;
        } else {
            if (timeframe.equals("") && visibleURL.equals("") && category.equals("")) {
                return false;
            }
            return true;
        }
    }

    private void populateResultBean(URLDetail record, SearchResultBean bean) throws NamingException {

        /* Get Remote Objects */
        ActivityFacadeRemote activityRemote = (ActivityFacadeRemote) EJBUtility.lookup("ActivityFacade");

        /* Get URL Record */
        URL url = record.getUrl();

        /* Check if Current User has Modded the URL */
        if (user != null) {
            Activity activityRecord = activityRemote.findByUserUrl(user, url);

            /* Populate Activity Parameters */
            if (activityRecord != null) {

                bean.setIfmodded(true);

                /* Check Vote */
                if (activityRecord.isIfVotedUp()) {
                    bean.setIfvotedup(true);
                }
            }
        }

        /* Populate Bean */
        bean.setCacheUrl(record.getCacheURL());
        bean.setContent(record.getContent());
        bean.setID(getURLID(url.getId()));
        bean.setTitle(record.getTitle());
        bean.setTitleNoFormatting(record.getTitleNoFormating());
        bean.setVisibleUrl(record.getVisibleURL());
        bean.setUnescapedUrl(url.getUsescapedURL());

        /* Populate iDexter Specific Parameters */
        bean.setCategory(url.getCategory().getCategoryName());
        bean.setChannel(getChannelName(url));
        bean.setNumberofreports(url.getNoOfReports());
        bean.setSubmissiondate(DateUtility.getDaysPassed(url.getSubmissionDate()));
        bean.setUserFullName(getUserName(url.getUser()));
        bean.setVoteUp(url.getVoteUp());
        bean.setVoteDown(url.getVoteDown());
    }

    private void sortSubmittedResults() {
        Collections.sort(resultList);
    }

    private String getredirectFlag() {

        if (UserUtility.userExists(session)) {
            return ("usersuccess");
        } else {
            return ("nousersuccess");
        }
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.