Model Class


ProcessUserAction

package edu.jbs.ooc.ui;

import java.io.*;
import java.util.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;

import com.ibm.ejs.ns.jndi.*;
import javax.naming.*;
import javax.ejb.*;

import edu.jbs.ooc.databeans.*;
import edu.jbs.ooc.beans.*;
import edu.jbs.ooc.util.*;

public class ProcessUserAction
{
        
	private String message;

	private SessionDB session;
	
	private java.lang.String type;
	private java.util.Date lastAccess;
	private java.util.Vector tableNames;
	private java.util.Hashtable multipleResults;
	
// *********************
    
    public ProcessUserAction ( )  {
	    
        super ();

        Vector v = new Vector();
        v.add("Person");
        v.add("Content Object");        
        v.add("File");
        setTableNames ( v );

        multipleResults = new Hashtable();

        buildSession( );
        
        
    }  // end constructor

//*********************

 /**
 * Insert the method's description here.
 * Creation date: (9/21/2001 2:47:27 PM)
 */
 
public void buildSession() {

	try
	{

	    Properties properties = new Properties();
	    properties.put( javax.naming.Context.PROVIDER_URL, "IIOP://localhost:900/" );
	    properties.put( javax.naming.Context.INITIAL_CONTEXT_FACTORY, "com.ibm.ejs.ns.jndi.CNInitialContextFactory" );
	    
	    InitialContext initialContext = new InitialContext( properties );
	    	     
	    Object initialReference = initialContext.lookup( "edu/jbs/ooc/beans/SessionDB" );		
	    
	    SessionDBHome home = (SessionDBHome)
	    	javax.rmi.PortableRemoteObject.narrow( initialReference, SessionDBHome.class );
	    	    		
	    session = home.create();
	     
	}
	catch(Throwable theException)
	{
	    System.out.println( "Error in Servlet: UIServlet.buildSession" );
	    theException.printStackTrace();
	}

	
}

//*********************

public String add ( UIBean uiBean )  {         
       
	TransportBean reqBean = buildTransportBean( uiBean );
	reqBean.setAction("Add");
		
	ViewBean viewBean = getViewBean( reqBean );
	
	if ( reqBean == null )  {
		viewBean.setMessage( "Add failed; error building parameters." );
		return formFilled( viewBean );
	}
	
	try  
	{
		TransportBean respBean = (TransportBean)session.processAction( reqBean );
		if ( respBean != null )  {
			viewBean.setMessage( respBean.getResponseMessage() );
			ObjectBean objBean = (ObjectBean)(respBean.getBeanCurrent());
			if ( objBean != null ) viewBean.setValues( objBean.getValues() ); 
			return formFilled( viewBean );
		}  else  {
			viewBean.setMessage( "Add failed." );
			return formFilled( viewBean );
		}       
	}  catch(Throwable e)
	{
		System.out.println( "Error in processUserAction.add" );
		e.printStackTrace();
		viewBean.setMessage( "Add failed in processUserAction.catch." );
		return formFilled( viewBean );
	}		
        
}

//*********************

/**
 * Insert the method's description here.
 * Creation date: (9/20/2001 3:41:13 PM)
 * @return boolean
 * @param up java.util.Hashtable
 */
 
public TransportBean buildTransportBean( UIBean uiBean ) {

	Hashtable up = uiBean.getUserParams();
	if ( up == null ) return null;
	
	TransportBean trptBean = new TransportBean();
	ObjectBean objBean = new ObjectBean();
	
	String dataObject = uiBean.getDataObject();			
	if ( dataObject.equalsIgnoreCase("person") ) trptBean.setTarget( ObjectBean.PERSON );
	else if ( dataObject.equalsIgnoreCase("content") ) trptBean.setTarget( ObjectBean.CONTENT );
	else if ( dataObject.equalsIgnoreCase("file") ) trptBean.setTarget( ObjectBean.FILE );
	else trptBean.setTarget( 0 );
		
	Enumeration keys = up.keys();
	while ( keys.hasMoreElements() )  {
		String key = (String)keys.nextElement();
		String value = (String)(up.get(key));
		objBean.setValue( key, value );
	}

	trptBean.add( objBean );
	
	return trptBean;
}
    //*********************

    public String clear ( UIBean uiBean )  {
        

        ViewBean viewBean = this.getViewBeanClear( uiBean );
        viewBean.setMessage("Fields cleared.");	   
        
        return formClear( viewBean );

        
    }
//*********************

