package com.papajo.examples.util;

import org.apache.regexp.*;

import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.*;

public final class StringConverter
{
/*
  Future features that would probably be useful:

  public String stripUSPhone(String phone)
  public String formatUSPhone(String phone)

  public String stripI18LPhone(String phone)
  public String formatI18LPhone(String phone)

  public java.sql.Date toSQLDate(String date)
*/

  public String formatDate(java.util.Date date)
  {
    if(date == null) return "";
    else return DF.format(date);
  }

  public java.util.Date toDate(String date)
  {
    if(SV.isValidDate(date))
    {
      date = date.replace('-','/');
      date = date.replace('.','/');
      try { return DF.parse(date); }
      catch(ParseException e) { return null; }
    }
    else
      return null;
  }

  /**
   * Strips all whitespace from the input String
   * and returns it.
   */
  public String stripWhiteSpace(String s)
  {
    if(s == null) return null;
    RE whiteSpc = null;
    try { whiteSpc = new RE("\\s"); }
    catch(RESyntaxException e) { System.out.println(e); }
    return whiteSpc.subst(s, "");
  }

  /**
   * Converts a delimited string into a sorted
   * String[]. Currently accepts comma and semi
   * colon separators.
   */
  public String[] splitList(String list)
  {
    if(list == null) return null;
    RE sepChars = null;
    try { sepChars = new RE("[,;]"); }
    catch(RESyntaxException e) { System.out.println(e); }
    list = this.stripWhiteSpace(list);
    String[] result = sepChars.split(list);
    Arrays.sort(result);
    return result;
  }

  private static final StringValidator
    SV = new StringValidator();

  private static final SimpleDateFormat
    DF = new SimpleDateFormat("MM/dd/yyyy");
}