001package gu.dtalk.redis; 002 003import java.net.URI; 004import java.util.Collections; 005import java.util.Map; 006 007import com.google.common.base.MoreObjects; 008import com.google.common.base.Predicates; 009import com.google.common.collect.Maps; 010 011import gu.simplemq.redis.JedisPoolLazy.PropName; 012 013/** 014 * 自定义配置默认实现 015 * @author guyadong 016 * 017 */ 018public class DefaultCustomRedisConfigProvider implements RedisConfigProvider { 019 020 private static final Map<PropName, Object> redisParameters = Maps.newHashMap(); 021 022 public DefaultCustomRedisConfigProvider() { 023 } 024 025 @Override 026 public String getHost() { 027 return (String) redisParameters.get(PropName.host); 028 } 029 030 @Override 031 public void setHost(String host) { 032 redisParameters.put(PropName.host, host); 033 } 034 035 @Override 036 public int getPort() { 037 return (int) MoreObjects.firstNonNull(redisParameters.get(PropName.port),0); 038 } 039 040 @Override 041 public void setPort(int port) { 042 redisParameters.put(PropName.port, port); 043 } 044 045 @Override 046 public String getPassword() { 047 return (String) redisParameters.get(PropName.password); 048 } 049 050 @Override 051 public void setPassword(String password) { 052 redisParameters.put(PropName.password, password); 053 } 054 055 @Override 056 public int getDatabase() { 057 return (int) MoreObjects.firstNonNull(redisParameters.get(PropName.database),0); 058 } 059 060 @Override 061 public void setDatabase(int database) { 062 redisParameters.put(PropName.database, database); 063 } 064 065 @Override 066 public int getTimeout() { 067 return (int) MoreObjects.firstNonNull(redisParameters.get(PropName.timeout),0); 068 } 069 070 @Override 071 public void setTimeout(int timeout) { 072 redisParameters.put(PropName.timeout, timeout); 073 } 074 075 @Override 076 public URI getURI() { 077 return (URI) redisParameters.get(PropName.uri); 078 } 079 080 @Override 081 public void setURI(URI uri) { 082 redisParameters.put(PropName.uri, uri); 083 } 084 085 @Override 086 public final RedisConfigType type() { 087 return RedisConfigType.CUSTOM; 088 } 089 090 /** 091 * 初始化redis参数 092 * @param redisParameters 093 */ 094 public static void initredisParameters(Map<PropName, Object> redisParameters){ 095 redisParameters = MoreObjects.firstNonNull(redisParameters, Collections.<PropName, Object>emptyMap()); 096 DefaultCustomRedisConfigProvider.redisParameters.clear(); 097 DefaultCustomRedisConfigProvider.redisParameters.putAll(redisParameters); 098 } 099 100 /** 101 * @return redisparameters 102 */ 103 public static Map<PropName, Object> readRedisparameters() { 104 return Maps.filterValues(redisParameters, Predicates.notNull()); 105 } 106}