Package hirondelle.fish.translate.locale

Source Code of hirondelle.fish.translate.locale.SupportedLocaleAction

package hirondelle.fish.translate.locale;

import java.util.Locale;
import hirondelle.web4j.config.Startup;
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.action.ResponsePage;
import hirondelle.fish.util.ReqParam;
import hirondelle.fish.util.TemplatedPage;
import hirondelle.web4j.action.ActionTemplateListAndEdit;
import hirondelle.web4j.config.ConnectionSrc;

/**
Edit the {@link Locale}s supported by this application.
<P>Editing these items is expected to be an uncommon operation. Such edits
would usually occur only during development.
@sql statements.sql
@view view.jsp
*/
public final class SupportedLocaleAction extends ActionTemplateListAndEdit {
 
  /** Constructor. */
  public SupportedLocaleAction(RequestParser aRequestParser){
    super(FORWARD, REDIRECT_TO_LISTING, aRequestParser);
  }

  public static final SqlId LOCALE_LIST =  getTranslationSqlId("LOCALE_LIST");
  public static final SqlId LOCALE_FETCH =  getTranslationSqlId("LOCALE_FETCH");
  public static final SqlId LOCALE_ADD =  getTranslationSqlId("LOCALE_ADD");
  public static final SqlId LOCALE_CHANGE =  getTranslationSqlId("LOCALE_CHANGE");
  public static final SqlId LOCALE_DELETE =  getTranslationSqlId("LOCALE_DELETE");
 
  public static final RequestParameter SUPPORTED_LOCALE_ID = ReqParam.ID;
  public static final RequestParameter SHORT_FORM = RequestParameter.withLengthCheck("Short Form");
  public static final RequestParameter DESCRIPTION = RequestParameter.withLengthCheck("Description");

  /** List all {@link SupportedLocale}s. */
  protected void doList() throws DAOException {
    addToRequest(ITEMS_FOR_LISTING, fSupportedLocaleDAO.list());
  }
 
  /** Ensure user input can build a {@link SupportedLocale}. */
  protected void validateUserInput() {
    try {
      ModelFromRequest builder = new ModelFromRequest(getRequestParser());
      fSupportedLocale = builder.build(SupportedLocale.class, SUPPORTED_LOCALE_ID, SHORT_FORM, DESCRIPTION);
    }
    catch (ModelCtorException ex){
      addError(ex);
    }   
  }
 
  /** Add a new {@link SupportedLocale}. */
  protected void attemptAdd() throws DAOException {
    try {
      fSupportedLocaleDAO.add(fSupportedLocale);
      addMessage("_1_ added successfully.", fSupportedLocale.getDescription());
      refreshPickLists();
    }
    catch (DuplicateException ex){
      addError("Locale already taken. Please use another Short Form.")
    }
  }
 
  /** Fetch an existing {@link SupportedLocale}. */
  protected void attemptFetchForChange() throws DAOException {
    SupportedLocale locale = fSupportedLocaleDAO.fetch(getIdParam(SUPPORTED_LOCALE_ID));
    if( locale == null ){
      addError("Locale no longer exists. Likely deleted by another user.");
    }
    else {
      addToRequest(ITEM_FOR_EDIT, locale);
    }
  }
 
  /** Update an exisiting {@link SupportedLocale}. */
  protected void attemptChange() throws DAOException {
    try {
      boolean success = fSupportedLocaleDAO.change(fSupportedLocale);
      if (success){
        addMessage("Locale for _1_ changed successfully.", fSupportedLocale.getDescription());
        refreshPickLists();
      }
      else {
        addError("No update occurred. Item likely deleted by another user.");
      }
    }
    catch (DuplicateException ex){
      addError("Short Form already taken. Please choose a different Short Form.");
    }
  }

  /** Delete an existing {@link SupportedLocale}. */
  protected void attemptDelete() throws DAOException {
    try {
      fSupportedLocaleDAO.delete(getIdParam(SUPPORTED_LOCALE_ID));
      addMessage("Item deleted successfully.");
      refreshPickLists();
    }
    catch(DAOException ex){
      addError("Cannot delete. Item used elsewhere.");     
    }
  }
 
  // PRIVATE //
  private SupportedLocale fSupportedLocale;
  private SupportedLocaleDAO fSupportedLocaleDAO = new SupportedLocaleDAO();
 
  private static final ResponsePage FORWARD = TemplatedPage.get(
    "Locales", "view.jsp", SupportedLocaleAction.class
  );
  private static final ResponsePage REDIRECT_TO_LISTING = new ResponsePage("SupportedLocaleAction.do?Operation=List");
 
  private void refreshPickLists() throws DAOException {
    Startup.lookUpCodeTablesAndPlaceIntoAppScope();
  }
 
  private static SqlId getTranslationSqlId(String aSqlStatementId){
    return new SqlId(ConnectionSrc.TRANSLATION, aSqlStatementId);
  }
}
TOP

Related Classes of hirondelle.fish.translate.locale.SupportedLocaleAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.