package org.wiztools.restclient.ui;
import java.util.Collections;
import java.util.Map;
import javax.swing.table.AbstractTableModel;
import org.wiztools.restclient.bean.Request;
import org.wiztools.restclient.bean.Response;
/**
*
* @author subwiz
*/
class SessionTableModel extends AbstractTableModel implements ISessionView{
private final String[] colNames;
private Object[][] data = new String[0][0];
public SessionTableModel(final String[] colNames){
if(colNames.length != 2){
throw new IllegalArgumentException("The length of array should be equal to 2.");
}
this.colNames = colNames;
}
public int getRowCount() {
return data.length;
}
public int getColumnCount() {
return 2;
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
@Override
public String getColumnName(int col) {
return colNames[col];
}
@Override
public void setValueAt(Object value, int row, int col) {
data[row][col] = value;
fireTableCellUpdated(row, col);
}
public void insertRow(Object key, Object value){
int len = data.length;
Object[][] t = new Object[len+1][2];
t[0][0] = key;
t[0][1] = value;
for(int i=1; i<len+1; i++){
for(int j=0; j<2; j++){
t[i][j] = data[i-1][j];
}
}
data = null;
data = t;
fireTableDataChanged();
}
/*public void deleteRow(int row){
int len = data.length;
Object[][] t = new Object[len-1][2];
boolean passedDeletionRow = false;
for(int i=0; i<len; i++){
if(i == row){
passedDeletionRow = true;
continue;
}
for(int j=0; j<2; j++){
if(!passedDeletionRow){
t[i][j] = data[i][j];
}
else{
t[i-1][j] = data[i][j];
}
}
}
data = null;
data = t;
fireTableDataChanged();
}*/
public void setData(final Map<String, String> dataMap){
int size = dataMap.size();
Object[] keys = dataMap.keySet().toArray();
Object[][] o = new Object[size][2];
for(int i=0; i<size; i++){
o[i][0] = keys[i];
o[i][1] = dataMap.get(keys[i]);
}
data = null;
data = o;
fireTableDataChanged();
}
public Object[][] getData(){
return data;
}
@Override
public void add(final Request request, final Response response) {
insertRow(request.toString(), response.toString());
}
@Override
public void clear() {
setData(Collections.<String, String>emptyMap());
}
}