Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package virnet.experiment.webSocket.hndler; import java.io.IOException; import java.util.ArrayList; import java.util.concurrent.ConcurrentHashMap; import org.springframework.stereotype.Component; import org.springframework.web.socket.CloseStatus; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketHandler; import org.springframework.web.socket.WebSocketMessage; import org.springframework.web.socket.WebSocketSession; import org.springframework.web.socket.handler.TextWebSocketHandler; import net.sf.json.JSONObject; import virnet.experiment.assistantapi.ExperimentSave; import virnet.experiment.assistantapi.FacilityOutPut; import virnet.experiment.assistantapi.PCConfigureInfo; import virnet.experiment.assistantapi.PingVerify; import virnet.experiment.operationapi.FacilityConfigure; import virnet.experiment.operationapi.NTCEdit; import virnet.experiment.operationapi.PCExecute; import virnet.experiment.resourceapi.ResourceAllocate; import virnet.experiment.resourceapi.ResourceRelease; import virnet.management.combinedao.CabinetTempletDeviceInfoCDAO; import virnet.management.combinedao.TaskInfoCDAO; import virnet.experiment.combinedao.ExpConnectCDAO; import virnet.experiment.combinedao.ExpTopoCDAO; import virnet.experiment.combinedao.ExpTopoPositionCDAO; import virnet.experiment.combinedao.ExpVerifyCDAO; import virnet.experiment.combinedao.ExpVerifyPingCDAO; import virnet.experiment.combinedao.ResultConnectCDAO; import virnet.experiment.combinedao.ResultTaskCDAO; import virnet.experiment.combinedao.ResultTopoCDAO; import virnet.experiment.combinedao.ResultTopoPositionCDAO; import virnet.experiment.combinedao.ResultVerifyCDAO; import virnet.experiment.combinedao.ResultVerifyPingCDAO; import virnet.experiment.dao.ExpTopoDAO; import virnet.experiment.entity.ExpTopo;; //import virnet.assistantapi.ExperimentInit; //import virnet.resourceapi.ResourceAllocate; @Component public class MainSystemWebSocketHandler extends TextWebSocketHandler implements WebSocketHandler { private static final ArrayList<WebSocketSession> arrangeUsers; static { arrangeUsers = new ArrayList<>(); } private static final ArrayList<WebSocketSession> expUsers; static { expUsers = new ArrayList<>(); } private static final ArrayList<String> groupExisted = new ArrayList<>(); //?????? public static int newGroupNum = 0; //??? public static int cc = 0; //??????? private static int onlineCount = 0; //??????? private WebSocketSession session; //???session??? private static ConcurrentHashMap<WebSocketSession, String> arrangeUserName = new ConcurrentHashMap<WebSocketSession, String>(); //map???? private static ConcurrentHashMap<WebSocketSession, String> userGroupMap = new ConcurrentHashMap<WebSocketSession, String>(); //??map private static ConcurrentHashMap<WebSocketSession, String> userGroupMapPro = new ConcurrentHashMap<WebSocketSession, String>(); //?map, private static ConcurrentHashMap<WebSocketSession, String> userMap = new ConcurrentHashMap<WebSocketSession, String>(); //group?map private static ConcurrentHashMap<String, String> MapEquipment = new ConcurrentHashMap<String, String>(); //groupFacilityConfiguremap private static ConcurrentHashMap<String, FacilityConfigure> groupFacilityConfigureMap = new ConcurrentHashMap<String, FacilityConfigure>(); //groupFacilityConfiguremap private static ConcurrentHashMap<String, FacilityOutPut> groupFacilityOutPut = new ConcurrentHashMap<String, FacilityOutPut>(); //groupFacilityConfiguremap private static ConcurrentHashMap<String, PCExecute> groupPcConfigureMap = new ConcurrentHashMap<String, PCExecute>(); @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { System.out.println("connect to the websocket success......"); //web socket session??? String userName = (String) session.getAttributes().get("WS_USER_Name"); String workgroup = (String) session.getAttributes().get("WS_USER_WorkGroup"); String pageType = (String) session.getAttributes().get("WS_USER_pageType"); if (pageType.equals("experiment")) { expUsers.add(session); userMap.put(session, workgroup); //?map // userNameMap.put(session, userName); } if (pageType.equals("arrange")) { userGroupMapPro.put(session, workgroup); arrangeUsers.add(session); arrangeUserName.put(session, userName); } this.session = session; //webSocketMap.put(this.session,this); //?map //userGroupMap.put(this.session,workgroup); //?map //session.sendMessage(new TextMessage("Server:connected OK!")); } @Override public void handleMessage(WebSocketSession wss, WebSocketMessage<?> wsm) throws Exception { String message = wsm.getPayload().toString(); System.out.println("message:" + message); //json ? JSONObject jsonString = JSONObject.fromObject(message); //?? if (jsonString.getString("flag").equals("arrange")) { String arrangeStatus = jsonString.getString("arrangeStatus"); if (arrangeStatus.equals("true")) { userGroupMap.put(wss, userGroupMapPro.get(wss)); //?map queueingLogic(1, jsonString); // //endPointQueueingLogic(4,3,jsonString) } } //???? if (jsonString.getString("flag").equals("experiment")) { //??? if (jsonString.getString("type").equals("requestEquipment")) { //Id? String expId = jsonString.getString("expId"); CabinetTempletDeviceInfoCDAO ctdDAO = new CabinetTempletDeviceInfoCDAO(); //? Integer equipmentNumber = ctdDAO.equipmentNumber(expId); //??##?????(RT##SW2##SW2#SW3#PC##PC) String name_Str = ctdDAO.equipment(expId); // TaskInfoCDAO tcDAO = new TaskInfoCDAO(); Integer taskNum = tcDAO.taskNum(expId); jsonString.put("equipmentNumber", "" + equipmentNumber); jsonString.put("equipmentName", name_Str); jsonString.put("expTaskNum", "" + taskNum); String mess = jsonString.toString(); wss.sendMessage(new TextMessage(mess)); } //?? if (jsonString.getString("experimentStatus").equals("start")) { JSONObject ss = jsonString; cc++; if (cc == 1) { /*??*/ String cabinet_num = ""; //??##?????(RT##SW2##SW2#SW3#PC##PC) String expId = jsonString.getString("expId"); CabinetTempletDeviceInfoCDAO ctdDAO = new CabinetTempletDeviceInfoCDAO(); String name_Str = ctdDAO.equipment(expId); String duration = "90"; //?(90) long start = System.currentTimeMillis(); ResourceAllocate resourceAllocate = new ResourceAllocate(name_Str, duration); if (resourceAllocate.allocate()) { cabinet_num = resourceAllocate.getCabinetNum(); //? String num_str = resourceAllocate.getNumStr(); //?? String port_str = resourceAllocate.getPortInfoStr();//??????(1@2@3@4@5@6##1@2@3@4@6##1##1@2@3@4@5@6##1@2@3@4@5@6) //experimentInit.setCabinet_num(cabinet_num); //??*/ //?? jsonString.put("type", "sendEquipment"); jsonString.put("equipmentName", name_Str); jsonString.put("equipmentNumStr", num_str); jsonString.put("equipmentPortStr", port_str); jsonString.put("cabinet_num", cabinet_num); sendToGroup(wss, jsonString); System.out.println("?" + cabinet_num); System.out.println("??" + num_str); //System.out.println(port_str); } else { System.out.println("false!"); System.out.println(resourceAllocate.getReturnDetail()); } long end = System.currentTimeMillis(); System.out.println("??" + (end - start) + "ms"); //?map MapEquipment.put(userMap.get(wss), cabinet_num); jsonString.put("experimentStatus", ""); //?? //?? String leftNUM_Str = ""; String rightNUM_Str = ""; String leftport_Str = ""; String rightport_Str = ""; String position = ""; // String expId = jsonString.getString("expId"); ExpTopoDAO tDAO = new ExpTopoDAO(); String para[] = { "expId", expId, "expTaskOrder", "0" }; ExpTopo topo = (ExpTopo) tDAO.getByNProperty(para); //?? if (topo == null) { //?? ExpTopoPositionCDAO tpDAO = new ExpTopoPositionCDAO(); //????? position = tpDAO.defaultPosition(name_Str); ss.put("position", position); ss.put("type", "equipConnectionInfo"); String mess1 = ss.toString(); //??? wss.sendMessage(new TextMessage(mess1)); } //? else { //????Id ExpTopoPositionCDAO tpDAO = new ExpTopoPositionCDAO(); position = tpDAO.position(topo.getExpTopoId()); ExpConnectCDAO ctDAO = new ExpConnectCDAO(); String connectInfo = ctDAO.connectInfo(topo.getExpTopoId()); String connect[] = connectInfo.split(","); // leftNUM_Str = connect[0]; //? rightNUM_Str = connect[1]; //? leftport_Str = connect[2]; //?? rightport_Str = connect[3]; ss.put("position", position); ss.put("leftNUM_Str", leftNUM_Str); ss.put("rightNUM_Str", rightNUM_Str); ss.put("leftport_Str", leftport_Str); ss.put("rightport_Str", rightport_Str); ss.put("type", "equipConnectionInfo"); String mess1 = ss.toString(); wss.sendMessage(new TextMessage(mess1)); } } } //Jtopu??? if (jsonString.getString("type").equals("topoedit")) { JSONObject ss = jsonString; long start = System.currentTimeMillis(); String cabinet_NUM = MapEquipment.get(userMap.get(wss)); //? String leftNUM_Str = jsonString.getString("leftNUM_Str"); //??##? String rightNUM_Str = jsonString.getString("rightNUM_Str"); //???##? String leftport_Str = jsonString.getString("leftport_Str"); //???##? String rightport_Str = jsonString.getString("rightport_Str"); //????##? System.out.println("leftNUM_Str:" + leftNUM_Str + "----rightNUM_Str:" + rightNUM_Str + "----leftport_Str:" + leftport_Str + "----rightport_Str:" + rightport_Str); NTCEdit ntcEdit = new NTCEdit(cabinet_NUM, leftNUM_Str, rightNUM_Str, leftport_Str, rightport_Str); if (ntcEdit.edit()) { String connection_str = leftNUM_Str + "%%" + rightNUM_Str + "%%" + leftNUM_Str + "%%" + rightport_Str; System.out.println(connection_str); jsonString.put("success", true); } else { jsonString.put("success", false); System.out.println("false!"); System.out.println(ntcEdit.getReturnDetail()); } long end = System.currentTimeMillis(); System.out.println("" + (end - start) + "ms"); String mess1 = jsonString.toString(); wss.sendMessage(new TextMessage(mess1)); ss.put("type", "equipConnectionInfo"); String mess2 = ss.toString(); String groupid = userMap.get(wss); for (WebSocketSession user : expUsers) { try { if (user.isOpen() && (userMap.get(user).equals(groupid)) && (!user.equals(wss))) { System.out.println(user.equals(wss)); user.sendMessage(new TextMessage(mess2)); } } catch (IOException e) { e.printStackTrace(); } } } //??0? if (jsonString.getString("type").equals("topoSaveToDatabase")) { String leftNUM_Str = jsonString.getString("leftNUM_Str"); //??##? String rightNUM_Str = jsonString.getString("rightNUM_Str"); //???##? String leftport_Str = jsonString.getString("leftport_Str"); //???##? String rightport_Str = jsonString.getString("rightport_Str"); //????##? String position = jsonString.getString("position"); //? XY??? String expId = jsonString.getString("expId"); String expTaskOrder = jsonString.getString("expTaskOrder"); String expCaseId = jsonString.getString("expCaseId"); String expRole = jsonString.getString("expRole"); //? if (expRole.equals("stu")) { // ResultTaskCDAO taskcDAO = new ResultTaskCDAO(); Integer resultTaskId = taskcDAO.getResultTaskId(expCaseId, expId, expTaskOrder); if (resultTaskId != 0) { ResultTopoCDAO rtcDAO = new ResultTopoCDAO(); Integer resultTopoId = rtcDAO.edit(resultTaskId, leftNUM_Str); if (resultTopoId != 0) { // ResultConnectCDAO rcCDAO = new ResultConnectCDAO(); boolean connectSuccess = rcCDAO.edit(resultTopoId, leftNUM_Str, rightNUM_Str, leftport_Str, rightport_Str); //? ResultTopoPositionCDAO rtpcDAO = new ResultTopoPositionCDAO(); boolean positionSuccess = rtpcDAO.edit(resultTopoId, position); if (connectSuccess && positionSuccess) jsonString.put("success", true); else jsonString.put("success", false); } else jsonString.put("success", false); } else jsonString.put("success", false); } //??? else if (expRole.equals("GM")) { //? ExpTopoCDAO tcDAO = new ExpTopoCDAO(); Integer ExpTopoId = tcDAO.edit(expId, expTaskOrder, leftNUM_Str); if (ExpTopoId != 0) { //? ExpConnectCDAO cCDAO = new ExpConnectCDAO(); boolean connectSuccess = cCDAO.edit(ExpTopoId, leftNUM_Str, rightNUM_Str, leftport_Str, rightport_Str); //?? ExpTopoPositionCDAO tpCDAO = new ExpTopoPositionCDAO(); boolean positionSuccess = tpCDAO.edit(ExpTopoId, position); if (connectSuccess && positionSuccess) jsonString.put("success", true); else jsonString.put("success", false); } else { System.out.println("false"); jsonString.put("success", false); } } else jsonString.put("success", false); String mess = jsonString.toString(); //??? wss.sendMessage(new TextMessage(mess)); } //? if (jsonString.getString("type").equals("command")) { JSONObject ss = jsonString; String equipmentNumber = jsonString.getString("inputEquipmentNumber"); String commandDetail = jsonString.getString("content"); String[] sourceStrArray = jsonString.getString("equipmentName").split("##"); if (sourceStrArray[Integer.parseInt(jsonString.getString("inputEquipmentNumber"))].equals("PC")) { String groupid = userMap.get(wss); ss.put("content", "Administrator:/>" + commandDetail + "\n"); String mess1 = ss.toString(); for (WebSocketSession user : expUsers) { try { if (user.isOpen() && (userMap.get(user).equals(groupid))) { user.sendMessage(new TextMessage(mess1)); } } catch (IOException e) { e.printStackTrace(); } } pcCommandConfigure(equipmentNumber, commandDetail, wss); } else { FacilityCommandConfigure(equipmentNumber, commandDetail, wss); } } //??? if (jsonString.getString("type").equals("communication")) { String groupid = userMap.get(wss); String mess = jsonString.toString(); for (WebSocketSession user : expUsers) { try { if (user.isOpen() && (userMap.get(user).equals(groupid))) { user.sendMessage(new TextMessage(mess)); } } catch (IOException e) { e.printStackTrace(); } } } //? if (jsonString.getString("type").equals("lock")) { String[] sourceStrArray = jsonString.getString("equipmentName").split("##"); if (sourceStrArray[Integer.parseInt(jsonString.getString("inputEquipmentNumber"))].equals("PC")) { if (jsonString.getString("lock").equals("lock")) { pcInitial(jsonString.getString("inputEquipmentNumber"), wss, jsonString); } if (jsonString.getString("lock").equals("unlock")) { pcCancel(jsonString.getString("inputEquipmentNumber"), wss, jsonString); } } else { if (jsonString.getString("lock").equals("lock")) { FacilityInitial(jsonString.getString("inputEquipmentNumber"), wss, jsonString); } if (jsonString.getString("lock").equals("unlock")) { FacilityCancel(jsonString.getString("inputEquipmentNumber"), wss, jsonString); } } String groupid = userMap.get(wss); String mess = jsonString.toString(); for (WebSocketSession user : expUsers) { try { if (user.isOpen() && (userMap.get(user).equals(groupid) && (!user.equals(wss)))) { user.sendMessage(new TextMessage(mess)); } } catch (IOException e) { e.printStackTrace(); } } } //?? if (jsonString.getString("type").equals("saveConfigureFile")) { String cabinet_num = jsonString.getString("cabinet_num"); String expId = jsonString.getString("expId"); String expTaskOrder = jsonString.getString("expTaskOrder"); String equipmentNumber = jsonString.getString("equipmentNumber"); String expRole = jsonString.getString("expRole"); boolean success = false; //? if (expRole.equals("stu")) { String expCaseId = jsonString.getString("expCaseId"); ResultTaskCDAO taskcDAO = new ResultTaskCDAO(); Integer resultTaskId = taskcDAO.getResultTaskId(expCaseId, expId, expTaskOrder); ExperimentSave es = new ExperimentSave(cabinet_num, expId, expTaskOrder, equipmentNumber, expRole, resultTaskId); success = es.save(); } //?? else if (expRole.equals("GM")) { //?????? ExperimentSave es = new ExperimentSave(cabinet_num, expId, expTaskOrder, equipmentNumber, expRole, 0); success = es.save(); } else { success = false; } jsonString.put("success", success); String mess = jsonString.toString(); //??? wss.sendMessage(new TextMessage(mess)); } //ping? if (jsonString.getString("type").equals("pingVerify")) { boolean success = true; String cabinet_num = jsonString.getString("cabinet_num"); String expId = jsonString.getString("expId"); String expTaskOrder = jsonString.getString("expTaskOrder"); String equipmentNumber = jsonString.getString("equipmentNumber"); String leftNUM_Str = jsonString.getString("leftNUM_Str"); //??##? String rightNUM_Str = jsonString.getString("rightNUM_Str"); //???##? String leftport_Str = jsonString.getString("leftport_Str"); //???##? String rightport_Str = jsonString.getString("rightport_Str"); //????##? String expRole = jsonString.getString("expRole"); //???ip? PCConfigureInfo pcInfo = new PCConfigureInfo(cabinet_num, Integer.parseInt(equipmentNumber)); //?? String[] pcip = pcInfo.getIpAddress(); if (pcip[0].equals("fail")) //?? success = false; else { //? PingVerify pv = new PingVerify(cabinet_num, Integer.parseInt(equipmentNumber)); String verifyResult[] = pv.getVerifyResult(pcip); if (verifyResult[0].equals("fail")) //? success = false; else { Integer VerifyId = 0; if (expRole.equals("GM")) { //? //?? ExpVerifyCDAO vcDAO = new ExpVerifyCDAO(); VerifyId = vcDAO.edit(expId, expTaskOrder); if (VerifyId == 0) //? success = false; else { //?ping? ExpVerifyPingCDAO vpCDAO = new ExpVerifyPingCDAO(); vpCDAO.delete(VerifyId); boolean write = vpCDAO.edit(VerifyId, equipmentNumber, pcip, verifyResult, leftNUM_Str, rightNUM_Str, leftport_Str, rightport_Str); if (write) success = true; else success = false; } } else if (expRole.equals("stu")) { // //?ID String expCaseId = jsonString.getString("expCaseId"); ResultTaskCDAO taskcDAO = new ResultTaskCDAO(); Integer resultTaskId = taskcDAO.getResultTaskId(expCaseId, expId, expTaskOrder); //? ResultVerifyCDAO rvcDAO = new ResultVerifyCDAO(); VerifyId = rvcDAO.edit(resultTaskId); if (VerifyId == 0) //? success = false; else { //?ping? ResultVerifyPingCDAO rvpCDAO = new ResultVerifyPingCDAO(); rvpCDAO.delete(VerifyId); boolean write = rvpCDAO.edit(VerifyId, equipmentNumber, pcip, verifyResult, leftNUM_Str, rightNUM_Str, leftport_Str, rightport_Str); if (write) success = true; else success = false; } } else success = false; } } jsonString.put("success", success); String mess = jsonString.toString(); //??? wss.sendMessage(new TextMessage(mess)); } //? if (jsonString.getString("type").equals("release")) { releaseEquipment(wss, jsonString); } } } @Override public void handleTransportError(WebSocketSession wss, Throwable thrwbl) throws Exception { if (wss.isOpen()) { if (expUsers.contains(wss)) expUsers.remove(wss); else arrangeUsers.remove(wss); wss.close(); } System.out.println("websocket connection closed......ERROR"); } @Override public void afterConnectionClosed(WebSocketSession wss, CloseStatus cs) throws Exception { if (expUsers.contains(wss)) expUsers.remove(wss); else arrangeUsers.remove(wss); wss.close(); System.out.println("websocket connection closed......CLOSE"); } @Override public boolean supportsPartialMessages() { return false; } /** * */ public void sendMessageo(String message) throws IOException { this.session.sendMessage(new TextMessage(message)); } public static synchronized int getOnlineCount() { return onlineCount; } public static synchronized void addOnlineCount() { MainSystemWebSocketHandler.onlineCount++; } public static synchronized void subOnlineCount() { MainSystemWebSocketHandler.onlineCount--; } // public static synchronized void queueingLogic(int minNumber, JSONObject jsonString) throws IOException { System.out.println("enter the method!"); for (WebSocketSession tmp : arrangeUsers) { String group = userGroupMap.get(tmp); int number = 0; if (!groupExisted.contains(group)) { for (ConcurrentHashMap.Entry<WebSocketSession, String> entry : userGroupMap.entrySet()) { if (entry.getValue().equals(group)) { number++; } } if (number >= minNumber) { for (ConcurrentHashMap.Entry<WebSocketSession, String> entry : userGroupMap.entrySet()) { if (entry.getValue().equals(group)) { System.out.println("ready to send"); sendStatausToGroup(jsonString, entry.getKey(), group); userGroupMap.remove(entry.getKey()); } } groupExisted.add(group); } } else { if (userGroupMap.remove(tmp) != null) { sendStatausToGroup(jsonString, tmp, group); } } } } //? public static void endPointQueueingLogic(int standardNumber, int minNumber, JSONObject jsonString) throws IOException { for (WebSocketSession tmp : arrangeUsers) { String group = userGroupMap.get(tmp); if (groupExisted.contains(group)) { if (userGroupMap.remove(tmp) != null) { sendStatausToGroup(jsonString, tmp, group); } } else { // if (userGroupMap.size() >= standardNumber) { int number = userGroupMap.size() / standardNumber; int i = 0; for (ConcurrentHashMap.Entry<WebSocketSession, String> entry : userGroupMap.entrySet()) { i++; if (i <= number * standardNumber) ; { int record = ((i - 1) / standardNumber) + 1; sendStatausToGroup(jsonString, entry.getKey(), "new" + record); userGroupMap.remove(entry.getKey()); newGroupNum = record; } } } //?? else if (userGroupMap.size() >= minNumber) { int number = userGroupMap.size() / minNumber; int i = 0; for (ConcurrentHashMap.Entry<WebSocketSession, String> entry : userGroupMap.entrySet()) { i++; if (i <= number * minNumber) ; { int record = newGroupNum + ((i - 1) / standardNumber) + 1; sendStatausToGroup(jsonString, entry.getKey(), "new" + record); userGroupMap.remove(entry.getKey()); } } } } } } //???? public static synchronized void sendStatausToGroup(JSONObject jsonString, WebSocketSession webSS, String finalGroup) throws IOException { System.out.println("send"); jsonString.put("ready", "true"); System.out.println(jsonString.getString("ready")); jsonString.put("finalGroup", finalGroup); System.out.println(jsonString.getString("finalGroup")); System.out.println("before jump:"); jsonString.put("userName", arrangeUserName.get(webSS)); String mess = jsonString.toString(); webSS.sendMessage(new TextMessage(mess)); } public void job1() { System.out.println("loading"); } public void sendToGroup(WebSocketSession wss, JSONObject jsonString) { String groupid = userMap.get(wss); String mess = jsonString.toString(); System.out.println(groupid); for (WebSocketSession user : expUsers) { try { if (user.isOpen() && (userMap.get(user).equals(groupid))) { user.sendMessage(new TextMessage(mess)); } } catch (IOException e) { e.printStackTrace(); } } } //? public void FacilityInitial(String equipmentNumber, WebSocketSession wss, JSONObject jsonString) { String cabinet_NUM = MapEquipment.get(userMap.get(wss)); //? String facility_NUM = (Integer.parseInt(equipmentNumber) + 1) + ""; System.out.println("cabinet_NUM:" + cabinet_NUM); System.out.println("facility_NUM:" + facility_NUM); FacilityConfigure facilityConfigure = new FacilityConfigure(cabinet_NUM, facility_NUM); if (facilityConfigure.connect()) { FacilityOutPut facilityOutPutThread = new FacilityOutPut(facilityConfigure.getInputStream(), wss, jsonString, expUsers, userMap); facilityOutPutThread.start(); groupFacilityConfigureMap.put(userMap.get(wss) + equipmentNumber, facilityConfigure); groupFacilityOutPut.put(userMap.get(wss) + equipmentNumber, facilityOutPutThread); } else { System.out.println("false!"); System.out.println(facilityConfigure.getReturnDetail()); } } // public void FacilityCancel(String equipmentNumber, WebSocketSession wss, JSONObject jsonString) { FacilityConfigure facilityConfigure = groupFacilityConfigureMap.get(userMap.get(wss) + equipmentNumber); FacilityOutPut facilityOutPutThread = groupFacilityOutPut.get(userMap.get(wss) + equipmentNumber); facilityOutPutThread.stopThread(); System.out.println("??"); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } facilityConfigure.end(); groupFacilityConfigureMap.remove(userMap.get(wss) + equipmentNumber); groupFacilityOutPut.remove(userMap.get(wss) + equipmentNumber); } //PC public void pcInitial(String equipmentNumber, WebSocketSession wss, JSONObject jsonString) { String cabinet_NUM = MapEquipment.get(userMap.get(wss)); //? String facility_NUM = (Integer.parseInt(equipmentNumber) + 1) + ""; PCExecute pcExecute = new PCExecute(cabinet_NUM, facility_NUM); if (pcExecute.connect()) { FacilityOutPut facilityOutPutThread = new FacilityOutPut(pcExecute.getInputStream(), wss, jsonString, expUsers, userMap); facilityOutPutThread.start(); groupPcConfigureMap.put(userMap.get(wss) + equipmentNumber, pcExecute); groupFacilityOutPut.put(userMap.get(wss) + equipmentNumber, facilityOutPutThread); } else { System.out.println("false!"); System.out.println(pcExecute.getReturnDetail()); } } public void pcCancel(String equipmentNumber, WebSocketSession wss, JSONObject jsonString) { PCExecute pcExecute = groupPcConfigureMap.get(userMap.get(wss) + equipmentNumber); FacilityOutPut facilityOutPutThread = groupFacilityOutPut.get(userMap.get(wss) + equipmentNumber); facilityOutPutThread.stopThread(); System.out.println("??"); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } pcExecute.end(); groupFacilityConfigureMap.remove(userMap.get(wss) + equipmentNumber); groupPcConfigureMap.remove(userMap.get(wss) + equipmentNumber); } // public void FacilityCommandConfigure(String equipmentNumber, String commandDetail, WebSocketSession wss) { FacilityConfigure facilityConfigure = groupFacilityConfigureMap.get(userMap.get(wss) + equipmentNumber); if (commandDetail.equals("end")) { } if (commandDetail.equals("")) { commandDetail = "NEWLINE"; } facilityConfigure.configure(commandDetail); } //PC public void pcCommandConfigure(String equipmentNumber, String commandDetail, WebSocketSession wss) { PCExecute pcExecute = groupPcConfigureMap.get(userMap.get(wss) + equipmentNumber); if (commandDetail.equals("end")) { } if (commandDetail.equals("")) { commandDetail = "NEWLINE"; } pcExecute.execute(commandDetail); } //? public void releaseEquipment(WebSocketSession wss, JSONObject jsonString) { long start = System.currentTimeMillis(); String cabinet_NUM = MapEquipment.get(userMap.get(wss)); //? ResourceRelease resourceRelease = new ResourceRelease(cabinet_NUM); if (resourceRelease.release()) { System.out.println("??"); jsonString.put("success", true); } else { System.out.println("false!"); System.out.println(resourceRelease.getReturnDetail()); jsonString.put("success", false); } long end = System.currentTimeMillis(); System.out.println("?" + (end - start) + "ms"); String mess = jsonString.toString(); try { wss.sendMessage(new TextMessage(mess)); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }