package dk.thoerup.traininfoservice; import java.io.IOException; import java.sql.SQLException; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class LocateStations */ public class LocateStations extends HttpServlet { private static final long serialVersionUID = 1L; Logger logger = Logger.getLogger( LocateStations.class.toString() ); StationDAO stationDao = new StationDAO(); protected String transformToIntList(String input) { String strings[] = input.split(","); StringBuffer sb = new StringBuffer(); sb.append("("); for (int i = 0; i0) { sb.append(","); } sb.append( Integer.parseInt(strings[i])); //by doing the integer conversion we ensure that it really is a integer } sb.append(")"); return sb.toString(); } protected List getStations(HttpServletRequest req) throws SQLException { List stations = null; if (req.getParameter("latitude") != null && req.getParameter("latitude") != null) { Statistics.getInstance().incrementStationLookupsLocation(); double latitude = Double.parseDouble( req.getParameter("latitude") ); double longitude = Double.parseDouble( req.getParameter("longitude") ); stations = stationDao.getByLocation(latitude, longitude); } else if (req.getParameter("name") != null) { Statistics.getInstance().incrementStationLookupsName(); String name = req.getParameter("name").trim(); stations = stationDao.getByName(name); } else if (req.getParameter("list") != null) { Statistics.getInstance().incrementStationLookupsFavorites(); String list = transformToIntList( req.getParameter("list")); stations = stationDao.getByList(list); } return stations; } protected String formatStations(List stations) { StringBuffer buff = new StringBuffer(); //buff.append("\n"); buff.append("\n"); for (int i=0; i\n"); buff.append("").append( station.getId() ).append("\n"); buff.append("").append( station.getName() ) .append("\n"); buff.append("").append( station.getLatitude() ) .append("\n"); buff.append("").append( station.getLongitude() ) .append("\n"); buff.append("").append( station.getRegional() != null ) .append("\n"); buff.append("").append( station.getStrain() != null ) .append("\n"); buff.append("").append( station.getMetro() != null ).append("\n"); buff.append("
").append( station.getAddress() != null ? station.getAddress() : "").append("
"); buff.append("").append( station.getCalcdist() ) .append("\n"); buff.append("\n"); } buff.append("
\n"); return buff.toString(); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { List stations = getStations(request); if (stations != null){ String xml = formatStations(stations); response.setContentType("text/xml"); response.getWriter().print(xml); } else { response.sendError(400, "not enough parameters"); } } catch (Exception e) { logger.log(Level.SEVERE, "Exception while finding stations", e); response.sendError(500); } } }