Skip to content

Commit 2392d6c

Browse files
committed
added intercepting filter and changes
1 parent aca7558 commit 2392d6c

File tree

3 files changed

+319
-0
lines changed

3 files changed

+319
-0
lines changed
81.9 KB
Loading

intercepting-filter/pom.xml

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
5+
<groupId>com.iluwatar</groupId>
6+
<artifactId>java-design-patterns</artifactId>
7+
<version>1.0-SNAPSHOT</version>
8+
<packaging>pom</packaging>
9+
10+
<properties>
11+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
12+
</properties>
13+
<modules>
14+
<module>abstract-factory</module>
15+
<module>builder</module>
16+
<module>factory-method</module>
17+
<module>prototype</module>
18+
<module>singleton</module>
19+
<module>adapter</module>
20+
<module>bridge</module>
21+
<module>composite</module>
22+
<module>decorator</module>
23+
<module>facade</module>
24+
<module>flyweight</module>
25+
<module>proxy</module>
26+
<module>chain</module>
27+
<module>command</module>
28+
<module>interpreter</module>
29+
<module>iterator</module>
30+
<module>mediator</module>
31+
<module>memento</module>
32+
<module>model-view-presenter</module>
33+
<module>observer</module>
34+
<module>state</module>
35+
<module>strategy</module>
36+
<module>template-method</module>
37+
<module>visitor</module>
38+
<module>double-checked-locking</module>
39+
<module>servant</module>
40+
<module>service-locator</module>
41+
<module>null-object</module>
42+
<module>event-aggregator</module>
43+
<module>callback</module>
44+
<module>execute-around</module>
45+
<module>property</module>
46+
</modules>
47+
48+
<dependencyManagement>
49+
<dependencies>
50+
<dependency>
51+
<groupId>junit</groupId>
52+
<artifactId>junit</artifactId>
53+
<version>4.11</version>
54+
<scope>test</scope>
55+
</dependency>
56+
</dependencies>
57+
</dependencyManagement>
58+
59+
<build>
60+
<plugins>
61+
<!-- Tell maven to compile using Java 1.7 -->
62+
<plugin>
63+
<groupId>org.apache.maven.plugins</groupId>
64+
<artifactId>maven-compiler-plugin</artifactId>
65+
<version>3.0</version>
66+
<configuration>
67+
<source>1.7</source>
68+
<target>1.7</target>
69+
</configuration>
70+
</plugin>
71+
</plugins>
72+
</build>
73+
74+
</project>
Lines changed: 245 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,245 @@
1+
import java.util.*;
2+
import javax.swing.*;
3+
import javax.swing.table.*;
4+
import java.awt.*;
5+
import java.awt.event.*;
6+
public class App{
7+
public static void main(String[] args){
8+
FilterManager filterManager = new FilterManager(new Target());
9+
filterManager.setFilter(new NameFilter());
10+
filterManager.setFilter(new ContactFilter());
11+
filterManager.setFilter(new AddressFilter());
12+
filterManager.setFilter(new DepositFilter());
13+
filterManager.setFilter(new OrderFilter());
14+
15+
Client client = new Client();
16+
client.setFilterManager(filterManager);
17+
}
18+
}
19+
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);
88+
89+
del.addActionListener(new DListener());
90+
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+
}
112+
113+
class FilterChain{
114+
private ArrayList<Filter> filters = new ArrayList<Filter>();
115+
private Target target;
116+
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+
}
151+
152+
public void setTarget(Target target){
153+
this.target = target;
154+
}
155+
}
156+
157+
class FilterManager{
158+
FilterChain filterChain;
159+
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+
}
171+
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");
194+
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]);
215+
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+
});
227+
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+
});
234+
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

Comments
 (0)