All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.nutz.dao.impl.entity.LinkFieldSet Maven / Gradle / Ivy

Go to download

Nutz, which is a collections of lightweight frameworks, each of them can be used independently

There is a newer version: 1.r.72
Show newest version
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