package com.alibaba.doris.client; import java.util.Properties; import org.apache.commons.lang.math.NumberUtils; import com.alibaba.doris.client.net.Connection; import com.alibaba.doris.client.net.DataSource; import com.alibaba.doris.client.pool.ConnectionPool; /** * @author ajun Email:jack.yuj@alibaba-inc.com */ public class DefaultDataSourceImpl implements DataSource { public Connection getConnection() { return pool.getConnection(); } public int getSequence() { return sequence; } public void setSequence(int sequence) { this.sequence = sequence; } public void setNo(int no) { this.no = no; } public int getNo() { return this.no; } public void setConfigProperties(Properties properties) { this.properties = properties; } public void setIp(String ip) { this.ip = ip; } public String getIp() { return ip; } public Properties getProperties() { return properties; } public void setPort(int port) { this.port = port; } public int getPort() { return port; } public void initConfig() { int connectionPerNode = 8; if (properties != null) { connectionPerNode = NumberUtils.toInt( properties.getProperty("doris.config.client.connectionpernode"), 8); } pool = new ConnectionPool(ip, port, connectionPerNode); } public void close() { pool.closeAll(); } @Override public boolean equals(Object obj) { if (null == obj) { return false; } if (this == obj) { return true; } if (obj instanceof DefaultDataSourceImpl) { DefaultDataSourceImpl v = (DefaultDataSourceImpl) obj; if (this.ip.equals(v.ip) && (this.port == v.port) && (this.no == v.no) && (this.sequence == v.sequence)) { return true; } } return false; } @Override public int hashCode() { int result = 17; result = 31 * result + ip.hashCode(); result = 31 * result + port; result = 31 * result + no; result = 31 * result + sequence; return result; } private String ip; private int port; private int sequence; private int no; private Properties properties; private ConnectionPool pool; @Override public String toString() { return String.format("[DataSource : %d.%d, ip=%s, port=%d]", sequence, no, ip, port); } }