package dbfields;

import android.content.Context;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.widget.EditText;

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

public class DateTimeText extends EditText implements fieldDB
{
	private String m_Value = null;
	
	public DateTimeText(Context context)
	{
		super(context);
	}
	public DateTimeText(Context context, AttributeSet attrs)
	{
		super(context,attrs);
	}
	
	public String getValue(){
		return m_Value;
	}

	public void setValue(String val)
	{
		m_Value = null; //Присваиваю ниже так как нужно только проверянное значение даты
		if(val!=null && !val.equals(""))
		{
			Date date=null;
			try {
				date = new Date(Long.parseLong(val)*1000);
				SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //Теперь для простого преобразования в тип даты PostgreSQL дату храню в виде текста в формате "yyyy-MM-dd HH:mm:ss"
				m_Value=format.format(date);
			} catch (NumberFormatException e) {
			}
			if(date==null){
				try {
					SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
					date = format.parse(val);
					m_Value = val;
				} catch (ParseException e) {
				}
			}
			if(date!=null) {
				SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm"); //Убрал секунды так всё равно то что отображается не соответствует тому что храниться
				String str = format.format(date);
				setText(str);
			}else{
				setText("");
			}
		}else
		{
			setText("");
		}
	}

	// Класс для сохранения изменений сделаных пользователем при повороте экрана
	public static class SavedStateDTT extends BaseSavedState
	{
		String value = ""; //Не может быть null почемуто вылетает!

		SavedStateDTT(Parcelable superState)
		{
			super(superState);
		}

		@Override
		public void writeToParcel(Parcel out, int flags)
		{
			super.writeToParcel(out, flags);
			out.writeString(value);
		}

		public static final Parcelable.Creator<SavedStateDTT>	CREATOR	= new Parcelable.Creator<SavedStateDTT>()
																	{
																		public SavedStateDTT createFromParcel(Parcel in)
																		{
																			return new SavedStateDTT(in);
																		}
																		public SavedStateDTT[] newArray(int size)
																		{
																			return new SavedStateDTT[size];
																		}
																	};

		private SavedStateDTT(Parcel in)
		{
			super(in);
			value = in.readString();
		}

	}

	@Override
	public Parcelable onSaveInstanceState()
	{
		SavedStateDTT st = new SavedStateDTT(super.onSaveInstanceState());
		st.value = getValue();
		if(st.value==null) st.value="";
		return st;
	}

	@Override
	public void onRestoreInstanceState(Parcelable state)
	{
		if (state == null || !(state instanceof SavedStateDTT))
		{
			super.onRestoreInstanceState(state);
			return;
		}

		SavedStateDTT ss = (SavedStateDTT) state;
		super.onRestoreInstanceState(ss.getSuperState());
		setValue(ss.value);
	};
	
}
