package com.ibeetl.admin.core.web.query;

import java.lang.reflect.Field;
import java.util.concurrent.ConcurrentHashMap;

import com.ibeetl.admin.core.annotation.Query;
import com.ibeetl.admin.core.util.ClassLoaderUtil;

/**
 * 页面查询条件
 * @author lijiazhi
 *
 */
public class QueryParser {
	ConcurrentHashMap<String, QueryData> cache = new ConcurrentHashMap<> ();
	public QueryData getData(String querClass){
		if(cache.containsKey(querClass)){
			return cache.get(querClass);
		}
		
		Class cls = ClassLoaderUtil.loadClass(querClass);
		Field[] fs =cls.getDeclaredFields();
		QueryData data = new QueryData();
		for(Field f:fs){
			Query query = f.getAnnotation(Query.class);
			
			if(query==null){
				continue ;
			}
			QueryItem item = new QueryItem();
			item.setFieldName(f.getName());
			item.setName(query.name());
			item.setShow(query.display());
			item.setType(query.type());
			item.setDictName(query.dict());
			item.setFuzzy(query.fuzzy());
			item.setGroup(query.group());
			data.addQueryItem(item);
		}
		
		cache.put(querClass, data);
		return data;
		
	}
}
