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();
}
}
}