/** * Alipay.com Inc. * Copyright (c) 2004-2012 All Rights Reserved. */ package com.alipay.zdal.rule.config.beans; /** * һ�������Ķ�д����ͷֿ�ֱ�������� * һ��ҵ��һ�� * */ public class AppRule { public static final String DBINDEX_SUFFIX_READ = "_r"; public static final String DBINDEX_SUFFIX_WRITE = "_w"; private ShardRule masterRule; private ShardRule slaveRule; private ShardRule readwriteRule; public void init() { if (readwriteRule == null) { return; } if (slaveRule != null || masterRule != null) { throw new IllegalArgumentException("readwriteRule ���ܺ�masterRule��slaveRuleͬʱ����"); } try { masterRule = (ShardRule) readwriteRule.clone(); slaveRule = (ShardRule) readwriteRule.clone(); } catch (CloneNotSupportedException e) { throw new IllegalArgumentException("should not happen!!", e); } addDbIndexSuffix(masterRule, DBINDEX_SUFFIX_WRITE); addDbIndexSuffix(slaveRule, DBINDEX_SUFFIX_READ); } private void addDbIndexSuffix(ShardRule shardRule, String suffix) { for (TableRule tbr : shardRule.getTableRules().values()) { String[] dbIndexes = tbr.getDbIndexArray(); for (int i = 0; i < dbIndexes.length; i++) { dbIndexes[i] = dbIndexes[i] + suffix; } } } public ShardRule getMasterRule() { return masterRule; } public void setMasterRule(ShardRule masterRule) { this.masterRule = masterRule; } public ShardRule getSlaveRule() { return slaveRule; } public void setSlaveRule(ShardRule slaveRule) { this.slaveRule = slaveRule; } public ShardRule getReadwriteRule() { return readwriteRule; } public void setReadwriteRule(ShardRule readwriteRule) { this.readwriteRule = readwriteRule; } public boolean equals(Object obj) { if (readwriteRule != null) { return false; } AppRule appRule = (AppRule) obj; ShardRule masterRule = ((AppRule) appRule).getMasterRule(); ShardRule slaveRule = appRule.getSlaveRule(); if (this.masterRule == null || this.slaveRule == null) { return false; } if (!this.masterRule.equals(masterRule)) { return false; } if (!this.slaveRule.equals(slaveRule)) { return false; } return true; } }