// Path: cat-core/src/main/java/com/dianping/cat/config/server/ServerFilterConfigManager.java
// public class ServerFilterConfigManager implements Initializable {
// 
// 	@Inject
// 	protected ConfigDao m_configDao;
// 
// 	@Inject
// 	protected ContentFetcher m_fetcher;
// 
// 	private volatile ServerFilterConfig m_config;
// 
// 	private int m_configId;
// 
// 	private long m_modifyTime;
// 
// 	private static final String CONFIG_NAME = "serverFilter";
// 
// 	public boolean discardTransaction(String type, String name) {
// 		if ("Cache.web".equals(type) || "ABTest".equals(type)) {
// 			return true;
// 		}
// 		if (m_config.getTransactionTypes().contains(type) && m_config.getTransactionNames().contains(name)) {
// 			return true;
// 		}
// 		return false;
// 	}
// 
// 	public ServerFilterConfig getConfig() {
// 		return m_config;
// 	}
// 
// 	public Map<String, CrashLogDomain> getCrashLogDomains() {
// 		return m_config.getCrashLogDomains();
// 	}
// 
// 	public Set<String> getUnusedDomains() {
// 		Set<String> unusedDomains = new HashSet<String>();
// 
// 		unusedDomains.addAll(m_config.getCrashLogDomains().keySet());
// 		unusedDomains.addAll(m_config.getDomains());
// 		return unusedDomains;
// 	}
// 
// 	@Override
// 	public void initialize() throws InitializationException {
// 		try {
// 			Config config = m_configDao.findByName(CONFIG_NAME, ConfigEntity.READSET_FULL);
// 			String content = config.getContent();
// 
// 			m_configId = config.getId();
// 			m_modifyTime = config.getModifyDate().getTime();
// 			m_config = DefaultSaxParser.parse(content);
// 		} catch (DalNotFoundException e) {
// 			try {
// 				String content = m_fetcher.getConfigContent(CONFIG_NAME);
// 				Config config = m_configDao.createLocal();
// 
// 				config.setName(CONFIG_NAME);
// 				config.setContent(content);
// 				m_configDao.insert(config);
// 				m_configId = config.getId();
// 				m_config = DefaultSaxParser.parse(content);
// 			} catch (Exception ex) {
// 				Cat.logError(ex);
// 			}
// 		} catch (Exception e) {
// 			Cat.logError(e);
// 		}
// 		if (m_config == null) {
// 			m_config = new ServerFilterConfig();
// 		}
// 		Threads.forGroup(CatConstant.CAT).start(new ConfigReloadTask());
// 	}
// 
// 	public boolean insert(String xml) {
// 		try {
// 			m_config = DefaultSaxParser.parse(xml);
// 
// 			return storeConfig();
// 		} catch (Exception e) {
// 			Cat.logError(e);
// 			return false;
// 		}
// 	}
// 
// 	public boolean isCrashLog(String domain) {
// 		return m_config.getCrashLogDomains().containsKey(domain);
// 	}
// 
// 	public boolean storeConfig() {
// 		try {
// 			Config config = m_configDao.createLocal();
// 
// 			config.setId(m_configId);
// 			config.setKeyId(m_configId);
// 			config.setName(CONFIG_NAME);
// 			config.setContent(m_config.toString());
// 			m_configDao.updateByPK(config, ConfigEntity.UPDATESET_FULL);
// 		} catch (Exception e) {
// 			Cat.logError(e);
// 			return false;
// 		}
// 		return true;
// 	}
// 
// 	public boolean validateDomain(String domain) {
// 		return !m_config.getDomains().contains(domain) && !m_config.getCrashLogDomains().containsKey(domain);
// 	}
// 
// 	public void refreshConfig() throws DalException, SAXException, IOException {
// 		Config config = m_configDao.findByName(CONFIG_NAME, ConfigEntity.READSET_FULL);
// 		long modifyTime = config.getModifyDate().getTime();
// 
// 		synchronized (this) {
// 			if (modifyTime > m_modifyTime) {
// 				String content = config.getContent();
// 				ServerFilterConfig serverConfig = DefaultSaxParser.parse(content);
// 
// 				m_config = serverConfig;
// 				m_modifyTime = modifyTime;
// 			}
// 		}
// 	}
// 
// 	public class ConfigReloadTask implements Task {
// 
// 		@Override
// 		public String getName() {
// 			return getClass().getSimpleName();
// 		}
// 
// 		@Override
// 		public void run() {
// 			boolean active = true;
// 
// 			while (active) {
// 				try {
// 					refreshConfig();
// 				} catch (Exception e) {
// 					Cat.logError(e);
// 				}
// 				try {
// 					Thread.sleep(TimeHelper.ONE_MINUTE);
// 				} catch (InterruptedException e) {
// 					active = false;
// 				}
// 			}
// 		}
// 
// 		@Override
// 		public void shutdown() {
// 		}
// 	}
// 
//    public boolean discardEvent(String type, String name) {
//       return false;
//    }
// 
// }


