package deserver;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.sql.*;
/*
* Get all users
* Example output:
<?xml version="1.0"?>
<mobileUsers>
<member u_id="1" userId="frank@smap.org" lon="144.415" lat="-37.23" name="Frank" status="available" />
<member u_id="2" userId="stanley@smap.org" lon="144.41" lat="-37.27" name="Stanley" status="available" />
<member u_id="3" userId="melissa@smap.org" lon="144.43" lat="-37.28" name="Melissa" status="busy" />
</mobileUsers>
*/
@Path("/getUsers")
public class GetUsers {
// Respond with XML no matter what media type is requested
@GET
@Produces(MediaType.APPLICATION_XML)
public String getUsers() {
String response = null;
Connection connection = null;
try {
Class.forName("org.postgresql.Driver");
connection = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/de","ws", "ws1234");
Statement statement = connection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
ResultSet resultSet = statement.executeQuery("SELECT " +
"u_id," +
"UserId," +
"longitude," +
"latitude," +
"name," +
"status " +
"FROM " +
"de_users;");
response = "<?xml version=\"1.0\"?>\n" + "<mobileUsers>\n";
while (resultSet.next()) {
String u_id = resultSet.getString("u_id");
String userId = resultSet.getString("userId");
int lon = resultSet.getInt("longitude");
double dLon = lon / 1E7;
String sLon = String.valueOf(dLon);
int lat = resultSet.getInt("latitude");
double dLat = lat / 1E7;
String sLat = String.valueOf(dLat);
String name = resultSet.getString("name");
String status = resultSet.getString("status");
response += "<member u_id=\"" + u_id +
"\" userId=\"" + userId +
"\" lon=\"" + sLon + "\" lat=\"" + sLat +
"\" name=\"" + name + "\" status=\"" + status +"\" />\n";
}
response += "</mobileUsers>\n";
} catch (SQLException e) {
response = e.getMessage();
System.out.println(response);
e.printStackTrace();
} catch (ClassNotFoundException e) {
response = e.getMessage();
System.out.println(response);
e.printStackTrace();
} finally {
try {
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
System.out.println("Failed to close connection");
e.printStackTrace();
}
}
return response;
}
}
|