Package com.wiquery.plugins.jqgrid.component

Source Code of com.wiquery.plugins.jqgrid.component.GridXMLData

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 com.wiquery.plugins.jqgrid.component;

import java.io.Serializable;

import org.apache.wicket.Page;
import org.apache.wicket.RequestCycle;
import org.apache.wicket.markup.repeater.data.IDataProvider;
import org.apache.wicket.protocol.http.WebRequest;
import org.apache.wicket.protocol.http.WebRequestCycle;

import com.wiquery.plugins.jqgrid.model.GridModel;
import com.wiquery.plugins.jqgrid.model.SortInfo;
import com.wiquery.plugins.jqgrid.model.SortOrder;

public class GridXMLData<B extends Serializable> extends XMLResource {

  private static final long serialVersionUID = 1L;

  private IDataProvider<B> dataProvider;
 
  private GridModel<B> gridModel;
 
  private B searchBean;
 
  private SortInfo sortInfo;
 
  private String[] searchFields;
 
  private GridDataPanel<B> dataPanel;
 
  private Grid<B> grid;
 
 
  public GridXMLData(IDataProvider<B> dataProvider, GridModel<B> gridModel, GridDataPanel<B> dataPanel, Grid<B> grid) {
    this.dataProvider = dataProvider;
    this.gridModel = gridModel;
    this.dataPanel = dataPanel;
    this.grid = grid;
  }

  @Override
  protected String getXml() {   
    String encoding = ((WebRequest)(WebRequestCycle.get().getRequest())).getHttpServletRequest().getCharacterEncoding();
    //TODO: write directly to the output stream?
    StringBuffer writer = new StringBuffer();
    writer.append("<?xml version='1.0' encoding='");
    writer.append(encoding);
    writer.append("'?>");
    Page page = dataPanel.getPage();
    page.setVersioned(false);
    XMLDataRequestTarget target = new XMLDataRequestTarget(page);
   
    dataPanel.setOutputMarkupId(true);
    //dataPanel.setVisible(true);
    target.addComponent(dataPanel);
    StringBuffer temp = new StringBuffer();
    target.respond(RequestCycle.get(), temp);       
    /*
    final BufferedWebResponse response = (BufferedWebResponse)RequestCycle.get().getResponse();   
    */   
    //dataPanel.setVisible(false);
    page.setVersioned(true);
    String content = temp.toString();
    content = content.substring(content.indexOf("<rows"), content.indexOf("</rows>")+7);
    content = content.replaceAll("<cell><span>", "<cell><![CDATA[");
    content = content.replaceAll("</span></cell>", "]]></cell>");
    writer.append(content);
    grid.setRowModels(dataPanel.getRowModels());
    return writer.toString();
  }

  /**
   * Give a chance to configure the provider.
   *
   * @param dataProvider
   */
  protected void configureSort() {
    SortOrder sortOrder = getSortOrder();
    String propertyPath = getSortColumn();
    if(propertyPath != null) {
      this.sortInfo = new SortInfo(propertyPath, sortOrder);
    } else {
      this.sortInfo = null;
    }
  } 
 
  private SortOrder getSortOrder() {
    try {
      return SortOrder.valueOf(WebRequestCycle.get().getRequest().getParameter("sord"));
    } catch (Exception e) {
      return SortOrder.asc;
    }
  }
 
  private String getSortColumn() {
    try {
      return WebRequestCycle.get().getRequest().getParameter("sidx");
    } catch (Exception e) {
      return null;
    }
  }
 
  public IDataProvider<B> getDataProvider() {
    return dataProvider;
  }

  public void setDataProvider(IDataProvider<B> dataProvider) {
    this.dataProvider = dataProvider;
  }

  public GridModel<B> getGridModel() {
    return gridModel;
  }

  public void setGridModel(GridModel<B> gridModel) {
    this.gridModel = gridModel;
  }

  public B getSearchBean() {
    return searchBean;
  }

  public void setSearchBean(B searchBean) {
    this.searchBean = searchBean;
  }

  public SortInfo getSortInfo() {
    return sortInfo;
  }

  public void setSortInfo(SortInfo sortInfo) {
    this.sortInfo = sortInfo;
  }

  public String[] getSearchFields() {
    return searchFields;
  }

  public void setSearchFields(String[] searchFields) {
    this.searchFields = searchFields;
  }
}
TOP

Related Classes of com.wiquery.plugins.jqgrid.component.GridXMLData

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.