package com.papajo.examples.pab.struts;

import com.papajo.examples.pab.struts.ValidatingForm;
import com.papajo.examples.util.StringConverter;

import org.apache.struts.util.MessageResources;
import org.apache.regexp.*;

/**
 *  Provides default implementation of abstract getXXXFields
 *  defined in ValidatingForm
 */
public class ValidatingFormAdapter extends ValidatingForm
{
  public static final String REQ_FLDS_KEY = ".required.fields";
  public static final String INT_FLDS_KEY = ".integer.fields";
  public static final String EML_FLDS_KEY = ".email.fields";
  public static final String DAT_FLDS_KEY = ".date.fields";

  protected static final StringConverter SC = new StringConverter();

  protected final String[] getRequiredFields(String formName)
  {
    String reqList = getFieldList(REQ_FLDS_KEY, formName);
    if(SV.isEmpty(reqList))
      return null;
    else
      return SC.splitList(reqList);
  }

  protected final String[] getIntegerFields(String formName)
  {
    String intList = getFieldList(INT_FLDS_KEY, formName);
    if(SV.isEmpty(intList))
      return null;
    else
      return SC.splitList(intList);
  }

  protected final String[] getEmailAddressFields(String formName)
  {
    String emlList = getFieldList(EML_FLDS_KEY, formName);
    if(SV.isEmpty(emlList))
      return null;
    else
      return SC.splitList(emlList);
  }

  protected final String[] getDateFields(String formName)
  {
    String datList = getFieldList(DAT_FLDS_KEY, formName);
    if(SV.isEmpty(datList))
      return null;
    else
      return SC.splitList(datList);
  }

  private String getFieldList(String msgKey, String formName)
  {
    MessageResources msgs = getServlet().getResources();
    String key = formName + msgKey;
    if(servlet.getDebug() >= 1)
      servlet.log("-- ValdiatingFormAdapter retriving field list: "+key);
    return msgs.getMessage(key);
  }
}