package reportbuilder; import java.io.InputStream; import java.io.OutputStream; import java.io.IOException; import java.net.Socket; import java.util.Scanner; public class WorkerRunnable implements Runnable { private ConnectionIndex conIndex; protected Socket clientSocket = null; protected String serverText = null; public WorkerRunnable(ConnectionIndex conIndex, Socket clientSocket, String serverText) { this.conIndex = conIndex; this.clientSocket = clientSocket; this.serverText = serverText; } public void run() { try { InputStream input = clientSocket.getInputStream(); OutputStream output = clientSocket.getOutputStream(); long time = System.currentTimeMillis(); int conId = -1; String reportId = ""; try { Scanner scan = new Scanner(input); String qstr = scan.nextLine(); qstr = qstr.substring(qstr.indexOf("?") + 1).trim(); String qsplit[] = qstr.split("&"); for (int i = 0; i < qsplit.length; i++) { String vv[] = qsplit[i].split("="); if (vv[0].equals("conId")) { conId = Integer.parseInt(vv[1]); } else if (vv[0].equals("rId")) { reportId = vv[1]; } } new Thread(new CreateReport(conIndex, conId, reportId)).start(); } catch (Exception ex) { //System.out.println("ERR:HTTP 1.0:: " + ex.getMessage()); ReportBuilder.writeMessage("ERR:HTTP 1.0:: " + ex.getMessage()); } //String outputText = "HTTP/1.1 200 OK\n\nWorkerRunnable: scan " + qstr + ":::" + this.serverText + " - " + time + ""; String outputText = "HTTP/1.1 200 OK\n\ncId=" + conId + "&rId=" + reportId; output.write(outputText.getBytes()); output.close(); input.close(); System.out.println("Request processed: " + time); } catch (IOException e) { e.printStackTrace(); } } }