org.nutz.dao.impl.entity.LinkFieldSet Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of nutz Show documentation
Show all versions of nutz Show documentation
Nutz, which is a collections of lightweight frameworks, each of them can be used independently
package org.nutz.dao.impl.entity;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import org.nutz.dao.entity.LinkField;
import org.nutz.dao.entity.LinkVisitor;
import org.nutz.lang.Strings;
/**
* 提供一个帮助类,统一处理几种映射字段集合的常用操作
*
* @author zozoh([email protected])
*/
public class LinkFieldSet {
private ArrayList lnks;
private Map> cache;
public LinkFieldSet() {
lnks = new ArrayList(3);
cache = new HashMap>();
}
void add(LinkField lnk) {
lnks.add(lnk);
}
public List getAll() {
return lnks;
}
List visit(Object obj, String regex, LinkVisitor visitor) {
List list = getList(regex);
if (null != visitor)
for (LinkField lnk : list)
visitor.visit(obj, lnk);
return list;
}
List getList(String regex) {
ArrayList list;
if (Strings.isBlank(regex)) {
list = lnks;
} else {
list = cache.get(regex);
if (null == list) {
synchronized (cache) {
list = cache.get(regex);
if (null == list) {
list = new ArrayList(lnks.size());
for (LinkField lnk : lnks)
if (Pattern.matches(regex, lnk.getName()))
list.add(lnk);
list.trimToSize();
cache.put(regex, list);
}
}
}
}
return list;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy