package hirondelle.fish.translate.unknown;
import hirondelle.fish.translate.basetext.BaseText;
import hirondelle.fish.util.ReqParam;
import hirondelle.web4j.action.ActionTemplateListAndEdit;
import hirondelle.web4j.action.ResponsePage;
import hirondelle.web4j.config.ConnectionSrc;
import hirondelle.web4j.config.TranslatorImpl;
import hirondelle.web4j.database.DAOException;
import hirondelle.web4j.database.DuplicateException;
import hirondelle.web4j.database.SqlId;
import hirondelle.web4j.model.ModelCtorException;
import hirondelle.web4j.model.ModelFromRequest;
import hirondelle.web4j.request.RequestParameter;
import hirondelle.web4j.request.RequestParser;
import hirondelle.web4j.ui.translate.Translator;
public final class UnknownBaseTextEdit extends ActionTemplateListAndEdit {
public UnknownBaseTextEdit(RequestParser aRequestParser){
super(FORWARD, REDIRECT_TO_LISTING, aRequestParser);
}
public static final SqlId LIST = getSqlId("UNKNOWN_LIST");
public static final SqlId DELETE = getSqlId("UNKNOWN_DELETE");
public static final SqlId DELETE_ALL = getSqlId("UNKNOWN_DELETE_ALL");
public static final SqlId ADD = getSqlId("UNKNOWN_ADD");
public static final SqlId COUNT = getSqlId("UNKNOWN_COUNT");
public static final RequestParameter ID = ReqParam.ID;
public static final RequestParameter BASE_TEXT = RequestParameter.withLengthCheck("BaseText");
public static final RequestParameter IS_CODER_KEY = RequestParameter.withLengthCheck("IsCoderKey");
static final ResponsePage REDIRECT_TO_LISTING = new ResponsePage("UnknownBaseTextEdit.do?Operation=List");
public static final String IS_RECORDING = "isRecording";
protected void doList() throws DAOException {
addToRequest(ITEMS_FOR_LISTING, fUnknownBaseTextDAO.list());
addToRequest(IS_RECORDING, new Boolean(TranslatorImpl.isRecording()) );
}
protected void validateUserInput() {
try {
ModelFromRequest builder = new ModelFromRequest(getRequestParser());
fBaseText = builder.build(BaseText.class, ID, BASE_TEXT, IS_CODER_KEY);
}
catch (ModelCtorException ex){
addError(ex);
}
}
protected void attemptAdd() throws DAOException {
try {
fUnknownBaseTextDAO.move(fBaseText);
addMessage("Item accepted as BaseText successfully.");
}
catch (DuplicateException ex){
addError("Base Text already taken. Must be unique.");
}
}
protected void attemptFetchForChange() {
throw new UnsupportedOperationException();
}
protected void attemptChange() {
throw new UnsupportedOperationException();
}
protected void attemptDelete() throws DAOException {
String baseText = getRequestParser().getRequest().getParameter("BaseText");
int numRecords = fUnknownBaseTextDAO.delete(baseText);
addMessage("_1_ record(s) deleted.", new Integer(numRecords));
}
private BaseText fBaseText;
private UnknownBaseTextDAO fUnknownBaseTextDAO = new UnknownBaseTextDAO();
private static final ResponsePage FORWARD = new ResponsePage("Unknowns", "view.jsp", UnknownBaseTextEdit.class);
private static SqlId getSqlId(String aSqlStatementId){
return new SqlId(ConnectionSrc.TRANSLATION, aSqlStatementId);
}
}