package org.infosec.ismp.situation.service.impl; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import org.infosec.ismp.situation.model.MachineCabinetSituation; import org.infosec.ismp.situation.model.MachineRoomSituation; import org.infosec.ismp.situation.model.MachineSituation; import org.infosec.ismp.situation.model.SecurityAreaSituation; /** * 通道,用于存放数据以便RMI取 * @author cchang * 2011-2-25 10:54:58 */ public class SituationPipe { private static final int MAX_SIZE = 800; public LinkedList<MachineSituation> machineSituationList = null; public LinkedList<MachineCabinetSituation> machineCabinetSituationList = null; public LinkedList<MachineRoomSituation> machineRoomSituationList = null; public LinkedList<SecurityAreaSituation> securityAreaSituationList = null; ///构造器 public SituationPipe() { machineSituationList = new LinkedList<MachineSituation>(); machineCabinetSituationList = new LinkedList<MachineCabinetSituation>(); machineRoomSituationList = new LinkedList<MachineRoomSituation>(); securityAreaSituationList = new LinkedList<SecurityAreaSituation>(); } public synchronized void addMachineSituations(List<MachineSituation> machineSituations) { for (MachineSituation machineSituation : machineSituations) { if (null != machineSituation) { machineSituationList.addFirst(machineSituation); } if (machineSituationList.size() > MAX_SIZE) { machineSituationList.removeLast(); } } } public synchronized void addMachineCabinetSiuations(List<MachineCabinetSituation> machineCabinetSituations) { for (MachineCabinetSituation machineCabinetSituation : machineCabinetSituations) { if (null != machineCabinetSituation) { machineCabinetSituationList.addFirst(machineCabinetSituation); } if (machineCabinetSituationList.size() > MAX_SIZE) { machineCabinetSituationList.removeLast(); } } } public synchronized void addMachineRoomSituations(List<MachineRoomSituation> machineRoomSituations) { for (MachineRoomSituation machineRoomSituation : machineRoomSituations) { if (null != machineRoomSituation) { machineRoomSituationList.addFirst(machineRoomSituation); } if (machineRoomSituationList.size() > MAX_SIZE) { machineRoomSituationList.removeLast(); } } } public synchronized void addSecurityAreaSituations(List<SecurityAreaSituation> securityAreaSituations) { for (SecurityAreaSituation securityAreaSituation : securityAreaSituations) { if (null != securityAreaSituation) { securityAreaSituationList.addFirst(securityAreaSituation); } if (securityAreaSituationList.size() > MAX_SIZE) { securityAreaSituationList.removeLast(); } } } public synchronized List<MachineSituation> getMachineSituation() { List<MachineSituation> results = new ArrayList<MachineSituation>(); for (int i = 0; i < machineSituationList.size(); i++) { MachineSituation machineSituation = (MachineSituation) machineSituationList.get(i); results.add(machineSituation); } return results; } public synchronized List<MachineCabinetSituation> getMachineCabinetSituation() { List<MachineCabinetSituation> results = new ArrayList<MachineCabinetSituation>(); for (int i = 0; i < machineCabinetSituationList.size(); i++) { MachineCabinetSituation machineCabinetSituation = (MachineCabinetSituation) machineCabinetSituationList.get(i); results.add(machineCabinetSituation); } return results; } public synchronized List<MachineRoomSituation> getMachineRoomSituation() { List<MachineRoomSituation> results = new ArrayList<MachineRoomSituation>(); for (int i = 0; i < machineRoomSituationList.size(); i++) { MachineRoomSituation machineRoomSituation = (MachineRoomSituation) machineRoomSituationList.get(i); results.add(machineRoomSituation); } return results; } public synchronized List<SecurityAreaSituation> getSecurityAreaSituation() { List<SecurityAreaSituation> results = new ArrayList<SecurityAreaSituation>(); for (int i = 0; i < securityAreaSituationList.size(); i++) { SecurityAreaSituation securityAreaSituation = (SecurityAreaSituation) securityAreaSituationList.get(i); results.add(securityAreaSituation); } return results; } public synchronized void clearMachineSituation(){ machineSituationList.clear(); } public synchronized void clearMachineCabinetSituation(){ machineCabinetSituationList.clear(); } public synchronized void clearMachineRoomSituation(){ machineRoomSituationList.clear(); } public synchronized void clearSecurityAreaSituation(){ securityAreaSituationList.clear(); } }