first commit
This commit is contained in:
100
hrmsEjb/org/apache/commons/digester/RulesBase.java
Normal file
100
hrmsEjb/org/apache/commons/digester/RulesBase.java
Normal file
@@ -0,0 +1,100 @@
|
||||
package org.apache.commons.digester;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
public class RulesBase implements Rules {
|
||||
protected HashMap cache = new HashMap();
|
||||
|
||||
protected Digester digester = null;
|
||||
|
||||
protected String namespaceURI = null;
|
||||
|
||||
protected ArrayList rules = new ArrayList();
|
||||
|
||||
public Digester getDigester() {
|
||||
return this.digester;
|
||||
}
|
||||
|
||||
public void setDigester(Digester digester) {
|
||||
this.digester = digester;
|
||||
Iterator items = this.rules.iterator();
|
||||
while (items.hasNext()) {
|
||||
Rule item = items.next();
|
||||
item.setDigester(digester);
|
||||
}
|
||||
}
|
||||
|
||||
public String getNamespaceURI() {
|
||||
return this.namespaceURI;
|
||||
}
|
||||
|
||||
public void setNamespaceURI(String namespaceURI) {
|
||||
this.namespaceURI = namespaceURI;
|
||||
}
|
||||
|
||||
public void add(String pattern, Rule rule) {
|
||||
List list = (List)this.cache.get(pattern);
|
||||
if (list == null) {
|
||||
list = new ArrayList();
|
||||
this.cache.put(pattern, list);
|
||||
}
|
||||
list.add(rule);
|
||||
this.rules.add(rule);
|
||||
if (this.digester != null)
|
||||
rule.setDigester(this.digester);
|
||||
if (this.namespaceURI != null)
|
||||
rule.setNamespaceURI(this.namespaceURI);
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
this.cache.clear();
|
||||
this.rules.clear();
|
||||
}
|
||||
|
||||
public List match(String pattern) {
|
||||
return match(null, pattern);
|
||||
}
|
||||
|
||||
public List match(String namespaceURI, String pattern) {
|
||||
List rulesList = lookup(namespaceURI, pattern);
|
||||
if (rulesList == null || rulesList.size() < 1) {
|
||||
String longKey = "";
|
||||
Iterator keys = this.cache.keySet().iterator();
|
||||
while (keys.hasNext()) {
|
||||
String key = keys.next();
|
||||
if (key.startsWith("*/") && (
|
||||
pattern.equals(key.substring(2)) || pattern.endsWith(key.substring(1))))
|
||||
if (key.length() > longKey.length()) {
|
||||
rulesList = lookup(namespaceURI, key);
|
||||
longKey = key;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (rulesList == null)
|
||||
rulesList = new ArrayList();
|
||||
return rulesList;
|
||||
}
|
||||
|
||||
public List rules() {
|
||||
return this.rules;
|
||||
}
|
||||
|
||||
protected List lookup(String namespaceURI, String pattern) {
|
||||
List list = (List)this.cache.get(pattern);
|
||||
if (list == null)
|
||||
return null;
|
||||
if (namespaceURI == null || namespaceURI.length() == 0)
|
||||
return list;
|
||||
ArrayList results = new ArrayList();
|
||||
Iterator items = list.iterator();
|
||||
while (items.hasNext()) {
|
||||
Rule item = items.next();
|
||||
if (namespaceURI.equals(item.getNamespaceURI()) || item.getNamespaceURI() == null)
|
||||
results.add(item);
|
||||
}
|
||||
return results;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user