Package org.ajax4jsf.component

Source Code of org.ajax4jsf.component.SequenceDataAdaptor

/**
*
*/
package org.ajax4jsf.component;

import java.sql.ResultSet;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

import javax.faces.context.FacesContext;
import javax.faces.model.ArrayDataModel;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.ResultDataModel;
import javax.faces.model.ResultSetDataModel;
import javax.faces.model.ScalarDataModel;
import javax.servlet.jsp.jstl.sql.Result;

import org.ajax4jsf.model.DataComponentState;
import org.ajax4jsf.model.ExtendedDataModel;
import org.ajax4jsf.model.Range;
import org.ajax4jsf.model.SequenceDataModel;
import org.ajax4jsf.model.SequenceRange;

/**
* @author asmirnov
*
*/
public abstract class SequenceDataAdaptor extends UIDataAdaptor {

  protected DataComponentState createComponentState() {
    // Create component state based on this instance.
    return new DataComponentState(){
 
      public Range getRange() {
        return new SequenceRange(getFirst(),getRows());
      }
 
      public boolean isTransient() {
        // TODO Auto-generated method stub
        return false;
      }
 
      public void restoreState(FacesContext arg0, Object arg1) {
        // TODO Auto-generated method stub
       
      }
 
      public Object saveState(FacesContext arg0) {
        // TODO Auto-generated method stub
        return null;
      }
 
      public void setTransient(boolean arg0) {
        // TODO Auto-generated method stub
       
      }
    };
   
  }

  protected ExtendedDataModel createDataModel() {
    return (ExtendedDataModel) getDataModel();
  }

  protected DataModel getDataModel() {
      // Synthesize a DataModel around our current value if possible
    // TODO - for jsf 1.2 use method from superclass ?
      Object current = getValue();
      DataModel model;
      if (current == null) {
          model = new SequenceDataModel(new ListDataModel(Collections.EMPTY_LIST));
      } else if (current instanceof ExtendedDataModel) {
          model = (DataModel) current;
      } else if (current instanceof DataModel) {
          model = new SequenceDataModel((DataModel) current);
      } else if (current instanceof List) {
          model = new SequenceDataModel(new ListDataModel((List) current));
      } else if (Object[].class.isAssignableFrom(current.getClass())) {
          model = new SequenceDataModel(new ArrayDataModel((Object[]) current));
      } else if (current instanceof ResultSet) {
          model = new SequenceDataModel(new ResultSetDataModel((ResultSet) current));
      } else if (current instanceof Result) {
          model = new SequenceDataModel(new ResultDataModel((Result) current));
      } else {
          model = new SequenceDataModel(new ScalarDataModel(current));
      }
  return (model);
  }

  protected void setDataModel(DataModel model) {
    ExtendedDataModel iterableModel;
    if( null == model){
      iterableModel = null;
    } else if (model instanceof ExtendedDataModel) {
      iterableModel = (ExtendedDataModel) model;     
    } else {
      iterableModel = new SequenceDataModel(model);
    }
    setExtendedDataModel(iterableModel);
  }


}
TOP

Related Classes of org.ajax4jsf.component.SequenceDataAdaptor

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.