diff --git a/src/java/org/thdl/lex/commands/GetRemoveFormCommand.java b/src/java/org/thdl/lex/commands/GetRemoveFormCommand.java new file mode 100644 index 0000000..52b18bc --- /dev/null +++ b/src/java/org/thdl/lex/commands/GetRemoveFormCommand.java @@ -0,0 +1,146 @@ +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 GetRemoveFormCommand 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 + { + + LexLogger.debug( "Checking component state from GetRemoveFormCommand BEFORE component assignment" ); + LexLogger.debugComponent( component ); + if ( isTermMode() ) + { + component = query.getEntry(); + } + 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 GetRemoveFormCommand AFTER component assignment" ); + LexLogger.debugComponent( component ); + } + catch ( LexRepositoryException e ) + { + throw new CommandException( e ); + } + catch ( LexComponentException e ) + { + throw new CommandException( e ); + } + + msg = "You have reached the Remove Form"; + visit.setDisplayMode( "addEditForm" ); + } + else + { + msg = "A dictionary component can only be removed 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 GetRemoveFormCommand( String next, Boolean termMode ) + { + super( next ); + setTermMode( termMode.booleanValue() ); + } + +} +