Package loxia.struts2.table

Source Code of loxia.struts2.table.AbstractTableModelSupport

package loxia.struts2.table;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import loxia.dao.Sort;
import loxia.support.json.JSONArray;
import loxia.support.json.JSONObject;

public abstract class AbstractTableModelSupport<T> implements TableModel {
 
  protected boolean pagable = false;
  protected int itemPerPage;
  protected int currentPage = 1;
  protected Sort[] sorts;
 
  protected String modelName;
  protected String[] columnNames;
  protected String[] columns; 

  public abstract long getCount();

  /**
   * Model name, will be used in data export
   * @return
   */
  public String getModelName() {
    return modelName;
  }
  public void setModelName(String modelName) {
    this.modelName = modelName;
  }
 
  /**
   * Column names, will be used in data export
   * @return
   */
  public String[] getColumnNames() {
    return columnNames;
  }

  public void setColumnNames(String... columnNames) {
    this.columnNames = columnNames;
  }
 
  /**
   * Column value's property string, will be used in data export
   */
  public String[] getColumns() {
    return columns;
  }
  public void setColumns(String... columns) {
    this.columns = columns;
  }
 
  /**
   * Query data for table model
   * @param showAll query all data or only current page
   * @return
   */
  public abstract TableModel query(boolean showAll)

  public abstract List<T> getItems();

  public JSONObject getModel() {
    return getModel(null);
  }
 
  public JSONObject getModel(String filterStr) {
    Map<String,Object> result = new HashMap<String, Object>();
    result.put("sort", getSortString());
    result.put("page", isPagable());
    result.put("pageSize", getItemPerPage());
    result.put("currentPage", getCurrentPage());
    result.put("itemCount", getCount());
    if(filterStr == null || filterStr.trim().length() ==0)
      result.put("data", new JSONArray(getItems()));
    else
      result.put("data", new JSONArray(getItems(),filterStr));
    return new JSONObject(result);
  }

  public boolean isPagable() {
    return pagable;
  }
  public void setPagable(boolean pagable) {
    this.pagable = pagable;
  }
  public int getItemPerPage() {
    return itemPerPage;
  }
  public void setItemPerPage(int itemPerPage) {
    this.itemPerPage = itemPerPage;
  }
  public int getCurrentPage() {
    return currentPage;
  }
  public void setCurrentPage(int currentPage) {
    this.currentPage = currentPage;
  }
  public Sort[] getSorts() {
    return sorts;
  }
  public void setSorts(Sort[] sorts) {
    this.sorts = sorts;
  }
  public String getSortString(){
    if(sorts == null || sorts.length == 0) return "";
    StringBuffer sb = new StringBuffer();
    for(Sort sort: sorts)
      sb.append("," + sort.toString());
    return sb.toString().substring(1);
  }
  public void setSortString(String sortStr){
    if(sortStr == null || sortStr.trim().length() == 0) setSorts(null);
    else{
      List<Sort> sortList = new ArrayList<Sort>();
      for(String str: sortStr.split(","))
        sortList.add(new Sort(str));
      setSorts(sortList.toArray(new Sort[]{}));
    }
  }
}
TOP

Related Classes of loxia.struts2.table.AbstractTableModelSupport

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.