/**
 * Title:
 * @version:    $Id: DateComponentModel.java,v 1.1 2004/11/15 13:47:50 rob Exp $
 * Copyright:   Copyright (C) 2003 Ian Ibbotson
 * @author:     Ian Ibbotson
 * Company:
 * Description:
 */

package com.k_int.AdminApp.gui.RecordView;

import org.apache.commons.beanutils.BeanUtils;

import java.util.*;

import com.k_int.AdminApp.widgets.CalendarComboBox;
import com.k_int.AdminApp.gui.AdminControllerComponent;

import java.text.SimpleDateFormat;

import java.util.logging.*;

public class DateComponentModel implements RecordModelListener
{
    private static Logger cat = Logger.getLogger("com.k_int.AdminApp.gui.RecordView.DateComponentModel");
  private String access_path;
  private CalendarComboBox control;
  private Object record = null;
  private static final String EMPTY_STRING="";
  private AdminControllerComponent controller = null;
  
    private SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");

  public DateComponentModel(String access_path, CalendarComboBox control)
  {
        this.access_path = access_path;
        this.control = control;
  }

  public void recordChanged(Object record, boolean editable)
  {
    this.record = record;
    cat.finest("DateComponentModel:: recordChanged "+record);
    try
    {
      String str_value = BeanUtils.getProperty(record, access_path);
      cat.finest("set value "+str_value);
      if ( str_value != null )
      {
        cat.finest("Not null");
        java.text.DateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd");
        //java.text.DateFormat df = new java.text.SimpleDateFormat();
        df.setLenient(true);
        control.setDate(df.parse(str_value));
      }
    }
    catch ( Exception e )
    {
        cat.log(Level.SEVERE, "Record changed error",e);
      //e.printStackTrace();
    }
  }
  
  
  public void recordAbandoned(Object record)
  {
      // not needed
  }

  public void setEditable(boolean is_editable)
  {
    cat.fine("Does nothing");
    // control.setEditable(is_editable);
  }

  public void synchronizeViewToModel()
  {
    cat.fine("Date component model::synchronizeViewToModel()");

    Calendar c =  control.getDate();
   
    Date date;
    if(c==null)
        date=null;
    else
        date = c.getTime();
    
      try
      {
        BeanUtils.setProperty(record, access_path,date);
      }
      catch ( Exception e )
      {
          cat.log(Level.SEVERE, "Error synchronizing view to model",e);
        e.printStackTrace();
      }
  }

  public void setController(AdminControllerComponent c)
  {
    this.controller = c;
  }

}
