/*
* Licensed Materials - Property of Perforce Software, Inc.
* © Copyright Perforce Software, Inc. 2014, 2021
* © Copyright IBM Corp. 2009, 2014
* © Copyright ILOG 1996, 2009
* All Rights Reserved.
*
* Note to U.S. Government Users Restricted Rights:
* The Software and Documentation were developed at private expense and
* are "Commercial Items" as that term is defined at 48 CFR 2.101,
* consisting of "Commercial Computer Software" and
* "Commercial Computer Software Documentation", as such terms are
* used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4,
* as applicable.
*/
package treemap.table;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.DataModel;
import javax.faces.model.DataModelEvent;
import javax.faces.model.DataModelListener;
import ilog.views.chart.datax.flat.table.IlvFlatTableModel;
import ilog.views.util.IlvResourceUtil;
/**
* This class defines a JSF table model that wraps a
* <code>IlvFlatTableModel</code>.
*/
public class FlatTableModel extends DataModel {
private IlvFlatTableModel model;
private int index = 0;
/**
* Creates an new <code>TableMode</code> instance
*
* @param model
* The model to wrap.
*/
public FlatTableModel(IlvFlatTableModel model) {
setWrappedData(model);
}
Override
public int getRowCount() {
return model != null ? model.getRowCount() : -1;
}
Override
public int getRowIndex() {
return model == null ? -1 : index;
}
Override
public boolean isRowAvailable() {
return model == null ? false : index >= 0 && index < getRowCount();
}
Override
public void setRowIndex(int index) {
this.index = index;
if (model != null) {
DataModelListener[] listeners = getDataModelListeners();
for (int i = 0; i < listeners.length; i++) {
DataModelListener listener = listeners[i];
listener.rowSelected(new DataModelEvent(this, index, getRowData()));
}
}
}
Override
public Object getRowData() {
return model == null ? null : buildRow(index);
}
/**
* Creates the row data from the wrapped model. The model mustn't be null.
*
* @param index
* The row index.
* @return The row data.
*/
private Object buildRow(int index) {
List<Object> l = new ArrayList<Object>(model.getColumnCount());
for (int col = 0; col < model.getColumnCount(); col++) {
l.add(model.getValueAt(index, col));
}
return new TableRow(l);
}
Override
public Object getWrappedData() {
return model;
}
Override
public void setWrappedData(Object model) {
if (model instanceof IlvFlatTableModel)
this.model = (IlvFlatTableModel) model;
else {
String msg = IlvResourceUtil.getCurrentLocaleString(FlatTableModel.class, "IlvFlatTableModelInstancesOnly");
throw new IllegalArgumentException(msg);
}
}
/**
* Returns the wrapped <code>IlvFlatTableModel</code> instance.
*
* @return The wrapped model.w
*/
public IlvFlatTableModel getModel() {
return model;
}
/**
* This class defines a table row.
*/
public static class TableRow {
private List<Object> data;
/**
* Creates a new <code>TableRow</code> instance.
*
* @param data
* The row data.
*/
public TableRow(List<Object> data) {
this.data = data;
}
/**
* Returns the row data.
*
* @return The row data.
*/
public List<Object> getData() {
return data;
}
}
}