package gui.models;

import java.util.List;

import javax.swing.table.AbstractTableModel;

import qora.account.Account;
import qora.voting.PollOption;
import utils.Pair;

@SuppressWarnings("serial")
public class VotesTableModel extends AbstractTableModel
{
	private static final int COLUMN_ADDRESS = 0;
	private static final int COLUMN_OPTION = 1;
	public static final int COLUMN_VOTES = 2;
	
	private String[] columnNames = {"Address", "Option", "Votes"};
	private List<Pair<Account, PollOption>> votes;
	
	public VotesTableModel(List<Pair<Account, PollOption>> votes)
	{
		this.votes = votes;
	}
	
	@Override
	public int getColumnCount() 
	{
		return this.columnNames.length;
	}
	
	@Override
	public String getColumnName(int index) 
	{
		return this.columnNames[index];
	}

	@Override
	public int getRowCount() 
	{
		 return this.votes.size();
	}

	@Override
	public Object getValueAt(int row, int column) 
	{
		if(this.votes == null || row > this.votes.size() - 1 )
		{
			return null;
		}
		
		Pair<Account, PollOption> vote = this.votes.get(row);
		
		switch(column)
		{
		case COLUMN_ADDRESS:
			
			return vote.getA().getAddress();
		
		case COLUMN_OPTION:
			
			return vote.getB().getName();
			
		case COLUMN_VOTES:
			
			return vote.getA().getConfirmedBalance().toPlainString();
			
		}
		
		return null;
	}
}
