package edu.sjtu.infosec.ismp.manager.VPM.pm.service.impl; import java.util.ArrayList; import java.util.List; import edu.sjtu.infosec.ismp.manager.VPM.pm.comm.PMPage; import edu.sjtu.infosec.ismp.manager.VPM.pm.model.PatchInfo; import edu.sjtu.infosec.ismp.manager.VPM.pm.model.PatchUpdateInfo; import edu.sjtu.infosec.ismp.manager.VPM.pm.model.SensorClients; import edu.sjtu.infosec.ismp.manager.VPM.pm.service.SensorClientsPatchService; import edu.sjtu.infosec.ismp.manager.VPM.pm.service.SensorService; import edu.sjtu.infosec.ismp.manager.comm.model.page.Page; import edu.sjtu.infosec.ismp.manager.comm.model.page.PageResult; public class SensorServiceImpl implements SensorService { private SensorClientsPatchService sensorClientPatchService = new SensorClientsPatchServiceImpl(); public List<PatchInfo> findAllOkPatchInfo() throws Exception { return sensorClientPatchService.findPatchInfoBy("false"); } public PageResult findAllOkPatchInfo(Page page) throws Exception { return sensorClientPatchService.findPatchInfoBy("false", page); } public int findAllOkPatchInfoNum() throws Exception { return sensorClientPatchService.findPatchInfoByNum("false"); } public List<PatchInfo> findAllPatchInfo() throws Exception { return sensorClientPatchService.findAllPatchInfo(); } public PageResult findAllPatchInfo(Page page) throws Exception { return sensorClientPatchService.findAllPatchInfo(page); } public int findAllPatchInfoNum() throws Exception { return sensorClientPatchService.findAllPatchInfoNum(); } public List<PatchUpdateInfo> findAllPatchUpdateFailedBySensorClients( SensorClients sensorClients) throws Exception { int[] states = {5}; return sensorClientPatchService.findAllByID(sensorClientPatchService.getComputerTargetID(sensorClients.getSensorIP()), "in", states); } public PageResult findAllPatchUpdateFailedBySensorClients( SensorClients sensorClients, PMPage page) throws Exception { int[] states = {5}; return sensorClientPatchService.findAllByID(sensorClientPatchService.getComputerTargetID(sensorClients.getSensorIP()), "in", states, page); } public int findAllPatchUpdateFailedNumBySensorClients( SensorClients sensorClients) throws Exception { int[] states = {5}; return sensorClientPatchService.findAllByIDNum(sensorClientPatchService.getComputerTargetID(sensorClients.getSensorIP()), "inCount", states); } public List<PatchUpdateInfo> findAllPatchUpdateInfoBySensorClients( SensorClients sensorClients) throws Exception { int[] states = {}; return sensorClientPatchService.findAllByID(sensorClientPatchService.getComputerTargetID(sensorClients.getSensorIP()), "in", states); } public PageResult findAllPatchUpdateInfoBySensorClients( SensorClients sensorClients, PMPage page) throws Exception { int[] states = {}; return sensorClientPatchService.findAllByID(sensorClientPatchService.getComputerTargetID(sensorClients.getSensorIP()), "in", states, page); } public int findAllPatchUpdateInfoNumBySensorClients( SensorClients sensorClients) throws Exception { int[] states = {}; return sensorClientPatchService.findAllByIDNum(sensorClientPatchService.getComputerTargetID(sensorClients.getSensorIP()), "inCount", states); } public List<PatchUpdateInfo> findAllPatchUpdateNeedBySensorClients( SensorClients sensorClients) throws Exception { int[] states = {2,3,6}; return sensorClientPatchService.findAllByID(sensorClientPatchService.getComputerTargetID(sensorClients.getSensorIP()), "in", states); } public PageResult findAllPatchUpdateNeedBySensorClients( SensorClients sensorClients, PMPage page) throws Exception { int[] states = {2,3,6}; return sensorClientPatchService.findAllByID(sensorClientPatchService.getComputerTargetID(sensorClients.getSensorIP()), "in", states, page); } public int findAllPatchUpdateNeedNumBySensorClients( SensorClients sensorClients) throws Exception { int[] states = {2,3,6}; return sensorClientPatchService.findAllByIDNum(sensorClientPatchService.getComputerTargetID(sensorClients.getSensorIP()), "inCount", states); } public int findAllPatchUpdateNoNumStateBySensorClients( SensorClients sensorClients) throws Exception { int[] states = {1,2,3,4,5,6}; return sensorClientPatchService.findAllByIDNum(sensorClientPatchService.getComputerTargetID(sensorClients.getSensorIP()), "notinCount", states); } public List<PatchUpdateInfo> findAllPatchUpdateNoStateBySensorClients( SensorClients sensorClients) throws Exception { int[] states = {1,2,3,4,5,6}; return sensorClientPatchService.findAllByID(sensorClientPatchService.getComputerTargetID(sensorClients.getSensorIP()), "notin", states); } public PageResult findAllPatchUpdateNoStateBySensorClients( SensorClients sensorClients, PMPage page) throws Exception { int[] states = {1,2,3,4,5,6}; return sensorClientPatchService.findAllByID(sensorClientPatchService.getComputerTargetID(sensorClients.getSensorIP()), "notin", states, page); } public List<PatchUpdateInfo> findAllPatchUpdateOKBySensorClients( SensorClients sensorClients) throws Exception { int[] states = {1,4}; return sensorClientPatchService.findAllByID(sensorClientPatchService.getComputerTargetID(sensorClients.getSensorIP()), "in", states); } public PageResult findAllPatchUpdateOKBySensorClients( SensorClients sensorClients, PMPage page) throws Exception { int[] states = {1,4}; return sensorClientPatchService.findAllByID(sensorClientPatchService.getComputerTargetID(sensorClients.getSensorIP()), "in", states, page); } public int findAllPatchUpdateOkNumBySensorClients( SensorClients sensorClients) throws Exception { int[] states = {1,4}; return sensorClientPatchService.findAllByIDNum(sensorClientPatchService.getComputerTargetID(sensorClients.getSensorIP()), "inCount", states); } public int findClientsNumOfNeedUpdate(List<SensorClients> sensorClientsList) throws Exception { int needNum = 0; for(SensorClients sc: sensorClientsList){ int num = findAllPatchUpdateNeedNumBySensorClients(sc); if(num > 0){ needNum++; } } return needNum; } public List<SensorClients> findClientsOfNeedUpdate( List<SensorClients> sensorClientsList) throws Exception { List<SensorClients> scList = new ArrayList<SensorClients>(); for(SensorClients sc: sensorClientsList){ int num = findAllPatchUpdateNeedNumBySensorClients(sc); if(num > 0){ scList.add(sc); } } return scList; } public List<SensorClients> findClientsOfNeedUpdate( List<SensorClients> sensorClientsList, int startResult, int maxResult) throws Exception { List<SensorClients> scList = findClientsOfNeedUpdate(sensorClientsList); List<SensorClients> list = new ArrayList<SensorClients>(); for(int i=0; i<maxResult; i++){ if((startResult + i) < scList.size()){ list.add(scList.get(startResult + i)); } } if(list!=null && list.size()>0){ return list; }else{ return null; } } }