zm
2020-05-18 a18bfacbf56b401f6e0fdae8710fbca4df8cff77
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package cn.autoform.web.controller.resumable.redis.lock;
 
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
 
import org.apache.commons.lang3.RandomStringUtils;
 
import cn.autoform.fw.exception.IEMRuntimeException;
import lombok.Data;
 
/**
 * 锁列表实体
 * @author wangyuxin
 *
 */
@Data
public class LocksEntity implements Serializable{
 
 
    /**
     * 
     */
    private static final long serialVersionUID = 8811304440312972451L;
 
    /**
     * 锁列表
     */
    private Map<Lock, Lock> locks = new HashMap<>();
    
    /**
     * 获得钥匙的锁
     */
    private Lock lock;
    
    public Lock addLock() {
        Lock lockObj = new Lock(RandomStringUtils.randomNumeric(16));
        locks.put(lockObj, lockObj);
        return lockObj;
    }
    
    public Lock addKey(String lockInfo, Long timeOut) {
        if(this.lock != null && this.lock.getTimeOut() > System.currentTimeMillis()) {
            throw new IEMRuntimeException("FORM_LOCK");
        }
        Lock lockObj = locks.get(new Lock(lockInfo));
        if(lockObj == null) {
            throw new IEMRuntimeException("FORM_UPDATE");
        }
        lockObj.setKey(new Key(RandomStringUtils.randomNumeric(16)));
        lockObj.setTimeOut(timeOut);
        this.lock = lockObj;
        return lockObj;
    }
}