Example usage for org.springframework.data.redis.core SessionCallback SessionCallback

List of usage examples for org.springframework.data.redis.core SessionCallback SessionCallback

Introduction

In this page you can find the example usage for org.springframework.data.redis.core SessionCallback SessionCallback.

Prototype

SessionCallback

Source Link

Usage

From source file:org.shareok.data.redis.UserDaoImpl.java

@Override
@Transactional//  w w w  .j av  a  2  s  .  c  o  m
public RedisUser addUser(final RedisUser user) {
    try {
        redisTemplate.setConnectionFactory(connectionFactory);
        RedisUser existedUser = findUserByUserEmail(user.getEmail());
        if (null != existedUser) {
            return existedUser;
        }

        RedisAtomicLong userIdIndex = new RedisAtomicLong(ShareokdataManager.getRedisGlobalUidSchema(),
                redisTemplate.getConnectionFactory());
        long uidCount = userIdIndex.incrementAndGet();
        final String uid = String.valueOf(uidCount);

        List<Object> results = redisTemplate.execute(new SessionCallback<List<Object>>() {
            @Override
            public List<Object> execute(RedisOperations operations) throws DataAccessException {
                operations.multi();
                operations.boundHashOps("user:" + uid);
                operations.opsForHash().put("user:" + uid, "userName",
                        (null != user.getUserName() ? user.getUserName() : user.getEmail()));
                operations.opsForHash().put("user:" + uid, "email", user.getEmail());
                operations.opsForHash().put("user:" + uid, "userId", uid);
                operations.opsForHash().put("user:" + uid, "password", user.getPassword());
                operations.opsForHash().put("user:" + uid, "isActive", String.valueOf(true));
                operations.opsForHash().put("user:" + uid, "sessionKey",
                        (null != user.getSessionKey() ? user.getSessionKey() : ""));
                operations.opsForHash().put("user:" + uid, "startTime",
                        (null != user.getStartTime()
                                ? ShareokdataManager.getSimpleDateFormat().format(user.getStartTime())
                                : (ShareokdataManager.getSimpleDateFormat().format(new Date()))));

                operations.boundHashOps("users");
                operations.opsForHash().put("users", user.getEmail(), uid);

                List<Object> userList = operations.exec();
                if (!userList.get(0).equals(true)) {
                    operations.discard();
                }
                return userList;
            }
        });
    } catch (Exception ex) {
        logger.error("Cannot add new user", ex);
    }
    return user;
}

From source file:com.greenline.guahao.biz.manager.cache.hrs.DictCacheManager.java

/**
 * /*from  w w  w.  ja v  a 2s .com*/
 * 
 * @param list
 */
public void setDicts(String dictId, final List<DictDO> list) {

    if (StringUtils.isEmpty(dictId) || list == null || list.isEmpty()) {
        return;
    }

    final RedisList<String> redislist = dictList(dictId);
    redislist.clear();
    redislist.getOperations().execute(new SessionCallback<Object>() {
        @SuppressWarnings({ "unchecked", "rawtypes" })
        public Object execute(RedisOperations operations) throws DataAccessException {
            operations.watch(redislist.getKey());
            operations.multi();
            for (DictDO obj : list) {
                redislist.add(jackjson.writeString(obj));
            }
            operations.exec();
            return null;
        }
    });

    setExpire(redislist);
}

From source file:org.shareok.data.redis.job.JobDaoImpl.java

