GreyTeardrop
5/24/2011 - 3:28 PM

CitatumTableModel.java

import javax.swing.table.AbstractTableModel;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

public class CitatumTableModel extends AbstractTableModel {
    private WindowFrame windowFrame;
    private List<CitatumInfo> citatumInfos;

    public CitatumTableModel(WindowFrame windowFrame) {
        this.windowFrame = windowFrame;
        citatumInfos = new ArrayList<CitatumInfo>();
    }

    public void setCitatumInfos(Collection<CitatumInfo> citatumInfos) {
        this.citatumInfos.clear();
        this.citatumInfos.addAll(citatumInfos);
        fireTableDataChanged();

    }

    @Override
    public String getColumnName(int column) {
        switch (column) {
            case 0:
                return "Цитата";
            case 1:
                return "Автор";
            case 2:
                return "Tag";
            default:
                return "";
        }
    }

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

    @Override
    public int getColumnCount() {
        return 3;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        switch (columnIndex) {
            case 0:
                return citatumInfos.get(rowIndex).getText();
            case 1:
                return citatumInfos.get(rowIndex).getAuthor();
            case 2:
                return citatumInfos.get(rowIndex).getTags();
            default:
                return null;
        }
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        if (columnIndex < 2) {
            return true;
        } else return false;
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        switch (columnIndex) {
            case 0:
                citatumInfos.get(rowIndex).setText(aValue.toString());
                break;
            case 1:
                citatumInfos.get(rowIndex).setAuthor(aValue.toString());
        }
        saveDataUpd(citatumInfos.get(rowIndex));

    }

     public void  removeRows(int[] rowIndices){
       Arrays.sort(rowIndices);
       for (int i = rowIndices.length - 1; i >= 0; --i) {
       CitatumInfo info = citatumInfos.get(rowIndices[i]);
      citatumInfos.remove(rowIndices[i]);
           removeData(info.getId());
                }
         fireTableDataChanged();
     }

      private void removeData(int id) {
        try {
            windowFrame.getDataManager().removeData(id);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private void saveDataUpd(CitatumInfo citatumInfo) {
        try {
            windowFrame.getDataManager().saveDataUpd(citatumInfo);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }




}