FileDocCategorySizeDatePackage
RicoZipCodesObjectServlet.javaAPI DocExample2762Wed May 24 09:19:06 BST 2006com.oreilly.ajax.servlet

RicoZipCodesObjectServlet.java

/*
 * Takes a character, converts it to hex, decimal, binary, octal and html. Then
 * wraps each of the fields with XML and sends it back through the response.
 */
package com.oreilly.ajax.servlet;

import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.oreilly.ajax.DatabaseConnector;
import com.oreilly.ajax.RicoUtil;

public class RicoZipCodesObjectServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {
		String responseString = null;

		String zipCode = req.getParameter("zip");
		if (zipCode != null) {
			HashMap location = getCityState(zipCode);
			if (location==null || location.size()==0){
				location = new HashMap();

				String message = "Zip code: "+zipCode+" is not in the database. Please enter your City and State";
			  location .put("message",message);
      }
      
			responseString = RicoUtil.buildRicoObjectXML(location,"");		
		}
		if (responseString != null) {
			System.out.println(responseString);
			res.setContentType("text/xml");
			res.setHeader("Cache-Control", "no-cache");
			res.getWriter().write(responseString);
		} else {
			// If key comes back as a null, return a question mark.
			res.setContentType("text/xml");
			res.setHeader("Cache-Control", "no-cache");
			res.getWriter().write("?");
		}
	}

	private HashMap getCityState(String zipCode) {
		Connection con = DatabaseConnector.getConnection();
		HashMap cityStateMap = new HashMap();
		String queryString = "";
		try {
			queryString = "SELECT CITY, STATE FROM ZIPCODES where ZIPCODE='"
					+ zipCode + "';";
			Statement select = con.createStatement();
			ResultSet result = select.executeQuery(queryString);

			while (result.next()) { // process results one row at a time
				String city;
				String state;

				city = result.getString("CITY");
				if (result.wasNull()) {
					city = "";
				}
				cityStateMap.put("city", city);
				state = result.getString("state");
				if (result.wasNull()) {
					state = "";
				}
				cityStateMap.put("state", state);
			}
		} catch (Exception e) {
			System.out.println("exception caught getting city/state:"
					+ queryString + " " + e.getMessage());
		} finally {
			if (con != null) {
				try {
					con.close();
				} catch (SQLException e) {
				}
			}
		}
		return cityStateMap;
	}
}