244 lines
8.0 KiB
Java
244 lines
8.0 KiB
Java
package org.thdl.lex;
|
|
|
|
import java.io.IOException;
|
|
import java.util.*;
|
|
import javax.servlet.RequestDispatcher;
|
|
import javax.servlet.ServletConfig;
|
|
import javax.servlet.ServletException;
|
|
import javax.servlet.http.HttpServlet;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpSession;
|
|
import org.apache.log4j.*;
|
|
import org.thdl.lex.commands.*;
|
|
|
|
import org.thdl.lex.component.*;
|
|
|
|
|
|
/**
|
|
* Description of the Class
|
|
*
|
|
* @author travis
|
|
* @created October 1, 2003
|
|
*/
|
|
public class LexActionServlet extends HttpServlet
|
|
{
|
|
//attributes
|
|
private HashMap commands;
|
|
|
|
//accessors
|
|
|
|
/**
|
|
* Sets the commands attribute of the LexActionServlet object
|
|
*
|
|
* @param commands The new commands value
|
|
* @since
|
|
*/
|
|
public void setCommands( HashMap commands )
|
|
{
|
|
this.commands = commands;
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Gets the commands attribute of the LexActionServlet object
|
|
*
|
|
* @return The commands value
|
|
* @since
|
|
*/
|
|
public HashMap getCommands()
|
|
{
|
|
return commands;
|
|
}
|
|
|
|
|
|
|
|
//helper methods
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param config Description of Parameter
|
|
* @exception ServletException Description of Exception
|
|
* @since
|
|
*/
|
|
public void init( ServletConfig config ) throws ServletException
|
|
{
|
|
try
|
|
{
|
|
super.init( config );
|
|
initCommands();
|
|
|
|
config.getServletContext().setAttribute( "flatData", new LexFlatDataRepository() );
|
|
|
|
/* LexSourceRepository sources = LexSourceRepository.getInstance();
|
|
sources.setOaiServer( config.getServletContext().getInitParameter( "oaiServer" ) );
|
|
sources.setOaiMetadataPrefix( config.getServletContext().getInitParameter( "oaiMetadataPrefix" ) );
|
|
sources.setOaiHome( config.getServletContext().getInitParameter( "oaiHome" ) );
|
|
sources.setOaiLocalCopy( config.getServletContext().getInitParameter( "oaiLocalCopy" ) );
|
|
//int oaiDelay = Integer.parseInt( config.getServletContext().getInitParameter( "oaiRefreshDelay" ) );
|
|
sources.setOaiRefreshDelay( 24 );
|
|
config.getServletContext().setAttribute( "sources", sources ); */
|
|
String delay = config.getInitParameter( "globalDataRefreshDelay" );
|
|
long refreshDelay = Long.parseLong( delay ) * 1000;
|
|
String recent = config.getInitParameter( "recentItems" );
|
|
int recentItems = Integer.parseInt( recent );
|
|
Global global = new Global( recentItems, refreshDelay );
|
|
config.getServletContext().setAttribute( LexConstants.GLOBAL_CONTEXT_ATTR, global );
|
|
LexLogger.debugComponent( global );
|
|
System.setProperty( "java.awt.headless", "true" );
|
|
}
|
|
catch ( Exception e )
|
|
{
|
|
throw new ServletException( e );
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param req Description of Parameter
|
|
* @param res Description of Parameter
|
|
* @exception ServletException Description of Exception
|
|
* @exception IOException Description of Exception
|
|
* @since
|
|
*/
|
|
public void service( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException
|
|
{
|
|
/*
|
|
LexLogger.debug( "Checking Request state at start of LexActionServlet.service()" );
|
|
LexLogger.logRequestState( req );
|
|
LexLogger.logSessionState( req );
|
|
*/
|
|
String next;
|
|
try
|
|
{
|
|
String cmd = req.getParameter( LexConstants.COMMAND_REQ_PARAM );
|
|
Command command = lookupCommand( cmd );
|
|
LexComponent component = (LexComponent) req.getAttribute( LexConstants.COMPONENT_REQ_ATTR );
|
|
next = command.execute( req, component );
|
|
CommandToken.set( req );
|
|
}
|
|
catch ( CommandException e )
|
|
{
|
|
req.setAttribute( "javax.servlet.jsp.jspException", e );
|
|
next = LexConstants.ERROR_PAGE;
|
|
try
|
|
{
|
|
LexComponentRepository.cleanup();
|
|
}
|
|
catch ( LexRepositoryException lre )
|
|
{
|
|
Exception ex = new Exception( "LexComponentRepository couldn't clean up after Exception because: " + lre.getMessage(), e );
|
|
req.setAttribute( "javax.servlet.jsp.jspException", ex );
|
|
}
|
|
}
|
|
catch ( Exception e )
|
|
{
|
|
req.setAttribute( "javax.servlet.jsp.jspException", e );
|
|
next = LexConstants.ERROR_PAGE;
|
|
try
|
|
{
|
|
LexComponentRepository.cleanup();
|
|
}
|
|
catch ( LexRepositoryException lre )
|
|
{
|
|
Exception ex = new Exception( "LexComponentRepository couldn't clean up after Exception because: " + lre.getMessage(), e );
|
|
req.setAttribute( "javax.servlet.jsp.jspException", ex );
|
|
}
|
|
}
|
|
RequestDispatcher rd;
|
|
rd = getServletContext().getRequestDispatcher( LexConstants.JSP_DIR + next );
|
|
rd.forward( req, res );
|
|
LexLogger.debug( "Checking Request state at end of LexActionServlet.service()" );
|
|
LexLogger.logRequestState( req );
|
|
LexLogger.debug( "Checking Session state at end of LexActionServlet.service()" );
|
|
LexLogger.logSessionState( req );
|
|
LexLogger.debug( "Checking Context state at end of LexActionServlet.service()" );
|
|
LexLogger.logContextState( getServletContext() );
|
|
}
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param cmdKey Description of Parameter
|
|
* @return Description of the Returned Value
|
|
* @exception CommandException Description of Exception
|
|
* @since
|
|
*/
|
|
private Command lookupCommand( String cmdKey ) throws CommandException
|
|
{
|
|
if ( cmdKey == null )
|
|
{
|
|
cmdKey = "menu";
|
|
}
|
|
if ( getCommands().containsKey( cmdKey ) )
|
|
{
|
|
return (Command) getCommands().get( cmdKey );
|
|
}
|
|
else
|
|
{
|
|
throw new CommandException( "Invalid Command Identifier: '" + cmdKey + "'" );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @since
|
|
*/
|
|
private void initCommands()
|
|
{
|
|
HashMap commands = new HashMap();
|
|
|
|
commands.put( "menu", new NullCommand( "menu.jsp" ) );
|
|
commands.put( "search", new NullCommand( "search.jsp" ) );
|
|
commands.put( "logout", new NullCommand( "logout.jsp" ) );
|
|
commands.put( "getMetaPrefsForm", new NullCommand( "metaPrefsForm.jsp" ) );
|
|
commands.put( "getMetaDefaultsForm", new NullCommand( "metaDefaultsForm.jsp" ) );
|
|
|
|
commands.put( "find", new FindCommand( "displayEntry.jsp" ) );
|
|
|
|
commands.put( "getInsertForm", new GetInsertFormCommand( "displayForm.jsp?formMode=insert", Boolean.FALSE ) );
|
|
commands.put( "getInsertTermForm", new GetInsertFormCommand( "displayForm.jsp?formMode=insert", Boolean.TRUE ) );
|
|
commands.put( "getTranslationForm", new GetInsertFormCommand( "displayForm.jsp?formMode=insert", Boolean.FALSE ) );
|
|
commands.put( "getAnnotationForm", new GetInsertFormCommand( "displayForm.jsp?formMode=insert", Boolean.FALSE ) );
|
|
|
|
commands.put( "getUpdateForm", new GetUpdateFormCommand( "displayForm.jsp?formMode=update", Boolean.FALSE ) );
|
|
commands.put( "getUpdateTermForm", new GetUpdateFormCommand( "displayForm.jsp?formMode=update", Boolean.TRUE ) );
|
|
|
|
/*
|
|
commands.put( "getAnnotationForm", new AnnotateCommand( "displayForm.jsp?formMode=insert" ) );
|
|
commands.put( "addAnnotation", new AddAnnotationCommand( "displayEntry.jsp", Boolean.TRUE ) );
|
|
*/
|
|
commands.put( "insert", new InsertCommand( "displayEntry.jsp", Boolean.FALSE ) );
|
|
commands.put( "insertTerm", new InsertCommand( "displayEntry.jsp", Boolean.TRUE ) );
|
|
|
|
commands.put( "update", new UpdateCommand( "displayEntry.jsp", Boolean.FALSE ) );
|
|
commands.put( "updateTerm", new UpdateCommand( "displayEntry.jsp", Boolean.TRUE ) );
|
|
|
|
commands.put( "display", new DisplayCommand( "displayEntry.jsp" ) );
|
|
commands.put( "displayFull", new DisplayCommand( "displayEntry.jsp" ) );
|
|
commands.put( "editEntry", new DisplayCommand( "displayEntry.jsp" ) );
|
|
|
|
commands.put( "getRemoveForm", new GetRemoveFormCommand( "displayForm.jsp?formMode=remove", Boolean.FALSE ) );
|
|
commands.put( "getRemoveTermForm", new GetRemoveFormCommand( "displayForm.jsp?formMode=remove", Boolean.TRUE ) );
|
|
commands.put( "remove", new RemoveCommand( "displayEntry.jsp", Boolean.FALSE ) );
|
|
commands.put( "removeTerm", new RemoveCommand( "menu.jsp", Boolean.TRUE ) );
|
|
|
|
commands.put( "setMetaPrefs", new PreferencesCommand( "menu.jsp" ) );
|
|
commands.put( "setMetaDefaults", new PreferencesCommand( "menu.jsp" ) );
|
|
commands.put( "refreshSources", new RefreshSourcesCommand( "test.jsp" ) );
|
|
|
|
commands.put( "abort", new AbortCommand( "menu.jsp" ) );
|
|
|
|
setCommands( commands );
|
|
}
|
|
}
|
|
|