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);
|
}
|
|
}
|