Package cn.edu.zju.acm.onlinejudge.action

Source Code of cn.edu.zju.acm.onlinejudge.action.SearchProblemAction

/*
* Copyright 2008 Chen, Zhengguang <cerrorism@gmail.com>
*
* This file is part of ZOJ.
*
* ZOJ is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either revision 3 of the License, or (at your option) any later revision.
*
* ZOJ is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with ZOJ. if not, see
* <http://www.gnu.org/licenses/>.
*/
package cn.edu.zju.acm.onlinejudge.action;

import java.util.ArrayList;
import java.util.List;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import cn.edu.zju.acm.onlinejudge.bean.AbstractContest;
import cn.edu.zju.acm.onlinejudge.bean.Problem;
import cn.edu.zju.acm.onlinejudge.util.ContestManager;

/**
* <p>
* SearchProblemAction
* </p>
*
*
* @author Chen, Zhengguang
* @version 2.0
*/
public class SearchProblemAction extends BaseAction {

  @Override
  protected ActionForward execute(ActionMapping mapping, ActionForm form,
      ContextAdapter context) throws Exception {
    //System.out.println("SearchProblemAction begin");
    List<Problem> TitleQueryResult = new ArrayList<Problem>();
    List<Problem> AuthorQueryResult = new ArrayList<Problem>();
    List<Problem> SourceQueryResult = new ArrayList<Problem>();

    AbstractContest contest = context.getContest();
    String query = context.getRequest().getParameter("query").toLowerCase();
    String temp = context.getRequest().getParameter("titlefrom");
    int titlefrom = Integer.parseInt(temp);
    temp = context.getRequest().getParameter("authorfrom");
    int authorfrom = Integer.parseInt(temp);
    temp = context.getRequest().getParameter("sourcefrom");
    int sourcefrom = Integer.parseInt(temp);
   
    List<Problem> problems =
            ContestManager.getInstance().getContestProblems(contest.getId());
    for(int i=0;i<problems.size();++i) {
      Problem p=problems.get(i);
      if(p.getTitle()!=null) {
        if(p.getTitle().toLowerCase().indexOf(query)>=0) {
          TitleQueryResult.add(p);
        }
      }
      if(p.getAuthor()!=null) {
        if(p.getAuthor().toLowerCase().indexOf(query)>=0) {
          AuthorQueryResult.add(p);
        }
      }
      if(p.getSource()!=null) {
        if(p.getSource().toLowerCase().indexOf(query)>=0) {
          SourceQueryResult.add(p);
        }
      }
    }
   
    context.setAttribute("TitleQueryResultCount", TitleQueryResult.size());
    if(titlefrom*50+49>TitleQueryResult.size()) {
    context.setAttribute("TitleQueryResult", TitleQueryResult.subList(titlefrom*50, TitleQueryResult.size()));
    } else {
      context.setAttribute("TitleQueryResult", TitleQueryResult.subList(titlefrom*50, titlefrom*50+49));
    }
    context.setAttribute("titlefrom", titlefrom);
   
    context.setAttribute("AuthorQueryResultCount", AuthorQueryResult.size());
    if(authorfrom*50+49>AuthorQueryResult.size()) {
      context.setAttribute("AuthorQueryResult", AuthorQueryResult.subList(authorfrom*50, AuthorQueryResult.size()));
      } else {
        context.setAttribute("AuthorQueryResult", AuthorQueryResult.subList(authorfrom*50, authorfrom*50+49));
      }
    context.setAttribute("authorfrom", authorfrom);
   
    context.setAttribute("SourceQueryResultCount", SourceQueryResult.size());
    if(sourcefrom*50+49>SourceQueryResult.size()) {
      context.setAttribute("SourceQueryResult", SourceQueryResult.subList(sourcefrom*50, SourceQueryResult.size()));
      } else {
        context.setAttribute("SourceQueryResult", SourceQueryResult.subList(sourcefrom*50, sourcefrom*50+49));
      }
    context.setAttribute("sourcefrom", sourcefrom);
    context.setAttribute("query", query);
    //System.out.println("SearchProblemAction end");
    return this.handleSuccess(mapping, context, "success");
  }
}
TOP

Related Classes of cn.edu.zju.acm.onlinejudge.action.SearchProblemAction

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.