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 dbOfficeDeviceList = new ArrayList<>(); static Lock saveOfficeDeviceLock = new ReentrantLock(); static long lastRemoteIpAllowed = System.currentTimeMillis(); public static void addOfficeDevice(Map officeDevice) { System.out.println("OfficeDeviceManager.addOfficeDevice " + officeDevice); List 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 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 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 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); } }