a
554325746@qq.com
2019-12-25 84e391f79e4c298e31b990667a54d991d645949f
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
package com.basic.security.manager;
 
import com.basic.security.activity.MainActivity;
import com.basic.security.base.BaseApplication;
import com.basic.security.manager.impl.sqlite.SlBaseManager;
import com.basic.security.model.ModelAdapter;
import com.basic.security.model.OfficeDevice;
import com.basic.security.utils.Constants;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
 
public class OfficeDeviceManager extends SlBaseManager {
    static List<ModelAdapter> dbOfficeDeviceList = new ArrayList<>();
    static Lock saveOfficeDeviceLock = new ReentrantLock();
    static long lastRemoteIpAllowed = System.currentTimeMillis();
 
    public static void addOfficeDevice(Map<String, String> officeDevice) {
        System.out.println("OfficeDeviceManager.addOfficeDevice " + officeDevice);
        List<ModelAdapter> dbOfficeDeviceList = findList("select * from " + OfficeDevice.table + " where "
                + OfficeDevice.deviceId + "='" + officeDevice.get(OfficeDevice.deviceId) + "'");
        if (dbOfficeDeviceList.size() == 0) {
            officeDevice.put(OfficeDevice.id, UUID.randomUUID().toString());
            officeDevice.put(OfficeDevice.valid, Constants.FALSE);
            officeDevice.put("table", OfficeDevice.table);
            ModelAdapter officeDeviceModelAdapter = new ModelAdapter();
            for (Map.Entry<String, String> entry : officeDevice.entrySet()) {
                officeDeviceModelAdapter.setString(entry.getKey(), entry.getValue());
            }
            save(officeDeviceModelAdapter);
        } else {
            ModelAdapter dbModelAdapter = dbOfficeDeviceList.get(0);
            dbModelAdapter.setString(Constants.TABLE, OfficeDevice.tableName);
            dbModelAdapter.setString(OfficeDevice.deviceIp, officeDevice.get(OfficeDevice.deviceIp));
            dbModelAdapter.setString(OfficeDevice.deviceName, officeDevice.get(OfficeDevice.deviceName));
            save(dbModelAdapter);
        }
        initOfficeDevice();
        MainActivity mainActivity = BaseApplication.getApplication().activity;
        if (mainActivity.currentFragment == mainActivity.fragment_base_setting) {
            mainActivity.fragment_base_setting.loadDataFromDb();
        }
    }
 
    public static List<ModelAdapter> findOfficeDeviceList() {
        return findList("select * from " + OfficeDevice.table);
    }
 
    public static void updateOfficeDeviceValidField(String id, String valid) {
        ModelAdapter officeDevice = findById(OfficeDevice.table, id);
        officeDevice.setString(OfficeDevice.valid, valid);
        save(officeDevice);
    }
 
    public static boolean remoteIpAllowed(String deviceId) {
//        System.out.println("OfficeDeviceManager.remoteIpAllowed " +deviceId + " " + dbOfficeDeviceList);
        if (System.currentTimeMillis() - lastRemoteIpAllowed > 60 * 1000) {
            initOfficeDevice();
            lastRemoteIpAllowed = System.currentTimeMillis();
        }
        //saveOfficeDeviceLock.lock();
        for (ModelAdapter dbOfficeDevice : dbOfficeDeviceList) {
            if (deviceId.equals(dbOfficeDevice.getString(OfficeDevice.deviceId))
                    && Constants.TRUE.equals(dbOfficeDevice.getString(OfficeDevice.valid))) {
                return true;
            }
        }
        //saveOfficeDeviceLock.unlock();
        return false;
    }
 
    public static void initOfficeDevice() {
        //saveOfficeDeviceLock.lock();
        dbOfficeDeviceList = findList("select * from " + OfficeDevice.table);
        //saveOfficeDeviceLock.unlock();
    }
 
    public static void saveOfficeDeviceList(List<ModelAdapter> officeDeviceList) {
        for (ModelAdapter officeDevice : officeDeviceList) {
            officeDevice.setString("table", OfficeDevice.table);
            save(officeDevice);
        }
        initOfficeDevice();
    }
 
    public static void deleteOfficeDevice(ModelAdapter officeDevice) {
        officeDevice.setString("table", OfficeDevice.table);
        deletePhysically(officeDevice);
    }
 
}