187 lines
5.1 KiB
Java
187 lines
5.1 KiB
Java
package org.thdl.lex.commands;
|
|
|
|
import java.util.LinkedList;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
import org.thdl.lex.LexComponentRepository;
|
|
import org.thdl.lex.LexConstants;
|
|
import org.thdl.lex.LexQuery;
|
|
import org.thdl.lex.LexRepositoryException;
|
|
import org.thdl.lex.LexUser;
|
|
import org.thdl.lex.Preferences;
|
|
import org.thdl.lex.UserSessionManager;
|
|
import org.thdl.lex.Visit;
|
|
import org.thdl.lex.component.AnalyticalNote;
|
|
import org.thdl.lex.component.ILexComponent;
|
|
import org.thdl.lex.component.ITerm;
|
|
import org.thdl.lex.component.LexComponent;
|
|
import org.thdl.lex.component.LexComponentException;
|
|
import org.thdl.lex.component.Meta;
|
|
import org.thdl.lex.component.Term;
|
|
import org.thdl.lex.component.Translatable;
|
|
|
|
/**
|
|
* Description of the Class
|
|
*
|
|
* @author travis
|
|
* @created October 6, 2003
|
|
*/
|
|
public class GetInsertFormCommand extends LexCommand implements Command {
|
|
private boolean termMode;
|
|
|
|
/**
|
|
* Sets the termMode attribute of the GetInsertFormCommand object
|
|
*
|
|
* @param termMode
|
|
* The new termMode value
|
|
*/
|
|
public void setTermMode(boolean termMode) {
|
|
this.termMode = termMode;
|
|
}
|
|
|
|
/**
|
|
* Gets the termMode attribute of the GetInsertFormCommand 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;
|
|
|
|
try {
|
|
LexUser user = (LexUser) visit.getUser();
|
|
Preferences prefs = visit.getPreferences();
|
|
|
|
if (isTermMode()) {
|
|
Term newTerm = new Term();
|
|
newTerm.populate(component);
|
|
query.setQueryComponent(newTerm);
|
|
if (termExists(query)) {
|
|
msg = newTerm.getTerm()
|
|
+ " is present in the dictionary, please add to this term.";
|
|
next = "displayEntry.jsp";
|
|
visit.setQuery(query);
|
|
}
|
|
component = newTerm;
|
|
}
|
|
|
|
Meta meta = new Meta(user, prefs);
|
|
meta.populate(req.getParameterMap());
|
|
component.setMeta(meta);
|
|
|
|
if (req.getParameter("cmd").equals("getAnnotationForm")) {
|
|
AnalyticalNote note = new AnalyticalNote();
|
|
note.setParentId(component.getMetaId());
|
|
//note.setAnalyticalNote( req.getParameter( "analyticalNote" )
|
|
// );
|
|
//note.setPrecedence( new Integer( 0 ) );
|
|
component.setAnalyticalNotes(new LinkedList());
|
|
component.getAnalyticalNotes().add(note);
|
|
meta = new Meta(user, prefs);
|
|
meta.populate(req.getParameterMap());
|
|
note.setMeta(meta);
|
|
req.setAttribute(LexConstants.ORIGINALBEAN_REQ_ATTR, component);
|
|
component = note;
|
|
}
|
|
|
|
req.setAttribute(LexConstants.COMPONENT_REQ_ATTR, 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
|
|
if (component instanceof Translatable) {
|
|
Translatable translatable = (Translatable) component;
|
|
if (null != translatable.getTranslationOf()
|
|
&& translatable.getTranslationOf().intValue() > 0) {
|
|
try {
|
|
LexComponent source = (LexComponent) translatable
|
|
.getClass().newInstance();
|
|
Integer sourcePk = translatable.getTranslationOf();
|
|
source.setMetaId(sourcePk);
|
|
LexComponentRepository.loadByPk(source);
|
|
req
|
|
.setAttribute(LexConstants.ORIGINALBEAN_REQ_ATTR,
|
|
source);
|
|
} catch (InstantiationException ie) {
|
|
throw new CommandException(ie);
|
|
} catch (IllegalAccessException iae) {
|
|
throw new CommandException(iae);
|
|
} catch (LexRepositoryException lre) {
|
|
throw new CommandException(lre);
|
|
}
|
|
}
|
|
}
|
|
|
|
msg = "You have reached the Insert Form";
|
|
visit.setDisplayMode("addEditForm");
|
|
|
|
req.setAttribute(LexConstants.MESSAGE_REQ_ATTR, msg);
|
|
|
|
return next;
|
|
}
|
|
|
|
/**
|
|
* Description of the Method
|
|
*
|
|
* @param query
|
|
* Description of the Parameter
|
|
* @return The newTerm value
|
|
* @exception LexRepositoryException
|
|
* Description of the Exception
|
|
*/
|
|
public boolean termExists(LexQuery query) throws LexRepositoryException {
|
|
boolean termExists = false;
|
|
query.setFindMode(LexComponentRepository.EXACT);
|
|
LexComponentRepository.findTermsByTerm(query);
|
|
if (query.getResults().keySet().size() > 0) {
|
|
termExists = true;
|
|
}
|
|
query.setFindMode(LexComponentRepository.STARTS_WITH);
|
|
return termExists;
|
|
}
|
|
|
|
//constructors
|
|
|
|
/**
|
|
* Constructor for the GetInsertFormCommand object
|
|
*
|
|
* @param next
|
|
* Description of the Parameter
|
|
* @param termMode
|
|
* Description of the Parameter
|
|
*/
|
|
public GetInsertFormCommand(String next, Boolean termMode) {
|
|
super(next);
|
|
setTermMode(termMode.booleanValue());
|
|
}
|
|
|
|
}
|
|
|