@Override
@Transactional/*from  w w  w  . j a  va 2s . c  o m*/
public long startJob(long uid, int jobType, int repoType, int serverId, Date startTime) {

    long jobIdCount = -1;

    try {
        redisTemplate.setConnectionFactory(connectionFactory);

        RedisAtomicLong jobIdIndex = new RedisAtomicLong(ShareokdataManager.getRedisGlobalJobIdSchema(),
                redisTemplate.getConnectionFactory());

        jobIdCount = jobIdIndex.incrementAndGet();
        final String jobId = String.valueOf(jobIdCount);
        final String uidStr = String.valueOf(uid);
        final String jobTypeStr = String.valueOf(jobType);
        final String repoTypeStr = String.valueOf(repoType);
        final String serverIdStr = String.valueOf(serverId);
        final Date startTimeStr = startTime;

        List<Object> results = redisTemplate.execute(new SessionCallback<List<Object>>() {
            @Override
            public List<Object> execute(RedisOperations operations) throws DataAccessException {
                operations.multi();
                operations.boundHashOps("job:" + jobId);
                operations.opsForHash().put("job:" + jobId, "userId", uidStr);
                operations.opsForHash().put("job:" + jobId, "jobId", jobId);
                operations.opsForHash().put("job:" + jobId, "status", "4");
                operations.opsForHash().put("job:" + jobId, "type", jobTypeStr);
                operations.opsForHash().put("job:" + jobId, "repoType", repoTypeStr);
                operations.opsForHash().put("job:" + jobId, "startTime",
                        (null != startTimeStr ? ShareokdataManager.getSimpleDateFormat().format(startTimeStr)
                                : ShareokdataManager.getSimpleDateFormat().format(new Date())));
                operations.opsForHash().put("job:" + jobId, "endTime", "");
                operations.opsForHash().put("job:" + jobId, "serverId", serverIdStr);

                operations.boundSetOps("user_" + uidStr + "_job_set").add(jobId);

                List<Object> jobList = operations.exec();
                if (!jobList.get(0).equals(true)) {
                    operations.discard();
                }
                return jobList;
            }
        });
    } catch (Exception ex) {
        logger.error("Cannot start a new job.", ex);
    }
    return jobIdCount;
}

From source file:com.greenline.guahao.biz.manager.cache.hrs.HospitalCacheManager.java

/**
 * //  w  w  w  .  ja  v a  2 s  . c  o  m
 * 
 * @param list
 */
public void setHospLevels(final List<HospitalLevelDO> list) {
    if (list == null || list.isEmpty()) {
        return;
    }

    final RedisList<String> leveList = hospitallevels();
    leveList.clear();
    leveList.getOperations().execute(new SessionCallback<Object>() {
        @SuppressWarnings({ "unchecked", "rawtypes" })
        public Object execute(RedisOperations operations) throws DataAccessException {
            operations.watch(leveList.getKey());
            operations.multi();
            for (HospitalLevelDO obj : list) {
                leveList.add(jackjson.writeString(obj));
            }
            operations.exec();
            return null;
        }
    });
    // 
    setExpire(leveList);
}

From source file:org.shareok.data.redis.server.RepoServerDaoImpl.java

