Status.java

1   /*
2    * Copyright (c) 2009, Sun Microsystems
3    * All rights reserved.
4    * 
5    * Redistribution and use in source and binary forms, with or without
6    * modification, are permitted provided that the following conditions are met:
7    * 
8    * Redistributions of source code must retain the above copyright notice, this
9    * list of conditions and the following disclaimer.
10   * 
11   * Redistributions in binary form must reproduce the above copyright notice,
12   * this list of conditions and the following disclaimer in the documentation
13   * and/or other materials provided with the distribution.
14   * 
15   * Neither the name of the Sun Microsystems nor the names of its contributors
16   * may be used to endorse or promote products derived from this software without
17   * specific prior written permission.
18   * 
19   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29   * POSSIBILITY OF SUCH DAMAGE.
30   */
31  
32  package org.sunspotworld.demo;
33  
34  import com.sun.spot.peripheral.Spot;
35  import java.io.IOException;
36  import com.sun.spot.wot.WebApplication;
37  import com.sun.spot.wot.http.HttpResponse;
38  import com.sun.spot.wot.http.HttpRequest;
39  
40  /**
41   *
42   * @author vgupta
43   */
44  public class Status extends WebApplication {
45      public void init() {};
46  
47      public Status(String str) {
48          super(str);
49      }
50  
51      public HttpResponse processRequest(HttpRequest request) throws IOException {
52          HttpResponse response = new HttpResponse();
53          String respStr = null;
54          String name = Spot.getInstance().getPersistentProperties().getProperty("spot.name");
55          String routingMode = Spot.getInstance().getPersistentProperties().getProperty("spot.mesh.routing.enable");
56          
57          if (request.getMethod().equalsIgnoreCase("GET")) {
58              respStr = "{\n" +
59                      "n:\"" + ((name == null) ? "" : name) + "\",\n" +
60                      "b:" +
61                      Spot.getInstance().getPowerController().getBattery().getBatteryLevel() + ",\n" +
62                      "c:\"" +
63                      (Spot.getInstance().getUsbPowerDaemon().isUsbPowered() ? "y" : "n") + "\",\n" +
64                      "u:" + Spot.getInstance().getSleepManager().getUpTime() + ",\n" +
65                      "e:\"" + ((routingMode != null && routingMode.equals("ENDNODE")) ? "y" : "n") + "\"\n" +
66                      "}\n";
67  
68              response.setStatus(HttpResponse.SC_OK);
69              response.setHeader("Content-Type", "text/plain");
70              response.setHeader("Cache-Control", "max-age=30");
71              response.setBody(respStr.getBytes());
72  
73              return response;
74          } else {
75              response.setStatus(HttpResponse.SC_METHOD_NOT_ALLOWED);
76              response.setHeader("Allow", "GET");
77  
78              return response;
79          }
80      }
81  }
82