/** * Alipay.com Inc. * Copyright (c) 2004-2012 All Rights Reserved. */ package com.alipay.zdal.rule.bean; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import org.apache.log4j.Logger; import com.alipay.zdal.common.Constants; import com.alipay.zdal.common.DBType; import com.alipay.zdal.rule.LogicTableRule; public class ZdalRoot { private static final Logger log = Logger .getLogger(Constants.CONFIG_LOG_NAME_LOGNAME); private DBType dbType = DBType.MYSQL; private Map<String/* key */, LogicTable> logicTableMap; private String defaultDBSelectorID; public Map<String, LogicTable> getLogicTableMap() { return Collections.unmodifiableMap(logicTableMap); } public LogicTableRule getLogicTableMap(String logicTableName) { LogicTableRule logicTableRule = getLogicTable(logicTableName); if (logicTableRule == null) { // �߼������������ڹ�����У����Դ�Ĭ�ϱ����Ѱ�ң�������Ҳ��������쳣�ˡ� if (defaultDBSelectorID != null && defaultDBSelectorID.length() != 0) { // �����Ĭ�Ϲ�����ô��ΪĬ�Ϲ����г��е�ֻ������Դ����Ҫ������������¡һ���Ժ������������֤�̰߳�ȫ DefaultLogicTableRule defaultLogicTableRule = new DefaultLogicTableRule( defaultDBSelectorID, logicTableName); logicTableRule = defaultLogicTableRule; } else { throw new IllegalArgumentException("δ���ҵ���Ӧ����,�߼���:" + logicTableName); } } return logicTableRule; } public LogicTable getLogicTable(String logicTableName) { if (logicTableName == null) { throw new IllegalArgumentException("logic table name is null"); } LogicTable logicTable = logicTableMap.get(logicTableName); return logicTable; } /** * logicMap��key���붼��ʾ������ΪСд * * @param logicTableMap */ public void setLogicTableMap(Map<String, LogicTable> logicTableMap) { this.logicTableMap = new HashMap<String, LogicTable>(logicTableMap.size()); for (Entry<String, LogicTable> entry : logicTableMap.entrySet()) { String key = entry.getKey(); if (key != null) { key = key.toLowerCase(); } this.logicTableMap.put(key, entry.getValue()); } } /** * ��Ҫע�����init�����Ǻ��ڲ����е����init�����޹صģ���Ȼ�����ڷ���һ����ʼ������ * */ public void init(String appDsName) { for (Entry<String, LogicTable> logicTableEntry : logicTableMap.entrySet()) { log.warn("WARN ## logic Table is starting :" + appDsName + "." + logicTableEntry.getKey()); LogicTable logicTable = logicTableEntry.getValue(); String logicTableName = logicTable.getLogicTableName(); if (logicTableName == null || logicTableName.length() == 0) { // ���û��ָ��logicTableName,��ô��map��key��ΪlogicTable��key logicTable.setLogicTableName(logicTableEntry.getKey()); } logicTable.setDBType(dbType); logicTable.init(); log.warn("WARN ## logic Table inited :" + logicTable.toString()); } } public DBType getDBType() { return dbType; } public void setDBType(DBType dbType) { this.dbType = dbType; } public String getDefaultDBSelectorID() { return defaultDBSelectorID; } public void setDefaultDBSelectorID(String defaultDBSelectorID) { this.defaultDBSelectorID = defaultDBSelectorID; } }