Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
QZero_0
java-design-patterns
提交
2392d6ca
J
java-design-patterns
项目概览
QZero_0
/
java-design-patterns
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
java-design-patterns
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2392d6ca
编写于
4月 03, 2015
作者:
J
Josh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
added intercepting filter and changes
上级
aca75584
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
319 addition
and
0 deletion
+319
-0
intercepting-filter/etc/Intercepting-filter.png
intercepting-filter/etc/Intercepting-filter.png
+0
-0
intercepting-filter/pom.xml
intercepting-filter/pom.xml
+74
-0
intercepting-filter/src/main/App.java
intercepting-filter/src/main/App.java
+245
-0
未找到文件。
intercepting-filter/etc/Intercepting-filter.png
0 → 100644
浏览文件 @
2392d6ca
81.9 KB
intercepting-filter/pom.xml
0 → 100644
浏览文件 @
2392d6ca
<?xml version="1.0" encoding="UTF-8"?>
<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"
>
<modelVersion>
4.0.0
</modelVersion>
<groupId>
com.iluwatar
</groupId>
<artifactId>
java-design-patterns
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<packaging>
pom
</packaging>
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
</properties>
<modules>
<module>
abstract-factory
</module>
<module>
builder
</module>
<module>
factory-method
</module>
<module>
prototype
</module>
<module>
singleton
</module>
<module>
adapter
</module>
<module>
bridge
</module>
<module>
composite
</module>
<module>
decorator
</module>
<module>
facade
</module>
<module>
flyweight
</module>
<module>
proxy
</module>
<module>
chain
</module>
<module>
command
</module>
<module>
interpreter
</module>
<module>
iterator
</module>
<module>
mediator
</module>
<module>
memento
</module>
<module>
model-view-presenter
</module>
<module>
observer
</module>
<module>
state
</module>
<module>
strategy
</module>
<module>
template-method
</module>
<module>
visitor
</module>
<module>
double-checked-locking
</module>
<module>
servant
</module>
<module>
service-locator
</module>
<module>
null-object
</module>
<module>
event-aggregator
</module>
<module>
callback
</module>
<module>
execute-around
</module>
<module>
property
</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
<version>
4.11
</version>
<scope>
test
</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<!-- Tell maven to compile using Java 1.7 -->
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
<version>
3.0
</version>
<configuration>
<source>
1.7
</source>
<target>
1.7
</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
intercepting-filter/src/main/App.java
0 → 100644
浏览文件 @
2392d6ca
import
java.util.*
;
import
javax.swing.*
;
import
javax.swing.table.*
;
import
java.awt.*
;
import
java.awt.event.*
;
public
class
App
{
public
static
void
main
(
String
[]
args
){
FilterManager
filterManager
=
new
FilterManager
(
new
Target
());
filterManager
.
setFilter
(
new
NameFilter
());
filterManager
.
setFilter
(
new
ContactFilter
());
filterManager
.
setFilter
(
new
AddressFilter
());
filterManager
.
setFilter
(
new
DepositFilter
());
filterManager
.
setFilter
(
new
OrderFilter
());
Client
client
=
new
Client
();
client
.
setFilterManager
(
filterManager
);
}
}
interface
Filter
{
public
String
execute
(
String
[]
request
);
}
class
NameFilter
implements
Filter
{
public
String
execute
(
String
[]
request
){
if
(
request
[
0
].
equals
(
""
)
||
request
[
0
].
matches
(
".*[^\\w|\\s]+.*"
)){
return
null
;
}
else
return
request
[
0
];
}
}
class
ContactFilter
implements
Filter
{
public
String
execute
(
String
[]
request
){
if
(
request
[
1
].
equals
(
""
)
||
request
[
1
].
matches
(
".*[^\\d]+.*"
)
||
request
[
1
].
length
()
!=
11
){
return
null
;
}
else
return
request
[
1
];
}
}
class
AddressFilter
implements
Filter
{
public
String
execute
(
String
[]
request
){
if
(
request
[
2
].
equals
(
""
)){
return
null
;
}
else
return
request
[
2
];
}
}
class
DepositFilter
implements
Filter
{
public
String
execute
(
String
[]
request
){
if
(
request
[
3
].
equals
(
""
)){
return
null
;
}
else
return
request
[
3
];
}
}
class
OrderFilter
implements
Filter
{
public
String
execute
(
String
[]
request
){
if
(
request
[
4
].
equals
(
""
)){
return
null
;
}
else
return
request
[
4
];
}
}
class
Target
extends
JFrame
{
JTable
jt
;
JScrollPane
jsp
;
DefaultTableModel
dtm
;
JButton
del
;
public
Target
(){
super
(
"Order System"
);
setDefaultCloseOperation
(
EXIT_ON_CLOSE
);
setSize
(
640
,
480
);
dtm
=
new
DefaultTableModel
(
new
Object
[]{
"Name"
,
"Contact Number"
,
"Address"
,
"Deposit Number"
,
"Order"
},
0
);
jt
=
new
JTable
(
dtm
);
del
=
new
JButton
(
"Delete"
);
setup
();
}
private
void
setup
(){
setLayout
(
new
BorderLayout
());
JPanel
bot
=
new
JPanel
();
add
(
jt
.
getTableHeader
(),
BorderLayout
.
NORTH
);
bot
.
setLayout
(
new
BorderLayout
());
bot
.
add
(
del
,
BorderLayout
.
EAST
);
add
(
bot
,
BorderLayout
.
SOUTH
);
jsp
=
new
JScrollPane
(
jt
);
jsp
.
setPreferredSize
(
new
Dimension
(
500
,
250
));
add
(
jsp
,
BorderLayout
.
CENTER
);
del
.
addActionListener
(
new
DListener
());
JRootPane
rootPane
=
SwingUtilities
.
getRootPane
(
del
);
rootPane
.
setDefaultButton
(
del
);
setVisible
(
true
);
}
public
void
execute
(
String
[]
request
){
//System.out.println(request[4]);
dtm
.
addRow
(
new
Object
[]{
request
[
0
],
request
[
1
],
request
[
2
],
request
[
3
],
request
[
4
]});
}
class
DListener
implements
ActionListener
{
@Override
public
void
actionPerformed
(
ActionEvent
e
){
int
temp
=
jt
.
getSelectedRow
();
if
(
temp
==
-
1
)
return
;
int
temp2
=
jt
.
getSelectedRowCount
();
for
(
int
i
=
0
;
i
<
temp2
;
i
++){
dtm
.
removeRow
(
temp
);
}
}
}
}
class
FilterChain
{
private
ArrayList
<
Filter
>
filters
=
new
ArrayList
<
Filter
>();
private
Target
target
;
public
void
addFilter
(
Filter
filter
){
filters
.
add
(
filter
);
}
public
String
execute
(
String
request
){
String
tempout
[]
=
new
String
[
filters
.
size
()];
String
tempin
[]
=
request
.
split
(
"&"
);
int
i
=
0
;
try
{
for
(
Filter
filter:
filters
){
tempout
[
i
]
=
null
;
tempout
[
i
++]
=
filter
.
execute
(
tempin
);
//System.out.println(tempout[i]);
}
}
catch
(
Exception
e
){
return
"NOT ENOUGHT INPUT"
;
}
if
(
tempout
[
4
]
==
null
){
return
"INVALID ORDER!"
;
}
else
if
(
tempout
[
3
]
==
null
){
return
"INVALID DEPOSIT NUMBER!"
;
}
else
if
(
tempout
[
2
]
==
null
){
return
"INVALID ADRDESS!"
;
}
else
if
(
tempout
[
1
]
==
null
){
return
"INVALID Contact Number!"
;
}
else
if
(
tempout
[
0
]
==
null
){
return
"INVALID Name!"
;
}
else
{
target
.
execute
(
tempout
);
return
"RUNNING..."
;
}
}
public
void
setTarget
(
Target
target
){
this
.
target
=
target
;
}
}
class
FilterManager
{
FilterChain
filterChain
;
public
FilterManager
(
Target
target
){
filterChain
=
new
FilterChain
();
filterChain
.
setTarget
(
target
);
}
public
void
setFilter
(
Filter
filter
){
filterChain
.
addFilter
(
filter
);
}
public
String
filterRequest
(
String
request
){
return
filterChain
.
execute
(
request
);
}
}
class
Client
extends
JFrame
{
FilterManager
filterManager
;
JLabel
jl
;
JTextField
[]
jtfarr
;
JTextArea
[]
jtaarr
;
JButton
[]
buttarr
;
public
Client
(){
super
(
"Client System"
);
setDefaultCloseOperation
(
EXIT_ON_CLOSE
);
setSize
(
300
,
300
);
jl
=
new
JLabel
(
"RUNNING..."
);
jtfarr
=
new
JTextField
[
3
];
for
(
int
i
=
0
;
i
<
3
;
i
++){
jtfarr
[
i
]
=
new
JTextField
();
}
jtaarr
=
new
JTextArea
[
2
];
for
(
int
i
=
0
;
i
<
2
;
i
++){
jtaarr
[
i
]
=
new
JTextArea
();
}
buttarr
=
new
JButton
[
2
];
buttarr
[
0
]
=
new
JButton
(
"Clear"
);
buttarr
[
1
]
=
new
JButton
(
"Process"
);
setup
();
}
private
void
setup
(){
setLayout
(
new
BorderLayout
());
JPanel
panel
=
new
JPanel
();
add
(
jl
,
BorderLayout
.
SOUTH
);
add
(
panel
,
BorderLayout
.
CENTER
);
panel
.
setLayout
(
new
GridLayout
(
6
,
2
));
panel
.
add
(
new
JLabel
(
"Name"
));
panel
.
add
(
jtfarr
[
0
]);
panel
.
add
(
new
JLabel
(
"Contact Number"
));
panel
.
add
(
jtfarr
[
1
]);
panel
.
add
(
new
JLabel
(
"Address"
));
panel
.
add
(
jtaarr
[
0
]);
panel
.
add
(
new
JLabel
(
"Deposit Number"
));
panel
.
add
(
jtfarr
[
2
]);
panel
.
add
(
new
JLabel
(
"Order"
));
panel
.
add
(
jtaarr
[
1
]);
panel
.
add
(
buttarr
[
0
]);
panel
.
add
(
buttarr
[
1
]);
buttarr
[
0
].
addActionListener
(
new
ActionListener
(){
@Override
public
void
actionPerformed
(
ActionEvent
e
){
for
(
JTextArea
i
:
jtaarr
){
i
.
setText
(
""
);
}
for
(
JTextField
i
:
jtfarr
){
i
.
setText
(
""
);
}
}
});
buttarr
[
1
].
addActionListener
(
new
ActionListener
(){
@Override
public
void
actionPerformed
(
ActionEvent
e
){
jl
.
setText
(
sendRequest
(
jtfarr
[
0
].
getText
()+
"&"
+
jtfarr
[
1
].
getText
()+
"&"
+
jtaarr
[
0
].
getText
()+
"&"
+
jtfarr
[
2
].
getText
()+
"&"
+
jtaarr
[
1
].
getText
()));
}
});
JRootPane
rootPane
=
SwingUtilities
.
getRootPane
(
buttarr
[
1
]);
rootPane
.
setDefaultButton
(
buttarr
[
1
]);
setVisible
(
true
);
}
public
void
setFilterManager
(
FilterManager
filterManager
){
this
.
filterManager
=
filterManager
;
}
public
String
sendRequest
(
String
request
){
return
filterManager
.
filterRequest
(
request
);
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录