    public String delete ( UIBean uiBean )  {
        
	TransportBean reqBean = buildTransportBean( uiBean );	
	reqBean.setAction("Delete");
	
	ViewBean viewBean = getViewBean( reqBean );
	
	if ( reqBean == null )  {
		viewBean.setMessage( "Delete failed; error building parameters." );
		return formFilled( viewBean );
	}
	
	try  
	{
		TransportBean respBean = (TransportBean)session.processAction( reqBean );
		
		if ( respBean != null )  {
			viewBean.setMessage( respBean.getResponseMessage() );
			ObjectBean objBean = (ObjectBean)(respBean.getBeanCurrent());
			if ( objBean != null ) viewBean.setValues( objBean.getValues() ); 
			return formFilled( viewBean );
		}  else  {
			viewBean.setMessage( "Delete failed." );
			return formFilled( viewBean );
		}       
	}  catch(Throwable e)
	{
		System.out.println( "Error in processUserAction.delete" );
		e.printStackTrace();
		viewBean.setMessage( "Delete failed in catch." );
		return formFilled( viewBean );
	}
	   
        
}
//*********************
    
    public static String errorAction ( String message )  {
        
        String xmlString  = "<return_report>\n";
               
               xmlString += "<return_message>" + message + "</return_message>\n";
               
               xmlString += "</return_report>\n";
               
         return xmlString;

    }
/**
 * Insert the method's description here.
 * Creation date: (3/19/2002 2:30:47 PM)
 * @return java.lang.String
 * @param uiBean edu.jbs.ooc.databeans.UIBean
 */
public String fileUpload(UIBean uiBean) {
		
	if ( !( ((Boolean)(uiBean.getSysParam("writeFileOK"))).booleanValue() ) )  {
		ViewBean viewBean = new ViewBean();
		viewBean.setMessage( "File Upload failed; error writing file." );
		return formFilled( viewBean );
	} 
	
	TransportBean reqBean = buildTransportBean( uiBean );	
	ViewBean viewBean = getViewBean( reqBean );
	
	if ( reqBean == null )  {
		viewBean.setMessage( "Add failed; error building parameters." );
		return formFilled( viewBean );
	}
			
	return update( uiBean );
}
// *********************  Forms  *********************//

