Package org.primefaces.component.datatable

Source Code of org.primefaces.component.datatable.DataTable

/*
* Copyright 2009 Prime Technology.
*
* 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 org.primefaces.component.datatable;

import javax.faces.component.UIData;
import javax.faces.context.FacesContext;
import javax.el.ValueExpression;
import javax.el.MethodExpression;
import javax.faces.render.Renderer;
import java.io.IOException;
import org.primefaces.renderkit.PartialRenderer;
import org.primefaces.component.resource.Resource;
import javax.faces.component.UIComponent;
import javax.faces.event.ListenerFor;
import javax.faces.event.PostAddToViewEvent;
import javax.faces.event.ComponentSystemEvent;
import javax.faces.event.AbortProcessingException;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
import org.primefaces.model.LazyDataModel;
import javax.el.ValueExpression;
import javax.faces.component.UIComponent;
import javax.faces.component.UIColumn;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.el.ValueExpression;
import org.primefaces.component.column.Column;
import java.util.Collection;
import java.util.Map;
import java.util.HashMap;
import java.util.List;
import java.util.ArrayList;
import java.io.Serializable;
import java.lang.StringBuffer;
import java.io.Serializable;

@ListenerFor(systemEventClass = PostAddToViewEvent.class)
public class DataTable extends UIData implements org.primefaces.component.api.AjaxComponent {


  public static final String COMPONENT_TYPE = "org.primefaces.component.DataTable";
  public static final String COMPONENT_FAMILY = "org.primefaces.component";
  private static final String DEFAULT_RENDERER = "org.primefaces.component.DataTableRenderer";
  private static final String OPTIMIZED_PACKAGE = "org.primefaces.component.";

  protected enum PropertyKeys {

    widgetVar
    ,paginator
    ,paginatorTemplate
    ,rowsPerPageTemplate
    ,currentPageReportTemplate
    ,paginatorAlwaysVisible
    ,scrollable
    ,width
    ,height
    ,firstPageLinkLabel
    ,previousPageLinkLabel
    ,nextPageLinkLabel
    ,lastPageLinkLabel
    ,selectionMode
    ,selection
    ,dynamic
    ,lazy
    ,rowIndexVar
    ,paginatorPosition
    ,emptyMessage
    ,errorMessage
    ,loadingMessage
    ,sortAscMessage
    ,sortDescMessage
    ,update
    ,style
    ,styleClass
    ,onselectStart
    ,onselectComplete
    ,dblClickSelect
    ,page
    ,pageLinks;

    String toString;

    PropertyKeys(String toString) {
      this.toString = toString;
    }

    PropertyKeys() {}

    public String toString() {
      return ((this.toString != null) ? this.toString : super.toString());
}
  }

  public DataTable() {
    setRendererType(DEFAULT_RENDERER);
  }

  public String getFamily() {
    return COMPONENT_FAMILY;
  }

  public java.lang.String getWidgetVar() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.widgetVar, null);
  }
  public void setWidgetVar(java.lang.String _widgetVar) {
    getStateHelper().put(PropertyKeys.widgetVar, _widgetVar);
    handleAttribute("widgetVar", _widgetVar);
  }

  public boolean isPaginator() {
    return (java.lang.Boolean) getStateHelper().eval(PropertyKeys.paginator, false);
  }
  public void setPaginator(boolean _paginator) {
    getStateHelper().put(PropertyKeys.paginator, _paginator);
    handleAttribute("paginator", _paginator);
  }

  public java.lang.String getPaginatorTemplate() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.paginatorTemplate, null);
  }
  public void setPaginatorTemplate(java.lang.String _paginatorTemplate) {
    getStateHelper().put(PropertyKeys.paginatorTemplate, _paginatorTemplate);
    handleAttribute("paginatorTemplate", _paginatorTemplate);
  }

  public java.lang.String getRowsPerPageTemplate() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.rowsPerPageTemplate, null);
  }
  public void setRowsPerPageTemplate(java.lang.String _rowsPerPageTemplate) {
    getStateHelper().put(PropertyKeys.rowsPerPageTemplate, _rowsPerPageTemplate);
    handleAttribute("rowsPerPageTemplate", _rowsPerPageTemplate);
  }

  public java.lang.String getCurrentPageReportTemplate() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.currentPageReportTemplate, null);
  }
  public void setCurrentPageReportTemplate(java.lang.String _currentPageReportTemplate) {
    getStateHelper().put(PropertyKeys.currentPageReportTemplate, _currentPageReportTemplate);
    handleAttribute("currentPageReportTemplate", _currentPageReportTemplate);
  }

  public boolean isPaginatorAlwaysVisible() {
    return (java.lang.Boolean) getStateHelper().eval(PropertyKeys.paginatorAlwaysVisible, true);
  }
  public void setPaginatorAlwaysVisible(boolean _paginatorAlwaysVisible) {
    getStateHelper().put(PropertyKeys.paginatorAlwaysVisible, _paginatorAlwaysVisible);
    handleAttribute("paginatorAlwaysVisible", _paginatorAlwaysVisible);
  }

  public boolean isScrollable() {
    return (java.lang.Boolean) getStateHelper().eval(PropertyKeys.scrollable, false);
  }
  public void setScrollable(boolean _scrollable) {
    getStateHelper().put(PropertyKeys.scrollable, _scrollable);
    handleAttribute("scrollable", _scrollable);
  }

  public java.lang.String getWidth() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.width, null);
  }
  public void setWidth(java.lang.String _width) {
    getStateHelper().put(PropertyKeys.width, _width);
    handleAttribute("width", _width);
  }

  public java.lang.String getHeight() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.height, null);
  }
  public void setHeight(java.lang.String _height) {
    getStateHelper().put(PropertyKeys.height, _height);
    handleAttribute("height", _height);
  }

  public java.lang.String getFirstPageLinkLabel() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.firstPageLinkLabel, null);
  }
  public void setFirstPageLinkLabel(java.lang.String _firstPageLinkLabel) {
    getStateHelper().put(PropertyKeys.firstPageLinkLabel, _firstPageLinkLabel);
    handleAttribute("firstPageLinkLabel", _firstPageLinkLabel);
  }

  public java.lang.String getPreviousPageLinkLabel() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.previousPageLinkLabel, null);
  }
  public void setPreviousPageLinkLabel(java.lang.String _previousPageLinkLabel) {
    getStateHelper().put(PropertyKeys.previousPageLinkLabel, _previousPageLinkLabel);
    handleAttribute("previousPageLinkLabel", _previousPageLinkLabel);
  }

  public java.lang.String getNextPageLinkLabel() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.nextPageLinkLabel, null);
  }
  public void setNextPageLinkLabel(java.lang.String _nextPageLinkLabel) {
    getStateHelper().put(PropertyKeys.nextPageLinkLabel, _nextPageLinkLabel);
    handleAttribute("nextPageLinkLabel", _nextPageLinkLabel);
  }

  public java.lang.String getLastPageLinkLabel() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.lastPageLinkLabel, null);
  }
  public void setLastPageLinkLabel(java.lang.String _lastPageLinkLabel) {
    getStateHelper().put(PropertyKeys.lastPageLinkLabel, _lastPageLinkLabel);
    handleAttribute("lastPageLinkLabel", _lastPageLinkLabel);
  }

  public java.lang.String getSelectionMode() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.selectionMode, null);
  }
  public void setSelectionMode(java.lang.String _selectionMode) {
    getStateHelper().put(PropertyKeys.selectionMode, _selectionMode);
    handleAttribute("selectionMode", _selectionMode);
  }

  public java.lang.Object getSelection() {
    return (java.lang.Object) getStateHelper().eval(PropertyKeys.selection, null);
  }
  public void setSelection(java.lang.Object _selection) {
    getStateHelper().put(PropertyKeys.selection, _selection);
    handleAttribute("selection", _selection);
  }

  public boolean isDynamic() {
    return (java.lang.Boolean) getStateHelper().eval(PropertyKeys.dynamic, false);
  }
  public void setDynamic(boolean _dynamic) {
    getStateHelper().put(PropertyKeys.dynamic, _dynamic);
    handleAttribute("dynamic", _dynamic);
  }

  public boolean isLazy() {
    return (java.lang.Boolean) getStateHelper().eval(PropertyKeys.lazy, false);
  }
  public void setLazy(boolean _lazy) {
    getStateHelper().put(PropertyKeys.lazy, _lazy);
    handleAttribute("lazy", _lazy);
  }

  public java.lang.String getRowIndexVar() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.rowIndexVar, null);
  }
  public void setRowIndexVar(java.lang.String _rowIndexVar) {
    getStateHelper().put(PropertyKeys.rowIndexVar, _rowIndexVar);
    handleAttribute("rowIndexVar", _rowIndexVar);
  }

  public java.lang.String getPaginatorPosition() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.paginatorPosition, "both");
  }
  public void setPaginatorPosition(java.lang.String _paginatorPosition) {
    getStateHelper().put(PropertyKeys.paginatorPosition, _paginatorPosition);
    handleAttribute("paginatorPosition", _paginatorPosition);
  }

  public java.lang.String getEmptyMessage() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.emptyMessage, null);
  }
  public void setEmptyMessage(java.lang.String _emptyMessage) {
    getStateHelper().put(PropertyKeys.emptyMessage, _emptyMessage);
    handleAttribute("emptyMessage", _emptyMessage);
  }

  public java.lang.String getErrorMessage() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.errorMessage, null);
  }
  public void setErrorMessage(java.lang.String _errorMessage) {
    getStateHelper().put(PropertyKeys.errorMessage, _errorMessage);
    handleAttribute("errorMessage", _errorMessage);
  }

  public java.lang.String getLoadingMessage() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.loadingMessage, null);
  }
  public void setLoadingMessage(java.lang.String _loadingMessage) {
    getStateHelper().put(PropertyKeys.loadingMessage, _loadingMessage);
    handleAttribute("loadingMessage", _loadingMessage);
  }

  public java.lang.String getSortAscMessage() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.sortAscMessage, null);
  }
  public void setSortAscMessage(java.lang.String _sortAscMessage) {
    getStateHelper().put(PropertyKeys.sortAscMessage, _sortAscMessage);
    handleAttribute("sortAscMessage", _sortAscMessage);
  }

  public java.lang.String getSortDescMessage() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.sortDescMessage, null);
  }
  public void setSortDescMessage(java.lang.String _sortDescMessage) {
    getStateHelper().put(PropertyKeys.sortDescMessage, _sortDescMessage);
    handleAttribute("sortDescMessage", _sortDescMessage);
  }

  public java.lang.String getUpdate() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.update, null);
  }
  public void setUpdate(java.lang.String _update) {
    getStateHelper().put(PropertyKeys.update, _update);
    handleAttribute("update", _update);
  }

  public java.lang.String getStyle() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.style, null);
  }
  public void setStyle(java.lang.String _style) {
    getStateHelper().put(PropertyKeys.style, _style);
    handleAttribute("style", _style);
  }

  public java.lang.String getStyleClass() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.styleClass, null);
  }
  public void setStyleClass(java.lang.String _styleClass) {
    getStateHelper().put(PropertyKeys.styleClass, _styleClass);
    handleAttribute("styleClass", _styleClass);
  }

  public java.lang.String getOnselectStart() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.onselectStart, null);
  }
  public void setOnselectStart(java.lang.String _onselectStart) {
    getStateHelper().put(PropertyKeys.onselectStart, _onselectStart);
    handleAttribute("onselectStart", _onselectStart);
  }

  public java.lang.String getOnselectComplete() {
    return (java.lang.String) getStateHelper().eval(PropertyKeys.onselectComplete, null);
  }
  public void setOnselectComplete(java.lang.String _onselectComplete) {
    getStateHelper().put(PropertyKeys.onselectComplete, _onselectComplete);
    handleAttribute("onselectComplete", _onselectComplete);
  }

  public boolean isDblClickSelect() {
    return (java.lang.Boolean) getStateHelper().eval(PropertyKeys.dblClickSelect, false);
  }
  public void setDblClickSelect(boolean _dblClickSelect) {
    getStateHelper().put(PropertyKeys.dblClickSelect, _dblClickSelect);
    handleAttribute("dblClickSelect", _dblClickSelect);
  }

  public int getPage() {
    return (java.lang.Integer) getStateHelper().eval(PropertyKeys.page, 1);
  }
  public void setPage(int _page) {
    getStateHelper().put(PropertyKeys.page, _page);
    handleAttribute("page", _page);
  }

  public int getPageLinks() {
    return (java.lang.Integer) getStateHelper().eval(PropertyKeys.pageLinks, 10);
  }
  public void setPageLinks(int _pageLinks) {
    getStateHelper().put(PropertyKeys.pageLinks, _pageLinks);
    handleAttribute("pageLinks", _pageLinks);
  }


  public void processDecodes(FacesContext facesContext) {
    if(isDynamic()) {
      super.processDecodes(facesContext);
    } else {
      int originalRows = getRows();
      setRows(getRowCount());
      super.processDecodes(facesContext);
      setRows(originalRows);
     
      //Update current page state for client side datatable
      Map<String,String> params = facesContext.getExternalContext().getRequestParameterMap();
      String clientId = getClientId(facesContext);
      String pageParam = clientId + "_page";
     
      if(isPaginator() && params.containsKey(pageParam)) {
        int page = Integer.parseInt(params.get(pageParam));
        setPage(page);
      }
    }
    }
 
  public void processUpdates(FacesContext isAjaxDataRequest) {
    super.processUpdates(isAjaxDataRequest);
   
    if(!isAjaxDataRequest(isAjaxDataRequest)) {
      ValueExpression selectionVE = this.getValueExpression("selection");
      if(selectionVE != null) {
        selectionVE.setValue(isAjaxDataRequest.getELContext(), this.getSelection());
        this.setSelection(null);
      }
    }
  }

  void loadLazyData() {
    DataModel model = getDataModel();
    if(model instanceof LazyDataModel) {
      LazyDataModel lazyModel = (LazyDataModel) model;
      lazyModel.setPageSize(getRows());
      lazyModel.setWrappedData(lazyModel.fetchLazyData(getFirst(), getRows()));
    }
  }
 
  private Map<String,ValueExpression> filterMap;
 
  public Map<String,ValueExpression> getFilterMap() {
    if(filterMap == null) {
      filterMap = new HashMap<String,ValueExpression>();
     
      for(Iterator<UIComponent> children = getChildren().iterator(); children.hasNext();) {
        UIComponent kid = children.next();
         
        if(kid.isRendered() && kid instanceof Column) {
          Column column = (Column) kid;
         
          if(column.getValueExpression("filterBy") != null) {
            filterMap.put(column.getClientId(FacesContext.getCurrentInstance()), column.getValueExpression("filterBy"));
          }
        }
      }
    }

    return filterMap;
  }
 
  public boolean hasFilter() {
    return getFilterMap().size() > 0;
  }
 
  public boolean isAjaxDataRequest(FacesContext facesContext) {
    return facesContext.getExternalContext().getRequestParameterMap().containsKey(this.getClientId(facesContext) + "_ajaxData");
  }
 
  private List<String> selected= new ArrayList<String>();
 
  public List<String> getSelected() {
    return selected;
  }
 
  public void setSelected(List<String> selected) {
    this.selected = selected;
  }
 
  public boolean isSelectionEnabled() {
    return this.getSelectionMode() != null;
  }
 
  public boolean isSingleSelectionMode() {
    String selectionMode = this.getSelectionMode();
   
    if(selectionMode != null)
      return selectionMode.equals("single") || selectionMode.equals("singlecell");
    else
      return false;
  }
 
  public boolean isCellSelection() {
    String selectionMode = this.getSelectionMode();
   
    if(selectionMode != null)
      return selectionMode.indexOf("cell") != -1;
    else
      return false;
  }
 
  public String getSelectedAsString() {
    StringBuffer buffer = new StringBuffer();
    for(Iterator<String> iter = selected.iterator();iter.hasNext();) {
      buffer.append(iter.next());
     
      if(iter.hasNext())
        buffer.append(",");
    }
   
    return buffer.toString();
  }
 
    public UIColumn getColumnByClientId(String clientId) {
      FacesContext facesContext = FacesContext.getCurrentInstance();
     
      for(UIComponent kid : getChildren()) {
        if(kid.getClientId(facesContext).equals(clientId))
          return (UIColumn) kid;
      }
     
      return null;
    }
 
  @Override
    public void restoreState(FacesContext context, Object state) {
        super.restoreState(context, state);
       
        if(getStateHelper().get("value") == null) {
          getStateHelper().put("value", new ArrayList());
        }
    }

  protected FacesContext getFacesContext() {
    return FacesContext.getCurrentInstance();
  }

  public void encodePartially(FacesContext facesContext) throws IOException {
    Renderer renderer = getRenderer(facesContext);

    if(renderer instanceof PartialRenderer) {
      ((PartialRenderer)renderer).encodePartially(facesContext, this);
    }
  }

  public boolean resourceExists(FacesContext facesContext, String name) {
    java.util.List<UIComponent> resources = facesContext.getViewRoot().getComponentResources(facesContext, "head");
    for(UIComponent component : resources) {
      String value = component.toString();
      if(value != null && value.equals(name))
        return true;
    }
    return false;
  }

  @Override
  public void processEvent(ComponentSystemEvent event) throws AbortProcessingException {
    FacesContext facesContext = getFacesContext();
    javax.faces.component.UIViewRoot viewroot = facesContext.getViewRoot();
    Resource resource = null;
    if(!resourceExists(facesContext, "/primefaces/paginator/paginator.css")) {
      resource = (Resource) facesContext.getApplication().createComponent("org.primefaces.component.Resource");
      resource.setName("/primefaces/paginator/paginator.css");
      viewroot.addComponentResource(facesContext, resource, "head");
    }
    if(!resourceExists(facesContext, "/primefaces/datatable/datatable.css")) {
      resource = (Resource) facesContext.getApplication().createComponent("org.primefaces.component.Resource");
      resource.setName("/primefaces/datatable/datatable.css");
      viewroot.addComponentResource(facesContext, resource, "head");
    }
    if(!resourceExists(facesContext, "/jquery/jquery.js")) {
      resource = (Resource) facesContext.getApplication().createComponent("org.primefaces.component.Resource");
      resource.setName("/jquery/jquery.js");
      viewroot.addComponentResource(facesContext, resource, "head");
    }
    if(!resourceExists(facesContext, "/yui/utilities/utilities.js")) {
      resource = (Resource) facesContext.getApplication().createComponent("org.primefaces.component.Resource");
      resource.setName("/yui/utilities/utilities.js");
      viewroot.addComponentResource(facesContext, resource, "head");
    }
    if(!resourceExists(facesContext, "/yui/datasource/datasource-min.js")) {
      resource = (Resource) facesContext.getApplication().createComponent("org.primefaces.component.Resource");
      resource.setName("/yui/datasource/datasource-min.js");
      viewroot.addComponentResource(facesContext, resource, "head");
    }
    if(!resourceExists(facesContext, "/primefaces/paginator/paginator.js")) {
      resource = (Resource) facesContext.getApplication().createComponent("org.primefaces.component.Resource");
      resource.setName("/primefaces/paginator/paginator.js");
      viewroot.addComponentResource(facesContext, resource, "head");
    }
    if(!resourceExists(facesContext, "/yui/datatable/datatable-min.js")) {
      resource = (Resource) facesContext.getApplication().createComponent("org.primefaces.component.Resource");
      resource.setName("/yui/datatable/datatable-min.js");
      viewroot.addComponentResource(facesContext, resource, "head");
    }
    if(!resourceExists(facesContext, "/primefaces/core/core.js")) {
      resource = (Resource) facesContext.getApplication().createComponent("org.primefaces.component.Resource");
      resource.setName("/primefaces/core/core.js");
      viewroot.addComponentResource(facesContext, resource, "head");
    }
    if(!resourceExists(facesContext, "/primefaces/datatable/datatable.js")) {
      resource = (Resource) facesContext.getApplication().createComponent("org.primefaces.component.Resource");
      resource.setName("/primefaces/datatable/datatable.js");
      viewroot.addComponentResource(facesContext, resource, "head");
    }
  }


  public void handleAttribute(String name, Object value) {
    List<String> setAttributes = (List<String>) this.getAttributes().get("javax.faces.component.UIComponentBase.attributesThatAreSet");
    if(setAttributes == null) {
      String cname = this.getClass().getName();
      if(cname != null && cname.startsWith(OPTIMIZED_PACKAGE)) {
        setAttributes = new ArrayList<String>(6);
        this.getAttributes().put("javax.faces.component.UIComponentBase.attributesThatAreSet", setAttributes);
      }
    }
    if(setAttributes != null) {
      if(value == null) {
        ValueExpression ve = getValueExpression(name);
        if(ve == null) {
          setAttributes.remove(name);
        } else if(!setAttributes.contains(name)) {
          setAttributes.add(name);
        }
      }
    }
  }
}
TOP

Related Classes of org.primefaces.component.datatable.DataTable

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.