InvalidObservationTableModel.java

/**
 * VStar: a statistical analysis tool for variable star data.
 * Copyright (C) 2009  AAVSO (http://www.aavso.org/)
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>. 
 */
package org.aavso.tools.vstar.ui.model.list;

import java.util.List;

import javax.swing.table.AbstractTableModel;

import org.aavso.tools.vstar.data.InvalidObservation;

/**
 * A table model for invalid observations.
 */
@SuppressWarnings("serial")
public class InvalidObservationTableModel extends AbstractTableModel {

	private final static int COLUMNS = 3;

	/**
	 * The list of invalid observations retrieved.
	 */
	protected List<InvalidObservation> invalidObservations;

	/**
	 * Constructor
	 * 
	 * @param invalidObservations
	 */
	public InvalidObservationTableModel(
			List<InvalidObservation> invalidObservations) {
		super();
		this.invalidObservations = invalidObservations;
	}

	/**
	 * @see javax.swing.table.TableModel#getColumnCount()
	 */
	public int getColumnCount() {
		return COLUMNS;
	}

	/**
	 * @see javax.swing.table.TableModel#getRowCount()
	 */
	public int getRowCount() {
		return invalidObservations.size();
	}

	/**
	 * @see javax.swing.table.AbstractTableModel#getColumnName(int)
	 */
	public String getColumnName(int column) {
		String columnName = null;
		
		switch (column) {
		case 0:
			columnName = "Record";
			break;
		case 1:
			columnName = "Observation";
			break;
		case 2:
			columnName = "Error";
			break;
		}

		return columnName;
	}

	/**
	 * @see javax.swing.table.TableModel#getValueAt(int, int)
	 */
	public Object getValueAt(int rowIndex, int columnIndex) {
		assert columnIndex < COLUMNS;

		Object value = null;
		InvalidObservation invalidOb = invalidObservations.get(rowIndex);
		switch (columnIndex) {
		case 0:
			// TODO: we really want to return an integer so that column 
			// sorting works properly for numbers!
			//value = String.format("%d", invalidOb.getRecordNumber());
			value = invalidOb.getRecordNumber();
			break;
		case 1:
			value = invalidOb.getInputLine();
			break;
		case 2:
			value = invalidOb.getError();
			break;
		}
		return value;
	}

	/**
	 * @see javax.swing.table.AbstractTableModel#getColumnClass(int)
	 */
	public Class<?> getColumnClass(int columnIndex) {
		Class<?> clazz = null;
		
		switch(columnIndex) {
		case 0:
			//clazz = String.class;
			clazz = Integer.class;
			break;
		case 1:
			clazz = String.class;
			break;
		case 2:
			clazz = String.class;
			break;
		}
		
		return clazz;
	}	
}