@Override
public RepoServer addServer(RepoServer server) {
    int serverIdCount = -1;

    try {//from w ww  . j  a  va  2 s  .c  om
        redisTemplate.setConnectionFactory(connectionFactory);

        RedisAtomicInteger serverIdIndex = new RedisAtomicInteger(
                ShareokdataManager.getRedisServerQueryPrefix(), redisTemplate.getConnectionFactory());

        serverIdCount = serverIdIndex.incrementAndGet();
        final String serverId = String.valueOf(serverIdCount);
        final String serverName = server.getServerName();
        final String portStr = String.valueOf(server.getPort());
        final String proxyPortStr = String.valueOf(server.getProxyPort());
        final String repoTypeStr = String.valueOf(server.getRepoType());
        final String timeoutStr = String.valueOf(server.getTimeout());
        final String host = server.getHost();
        final String proxyHost = server.getProxyHost();
        final String userName = server.getUserName();
        final String proxyUserName = server.getProxyUserName();
        final String password = server.getPassword();
        final String proxyPassword = server.getProxyPassword();
        final String passphrase = server.getPassPhrase();
        final String rsaKey = server.getRsaKey();
        final String address = server.getAddress();

        RepoServer existingServer = findServerByName(serverName);
        if (null != existingServer) {
            return existingServer;
        }

        List<Object> results = redisTemplate.execute(new SessionCallback<List<Object>>() {
            @Override
            public List<Object> execute(RedisOperations operations) throws DataAccessException {
                operations.multi();
                operations.boundHashOps("server:" + serverId);
                operations.opsForHash().put("server:" + serverId, "serverId", serverId);
                operations.opsForHash().put("server:" + serverId, "serverName", serverName);
                operations.opsForHash().put("server:" + serverId, "port", portStr);
                operations.opsForHash().put("server:" + serverId, "proxyPort", proxyPortStr);
                operations.opsForHash().put("server:" + serverId, "timeout", timeoutStr);
                operations.opsForHash().put("server:" + serverId, "host", host);
                operations.opsForHash().put("server:" + serverId, "proxyHost", proxyHost);
                operations.opsForHash().put("server:" + serverId, "userName", userName);
                operations.opsForHash().put("server:" + serverId, "proxyUserName", proxyUserName);
                operations.opsForHash().put("server:" + serverId, "password", password);
                operations.opsForHash().put("server:" + serverId, "host", host);
                operations.opsForHash().put("server:" + serverId, "proxyPassword", proxyPassword);
                operations.opsForHash().put("server:" + serverId, "passphrase", passphrase);
                operations.opsForHash().put("server:" + serverId, "rsaKey", rsaKey);
                operations.opsForHash().put("server:" + serverId, "repoType", repoTypeStr);
                operations.opsForHash().put("server:" + serverId, "address", address);

                operations.boundHashOps(ShareokdataManager.getRedisServerNameIdMatchingTable());
                operations.opsForHash().put(ShareokdataManager.getRedisServerNameIdMatchingTable(), serverName,
                        serverId);

                List<Object> serverList = operations.exec();
                if (!serverList.get(0).equals(true)) {
                    operations.discard();
                }
                return serverList;
            }
        });
        server.setServerId(serverIdCount);
        return server;
    } catch (Exception ex) {
        logger.error("Cannot create a new server.", ex);
        return null;
    }
}

From source file:com.company.project.service.dao.RedisDao.java

/**
 * 4.9. Redis Transactions - http://docs.spring.io/spring-data/redis/docs/current/reference/html/
 * Add value to set. Utilize Session Callback
 * @param key/* w ww  .  j  a va 2s. c om*/
 * @param value
 * @return 
 */
public long addUsingOpsForSetUsingSesssionCallback(final String key, final Object value) {
    //execute a transaction
    List<Object> txResults = redisTemplate.execute(new SessionCallback<List<Object>>() {
        @Override
        public List<Object> execute(RedisOperations operations) throws DataAccessException {
            operations.multi();
            operations.opsForSet().add(key, value);

            // This will contain the results of all ops in the transaction
            return operations.exec();
        }
    });

    if (txResults != null && !txResults.isEmpty()) {
        System.out.println("Number of items added to set: " + txResults.get(0));
        try {
            int itemsAdded = Integer.parseInt("" + txResults.get(0));
            return itemsAdded;
        } catch (NumberFormatException nfe) {
            nfe.printStackTrace();
        }
    }

    return 0;
}

From source file:com.greenline.guahao.biz.manager.cache.hrs.ShiftCaseCacheManager.java

/**
 * ?//from w  w  w.j a va 2  s . co m
 * 
 * @param list
 */
