Architecture

Java Classes
XmlFPServlet
import java.net.*; import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class XmlFPServlet extends HttpServlet { private String DEFAULT_XSL_FILE = "webapps/XmlFP/XmlFP.xsl"; // private ServletOutputStream out; private Hashtable userParams; private ProcessUserAction processUserAction, pua; // ************************** public void init( ServletConfig config ) throws ServletException { } // ************************** public void doGet (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String xml; resp.setContentType("text/html"); out = resp.getOutputStream(); buildUserParams( req, resp ); if ( userParams.get( "userAction" ) == null ){ // default request processUserAction = getProcessUserAction( userParams ); xml = processUserAction.initialContact( userParams ); } else { xml = ProcessUserAction.errorAction(); } System.out.println("xml = " + xml); XSLTransformer.Transform ( xml, DEFAULT_XSL_FILE, out ); out.close(); } // end doGet // ************************** public void doPost (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String xml; resp.setContentType("text/html"); out = resp.getOutputStream(); buildUserParams( req, resp ); processUserAction = getProcessUserAction ( userParams ); if ( processUserAction == null ) { System.out.println("processUserAction is null in doPost" ); xml = processUserAction.nullAction(); } else if (userParams.get( "userAction" ).equals("Get Form")) { xml = processUserAction.getForm( userParams ); } else if (userParams.get( "userAction" ).equals("Add")){ xml = processUserAction.add( userParams ); } else if (userParams.get( "userAction" ).equals("Clear")){ xml = processUserAction.clear( userParams ); } else if (userParams.get( "userAction" ).equals("Quit")){ xml = processUserAction.quit( userParams ); closeSession( userParams ); processUserAction = null; } else { xml = processUserAction.nullAction(); } System.out.println("xml = " + xml); XSLTransformer.Transform ( xml, DEFAULT_XSL_FILE, out ); out.close(); } // end doPost // ************************** private void buildUserParams ( HttpServletRequest req, HttpServletResponse resp ) { String queryString = ""; String method; userParams = new Hashtable(); method = req.getMethod(); if ( method.equals("GET") ) { queryString = req.getQueryString(); } // end if if ( method.equals("POST") ) { try { BufferedReader in = new BufferedReader ( new InputStreamReader(req.getInputStream()) ); String s; while ( (s=in.readLine()) != null ) { queryString += s; } } catch (IOException ex) { System.out.println("IOException building queryString in buildUserParams"); } } // end if if ( queryString == null ) { return; } else { Hashtable tempTable = HttpUtils.parseQueryString ( queryString ); Enumeration keys = tempTable.keys(); while ( keys.hasMoreElements() ) { String tempKey = (String)keys.nextElement(); String[] tempValue = (String[])tempTable.get( tempKey ); userParams.put( tempKey, tempValue[0] ); } // end while } // end else } // end buildUserParams private ProcessUserAction getProcessUserAction ( Hashtable userParams ) { if ( pua == null ) pua = new ProcessUserAction( ); return pua; } // ************************** private boolean closeSession ( Hashtable userParams ) { if ( !(pua == null) ) { System.out.println("processUserAction removed"); pua = null; return true; } else { System.out.println("processUserAction is null"); return false; } } // ************************** } // end DBFormServlet
ProcessUserAction
import java.io.*; import java.util.*; import java.util.Date; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class ProcessUserAction { private Person aPerson; private String message; // ********************* public ProcessUserAction ( ) { super (); aPerson = new Person(); } // end constructor // ********************* public String initialContact ( Hashtable up ) { message = "Welcome.\n"; message += "Add data for a person."; return formClear(); } //********************* public String getForm ( Hashtable up ) { message = "Add data for a person."; return formClear(); } //********************* public String add ( Hashtable up ) { aPerson.setName_first( (String)up.get("name_first") ); aPerson.setName_middle( (String)up.get("name_middle") ); aPerson.setName_last( (String)up.get("name_last") ); aPerson.setAddress( (String)up.get("address") ); aPerson.setCity( (String)up.get("city") ); aPerson.setState( (String)up.get("state") ); aPerson.setZip( (String)up.get("zip") ); message = "Data added successfully."; return report(); } //********************* public String clear ( Hashtable up ) { message = "Add data for a person."; return formClear(); } //********************* public String quit ( Hashtable up ) { message = "Ending session"; String xmlString = "<return_report>\n"; xmlString += "<return_message>" + message + "</return_message>\n"; xmlString += "</return_report>\n"; return xmlString; } //********************* public static String errorAction () { String message = "Error in URL for XslFP"; String xmlString = "<return_report>\n"; xmlString += "<return_message>" + message + "</return_message>\n"; xmlString += "</return_report>\n"; return xmlString; } //********************* public String nullAction () { String xmlString = "<?xml version='1.0'?>\n"; message = "No action specified for XslFP"; xmlString += "<return_report>\n"; xmlString += "<return_message>" + message + "</return_message>\n"; xmlString += "</return_report>\n"; return xmlString; } // ********************* Forms *********************// public String formClear ( ) { String xmlString = "<?xml version='1.0'?>\n"; xmlString += "<return_form>\n"; xmlString += "<return_message>" + message + "</return_message>\n"; xmlString += "<form_person>\n"; xmlString += "<form_item>\n"; xmlString += "<name_first></name_first>\n"; xmlString += "<name_middle></name_middle>\n"; xmlString += "<name_last></name_last>\n"; xmlString += "</pre> xmlString += "<address></address>\n"; xmlString += "<city></city>\n"; xmlString += "<state></state>\n"; xmlString += "<zip></zip>\n"; xmlString += "</form_item>\n"; xmlString += "</form_person>\n"; xmlString += "</return_form>\n"; return xmlString; } //********************* public String formFilled ( ) { String xmlString = "<?xml version='1.0'?>\n"; xmlString += "<return_form>\n"; xmlString += "<return_message>" + message + "</return_message>\n"; xmlString += "<form_person>\n"; xmlString += "<form_item>\n"; xmlString += "<name_first>" + aPerson.getName_first() + "</name_first>\n"; xmlString += "<name_middle>" + aPerson.getName_middle() + "</name_middle>\n"; xmlString += "<name_last>" + aPerson.getName_last() + "</name_last>\n"; xmlString += "<address>" + aPerson.getAddress() + "</address>\n"; xmlString += "<city>" + aPerson.getCity() + "</city>\n"; xmlString += "<state>" + aPerson.getState() + "</state>\n"; xmlString += "<zip>" + aPerson.getZip() + "</zip>\n"; xmlString += "</form_item>\n"; xmlString += "</form_person>"; xmlString += "</return_form>\n"; return xmlString; } // ********************* Reports *********************// public String report ( ) { String xmlString = "<?xml version='1.0'?>\n"; xmlString += "<return_report>\n"; xmlString += "<return_message>" + message + "</return_message>\n"; xmlString += "<report_person>\n"; xmlString += "<report_item>\n"; xmlString += "<name_first>" + aPerson.getName_first() + "</name_first>\n"; xmlString += "<name_middle>" + aPerson.getName_middle() + "</name_middle>\n"; xmlString += "<name_last>" + aPerson.getName_last() + "</name_last>\n"; xmlString += "<address>" + aPerson.getAddress() + "</address>\n"; xmlString += "<city>" + aPerson.getCity() + "</city>\n"; xmlString += "<state>" + aPerson.getState() + "</state>\n"; xmlString += "<zip>" + aPerson.getZip() + "</zip>\n"; xmlString += "</report_item>\n"; xmlString += "</report_person>"; xmlString += "</return_report>\n"; return xmlString; } //********************* }
Person
public class Person { String name_first; String name_middle; String name_last; String address; String city; String state; String zip; public String getName_first() { return name_first; } public void setName_first(String propValue) { name_first = propValue; } public String getName_middle() { return name_middle; } public void setName_middle(String propValue) { name_middle = propValue; } public String getName_last() { return name_last; } public void setName_last(String propValue) { name_last = propValue; } public String getAddress() { return address; } public void setAddress(String propValue) { address = propValue; } public String getCity() { return city; } public void setCity(String propValue) { city = propValue; } public String getState() { return state; } public void setState(String propValue) { state = propValue; } public String getZip() { return zip; } public void setZip(String propValue) { zip = propValue; } }
XSLTransformer
import javax.xml.transform.TransformerFactory; import javax.xml.transform.Transformer; import javax.xml.transform.Source; import javax.xml.transform.*; import javax.xml.transform.stream.*; import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; public class XSLTransformer { public static void Transform ( String xmlData, String xslFileName, ServletOutputStream out ) { try { StringReader xmlStream = new StringReader( xmlData ); Source xmlSource = new StreamSource( xmlStream ); Source xslSource = new StreamSource(new URL("file:" + xslFileName).openStream() ); TransformerFactory tf = TransformerFactory.newInstance(); Transformer transformer = tf.newTransformer( xslSource ); transformer.transform( xmlSource, new StreamResult(out) ); } catch ( Exception e ) { System.out.println ( e.getMessage() ); e.printStackTrace( ); } } // end Transform }
Run program (jbsws-cs.cs.unc.edu:8888)