// This simple utility class is used by the SQLRetriever to provide formatting
// functionality for database columns. This class should be subclassed and then
// the method 'formatData()' overridden to provide different formatting.
//
// The default implementation here simply returns the original data unchanged...

package net.alanmaxwell.sql;

import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;

public class SQLDataFormatterDate extends SQLDataFormatter 
{
  SimpleDateFormat dateFormatter = 
    new SimpleDateFormat("dd MMM yyyy");
  SimpleDateFormat dateParser = 
    new SimpleDateFormat("yyyy-MM-dd");
  
  public String formatDataForHTML(String data)
  {
    if (data == null)
    {
      return "&lt;null&gt;";
    };

    if (data.length() < 1)
    {
      return "&nbsp;";
    };

    Date dateParsed = null;

    try
    {
      dateParsed = dateParser.parse(data);
    }
    catch (ParseException pe)
    {
      dateParsed = null;
    }

    if (dateParsed != null)
    {
      return dateFormatter.format(dateParsed);
    }
    else
    {
      return data;
    }
  };

  public String formatDataForCSV(String data)
  {
    if (data == null)
    {
      return "<null>";
    };

    Date dateParsed = null;

    try
    {
      dateParsed = dateParser.parse(data);
    }
    catch (ParseException pe)
    {
      dateParsed = null;
    }

    if (dateParsed != null)
    {
      return dateFormatter.format(dateParsed);
    }
    else
    {
      return data;
    }
  };
};