package org.bodington.spring.user;

import java.util.Iterator;
import java.util.Map;

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

import org.bodington.server.realm.UserManagementSession;
import org.bodington.spring.Utils;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;

public class SearchController extends AbstractCommandController
{
    private String viewName;
    
    public SearchController()
    {
        setCommandClass( SearchForm.class );
    }
    
    public String getViewName()
    {
        return viewName;
    }

    public void setViewName( String view )
    {
        this.viewName = view;
    }

    protected ModelAndView handle( HttpServletRequest request, HttpServletResponse response, Object command, BindException errors ) throws Exception
    {
        Map model = errors.getModel();
        ModelAndView modelView = new ModelAndView(viewName, model);
        SearchForm form = (SearchForm)command;
        if (form.getSearch()!= null)
        {
            UserManagementSession session = (UserManagementSession)Utils.getSession( request );
            Iterator users = session.findUsers( form.getSearch(), form.getStart(), form.getNumber() );
            modelView.addObject( "users", users );
        }
        return modelView;
    }
}
