XML/XSL Architecture for Fast Prototype

 


Architecture

 

 

Java Classes

Run Program


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)