hefeixia
2021-02-18 5b8c95c760840f09910730943b21391e47187315
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package chat.module.friendcircle;
 
import java.util.ArrayList;
import java.util.List;
 
import chat.module.ConcurrentMapList;
import chat.server.im.DataPool;
import chat.user.User;
import frame.object.data.Entity;
import frame.object.data.ID;
import frame.util.MapList;
 
public class FriendCircle {
 
    private static ConcurrentMapList<CircleObject> allList;
    private ConcurrentMapList<CircleObject> itemList;
    private MapList<User> attentionList;
    private boolean attention;
    
    static {
        allList = new ConcurrentMapList<CircleObject>();
    }
    
    public FriendCircle() {
        itemList = new ConcurrentMapList<CircleObject>();
        attentionList = new MapList<User>();
    }
    
    public void loadOneCricleObject(Entity entity) throws Exception {
        CircleObject circleObject = new CircleObject(this);
        circleObject.load(entity);
        
        String id = circleObject.getId();
        itemList.add(id, circleObject);
        
        String ownerId = circleObject.getOwnerId();
        if (!allList.contains(ownerId)) {
            allList.add(id, circleObject);
        }
    }
 
    public String createOneCircleObject(DataPool dataPool) {
        String id = ID.newValue();
        
        CircleObject result = new CircleObject(this);
        result.setId(id);
        result.load(dataPool);
        
        result.insertToDB();
        itemList.add(id, result);
        
        return id;
    }
    
    public static List<CircleObject> getCircleObjectList(int pageNo, int pageSize) {
        List<CircleObject> result = new ArrayList<CircleObject>();
        
        int begin = pageNo * pageSize;
        int end = Math.min((begin + pageSize), allList.size());
        
        CircleObject object;
        
        for (int i = begin; i < end; i++) {
            object = allList.get(i);
            result.add(object);
        }
        
        return result;
    }
    
    public List<CircleObject> getOneUserCircleObjectList(int pageNo, int pageSize) {
        List<CircleObject> result = new ArrayList<CircleObject>();
        
        int begin = pageNo * pageSize;
        int end = Math.min((begin + pageSize), itemList.size());
        
        CircleObject object;
        
        for (int i = begin; i < end; i++) {
            object = itemList.get(i);
            result.add(object);
        }
        
        return result;
    }
 
    public CircleObject getOneCircleObjectList(String circleObjectId) {
        return itemList.get(circleObjectId);
    }
    
    public boolean isAttention() {
        return attention;
    }
 
    public void setAttention(boolean attention) {
        this.attention = attention;
    }
 
    public void addOneAttention(User user) {
        if (user == null) {
            return;
        }
        
        String userId = user.getId();
        
        if (!attentionList.contains(userId)) {
            attentionList.add(userId, user);
        }
    }
 
    public CircleObject getOneCircleObject(String circleObjectId) {
        return itemList.get(circleObjectId);
    }
    
}