Search in sources :

Example 6 with ReadWriteLockVO

use of com.dtstack.taier.develop.dto.devlop.ReadWriteLockVO in project Taier by DTStack.

the class ReadWriteLockService method forceUpdateLock.

/**
 * @param userId
 * @param type
 * @param relationId
 * @param tenantId
 * @return
 */
private ReadWriteLockVO forceUpdateLock(Long userId, ReadWriteLockType type, Long relationId, Long tenantId) {
    BatchReadWriteLock readWriteLock = developReadWriteLockDao.getByTenantIdAndRelationIdAndType(tenantId, relationId, type.name());
    if (readWriteLock != null) {
        developReadWriteLockDao.updateVersionAndModifyUserIdDefinitized(readWriteLock.getId(), userId);
        readWriteLock = developReadWriteLockDao.getOne(readWriteLock.getId());
        ReadWriteLockVO readWriteLockVO = ReadWriteLockVO.toVO(readWriteLock);
        String userName = userService.getUserName(readWriteLock.getModifyUserId());
        readWriteLockVO.setLastKeepLockUserName(userName);
        return readWriteLockVO;
    } else {
        throw new RdosDefineException(ErrorCode.LOCK_IS_NOT_EXISTS);
    }
}
Also used : RdosDefineException(com.dtstack.taier.common.exception.RdosDefineException) ReadWriteLockVO(com.dtstack.taier.develop.dto.devlop.ReadWriteLockVO) BatchReadWriteLock(com.dtstack.taier.dao.domain.BatchReadWriteLock)

Example 7 with ReadWriteLockVO

use of com.dtstack.taier.develop.dto.devlop.ReadWriteLockVO in project Taier by DTStack.

the class ReadWriteLockService method insert.

/**
 * 添加锁对象
 * @param tenantId
 * @param fileId
 * @param type
 * @param userId
 * @return
 */
private ReadWriteLockVO insert(Long tenantId, Long fileId, String type, Long userId) {
    BatchReadWriteLock readWriteLock = new BatchReadWriteLock();
    readWriteLock.setTenantId(tenantId);
    readWriteLock.setLockName(uniteName(fileId, tenantId, type));
    readWriteLock.setCreateUserId(userId);
    readWriteLock.setModifyUserId(userId);
    readWriteLock.setRelationId(fileId);
    readWriteLock.setType(type);
    developReadWriteLockDao.insert(readWriteLock);
    ReadWriteLockVO readWriteLockVO = ReadWriteLockVO.toVO(readWriteLock);
    readWriteLockVO.setVersion(INIT_VERSION);
    readWriteLockVO.setGmtModified(Timestamp.valueOf(LocalDateTime.now()));
    readWriteLockVO.setLastKeepLockUserName(userService.getUserName(userId));
    return readWriteLockVO;
}
Also used : ReadWriteLockVO(com.dtstack.taier.develop.dto.devlop.ReadWriteLockVO) BatchReadWriteLock(com.dtstack.taier.dao.domain.BatchReadWriteLock)

Example 8 with ReadWriteLockVO

use of com.dtstack.taier.develop.dto.devlop.ReadWriteLockVO in project Taier by DTStack.

the class ReadWriteLockService method getDetail.

/**
 * 获取锁VO对象
 * @param tenantId
 * @param relationId
 * @param type
 * @param userId
 * @param modifyUserId
 * @param gmtModified
 * @return
 */
public ReadWriteLockVO getDetail(Long tenantId, Long relationId, ReadWriteLockType type, Long userId, Long modifyUserId, Timestamp gmtModified) {
    BatchReadWriteLock readWriteLock = developReadWriteLockDao.getByTenantIdAndRelationIdAndType(tenantId, relationId, type.name());
    if (readWriteLock == null) {
        ReadWriteLockVO readWriteLockVO = new ReadWriteLockVO();
        readWriteLockVO.setLastKeepLockUserName(userService.getUserName(modifyUserId));
        readWriteLockVO.setGmtModified(gmtModified);
        return readWriteLockVO;
    }
    ReadWriteLockVO readWriteLockVO = ReadWriteLockVO.toVO(readWriteLock);
    readWriteLockVO.setLastKeepLockUserName(userService.getUserName(readWriteLockVO.getModifyUserId()));
    return readWriteLockVO;
}
Also used : ReadWriteLockVO(com.dtstack.taier.develop.dto.devlop.ReadWriteLockVO) BatchReadWriteLock(com.dtstack.taier.dao.domain.BatchReadWriteLock)

Example 9 with ReadWriteLockVO

use of com.dtstack.taier.develop.dto.devlop.ReadWriteLockVO in project Taier by DTStack.

the class ReadWriteLockService method getLockBasicInfo.

