OpenFire源码学习之二十:在openfire中使用redis插件(下)

Redis插件实现

首先来看下插件目录:

RedisServicePlugin

源码清单:

import java.io.File;import java.sql.Connection;import java.sql.PreparedStatement;import java.util.Collection;import java.util.HashMap;import java.util.Map;import org.jivesoftware.database.DbConnectionManager;import org.jivesoftware.openfire.XMPPServer;import org.jivesoftware.openfire.container.Plugin;import org.jivesoftware.openfire.container.PluginManager;import org.jivesoftware.util.JiveGlobals;import org.jivesoftware.util.PropertyEventDispatcher;import org.jivesoftware.util.PropertyEventListener;import org.jivesoftware.util.redis.enity.RedisConfig;import org.jivesoftware.util.redis.enity.User;import org.jivesoftware.util.redis.enity.UserVcard;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import redis.clients.jedis.Jedis;public class RedisServicePlugin implements Plugin, PropertyEventListener{private static final Logger log = LoggerFactory.getLogger(RedisServicePlugin.class);private static final String OF_REDIS_CONFIG_DELETE = "delete from redisConfiguration";private static final String OF_REDIS_CONFIG_INSERT = "INSERT INTO redisConfiguration (name, ip, port, auto) VALUES (?, ?, ?, ?)";private XMPPServer server;private boolean enabled;@Overridepublic void propertySet(String property, Map<String, Object> params) {if (property.equals("plugin.redis.enabled")) {this.enabled = Boolean.parseBoolean((String)params.get("value"));}}……public boolean isEnabled() {return enabled;}public void setEnabled(boolean enabled) {this.enabled = enabled;JiveGlobals.setProperty("plugin.redis.enabled", enabled ? "true" : "false");}@Overridepublic void initializePlugin(PluginManager manager, File pluginDirectory) {enabled = JiveGlobals.getBooleanProperty("plugin.redis.enabled", true);server = XMPPServer.getInstance();PropertyEventDispatcher.addListener(this);}@Overridepublic void destroyPlugin() {enabled = JiveGlobals.getBooleanProperty("plugin.redis.enabled", false);PropertyEventDispatcher.removeListener(this);}public void initializeAllData () {Collection<RedisConfig> crcfs = getAllRedisConfig();if (!crcfs.isEmpty()) {for (RedisConfig rcf : crcfs) {if ("REDIS_USER".equals(rcf.getName())) {setRedisByUserInfo();}}}}public void saveRedisConfig(Collection<RedisConfig> object) {PreparedStatement pstmt = null;Connection con = null;try {con = (Connection) DbConnectionManager.getConnection();if (object != null) {pstmt = con.prepareStatement(OF_REDIS_CONFIG_DELETE);pstmt.execute();pstmt = (PreparedStatement) con.prepareStatement(OF_REDIS_CONFIG_INSERT);for (RedisConfig cr : object) {pstmt.setString(1, cr.getName());pstmt.setString(2, cr.getIp());pstmt.setString(3, cr.getPort());pstmt.setString(4, cr.getAuto());pstmt.executeUpdate();}}} catch (Exception e) {log.info(e.getMessage());e.printStackTrace();}finally {DbConnectionManager.closeConnection(pstmt, con);}}public Collection<RedisConfig> getAllRedisConfig() {if (server == null)server = XMPPServer.getInstance();return server.getJedisConfDao().getAllRedisConfig();}public void setRedisOfflineMessage() {XMPPServer.getInstance().getChatMessageJedisPoolManager().initDataByOfflineMessage();}public void destroyOfflineMessage() {Jedis jedis = server.getChatMessageJedisPoolManager().getJedis();jedis.flushDB();server.getChatMessageJedisPoolManager().returnRes(jedis);}public void setRedisUserSearch() {XMPPServer.getInstance().getRedisSearchManager().createSearchAllUserData();}public void destroyUserSearch() {Jedis jedis = server.getRedisSearchManager().getSearchJedis();jedis.flushDB();XMPPServer.getInstance().getUserJedis().returnRes(jedis);}public void destroyRedisByUserInfo () {Jedis jedis = server.getUserJedis().getJedis();Map<String, String > user = jedis.hgetAll("OFUSER:admin");jedis.flushAll();jedis.hmset("OFUSER:admin", user);XMPPServer.getInstance().getUserJedis().returnRes(jedis);}public void setRedisByUserInfo () {Jedis jedis = server.getUserJedis().getJedis();int i = 1;Collection<User> users = server.getUserJedis().getAllUser();if (!users.isEmpty()) {for (User user : users) {Map<String,String> map = new HashMap<String, String>();map.put("PASSWORD", user.getPassword());if (user.getName() != null )map.put("NAME", user.getName());if (user.getMoblie() != null )map.put("MOBILE", user.getMoblie().trim());if (user.getEmail() != null)map.put("EMAIL", user.getEmail().trim());map.put("CREATIONDATE",user.getCreationDate().trim());map.put("MODIFICATIONDATE",user.getModificationDate().trim());jedis.hmset("OFUSER:" + user.getUsername(), map);System.out.println("The " + i++ + "user generation=> username:" + user.getUsername() + ", name:" + user.getName());}System.out.println("the end:user base info generated…");i = 1;for (User user : users) {if (user.getMoblie() != null && !"".equals(user.getMoblie())) {jedis.set("MOBILE:" + user.getMoblie(), user.getUsername());System.out.println("The" + i++ + "user,mobile relation generation=> mobile:" + user.getMoblie() + ", username:" + user.getUsername());}}System.out.println("the end:user and mobile relation generated…");i = 1;}Collection<UserVcard> uservcards = server.getUserJedis().getUserVcard();if (!uservcards.isEmpty()) {for (UserVcard uv : uservcards) {if (uv.getVcard() != null && !"".equals(uv.getVcard())) {jedis.set("OFVCARD:" + uv.getUsername(), uv.getVcard());System.out.println("The" + i++ + "user vcard generation=> username:" + uv.getUsername());}}i = 1;System.out.println("the end:user vcard generated…"); }server.getUserJedis().returnRes(jedis);}}年岁有加,并非垂老,理想丢弃,方堕暮年。

OpenFire源码学习之二十:在openfire中使用redis插件(下)

相关文章:

你感兴趣的文章:

标签云: