建造父目录节点以及数的像关操作
public
class
ResultFolder
extends
ResultItem
{

/** */
/**
* 字对象向量
*/
private
Vector vtItems
=
new
Vector();

/** */
/**
* 构造函数
*
@param
sName 参数名称
*/
public
ResultFolder(String sName)
{
super
(sName);
}
/** */
/**
* 设置内容
*
@param
newValue 内容
*/
public
void
setValue(String newValue)
{
//
Can't set value to a ResultFolder
//
System.out.println("Can't set value to a ResultFolder");
}
/** */
/**
* 获取内容
*
@return
内容
*/
public
String getValue()
{
//
Can't get value of a ResultFolder"
//
System.out.println("Can't get value of a ResultFolder");
return
""
;
}
/** */
/**
* 增加数据子项
*
@param
item 子项
*/
public
void
appendChild(ResultItem item)
{
vtItems.addElement(item);
item.setParent(
this
);
}
/** */
/**
* 从结果树中移去一个节点,不进行进行遍历查找
*
@param
item 节点
*
@return
true-成功,flase-失败
*/
public
boolean
removeChild(ResultItem item)
{
return
removeChild(item,
false
);
}
/** */
/**
* 从结果树中移去一个节点,进行递归查找
*
@param
item 节点
*
@param
bRecursive true-递归查找, false-不作递归查找
*
@return
true-成功, false-失败
*/
public
boolean
removeChild(ResultItem item,
boolean
bRecursive)
{

if
(
!
vtItems.removeElement(item)
&&
bRecursive)
{

for
(
int
i
=
0
; i
<
vtItems.size(); i
++
)
{
Object o
=
vtItems.elementAt(i);

if
( o
instanceof
ResultFolder)
{
( (ResultFolder) o).removeChild(item,
true
);
}
}
}
return
false
;
}
/** */
/**
* 递归查找具有指定值的ResultItem
*
@param
sKey 名称
*
@param
bRecursive 是否递归查找
*
@return
节点
*/
public
ResultItem findSingleItem(String sKey,
boolean
bRecursive)
{
ResultItem item
=
null
;

for
(
int
i
=
0
; i
<
vtItems.size(); i
++
)
{
item
=
(ResultItem)vtItems.elementAt(i);

if
(item.getName().equalsIgnoreCase(sKey))
{
return
item;
}
else
if
(bRecursive
&&
item
instanceof
ResultFolder)
{
ResultItem subItem
=
((ResultFolder)item).findSingleItem(sKey,
true
);

if
(subItem
!=
null
)
{
return
subItem;
}
}
}
return
null
;
}
/** */
/**
* 递归查找具有指定值的ResultItem的值
*
@param
sKey 名称
*
@param
bRecursive 是否递归查找
*
@return
节点的值
*/
public
String findSingleValue(String sKey,
boolean
bRecursive)
{
ResultItem item
=
findSingleItem(sKey, bRecursive);

if
(item
!=
null
)
{
return
item.getValue();
}
return
null
;
}
/** */
/**
* 非递归查找具有指定值的ResultItem的值
*
@param
sKey 节点名称
*
@return
节点值
*/
public
String findSingleValue(String sKey)
{
return
findSingleValue(sKey,
false
);
}
/** */
/**
* 找到关键字为特定值的Item列表
*
@param
sKey 节点名称
*
@return
Item向量
*/
public
Vector findItems(String sKey)
{
Vector vt
=
new
Vector();

for
(
int
i
=
0
; i
<
vtItems.size(); i
++
)
{
ResultItem item
=
(ResultItem)vtItems.elementAt(i);

if
(item.getName().equalsIgnoreCase(sKey))
{
vt.addElement(item);
}
}
return
vt;
}
/** */
/**
* 找到关键字为特定值的Item
*
@param
sKey 节点名称
*
@return
Item
*/
public
ResultItem findSingleItem(String sKey)
{

for
(
int
i
=
0
; i
<
vtItems.size(); i
++
)
{
ResultItem item
=
(ResultItem)vtItems.elementAt(i);

if
(item.getName().equalsIgnoreCase(sKey))
{
return
item;
}
}
return
null
;
}
/** */
/**
* 追加子节点
*
@param
key 子节点名称
*
@param
value 子节点值
*
@return
子节点
*/
public
ResultItem appendChild(String key, String value)
{
ResultItem item
=
new
ResultItem(key);
item.setValue(value);
this
.appendChild(item);
return
item;
}
/** */
/**
* 追加子目录
*
@param
key 名称
*
@return
子目录
*/
public
ResultFolder appendChildFolder(String key)
{
ResultFolder folder
=
new
ResultFolder(key);
this
.appendChild(folder);
return
folder;
}
/** */
/**
* 获取子项向量
*
@return
子项向量
*/
public
Vector getChildItems()
{
return
vtItems;
}
/** */
/**
* 非递归方式判断是否含有指定子项
*
@param
aValue 子项名称
*
@return
true-是, false-否
*/
public
boolean
hasValue(String aValue)
{
return
hasValue(aValue,
false
);
}
/** */
/**
* 判断是否含有指定子项
*
@param
aValue 子项名称
*
@param
bRecursive 是否以递归方式
*
@return
true-是, false-否
*/
public
boolean
hasValue(String aValue,
boolean
bRecursive)
{

for
(
int
i
=
0
; i
<
vtItems.size(); i
++
)
{
ResultItem item
=
(ResultItem)vtItems.elementAt(i);

if
(item.getValue().equals(aValue))
{
return
true
;
}
else
if
(bRecursive
&&
(item
instanceof
ResultFolder))
{
boolean
bOK
=
((ResultFolder)item).hasValue(aValue,
true
);
if
(bOK)
return
true
;
}
}
return
false
;
}
/** */
/**
* 获取Html安全代码
*
@param
key 原代码
*
@return
Html安全代码
*/
public
String getValueByHtml(String key)
{
return
htmlEscape(findSingleValue(key));
}
/** */
/**
* Html安全代码转换程序
*
@param
xml 原代码
*
@return
Html安全代码
*/
public
static
String htmlEscape(String xml)
{
if
(xml
==
null
)
return
null
;
String ret
=
xml;
StringBuffer sb
=
new
StringBuffer();
//
do & first
int
p, q;

for
(q
=
ret.indexOf(
"
&
"
), p
=
0
; q
>=
0
; p
=
++
q, q
=
ret.indexOf(
"
&
"
, p))
{
sb.append(ret.substring(p, q));
sb.append(
"
&
"
);
}
sb.append(ret.substring(p));
ret
=
sb.toString();
sb
=
new
StringBuffer();
//
do <
for
(q
=
ret.indexOf(
"
<
"
), p
=
0
; q
>=
0
; p
=
++
q, q
=
ret.indexOf(
"
<
"
, p))
{
sb.append(ret.substring(p, q));
sb.append(
"
<
"
);
}
sb.append(ret.substring(p));
ret
=
sb.toString();
sb
=
new
StringBuffer();
//
do >
for
(q
=
ret.indexOf(
"
>
"
), p
=
0
; q
>=
0
; p
=
++
q, q
=
ret.indexOf(
"
>
"
, p))
{
sb.append(ret.substring(p, q));
sb.append(
"
>
"
);
}
sb.append(ret.substring(p));
ret
=
sb.toString();
sb
=
new
StringBuffer();
//
do return
for
(q
=
ret.indexOf(
"
\n
"
), p
=
0
; q
>=
0
; p
=
++
q, q
=
ret.indexOf(
"
\n
"
, p))
{
sb.append(ret.substring(p, q));
sb.append(
"
<br>
"
);
}
sb.append(ret.substring(p));
ret
=
sb.toString();
return
ret;
}
}
|