private ReadWriteLockVO getLockBasicInfo(Long tenantId, long relationId, ReadWriteLockType type) {
    BatchReadWriteLock readWriteLock = developReadWriteLockDao.getByTenantIdAndRelationIdAndType(tenantId, relationId, type.name());
    if (readWriteLock == null) {
        throw new RdosDefineException(ErrorCode.LOCK_IS_NOT_EXISTS);
    }
    ReadWriteLockVO readWriteLockVO = new ReadWriteLockVO();
    readWriteLockVO.setGmtModified(readWriteLock.getGmtModified());
    readWriteLockVO.setLastKeepLockUserName(userService.getUserName(readWriteLock.getModifyUserId()));
    return readWriteLockVO;
}
Also used : RdosDefineException(com.dtstack.taier.common.exception.RdosDefineException) ReadWriteLockVO(com.dtstack.taier.develop.dto.devlop.ReadWriteLockVO) BatchReadWriteLock(com.dtstack.taier.dao.domain.BatchReadWriteLock)

Example 10 with ReadWriteLockVO

use of com.dtstack.taier.develop.dto.devlop.ReadWriteLockVO in project Taier by DTStack.

the class ReadWriteLockService method getLocks.

/**
 * 根据 锁对象ids 批量获取锁信息
 * @param tenantId
 * @param type
 * @param relationIds
 * @param userId
 * @param names
 * @return
 */
public Map<Long, ReadWriteLockVO> getLocks(Long tenantId, ReadWriteLockType type, List<Long> relationIds, long userId, Map<Long, String> names) {
    List<BatchReadWriteLock> ls = developReadWriteLockDao.getLocksByIds(tenantId, type.name(), relationIds);
    Map<Long, BatchReadWriteLock> records = ls.stream().collect(Collectors.toMap(r -> r.getRelationId(), r -> r, (v1, v2) -> v2));
    Map<Long, ReadWriteLockVO> result = Maps.newHashMap();
    for (Long id : relationIds) {
        if (records.containsKey(id)) {
            BatchReadWriteLock readWriteLock = records.get(id);
            ReadWriteLockVO readWriteLockVO = ReadWriteLockVO.toVO(readWriteLock);
            readWriteLockVO.setLastKeepLockUserName(getUserNameInMemory(names, readWriteLockVO.getModifyUserId()));
            result.put(id, readWriteLockVO);
        } else {
            ReadWriteLockVO readWriteLockVO = new ReadWriteLockVO();
            readWriteLockVO.setLastKeepLockUserName(null);
            readWriteLockVO.setGmtModified(null);
            result.put(id, readWriteLockVO);
        }
    }
    return result;
}
Also used : UserService(com.dtstack.taier.develop.service.user.UserService) ReadWriteLockType(com.dtstack.taier.common.enums.ReadWriteLockType) Timestamp(java.sql.Timestamp) LocalDateTime(java.time.LocalDateTime) Autowired(org.springframework.beans.factory.annotation.Autowired) RdosDefineException(com.dtstack.taier.common.exception.RdosDefineException) Maps(com.google.common.collect.Maps) Collectors(java.util.stream.Collectors) Callback(com.dtstack.taier.common.Callback) List(java.util.List) BatchReadWriteLock(com.dtstack.taier.dao.domain.BatchReadWriteLock) ReadWriteLockVO(com.dtstack.taier.develop.dto.devlop.ReadWriteLockVO) CollectionUtils(org.apache.commons.collections.CollectionUtils) Service(org.springframework.stereotype.Service) Map(java.util.Map) DevelopReadWriteLockDao(com.dtstack.taier.dao.mapper.DevelopReadWriteLockDao) TaskLockStatus(com.dtstack.taier.common.enums.TaskLockStatus) ErrorCode(com.dtstack.taier.common.exception.ErrorCode) Transactional(org.springframework.transaction.annotation.Transactional) ReadWriteLockVO(com.dtstack.taier.develop.dto.devlop.ReadWriteLockVO) BatchReadWriteLock(com.dtstack.taier.dao.domain.BatchReadWriteLock)

Aggregations

ReadWriteLockVO (com.dtstack.taier.develop.dto.devlop.ReadWriteLockVO)11 BatchReadWriteLock (com.dtstack.taier.dao.domain.BatchReadWriteLock)9 RdosDefineException (com.dtstack.taier.common.exception.RdosDefineException)7 Transactional (org.springframework.transaction.annotation.Transactional)4 BatchTask (com.dtstack.taier.dao.domain.BatchTask)3 List (java.util.List)3 ReadWriteLockType (com.dtstack.taier.common.enums.ReadWriteLockType)2 TaskLockStatus (com.dtstack.taier.common.enums.TaskLockStatus)2 ErrorCode (com.dtstack.taier.common.exception.ErrorCode)2 BatchCatalogue (com.dtstack.taier.dao.domain.BatchCatalogue)2 BatchResource (com.dtstack.taier.dao.domain.BatchResource)2 BatchTaskBatchVO (com.dtstack.taier.develop.dto.devlop.BatchTaskBatchVO)2 ArrayList (java.util.ArrayList)2 JSON (com.alibaba.fastjson.JSON)1 JSONArray (com.alibaba.fastjson.JSONArray)1 JSONObject (com.alibaba.fastjson.JSONObject)1 JSONPath (com.alibaba.fastjson.JSONPath)1 TypeReference (com.alibaba.fastjson.TypeReference)1 ClientCache (com.dtstack.dtcenter.loader.client.ClientCache)1 IClient (com.dtstack.dtcenter.loader.client.IClient)1