package org.hudson.trayapp.gui;
import java.util.Iterator;
import javax.swing.table.AbstractTableModel;
import org.hudson.trayapp.model.Job;
import org.hudson.trayapp.model.Server;
public class ServerTableModel extends AbstractTableModel {
private Server server = null;
public ServerTableModel(Server server) {
this.server = server;
}
public void setServer(Server server) {
this.server = server;
fireTableStructureChanged();
}
/**
* The columns will be Colour, Name, URL
* @return
*/
public int getColumnCount() {
return server.isHealthSupported() ? 4 : 3;
}
/**
* The total number of jobs
* @return
*/
public int getRowCount() {
return server.getJobs().size();
}
/**
* The columns will be Colour, Name, URL
*/
public Object getValueAt(int row, int column) {
Iterator iterJob = server.getJobs().iterator();
Job job = null;
int i = 0;
while(iterJob.hasNext()) {
job = (Job) iterJob.next();
if (i == row) {
break;
} else {
job = null;
}
i++;
}
// The job will be null always, except where we have found the correct row
if (job == null)
return null;
switch(column) {
case 0:
return job.getColour();
case 1:
if (server.isHealthSupported()) {
return new Integer(job.getWorstHealthScore());
} else {
return job.getName();
}
case 2:
if (server.isHealthSupported()) {
return job.getName();
} else {
return job.getUrl();
}
case 3:
return job.getUrl();
default:
return null;
}
}
public Class getColumnClass(int columnIndex) {
switch(columnIndex) {
case 0:
return String.class;
case 1:
if (server.isHealthSupported()) {
return Integer.class;
} else {
return String.class;
}
case 2:
return String.class;
default:
return String.class;
}
}
/**
* The columns will be Colour, Name, URL
*/
public String getColumnName(int column) {
switch(column) {
case 0:
return "";
case 1:
if (server.isHealthSupported()) {
return "";
} else {
return "Name";
}
case 2:
if (server.isHealthSupported()) {
return "Name";
} else {
return "URL";
}
default:
return null;
}
}
}