package main; import java.util.ArrayList; import java.util.List; import javax.swing.table.AbstractTableModel; import de.h_da.fbi.dsi.ws0910.camelprototype.OrderPosition; public class OrderPosTableModel extends AbstractTableModel { private static final long serialVersionUID = 1L; private List posList; public OrderPosTableModel() { super(); posList = new ArrayList(); addPosition(); } @Override public int getColumnCount() { return 3; } @Override public int getRowCount() { return posList.size(); } @Override public Object getValueAt(int rowIndex, int columnIndex) { OrderPosition actOrderPosition = posList.get(rowIndex); Object res = null; switch(columnIndex) { case 0: res = actOrderPosition.getArticleNo(); break; case 1: res = actOrderPosition.getArticle(); break; case 2: res = actOrderPosition.getAmount(); break; default: res = null; } return res; } @Override public String getColumnName(int column) { switch(column) { case 0: return "Article No."; case 1: return "Article"; case 2: return "Amount"; default: return ""; } } @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { OrderPosition actOrderPosition = posList.get(rowIndex); String val = (String) aValue; switch(columnIndex) { case 0: actOrderPosition.setArticleNo(val); break; case 1: actOrderPosition.setArticle(val); break; case 2: { int intVal = Integer.parseInt(val); actOrderPosition.setAmount(intVal); break; } } if(validate(actOrderPosition) && (rowIndex == posList.size()-1 )) { addPosition(); } fireTableDataChanged(); } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return true; } public void addPosition() { posList.add(new OrderPosition("", 0, "")); fireTableDataChanged(); } public void clear() { posList.clear(); fireTableDataChanged(); } public OrderPosition[] getOrderPositions() { List res = new ArrayList(); for(OrderPosition pos : posList) { if(validate(pos)) { res.add(pos); } } return res.toArray(new OrderPosition[res.size()]); } private boolean validate(OrderPosition pos) { if(!pos.getArticleNo().isEmpty() && !pos.getArticle().isEmpty() && (pos.getAmount() > 0) ) { return true; } return false; } public boolean isValid() { for(OrderPosition pos: posList) { if(!validate(pos)) { return false; } } return true; } }