package com.delcyon.capo.webapp.models;
import java.util.List;
import com.delcyon.capo.resourcemanager.types.ContentMetaData;
import eu.webtoolkit.jwt.ItemDataRole;
import eu.webtoolkit.jwt.Orientation;
import eu.webtoolkit.jwt.WAbstractItemModel;
import eu.webtoolkit.jwt.WModelIndex;
public class WContentMetaDataItemModel extends WAbstractItemModel
{
private List<ContentMetaData> contentMetaDataList;
private String[] columns;
public WContentMetaDataItemModel(List<ContentMetaData> contentMetaDataList, String...columns)
{
this.contentMetaDataList = contentMetaDataList;
this.columns = columns;
}
@Override
public int getColumnCount(WModelIndex parent)
{
if(columns == null || columns.length == 0)
{
if(contentMetaDataList.isEmpty())
{
return 0;
}
columns = contentMetaDataList.get(0).getSupportedAttributes().toArray(new String[]{});
}
return columns.length;
}
@Override
public int getRowCount(WModelIndex parent)
{
return contentMetaDataList.size();
}
@Override
public WModelIndex getParent(WModelIndex index)
{
// TODO Auto-generated method stub
return null;
}
@Override
public Object getHeaderData(int section, Orientation orientation, int role)
{
if(role == ItemDataRole.DisplayRole)
{
return getColumnName(section);
}
else
{
return super.getHeaderData(section, orientation, role);
}
}
private String getColumnValue(int column)
{
String[] splitColumn = columns[column].split(",");
return splitColumn[0];
}
private String getColumnName(int column)
{
String[] splitColumn = columns[column].split(",");
if(splitColumn.length > 1)
{
return splitColumn[1];
}
else
{
return splitColumn[0];
}
}
@Override
public Object getData(WModelIndex index, int role)
{
if (role == ItemDataRole.DisplayRole)
{
return contentMetaDataList.get(index.getRow()).getValue(getColumnValue(index.getColumn()));
}
return null;
}
@Override
public WModelIndex getIndex(int row, int column, WModelIndex parent)
{
if(contentMetaDataList == null || row >= contentMetaDataList.size())
{
return null;
}
return createIndex(row, column, contentMetaDataList.get(row));
}
}