package cn.com.basic.face.util; import java.util.ArrayList; import java.util.Date; import java.util.List; import cn.com.basic.face.base.MainActivity; import cn.com.basic.face.discern.common.CommonVariables; import cn.com.basic.face.discern.query.item.SurveillanceQueryItem; import cn.com.basic.face.fragment.SurveillanceFragment; public class UnknownSurveillanceQueryItemUtil { private static UnknownSurveillanceQueryItemUtil instance = new UnknownSurveillanceQueryItemUtil(); public static UnknownSurveillanceQueryItemUtil getInstance() { return instance; } static List allItems = new ArrayList<>(); public void addItems(List unknownItems) { allItems.addAll(0, unknownItems); limitItemsTo50(); removeTimeoutItemAndShow(); } private void limitItemsTo50() { if (allItems.size() > 50) { List itemsToRemove = new ArrayList<>(); for (int i = 50; i < allItems.size(); i++) { itemsToRemove.add(allItems.get(i)); } allItems.removeAll(itemsToRemove); } } public void removeTimeoutItemAndShow() { synchronized (this) { List itemsToRemove = new ArrayList(); for (SurveillanceQueryItem item : allItems) { if (item.getRegisterOrCheckIn() == CommonVariables.Surveillance.OFFLINE_SURVEILLANCE_ITEM_TYPE) { Date now = new Date(); Date createTime = item.getCreateTime(); double minutes = (now.getTime() - createTime.getTime())*1.0 / 1000 / 60; if (minutes >= 5) { itemsToRemove.add(item); } } } allItems.removeAll(itemsToRemove); } MainActivity.getInstance().runOnUiThread(new Runnable() { @Override public void run() { SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_visitor_list_view().show(UnknownSurveillanceQueryItemUtil.getInstance().getUnknownTwoRows()); SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_attendance_list_view().show(new ArrayList()); } }); } private List getUnknownTwoRows() { return allItems; } public List getAllUnregisterVisitorTwoRowsForSelect(long selectedId) { select(allItems, selectedId); return allItems; } public void select(List items, long selectedId) { for (SurveillanceQueryItem item : items) { item.setSurveillancePhotoSelected(false); if (item.getIdForSelect() == selectedId) { item.setSurveillancePhotoSelected(true); } } } public List getAllUnregisterAttenderTwoRowsForSelect(long selectedId) { select(allItems, selectedId); return allItems; } }