summaryrefslogtreecommitdiffstats
path: root/Master/Daten- und Systemintegration/camelprototypewsclient/src/main/OrderPosTableModel.java
blob: ca084c0ba978d6a3ec4035ed2ca02f3c59e7c247 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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<OrderPosition> posList;
	
	public OrderPosTableModel() {
		super();
		posList = new ArrayList<OrderPosition>();
		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<OrderPosition> res = new ArrayList<OrderPosition>();
		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;		
	}
}