33import javax .swing .table .*;
44import java .awt .*;
55import java .awt .event .*;
6+ /**
7+ *
8+ * This is an app that checks whether the order request is valid through pre-processing done via Filters
9+ * Each field has its own corresponding Filter
10+ * @author joshzambales
11+ *
12+ */
613public class App {
714 public static void main (String [] args ){
815 FilterManager filterManager = new FilterManager (new Target ());
@@ -17,229 +24,15 @@ public static void main(String[] args){
1724 }
1825}
1926
20- interface Filter {
21- public String execute (String [] request );
22- }
23-
24- class NameFilter implements Filter {
25- public String execute (String [] request ){
26- if (request [0 ].equals ("" ) || request [0 ].matches (".*[^\\ w|\\ s]+.*" )){
27- return null ;
28- }else return request [0 ];
29- }
30- }
31-
32- class ContactFilter implements Filter {
33- public String execute (String [] request ){
34- if (request [1 ].equals ("" ) || request [1 ].matches (".*[^\\ d]+.*" ) || request [1 ].length () != 11 ){
35- return null ;
36- }else return request [1 ];
37- }
38- }
39-
40- class AddressFilter implements Filter {
41- public String execute (String [] request ){
42- if (request [2 ].equals ("" )){
43- return null ;
44- }else return request [2 ];
45- }
46- }
47-
48- class DepositFilter implements Filter {
49- public String execute (String [] request ){
50- if (request [3 ].equals ("" )){
51- return null ;
52- }else return request [3 ];
53- }
54- }
55-
56- class OrderFilter implements Filter {
57- public String execute (String [] request ){
58- if (request [4 ].equals ("" )){
59- return null ;
60- }else return request [4 ];
61- }
62- }
63-
64- class Target extends JFrame {
65- JTable jt ;
66- JScrollPane jsp ;
67- DefaultTableModel dtm ;
68- JButton del ;
69- public Target (){
70- super ("Order System" );
71- setDefaultCloseOperation (EXIT_ON_CLOSE );
72- setSize (640 ,480 );
73- dtm = new DefaultTableModel (new Object []{"Name" , "Contact Number" , "Address" , "Deposit Number" , "Order" },0 );
74- jt = new JTable (dtm );
75- del = new JButton ("Delete" );
76- setup ();
77- }
78- private void setup (){
79- setLayout (new BorderLayout ());
80- JPanel bot = new JPanel ();
81- add (jt .getTableHeader (), BorderLayout .NORTH );
82- bot .setLayout (new BorderLayout ());
83- bot .add (del , BorderLayout .EAST );
84- add (bot , BorderLayout .SOUTH );
85- jsp = new JScrollPane (jt );
86- jsp .setPreferredSize (new Dimension (500 ,250 ));
87- add (jsp , BorderLayout .CENTER );
8827
89- del .addActionListener (new DListener ());
9028
91- JRootPane rootPane = SwingUtilities .getRootPane (del );
92- rootPane .setDefaultButton (del );
93- setVisible (true );
94- }
95- public void execute (String [] request ){
96- //System.out.println(request[4]);
97- dtm .addRow (new Object []{request [0 ],request [1 ],request [2 ],request [3 ],request [4 ]});
98- }
99-
100- class DListener implements ActionListener {
101- @ Override
102- public void actionPerformed (ActionEvent e ){
103- int temp = jt .getSelectedRow ();
104- if (temp == -1 ) return ;
105- int temp2 = jt .getSelectedRowCount ();
106- for (int i = 0 ; i < temp2 ; i ++){
107- dtm .removeRow (temp );
108- }
109- }
110- }
111- }
11229
113- class FilterChain {
114- private ArrayList <Filter > filters = new ArrayList <Filter >();
115- private Target target ;
11630
117- public void addFilter (Filter filter ){
118- filters .add (filter );
119- }
120-
121- public String execute (String request ){
122- String tempout [] = new String [filters .size ()];
123-
124- String tempin [] = request .split ("&" );
125- int i = 0 ;
126- try {
127- for (Filter filter :filters ){
128- tempout [i ] = null ;
129- tempout [i ++] = filter .execute (tempin );
130- //System.out.println(tempout[i]);
131- }
132- }catch (Exception e ){
133- return "NOT ENOUGHT INPUT" ;
134- }
135-
136- if (tempout [4 ] == null ){
137- return "INVALID ORDER!" ;
138- }else if (tempout [3 ] == null ){
139- return "INVALID DEPOSIT NUMBER!" ;
140- }else if (tempout [2 ] == null ){
141- return "INVALID ADRDESS!" ;
142- }else if (tempout [1 ] == null ){
143- return "INVALID Contact Number!" ;
144- }else if (tempout [0 ] == null ){
145- return "INVALID Name!" ;
146- }else {
147- target .execute (tempout );
148- return "RUNNING..." ;
149- }
150- }
15131
152- public void setTarget (Target target ){
153- this .target = target ;
154- }
155- }
15632
157- class FilterManager {
158- FilterChain filterChain ;
15933
160- public FilterManager (Target target ){
161- filterChain = new FilterChain ();
162- filterChain .setTarget (target );
163- }
164- public void setFilter (Filter filter ){
165- filterChain .addFilter (filter );
166- }
167- public String filterRequest (String request ){
168- return filterChain .execute (request );
169- }
170- }
17134
172- class Client extends JFrame {
173- FilterManager filterManager ;
174- JLabel jl ;
175- JTextField [] jtfarr ;
176- JTextArea [] jtaarr ;
177- JButton [] buttarr ;
178- public Client (){
179- super ("Client System" );
180- setDefaultCloseOperation (EXIT_ON_CLOSE );
181- setSize (300 ,300 );
182- jl = new JLabel ("RUNNING..." );
183- jtfarr = new JTextField [3 ];
184- for (int i = 0 ; i < 3 ; i ++){
185- jtfarr [i ] = new JTextField ();
186- }
187- jtaarr = new JTextArea [2 ];
188- for (int i = 0 ; i < 2 ; i ++){
189- jtaarr [i ] = new JTextArea ();
190- }
191- buttarr = new JButton [2 ];
192- buttarr [0 ] = new JButton ("Clear" );
193- buttarr [1 ] = new JButton ("Process" );
19435
195- setup ();
196- }
197- private void setup (){
198- setLayout (new BorderLayout ());
199- JPanel panel = new JPanel ();
200- add (jl ,BorderLayout .SOUTH );
201- add (panel , BorderLayout .CENTER );
202- panel .setLayout (new GridLayout (6 ,2 ));
203- panel .add (new JLabel ("Name" ));
204- panel .add (jtfarr [0 ]);
205- panel .add (new JLabel ("Contact Number" ));
206- panel .add (jtfarr [1 ]);
207- panel .add (new JLabel ("Address" ));
208- panel .add (jtaarr [0 ]);
209- panel .add (new JLabel ("Deposit Number" ));
210- panel .add (jtfarr [2 ]);
211- panel .add (new JLabel ("Order" ));
212- panel .add (jtaarr [1 ]);
213- panel .add (buttarr [0 ]);
214- panel .add (buttarr [1 ]);
21536
216- buttarr [0 ].addActionListener (new ActionListener (){
217- @ Override
218- public void actionPerformed (ActionEvent e ){
219- for (JTextArea i : jtaarr ){
220- i .setText ("" );
221- }
222- for (JTextField i : jtfarr ){
223- i .setText ("" );
224- }
225- }
226- });
22737
228- buttarr [1 ].addActionListener (new ActionListener (){
229- @ Override
230- public void actionPerformed (ActionEvent e ){
231- jl .setText (sendRequest (jtfarr [0 ].getText ()+"&" +jtfarr [1 ].getText ()+"&" +jtaarr [0 ].getText ()+"&" +jtfarr [2 ].getText ()+"&" +jtaarr [1 ].getText ()));
232- }
233- });
23438
235- JRootPane rootPane = SwingUtilities .getRootPane (buttarr [1 ]);
236- rootPane .setDefaultButton (buttarr [1 ]);
237- setVisible (true );
238- }
239- public void setFilterManager (FilterManager filterManager ){
240- this .filterManager = filterManager ;
241- }
242- public String sendRequest (String request ){
243- return filterManager .filterRequest (request );
244- }
245- }
0 commit comments