       public String  formClear ( ViewBean viewBean )  {
        
        /*
	       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 += "<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 formFilled ( viewBean );
        
    }
//*********************

       public String  formFilled ( ViewBean viewBean )  {
        
		  String urlString = "";
	       if ( viewBean instanceof ViewBeanFile )  {
			  urlString = ((ViewBeanFile)viewBean).getXMLforURL() + "\n";
		  }	
	       
	      String xmlString =  "<?xml version='1.0'?>\n";
        
               xmlString += "<form_data_object>\n";
                              
               xmlString += "<data_object_name>" + viewBean.getTargetName() + "</data_object_name>\n";
               xmlString += "<data_object_id>" + viewBean.getObjectID() + "</data_object_id>\n";              
               xmlString += "<response_message>" + viewBean.getMessage() + "</response_message>\n";
               
               xmlString += "<entries>\n";
                
               xmlString += "<item>\n";
               xmlString += viewBean.getXML();
               xmlString += "</item>\n";
               
               xmlString += "</entries>\n";

               xmlString += urlString;
               
               xmlString += "</form_data_object>\n";
               
         return xmlString;
        
    }

/**
 * Insert the method's description here.
 * Creation date: (3/5/2002 4:12:25 PM)
 * @return java.lang.String
 */
public String formLogon() {
	
		String xmlString =  "<?xml version='1.0'?>\n";
		
               xmlString += "<form_logon>\n";
               
               xmlString += "<response_message>" + "Logon." + "</response_message>\n";
               
               xmlString += "</form_logon>";
               
         return xmlString;
        
}
/**
 * Insert the method's description here.
 * Creation date: (3/6/2002 9:53:06 AM)
 * @return java.lang.String
 */
private String formSelectTable( ViewBean viewBean ) {
	
	 String xmlString =  "<?xml version='1.0'?>\n";

        xmlString += "<form_select_table>\n";          
        
        xmlString += "<form_select_table_entries>\n";
        xmlString += getTableNamesAsXml();
        xmlString += "</form_select_table_entries>\n";
        
        xmlString += "<response_message>" + viewBean.getMessage() +"</response_message>\n";

        xmlString += "</form_select_table>\n";
        
        return xmlString;
        
}
/**
 * Insert the method's description here.
 * Creation date: (3/5/2002 4:24:32 PM)
 * @return java.lang.String
 */
public String formWelcome() {
	
	String xmlString =  "<?xml version='1.0'?>\n";
        xmlString += "<form_welcome>\n";
   		xmlString += "</form_welcome>\n";
   		
    return xmlString;
	
}
//*********************

    public String getForm ( UIBean uiBean )  {
        
        // dummy implementation for testing
	    
	    ViewBeanPerson vfp = new ViewBeanPerson();  
        
	    vfp.setMessage( "Data for a person." );
        
        return formFilled( vfp );
        
    }
/**
 * Insert the method's description here.
 * Creation date: (2/25/2002 9:14:03 AM)
 * @return java.util.Date
 */
public java.util.Date getLastAccess() {
	return lastAccess;
}
/**
 * Insert the method's description here.
 * Creation date: (3/5/2002 4:09:57 PM)
 * @return java.lang.String
 * @param uiBean edu.jbs.ooc.databeans.UIBean
 */
public String getLogon() {
	
	return formLogon();
	
}
/**
 * Insert the method's description here.
 * Creation date: (4/2/2002 7:55:40 AM)
 * @return java.util.Hashtable
 */
private TransportBean getMultipleResults( String objectID) {
	
	return (TransportBean)multipleResults.get( objectID );;
	
}
//*********************

    public String getReport ( UIBean uiBean )  {
        
        ViewBean vb = new ViewBean();  
        
	    vb.setMessage( "Report." );
               
        return report( vb );
        
    }
/**
 * Insert the method's description here.
 * Creation date: (3/6/2002 10:41:46 AM)
 * @return java.lang.String
 */
public String getTableNamesAsXml() {
	
	String xmlString = "";
	
	if ( tableNames != null )  {
		for (int i=0;i<tableNames.size();i++)  {
            String name = (String)tableNames.elementAt(i);
            xmlString += "<table_item>\n";
            xmlString += "<name>" + "table" + "</name>\n";
            xmlString += "<value>" + name + "</value>\n";
            xmlString += "</table_item>\n";
        }
		return xmlString;
	}
	else return null;
}
/**
 * Insert the method's description here.
 * Creation date: (3/8/2002 2:30:11 PM)
 * @return edu.jbs.ooc.databeans.ResponseBean
 * @param reqBean edu.jbs.ooc.databeans.RequestBean
 */
private ViewBean getViewBean(TransportBean reqBean) {
	
	 ViewBean viewBean;
	 
	 int target = reqBean.getTarget();
	 if ( target == ObjectBean.PERSON ) {
		 viewBean = new ViewBeanPerson();		 
	 }
	 else if ( target == ObjectBean.CONTENT ) {
		 viewBean = new ViewBeanContent();
	 }
	 else if ( target == ObjectBean.FILE ) {
		 viewBean = new ViewBeanFile();
	 }
	 else return null;
	 
	 ObjectBean objBean = (ObjectBean)reqBean.getBeanCurrent();
	 if ( objBean != null ) viewBean.setValues( objBean.getValues() );

	 return viewBean;
	
}
/**
 * Insert the method's description here.
 * Creation date: (3/8/2002 2:30:11 PM)
 * @return edu.jbs.ooc.databeans.ResponseBean
 * @param reqBean edu.jbs.ooc.databeans.RequestBean
 */
private ViewBean getViewBeanClear(UIBean uiBean) {
	
	 ViewBean viewBean;
	 
	 String target = uiBean.getUserParam( "dataObject" );
	 if ( target.equalsIgnoreCase("person") ) {
		 viewBean = new ViewBeanPerson();		 
	 }
	 else if ( target.equalsIgnoreCase("content") ) {
		 viewBean = new ViewBeanContent();
	 }
	 else  {
		 viewBean = new ViewBeanFile();
	 }

	return viewBean;
	
}
// *********************

    public String initialContact ( )  {
        
        ViewBeanPerson viewBean = new ViewBeanPerson();
        viewBean.setMessage("Welcome.\nAdd data for a person.");	   
        
        return formClear( viewBean );
        
    }
//*********************
    
    public String nullAction ()  {
        
        String xmlString =  "<?xml version='1.0'?>\n";
        
               message = "No action specified for ooc UIServlet";
               
               xmlString += "<return_report>\n";
               
               xmlString += "<return_message>" + message + "</return_message>\n";
               
               xmlString += "</return_report>\n";
               
         return xmlString;
         
    }
/**
 * Insert the method's description here.
 * Creation date: (3/6/2002 1:25:36 PM)
 * @return java.lang.String
 * @param uiBean edu.jbs.ooc.databeans.UIBean
 */
public String openTable(UIBean uiBean) {
	
	String tableName = uiBean.getUserParam("tableName");

	if ( tableName == null )  {
		ViewBeanPerson viewBean = new ViewBeanPerson();
		viewBean.setMessage( "No table selected; click one of the buttons on the left." );
		return formSelectTable( (ViewBean)viewBean );
	}
	else if ( tableName.equalsIgnoreCase("person") )	{
		ViewBeanPerson viewBean = new ViewBeanPerson();
		return formFilled( (ViewBean)viewBean );
	}
	else if ( tableName.equalsIgnoreCase("content object") )	{
		ViewBeanContent viewBean = new ViewBeanContent();
		return formFilled( (ViewBean)viewBean );
	} 
	else if ( tableName.equalsIgnoreCase("file") )	{
		ViewBeanFile viewBean = new ViewBeanFile();
		return formFilled( (ViewBean)viewBean );
	}
	else {
		ViewBean viewBean = new ViewBean();
		viewBean.setMessage( "System error." );
		return formSelectTable( (ViewBean)viewBean );
	}
		
	
}
//*********************

    public String quit ( UIBean uiBean )  {
        
        ViewBean vb = new ViewBean();  
        
	    vb.setMessage( "Ending session." );
               
        return report( vb );
        
    }
// *********************  Reports  *********************//

       public String  report ( ViewBean viewBean )  {
        
        String xmlString =  "<?xml version='1.0'?>\n";
               
      		xmlString += "<report_data_object>\n";
      		
      		xmlString += "<data_object_name>" + viewBean.getTargetName() + "</data_object_name>\n";
        	xmlString += "<response_message>" + viewBean.getMessage() + "</response_message>\n";
               
         	xmlString += "<entries>\n";
                
        	xmlString += "<item>\n";
         	xmlString += viewBean.getXML();
         	xmlString += "</item>\n";
      
         	xmlString += "</entries>\n";
               
           	xmlString += "</report_data_object>\n";    
               
         return xmlString;
        
    }
    //*********************

    public String search ( UIBean uiBean )  {
	    
	TransportBean reqBean = buildTransportBean( uiBean );	
	reqBean.setAction("Search");
	
	ViewBean viewBean = getViewBean( reqBean );
	
	if ( reqBean == null )  {
		viewBean.setMessage( "Search failed; error building parameters." );
		return formFilled( viewBean );
	}
	
	try  
	{
		TransportBean respBean = (TransportBean)session.processAction( reqBean );
		if ( respBean != null )  {
			String objectID = BeanUtils.getUniqueID();
			respBean.setObjectID( objectID );
			viewBean.setObjectID( objectID );
			viewBean.setMessage( respBean.getResponseMessage() );
			ObjectBean objBean = (ObjectBean)(respBean.getBeanCurrent());
			if ( objBean != null ) viewBean.setValues( objBean.getValues() );
			setMultipleResults( objectID, respBean );
			viewBean.setMessage( "Search succeeded; number of entries found: " + respBean.size() );
			return formFilled( viewBean );			
		}  else  {
				viewBean.setMessage( "Search failed. No entries were found." );
				return formFilled( viewBean );
			}
		}  catch(Throwable e)
		{
	    	System.out.println( "Error in processUserAction.search" );
	    	e.printStackTrace();
	    	viewBean.setMessage( "Search failed in catch." );
			return formFilled( viewBean );
		}

    }
/**
 * Insert the method's description here.
 * Creation date: (3/7/2002 3:59:47 PM)
 * @return java.lang.String
 * @param param edu.jbs.ooc.databeans.UIBean
 */
public String selectTable(UIBean param) {
	
	ViewBean viewBean = new ViewBean();
	viewBean.setMessage( "Select table.." );
	return formSelectTable( viewBean );
	
}
/**
 * Insert the method's description here.
 * Creation date: (2/25/2002 9:14:03 AM)
 * @param newLastAccess java.util.Date
 */
public void setLastAccess() {
	
	lastAccess = new java.util.Date();
	
}
/**
 * Insert the method's description here.
 * Creation date: (4/2/2002 7:55:40 AM)
 * @param newMultipleResults java.util.Hashtable
 */
private boolean setMultipleResults( String objectID, TransportBean tpBean ) {
	
	if ( (objectID == null) || (tpBean == null) ) return false;
	
	multipleResults.put( objectID, tpBean );
	
	return true;
	
}
/**
 * Insert the method's description here.
 * Creation date: (3/6/2002 10:40:08 AM)
 * @param newTableNames java.util.Vector
 */
public void setTableNames(java.util.Vector newTableNames) {
	tableNames = newTableNames;
}
/**
 * Insert the method's description here.
 * Creation date: (4/1/2002 11:25:09 AM)
 * @return java.lang.String
 * @param uiBean edu.jbs.ooc.databeans.UIBean
 */
public String stepResults(UIBean uiBean) {
	
	ViewBean viewBean;
	
	String objectID = uiBean.getUserParam( "objectID" );
	if ( objectID == null )  {
		return errorAction( "Error in stepResults: no objectID recieved." );
	}
	
	TransportBean tpBean = getMultipleResults( objectID );
	if ( tpBean == null )  {
		return errorAction( "Error in stepResults: not multiple results." );
	}

	int current;
	int size = tpBean.size();
	String userAction = uiBean.getUserAction();

	if ( (userAction.trim()).equals( "<<" ) ) current = tpBean.getIndexFirst();
	else if ( (userAction.trim()).equals( "<" ) ) current = tpBean.getIndexPrevious();
	else if ( (userAction.trim()).equals( ">" ) ) current = tpBean.getIndexNext();
	else if ( (userAction.trim()).equals( ">>" ) ) current = tpBean.getIndexLast();
	else return errorAction( "Error in stepResults: unrecognized action" );
	
	viewBean = getViewBean( tpBean );
	viewBean.setObjectID( objectID );
	viewBean.setMessage( "Row " + (current+1) + " of " + size + " displayed.");
	
	return formFilled( viewBean );

	
}
    //*********************

    public String update ( UIBean uiBean )  {
        
    TransportBean reqBean = buildTransportBean( uiBean );	
	reqBean.setAction("Update");	
    
    ViewBean viewBean = getViewBean( reqBean );
	
	if ( reqBean == null )  {
		viewBean.setMessage( "Update failed; error building parameters." );
		return formFilled( viewBean );
	}
	
	try  
	{
		TransportBean respBean = (TransportBean)session.processAction( reqBean );
		if ( respBean != null )  {
			viewBean.setMessage( respBean.getResponseMessage() );
			ObjectBean objBean = (ObjectBean)(respBean.getBeanCurrent());
			if ( objBean != null ) viewBean.setValues( objBean.getValues() ); 
			return formFilled( viewBean );
		}  else  {
			viewBean.setMessage( "Update failed." );
			return formFilled( viewBean );
		}       
	}  catch(Throwable e)
	{
		System.out.println( "Error in processUserAction.update" );
		e.printStackTrace();
		viewBean.setMessage( "Update failed in catch." );
		return formFilled( viewBean );
	}		
    }
/**
 * Insert the method's description here.
 * Creation date: (3/6/2002 9:26:26 AM)
 * @return java.lang.String
 * @param param edu.jbs.ooc.databeans.UIBean
 */
public String verifyLogon(UIBean uiBean) {
	
	if ( true )  {

		return windowMainFrameset();
		
		//return selectTable();
	}
	else return null;
	
}
/**
 * Insert the method's description here.
 * Creation date: (3/5/2002 4:23:34 PM)
 * @return java.lang.String
 */
public String welcome() {
	
	return formWelcome();;
	
}

/**
 * Insert the method's description here.
 * Creation date: (4/24/2002 9:47:23 AM)
 * @return java.lang.String
 */
private String windowMainFrameset() {
	
	String xmlString =  "<?xml version='1.0'?>\n";
		
   		xmlString += "<window_main_frameset>\n";
               
      	xmlString += "<user_type>" + "super" + "</user_type>\n";
               
   		xmlString += "</window_main_frameset>";
               
	return xmlString;
         
}
}  // end ProcessUserAction