<commit_before>package com.eaglesakura.andriders.command;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * コマンドの発動タイミングを一意に指定するキーを取得する
 * <p/>
 * ユーザーの特定動作ごとに一意のCommandKeyが生成され、それに見合った動作を行う。
 */
public class CommandKey implements Parcelable {

    /**
     * 近接コマンドのヘッダ文字列
     */
    private static final String COMMAND_HEADER_PROXIMITY = "proximity#";

    /**
     * Activityコマンドのヘッダ文字列
     */
    private static final String COMMAND_HEADER_ACTIVITY = "activity#";

    /**
     * Activity/最高速度更新時
     */
    private static final String COMMAND_ID_ACTIVITY_MAXSPEED = "maxspeed#0";

    /**
     * Activity/停止時
     */
    private static final String COMMAND_ID_ACTIVITY_STOP = "stop#0";

    /**
     * タイマーコマンド
     */
    private static final String COMMAND_HEADER_TIMER = "timercmd#";

    final String key;

    private CommandKey(String key) {
        this.key = key;
    }

    private CommandKey(Parcel in) {
        this.key = in.readString();
    }

    public String getKey() {
        return key;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(key);
    }

    public static final Parcelable.Creator<CommandKey> CREATOR
            = new Parcelable.Creator<CommandKey>() {
        public CommandKey createFromParcel(Parcel in) {
            return new CommandKey(in);
        }

        public CommandKey[] newArray(int size) {
            return new CommandKey[size];
        }
    };


    @Override
    public String toString() {
        return key;
    }

    @Override
    public int hashCode() {
        return key.hashCode();
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || this.getClass() != o.getClass()) return false;

        CommandKey that = (CommandKey) o;

        if (key != null ? !key.equals(that.key) : that.key != null) return false;

        return true;
    }

    /**
     * 近接コマンドからキーを生成する
     *
     * @param commandSec
     * @return
     */
    public static CommandKey fromProximity(int commandSec) {
        return new CommandKey(String.format("%s%d", COMMAND_HEADER_PROXIMITY, commandSec));
    }

    /**
     * 文字列キーから生成する。基本的には復元用
     *
     * @param key
     * @return
     */
    public static CommandKey fromString(String key) {
        return new CommandKey(key);
    }

    /**
     * タイマーイベントのキーを生成する。
     * <p/>
     * タイマーは現在スロット単位で限定数指定するが、将来的にこの保持方法は変更される可能性がある。
     *
     * @param settingSlot 設定するスロット番号
     * @return
     */
    public static CommandKey fromTimer(int settingSlot) {
        return new CommandKey(String.format("%sslot%d", COMMAND_HEADER_TIMER, settingSlot));
    }
}<commit_msg>タイマーコマンドの識別方法を修正<commit_after>package com.eaglesakura.andriders.command;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * コマンドの発動タイミングを一意に指定するキーを取得する
 * <p/>
 * ユーザーの特定動作ごとに一意のCommandKeyが生成され、それに見合った動作を行う。
 */
public class CommandKey implements Parcelable {

    /**
     * 近接コマンドのヘッダ文字列
     */
    private static final String COMMAND_HEADER_PROXIMITY = "proximity#";

    /**
     * Activityコマンドのヘッダ文字列
     */
    private static final String COMMAND_HEADER_ACTIVITY = "activity#";

    /**
     * Activity/最高速度更新時
     */
    private static final String COMMAND_ID_ACTIVITY_MAXSPEED = "maxspeed#0";

    /**
     * Activity/停止時
     */
    private static final String COMMAND_ID_ACTIVITY_STOP = "stop#0";

    /**
     * タイマーコマンド
     */
    private static final String COMMAND_HEADER_TIMER = "timercmd#";

    final String key;

    private CommandKey(String key) {
        this.key = key;
    }

    private CommandKey(Parcel in) {
        this.key = in.readString();
    }

    public String getKey() {
        return key;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(key);
    }

    public static final Parcelable.Creator<CommandKey> CREATOR
            = new Parcelable.Creator<CommandKey>() {
        public CommandKey createFromParcel(Parcel in) {
            return new CommandKey(in);
        }

        public CommandKey[] newArray(int size) {
            return new CommandKey[size];
        }
    };


    @Override
    public String toString() {
        return key;
    }

    @Override
    public int hashCode() {
        return key.hashCode();
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || this.getClass() != o.getClass()) return false;

        CommandKey that = (CommandKey) o;

        if (key != null ? !key.equals(that.key) : that.key != null) return false;

        return true;
    }

    /**
     * 近接コマンドからキーを生成する
     *
     * @param commandSec
     * @return
     */
    public static CommandKey fromProximity(int commandSec) {
        return new CommandKey(String.format("%s%d", COMMAND_HEADER_PROXIMITY, commandSec));
    }

    /**
     * 文字列キーから生成する。基本的には復元用
     *
     * @param key
     * @return
     */
    public static CommandKey fromString(String key) {
        return new CommandKey(key);
    }

    /**
     * タイマーイベントのキーを生成する。
     * <p/>
     * タイマーは複数指定できるため、追加された時刻をキーとする
     *
     * @param settingCurrentTime 設定するスロット番号
     * @return
     */
    public static CommandKey fromTimer(long settingCurrentTime) {
        return new CommandKey(String.format("%stime%d", COMMAND_HEADER_TIMER, settingCurrentTime));
    }
}
{'fraction_non_alphanumeric': 0.10504578919015982, 'fraction_numerical': 0.0010773927096426647, 'mean_word_length': 2.3095662507427215, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7251135', 'n_tokens_mistral': 2041, 'n_tokens_neox': 1960, 'n_words': 376}