155 lines
4 KiB
Java
155 lines
4 KiB
Java
package org.thdl.lex.commands;
|
|
import java.sql.ResultSet;
|
|
import java.sql.SQLException;
|
|
import java.util.*;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpSession;
|
|
|
|
import org.thdl.lex.*;
|
|
import org.thdl.lex.component.*;
|
|
import org.thdl.users.*;
|
|
|
|
|
|
/**
|
|
* Description of the Class
|
|
*
|
|
* @author travis
|
|
* @created October 6, 2003
|
|
*/
|
|
public class GetUpdateFormCommand extends LexCommand implements Command
|
|
{
|
|
private boolean termMode;
|
|
|
|
|
|
/**
|
|
* Sets the termMode attribute of the GetFormCommand object
|
|
*
|
|
* @param termMode The new termMode value
|
|
*/
|
|
public void setTermMode( boolean termMode )
|
|
{
|
|
this.termMode = termMode;
|
|
}
|
|
|
|
|
|
/**
|
|
* Gets the termMode attribute of the GetFormCommand object
|
|
*
|
|
* @return The termMode value
|
|
*/
|
|
public boolean isTermMode()
|
|
{
|
|
return termMode;
|
|
}
|
|
|
|
|
|
|
|
//helper methods
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param req Description of the Parameter
|
|
* @param component Description of the Parameter
|
|
* @return Description of the Return Value
|
|
* @exception CommandException Description of the Exception
|
|
*/
|
|
public String execute( HttpServletRequest req, ILexComponent component ) throws CommandException
|
|
{
|
|
String next = getNext();
|
|
Visit visit = UserSessionManager.getInstance().getVisit( req.getSession( true ) );
|
|
LexQuery query = visit.getQuery();
|
|
ITerm term = query.getEntry();
|
|
String msg = null;
|
|
ThdlUser user = visit.getUser();
|
|
if ( validate( user, component ) )
|
|
{
|
|
|
|
try
|
|
{
|
|
|
|
if ( isTermMode() )
|
|
{
|
|
component = query.getEntry();
|
|
}
|
|
else if ( component instanceof IAnalyticalNote )
|
|
{
|
|
ILexComponent parent = term.findParent( component.getParentId() );
|
|
List notes = parent.getAnalyticalNotes();
|
|
int index = notes.indexOf( component );
|
|
component = (ILexComponent) notes.get( index );
|
|
LexLogger.debug( "Checking component state from getUpdateFormCommand AFTER assignment to analytical Note" );
|
|
LexLogger.debugComponent( component );
|
|
}
|
|
else if ( component instanceof Translatable && null != ( (Translatable) component ).getTranslationOf() )
|
|
{
|
|
LexComponentRepository.update( term );
|
|
Translatable translation = (Translatable) component;
|
|
Translatable source = null;
|
|
try
|
|
{
|
|
source = (Translatable) translation.getClass().newInstance();
|
|
}
|
|
catch ( Exception e )
|
|
{
|
|
throw new CommandException( e );
|
|
}
|
|
source.setMetaId( translation.getTranslationOf() );
|
|
source.setParentId( translation.getParentId() );
|
|
source = (Translatable) term.findChild( source );
|
|
List translationList = source.getTranslations();
|
|
component = (ILexComponent) translationList.get( translationList.indexOf( translation ) );
|
|
req.setAttribute( LexConstants.ORIGINALBEAN_REQ_ATTR, source );
|
|
}
|
|
else
|
|
{
|
|
LexComponentRepository.update( term );
|
|
component = term.findChild( component.getMetaId() );
|
|
}
|
|
req.setAttribute( LexConstants.COMPONENT_REQ_ATTR, component );
|
|
LexLogger.debug( "Checking component state from getUpdateFormCommand AFTER component assignment" );
|
|
LexLogger.debugComponent( component );
|
|
}
|
|
catch ( LexRepositoryException e )
|
|
{
|
|
throw new CommandException( e );
|
|
}
|
|
catch ( LexComponentException e )
|
|
{
|
|
throw new CommandException( e );
|
|
}
|
|
|
|
//if the component is a translation of another component get the original as well to assist in editing
|
|
|
|
msg = "You have reached the Update Form";
|
|
visit.setDisplayMode( "addEditForm" );
|
|
}
|
|
else
|
|
{
|
|
msg = "A dictionary component can only be edited by the person who created it or an administrator.";
|
|
next = "displayEntry.jsp";
|
|
}
|
|
|
|
req.setAttribute( LexConstants.MESSAGE_REQ_ATTR, msg );
|
|
|
|
return next;
|
|
}
|
|
|
|
|
|
|
|
//constructors
|
|
|
|
/**
|
|
*Constructor for the GetFormCommand object
|
|
*
|
|
* @param next Description of the Parameter
|
|
* @param termMode Description of the Parameter
|
|
*/
|
|
public GetUpdateFormCommand( String next, Boolean termMode )
|
|
{
|
|
super( next );
|
|
setTermMode( termMode.booleanValue() );
|
|
}
|
|
|
|
}
|
|
|