Package com.kylietech.oaj.web.mvc.list

Source Code of com.kylietech.oaj.web.mvc.list.OAFormList

/*
* Created on Nov 11, 2004
*
*/
package com.kylietech.oaj.web.mvc.list;

import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;

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

import net.javalib.util.OARequestUtil;
import net.javalib.util.OAStringUtil;
import net.javalib.util.vl.*;

import org.springframework.beans.*;
import org.springframework.beans.support.PagedListSourceProvider;
import org.springframework.beans.support.RefreshablePagedListHolder;
import org.springframework.validation.BindException;
import org.springframework.web.bind.RequestUtils;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.support.RequestContextUtils;
import org.springframework.web.servlet.view.RedirectView;
import org.springframework.web.util.WebUtils;

import com.kylietech.oaj.common.util.*;
import com.kylietech.oaj.common.util.OADomainUtil;
import com.kylietech.oaj.types.*;
import com.kylietech.oaj.web.mvc.*;
import com.kylietech.oaj.web.mvc.OAFormConsts;
import com.kylietech.oaj.web.mvc.OAFormEdit;

/**
* @author Sherif Omar
*
*/
public abstract class OAFormList extends OAFormEdit {

    public static String LIST_FORM = "/common/paged_list_form";

    private static final String LIST_ATTR = "oa_list_pager";
   
    public OAFormList() {
        setFormView(LIST_FORM);
        setCommandName(null);
        setCommandClass(getDummyBackingObjectClass());
    }
   
    protected Object formBackingObject(HttpServletRequest request) throws Exception {
        return getNewDummyBackingObject();
   
   
    protected String getSessionAttributeName() {
      return LIST_ATTR + getListClass() + getBeanName();
    }
   
    protected RefreshablePagedListHolder getListHolder(
            HttpServletRequest request) {
        RefreshablePagedListHolder listHolder = (RefreshablePagedListHolder) request
                .getSession(true).getAttribute(getSessionAttributeName());

        if (null == listHolder) {
            listHolder = new RefreshablePagedListHolder();
            listHolder.setSourceProvider(new ListProvider(this));
            listHolder.setFilter(new OAListFilter());
            request.getSession(true).setAttribute(getSessionAttributeName(), listHolder);
        }
        ((ListProvider)listHolder.getSourceProvider()).setParent(this);
        return listHolder;
    }

    protected void getModel(Map model, HttpServletRequest request, Object command) throws Exception {
        super.getModel(model, request, command);

        RefreshablePagedListHolder listHolder = getListHolder(request);

        OAListFilter filter = (OAListFilter)listHolder.getFilter();       
       
        String sortBy = RequestUtils.getStringParameter(request, "pageSortBy", null);
        if (OAStringUtil.hasText(sortBy))
            filter.setSortBy(sortBy);
       
        if (WebUtils.hasSubmitParameter(request,"filterSubmit")) {
            filter.setFilterValue(RequestUtils.getStringParameter(request, "filterValue", null));
            filter.setFilterColumn(RequestUtils.getStringParameter(request, "filterColumn", null));       
        }
       
        listHolder.setLocale(RequestContextUtils.getLocale(request));
        //boolean forceRefresh = request.getParameter("forceRefresh") != null;
        boolean forceRefresh = true;
        listHolder.refresh(forceRefresh);
       
        int pageSize = RequestUtils.getIntParameter(request, "pageSize", 0);
        if (pageSize > 0)
            listHolder.setPageSize(pageSize);

        int pageNumber = RequestUtils.getIntParameter(request, "pageNumber", -1);
        if (pageNumber >= 0)
            listHolder.setPage(pageNumber);       
       
        model.put("row_data", listHolder);       
    }
   
    protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception {
       
        String actionName = RequestUtils.getStringParameter(request, "actionName", null);
        if (actionName != null) {
            setSuccessView(actionName);
            ModelAndView mv = new ModelAndView(new RedirectView(getSuccessView()));
            mv.addObject(OAFormConsts.GET_RETURN_PAGE, getBeanNameAsAction());
            OARequestUtil.putArray(request, mv);
            return mv;
        } else {
            setSuccessView(viewResolver.getListView());           
            return new ModelAndView(new RedirectView(getSuccessView()));
        }
    }      
   
    public Class getListClass() {
      return OAClassUtil.getClass(getViewResolver().getAddEditCommandClass());
    }
   
    public void addCustomFilters(ValueListInfo info) {
    }
   
    public List getData(ValueListInfo info) {
        addCustomFilters(info);     
        Class listClass = getListClass();

        // if the list class is a DomainWrapper, then retreive the actual domain class to list
        if (DomainEditWrapper.class.isAssignableFrom(listClass)) {
          Object listObject = BeanUtils.instantiateClass(listClass);
          listClass = ((DomainEditWrapper)listObject).getDomainClass();
        }

      return OADomainUtil.getAll(listClass, info);
    }

    /**
     * Does this page allow creating new object of the type it's listing ?
     * @return If allows creation
     */
    public Boolean hasNew() {
        return Boolean.TRUE;
    }

    /**
     * Returns whether the given row is editable or not. Default is true.
     * @param row
     * @return Given object/row is editable or not
     */
    public Boolean hasEdit(Object row) {
        return Boolean.TRUE;
    }
   
    /**
     * Returns whether the given row is viewable or not. Default is if view resolver has view view defined
     * @param row
     * @return Given object/row is viewable or not.
     */
    public Boolean hasView(Object row) {
        return new Boolean(getViewResolver(row).getViewView() != null);
    }   

    /**
     * Returns whether the given row is deletable or not. Default is if view resolver has delete view defined
     * @param row
     * @return Given object/row is deletable or not.
     */     
    public Boolean hasDelete(Object row) {
        return new Boolean(getViewResolver(row).getDeleteView() != null);
    }
   
    /**
     * Returns whether the given row is printable or not. Default is if view resolver has print view defined
     * @param row
     * @return Given object/row is printable or not.
     */   
    public Boolean hasPrint(Object row) {
        return new Boolean(getViewResolver(row).getPrintView() != null);
    }
   
    public Integer getViewId(Object row) {
      return OABeanUtil.getId(row);
    }
   
    public Integer getEditId(Object row) {
      return OABeanUtil.getId(row);
    }
   
    public Integer getPrintId(Object row) {
      return OABeanUtil.getId(row);
    }
   
    public Integer getDeleteId(Object row) {
      return OABeanUtil.getId(row);
   
   
    /**
     * Returns the proper view resolver for the given row. Return the default view resolver for this list view
     * @param row (Domain) Object to return view resolver for
     * @return OAViewResolver to resolve edit/delete/view views for given object
     */
    public OAViewResolver getViewResolver(Object row) {
      return getViewResolver();
    }
   
    public Map getActions() {
        return new HashMap();
    }
   
    public abstract List getColumns();
   
    private class ListProvider implements PagedListSourceProvider, Serializable {

        private OAFormList parent;

        public ListProvider(OAFormList parent) {
            this.parent = parent;
        }
       
    public void setParent(OAFormList parent) {
      this.parent = parent;
    }
   
        public List loadList(Locale loc, Object filter) {
            OAListFilter listFilter = (OAListFilter)filter;
            ValueListInfo listFilterInfo = listFilter.getValueListInfo();
            return parent.getData(listFilterInfo);
        }
    }
}
TOP

Related Classes of com.kylietech.oaj.web.mvc.list.OAFormList

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.
n(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-20639858-1', 'auto'); ga('send', 'pageview');