View Javadoc

1   package org.opensync.schedule;
2   
3   import java.io.*;
4   import java.net.*;
5   import java.util.*;
6   
7   /***
8    * This class represents the service done when a http request is received
9    * 
10   * @version	1.0
11   * @author	SOFTMED
12   * 	
13   */
14  
15  public class HTTPSchedulerService extends Thread {
16    /***
17     * The socket
18     * 
19     */
20    protected Socket socket = null;
21    /***
22     * The scheduler object
23     * 
24     */
25    protected Scheduler scheduler = null;
26  
27    /***
28     * Constrcut the HTTPSchedulerService
29     * 
30     * @param	socket the socket
31     * @param	scheduler the scheduler
32     */
33    public HTTPSchedulerService(Socket socket,Scheduler scheduler) {
34      this.socket = socket;
35      this.scheduler = scheduler;
36    }
37    /***
38     * Run the service
39     * 
40     */
41    public void run(){
42      DataOutputStream out = null;
43      try{
44        BufferedReader in = new BufferedReader(
45          new InputStreamReader(socket.getInputStream())
46        );
47        out = new DataOutputStream(socket.getOutputStream());
48  
49        String line = in.readLine();
50        StringTokenizer tokens = new StringTokenizer(line,"?");
51        boolean ok = false;
52        if(tokens.hasMoreTokens()){
53          tokens.nextToken();
54          if(tokens.hasMoreTokens()){
55            StringTokenizer params = new StringTokenizer(tokens.nextToken(),"=");
56            String param = params.nextToken();
57            if(param.equals("task")){
58              StringTokenizer value = new StringTokenizer(params.nextToken()," ");
59              String task = value.nextToken();
60              String [] req = new String[tokens.countTokens()];
61              ok = true;
62              scheduler.execute(task);
63              out.writeBytes(
64                "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
65                "<response>Task " + task + " started</response>"
66              );
67            }
68          }
69        }
70        if(!ok){
71          out.writeBytes(
72            "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
73            "<response>Request not understood</response>"
74          );
75        }
76        out.close();
77        socket.close();
78      }
79      catch(Exception e){
80        if(out != null){
81          try {
82            out.writeBytes(
83              "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
84              "<response>" + e.getMessage() + "</response>"
85            );
86          }
87          catch (Exception ex) {
88            ex.printStackTrace();
89          }
90        }
91        e.printStackTrace();
92      }
93      finally{
94        if(out != null){
95          try {
96            out.close();
97          }
98          catch (Exception ex) {
99            ex.printStackTrace();
100         }
101       }
102       if(socket != null){
103         try {
104           socket.close();
105         }
106         catch (Exception ex) {
107           ex.printStackTrace();
108         }
109       }
110     }
111   }
112 }