package policy.rule;
|
|
import java.util.ArrayList;
|
import java.util.Iterator;
|
import java.util.List;
|
|
import foundation.server.ObjectCreator;
|
|
public class RuleMetas implements Iterable<RuleMeta> {
|
|
private String buId;
|
private List<RuleMeta> items;
|
private RuleRuntimes runtimes;
|
|
public RuleMetas(String buId) {
|
this.buId = buId;
|
this.items = new ArrayList<RuleMeta>();
|
}
|
|
public RuleRuntimes getCheckRuntimes() {
|
if (runtimes != null) {
|
return runtimes;
|
}
|
|
synchronized (this) {
|
if (runtimes != null) {
|
return runtimes;
|
}
|
|
runtimes = new RuleRuntimes();
|
|
for (RuleMeta checkMeta: items) {
|
String className = checkMeta.getClassName();
|
|
try {
|
RuleAction checker = ObjectCreator.create(className);
|
checker.setMeta(checkMeta);
|
|
runtimes.loadOneChecker(checker);
|
}
|
catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
return runtimes;
|
}
|
}
|
|
public void loadOne(RuleMeta checker) {
|
items.add(checker);
|
}
|
|
public void clear() {
|
runtimes = null;
|
items.clear();
|
}
|
|
public String getBuId() {
|
return buId;
|
}
|
|
@Override
|
public Iterator<RuleMeta> iterator() {
|
return items.iterator();
|
}
|
|
}
|