1 | package com.hammurapi.common.extract.tests; |
2 | |
3 | import java.math.BigDecimal; |
4 | import java.util.ArrayList; |
5 | import java.util.Collection; |
6 | |
7 | import com.hammurapi.common.Observable; |
8 | import com.hammurapi.common.Observer; |
9 | |
10 | /** |
11 | * Account which notifies observers of changes. |
12 | * @author Pavel Vlasov |
13 | * |
14 | */ |
15 | public class ObservableAccount extends Account implements Observable<Account> { |
16 | |
17 | public ObservableAccount() { |
18 | super(); |
19 | } |
20 | |
21 | public ObservableAccount(String customer, int number, BigDecimal balance) { |
22 | super(customer, number, balance); |
23 | } |
24 | |
25 | @Override |
26 | public void addObserver(Observer<? super Account> o) { |
27 | observers.add(o); |
28 | } |
29 | |
30 | @Override |
31 | public void deleteObserver(Observer<? super Account> o) { |
32 | observers.remove(o); |
33 | } |
34 | |
35 | private Collection<Observer<? super Account>> observers = new ArrayList<Observer<? super Account>>(); |
36 | |
37 | public int countObservers() { |
38 | return observers.size(); |
39 | } |
40 | |
41 | @Override |
42 | public void setBalance(BigDecimal balance) { |
43 | super.setBalance(balance); |
44 | for (Observer<? super Account> o: observers) { |
45 | o.update(null, this); |
46 | } |
47 | } |
48 | |
49 | } |