import java.util.Date;
import java.util.Map;
import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.config.server.ServerFilterConfigManager;
import com.dianping.cat.consumer.storage.model.entity.StorageReport;
import com.dianping.cat.consumer.storage.model.transform.DefaultNativeBuilder;
import com.dianping.cat.consumer.storage.model.transform.DefaultNativeParser;
import com.dianping.cat.consumer.storage.model.transform.DefaultSaxParser;
import com.dianping.cat.report.ReportDelegate;
import com.dianping.cat.task.TaskManager;
import com.dianping.cat.task.TaskManager.TaskProlicy;
package com.dianping.cat.consumer.storage;




public class StorageDelegate implements ReportDelegate<StorageReport> {

	@Inject
	private TaskManager m_taskManager;

	@Inject
// Path: cat-core/src/main/java/com/dianping/cat/config/server/ServerFilterConfigManager.java
// public class ServerFilterConfigManager implements Initializable {
// 
// 	@Inject
// 	protected ConfigDao m_configDao;
// 
// 	@Inject
// 	protected ContentFetcher m_fetcher;
// 
// 	private volatile ServerFilterConfig m_config;
// 
// 	private int m_configId;
// 
// 	private long m_modifyTime;
// 
// 	private static final String CONFIG_NAME = "serverFilter";
// 
// 	public boolean discardTransaction(String type, String name) {
// 		if ("Cache.web".equals(type) || "ABTest".equals(type)) {
// 			return true;
// 		}
// 		if (m_config.getTransactionTypes().contains(type) && m_config.getTransactionNames().contains(name)) {
// 			return true;
// 		}
// 		return false;
// 	}
// 
// 	public ServerFilterConfig getConfig() {
// 		return m_config;
// 	}
// 
// 	public Map<String, CrashLogDomain> getCrashLogDomains() {
// 		return m_config.getCrashLogDomains();
// 	}
// 
// 	public Set<String> getUnusedDomains() {
// 		Set<String> unusedDomains = new HashSet<String>();
// 
// 		unusedDomains.addAll(m_config.getCrashLogDomains().keySet());
// 		unusedDomains.addAll(m_config.getDomains());
// 		return unusedDomains;
// 	}
// 
// 	@Override
// 	public void initialize() throws InitializationException {
// 		try {
// 			Config config = m_configDao.findByName(CONFIG_NAME, ConfigEntity.READSET_FULL);
// 			String content = config.getContent();
// 
// 			m_configId = config.getId();
// 			m_modifyTime = config.getModifyDate().getTime();
// 			m_config = DefaultSaxParser.parse(content);
// 		} catch (DalNotFoundException e) {
// 			try {
// 				String content = m_fetcher.getConfigContent(CONFIG_NAME);
// 				Config config = m_configDao.createLocal();
// 
// 				config.setName(CONFIG_NAME);
// 				config.setContent(content);
// 				m_configDao.insert(config);
// 				m_configId = config.getId();
// 				m_config = DefaultSaxParser.parse(content);
// 			} catch (Exception ex) {
// 				Cat.logError(ex);
// 			}
// 		} catch (Exception e) {
// 			Cat.logError(e);
// 		}
// 		if (m_config == null) {
// 			m_config = new ServerFilterConfig();
// 		}
// 		Threads.forGroup(CatConstant.CAT).start(new ConfigReloadTask());
// 	}
// 
// 	public boolean insert(String xml) {
// 		try {
// 			m_config = DefaultSaxParser.parse(xml);
// 
// 			return storeConfig();
// 		} catch (Exception e) {
// 			Cat.logError(e);
// 			return false;
// 		}
// 	}
// 
// 	public boolean isCrashLog(String domain) {
// 		return m_config.getCrashLogDomains().containsKey(domain);
// 	}
// 
// 	public boolean storeConfig() {
// 		try {
// 			Config config = m_configDao.createLocal();
// 
// 			config.setId(m_configId);
// 			config.setKeyId(m_configId);
// 			config.setName(CONFIG_NAME);
// 			config.setContent(m_config.toString());
// 			m_configDao.updateByPK(config, ConfigEntity.UPDATESET_FULL);
// 		} catch (Exception e) {
// 			Cat.logError(e);
// 			return false;
// 		}
// 		return true;
// 	}
// 
// 	public boolean validateDomain(String domain) {
// 		return !m_config.getDomains().contains(domain) && !m_config.getCrashLogDomains().containsKey(domain);
// 	}
// 
// 	public void refreshConfig() throws DalException, SAXException, IOException {
// 		Config config = m_configDao.findByName(CONFIG_NAME, ConfigEntity.READSET_FULL);
// 		long modifyTime = config.getModifyDate().getTime();
// 
// 		synchronized (this) {
// 			if (modifyTime > m_modifyTime) {
// 				String content = config.getContent();
// 				ServerFilterConfig serverConfig = DefaultSaxParser.parse(content);
// 
// 				m_config = serverConfig;
// 				m_modifyTime = modifyTime;
// 			}
// 		}
// 	}
// 
// 	public class ConfigReloadTask implements Task {
// 
// 		@Override
// 		public String getName() {
// 			return getClass().getSimpleName();
// 		}
// 
// 		@Override
// 		public void run() {
// 			boolean active = true;
// 
// 			while (active) {
// 				try {
// 					refreshConfig();
// 				} catch (Exception e) {
// 					Cat.logError(e);
// 				}
// 				try {
// 					Thread.sleep(TimeHelper.ONE_MINUTE);
// 				} catch (InterruptedException e) {
// 					active = false;
// 				}
// 			}
// 		}
// 
// 		@Override
// 		public void shutdown() {
// 		}
// 	}
// 
//    public boolean discardEvent(String type, String name) {
//       return false;
//    }
// 
// }


// Path: cat-consumer/src/main/java/com/dianping/cat/consumer/storage/StorageDelegate.java
import java.util.Date;
import java.util.Map;
import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.config.server.ServerFilterConfigManager;
import com.dianping.cat.consumer.storage.model.entity.StorageReport;
import com.dianping.cat.consumer.storage.model.transform.DefaultNativeBuilder;
import com.dianping.cat.consumer.storage.model.transform.DefaultNativeParser;
import com.dianping.cat.consumer.storage.model.transform.DefaultSaxParser;
import com.dianping.cat.report.ReportDelegate;
import com.dianping.cat.task.TaskManager;
import com.dianping.cat.task.TaskManager.TaskProlicy;

package com.dianping.cat.consumer.storage;




public class StorageDelegate implements ReportDelegate<StorageReport> {

	@Inject
	private TaskManager m_taskManager;

	@Inject
	private ServerFilterConfigManager m_configManager;