package facebookpagestats.view;

import facebookpagestats.model.*;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author trust56
 */
class FacebookPageStatsTableModel extends AbstractTableModel {

  private FacebookPageStats fbps;
  private final String[] columnNames = new String[]{
    "Kép", "Oldalnév", "Weboldal", "Leírás", "Like-ok"};

  FacebookPageStatsTableModel(FacebookPageStats fbps) {
    this.fbps = fbps;
  }

  public int getRowCount() {
    return fbps.size();
  }

  public int getColumnCount() {
    return columnNames.length;
  }

  public String getColumnName(int columnIndex) {
    return columnNames[columnIndex];
  }

  public Class<?> getColumnClass(int columnIndex) {
    if (getRowCount() > 0) {
      return getValueAt(0, columnIndex).getClass();
    } else {
      return null;
    }
  }

  public boolean isCellEditable(int rowIndex, int columnIndex) {
    return false;
  }

  public Object getValueAt(int rowIndex, int columnIndex) {
    FacebookPageStat stat = fbps.get(rowIndex);
    Object ret;
    switch (columnIndex) {
      case 1:
        ret = stat.getName();
        break;
      case 3:
        String about = stat.getAbout();
        ret = about.length() > 200 ? about.substring(0, 197).concat("...") : about;
        break;
      case 2:
        ret = stat.getWebsite();
        break;
      case 0:
        ret = getImageIconFromURL(stat.getPictureURL());
        break;
      case 4:
        ret = stat.getLikes();
        break;
      default:
        ret = "?";
        break;
    }
    return ret != null ? ret : "?";
  }

  private ImageIcon getImageIconFromURL(URL url) {
    return new ImageIcon(url);
  }
}