public void setShiftCases(ShiftQuery query, final List<ShiftCaseDO> list) {
    if (query == null) {
        return;
    }

    if (list == null || list.isEmpty()) {
        String key = getIsCachedKey(queryKey(query));
        // 
        String isCached = template.opsForValue().get(key);
        if (StringUtils.isEmpty(isCached)) {
            setExpire(key, "true");
        }
        return;
    }
    // add to list
    final RedisList<String> redislist = shiftQueryList(query);
    redislist.clear();
    redislist.getOperations().execute(new SessionCallback<Object>() {
        @SuppressWarnings({ "unchecked", "rawtypes" })
        public Object execute(RedisOperations operations) throws DataAccessException {
            operations.watch(redislist.getKey());
            operations.multi();
            for (ShiftCaseDO obj : list) {
                redislist.add(jackjson.writeString(obj));
            }
            operations.exec();
            return null;
        }
    });
    // 
    boolean expire = redislist.expire(this.getExpireTime(), TimeUnit.SECONDS);
    if (!expire) {
        // ??key
        template.delete(queryKey(query));
    }
}

From source file:com.greenline.guahao.biz.manager.cache.hrs.HospitalCacheManager.java

/**
 * ?// ww  w.ja  v a2 s  .co m
 * 
 * @param hospitalId
 * @param list
 */
public void setClinicTypes(String hospitalId, final List<ClinicTypeDO> list) {
    if (StringUtils.isEmpty(hospitalId) || list == null || list.isEmpty()) {
        return;
    }
    final RedisList<String> clinicTypes = clinicTypes(hospitalId);
    clinicTypes.clear();
    clinicTypes.getOperations().execute(new SessionCallback<Object>() {
        @SuppressWarnings({ "unchecked", "rawtypes" })
        public Object execute(RedisOperations operations) throws DataAccessException {
            operations.watch(clinicTypes.getKey());
            operations.multi();
            for (ClinicTypeDO obj : list) {
                clinicTypes.add(obj.getId());
            }
            operations.exec();
            return null;
        }
    });

    for (ClinicTypeDO obj : list) {
        setClinicType(obj.getId(), obj);
    }
    setExpire(clinicTypes);
}

From source file:com.greenline.guahao.biz.manager.cache.hrs.DepartmentCacheManager.java

/**
 * //from   w  w w  .  ja v a  2s . co  m
 * 
 * @param hospitalId
 * @param list
 */
public void setHospitalDepts(String hospitalId, final List<HospitalDepartmentDO> list) {
    if (hospitalId == null || list == null || list.isEmpty()) {
        return;
    }
    // 
    final RedisList<String> hDepts = hospitalDepts(hospitalId);
    // 
    hDepts.clear();
    // 
    hDepts.getOperations().execute(new SessionCallback<Object>() {
        @SuppressWarnings({ "unchecked", "rawtypes" })
        public Object execute(RedisOperations operations) throws DataAccessException {
            operations.watch(hDepts.getKey());
            operations.multi();
            for (HospitalDepartmentDO obj : list) {
                hDepts.add(obj.getId());
            }
            operations.exec();
            return null;
        }
    });
    setExpire(hDepts);
    // ?
    for (HospitalDepartmentDO obj : list) {
        setHospitalDept(obj.getId(), obj);
    }
}

From source file:org.shareok.data.redis.UserDaoImpl.java

@Override
public void deleteUserByUserId(final long userId) {
    try {/* w  w  w .  j  a v a2 s .co m*/
        redisTemplate.setConnectionFactory(connectionFactory);
        final String key = RedisUtil.getUserQueryKey(userId);
        Map userInfo = redisTemplate.opsForHash().entries(key);
        final String email = (String) userInfo.get("email");
        List<Object> results = redisTemplate.execute(new SessionCallback<List<Object>>() {
            @Override
            public List<Object> execute(RedisOperations operations) throws DataAccessException {
                operations.multi();
                operations.opsForHash().delete(ShareokdataManager.getRedisUserNameIdMatchingTable(), email);
                operations.opsForHash().getOperations().delete(key);

                List<Object> opList = operations.exec();
                if (!opList.get(0).equals(true) && !opList.get(0).equals(Long.valueOf(1))) {
                    operations.discard();
                }
                return opList;
            }
        });
    } catch (Exception ex) {
        logger.error("Cannot delete a user with ID " + userId, ex);
    }
}