package cn.org.rapid_framework.generator.ext.ant; import java.io.File; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import cn.org.rapid_framework.generator.ext.tableconfig.builder.TableConfigXmlBuilder; import cn.org.rapid_framework.generator.ext.tableconfig.model.TableConfigSet; import cn.org.rapid_framework.generator.util.StringHelper; /** * 如果要使用TableConfigSet的GeneratorTask,则可以继承该类 * * @author badqiu * */ public abstract class BaseTableConfigSetTask extends BaseGeneratorTask{ private String tableConfigFiles; protected TableConfigSet tableConfigSet; private static ThreadLocal<Map> threadLocalCache = new ThreadLocal<Map>(); @Override protected void executeBefore() throws Exception { super.executeBefore(); if(tableConfigFiles == null || "".equals(tableConfigFiles.trim())) { throw new Exception("'tableConfigFiles' must be not null"); } if(tableConfigSet == null) { Map cache = getThreadLocalCache(); tableConfigSet = (TableConfigSet)cache.get(tableConfigFiles); if(tableConfigSet == null) { tableConfigSet = parseForTableConfigSet(getPackage(), getProject().getBaseDir().getAbsoluteFile(), tableConfigFiles); } cache.put(tableConfigFiles, tableConfigSet); } } public static Map getThreadLocalCache() { Map map = threadLocalCache.get(); if(map == null) { map = new HashMap(); threadLocalCache.set(map); } return map; } public void setTableConfigFiles(String tableConfigFiles) { this.tableConfigFiles = tableConfigFiles; } static TableConfigSet parseForTableConfigSet(String _package,File basedir,String tableConfigFiles) { return new TableConfigXmlBuilder().parseFromXML(_package, basedir, tableConfigFiles); } }