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}