

package net.tacks_a.ankicard.util;

import android.app.Activity;
import android.content.Context;
import android.text.format.DateUtils;
import android.view.inputmethod.InputMethodManager;

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

/*
 * 暗記カードプロジェクトのユーティリティクラス
 */
@SuppressWarnings("WeakerAccess")
public class AnkiCardUtil {

    public static Date getToday() {
        return truncateDate(new Date());
    }

    public static Date truncateDate(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.HOUR, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);
        return cal.getTime();
    }

    // ソフトウェアキーボードを非表示
    public static void HideIme(Activity activity) {
        if (activity.getCurrentFocus() != null) {
            InputMethodManager imm = (InputMethodManager) activity
                    .getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(activity.getCurrentFocus()
                    .getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }

    // 日付フォーマット
    public static String FormatDate(Context context, Date date) {
        LogUtil.logDebug();
        if (date == null) {
            return "";
        } else {
            return DateUtils.formatDateTime(context, date.getTime(),
                    DateUtils.FORMAT_SHOW_YEAR |
                            DateUtils.FORMAT_SHOW_DATE);
        }
    }

    // 日付変換
    public static Date toDate(String value) {
        LogUtil.logDebug(value);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSSSSS");
        Date date = new Date();

        try {
            date = sdf.parse(value);
        } catch (ParseException e) {
            LogUtil.logError("Date ParseException:" + value, e);
        }
        return date;
    }

}
