/*
 *     Copyright (C) 2018 PLNech
 *
 *     This program is free software: you can redistribute it and/or modify
 *     it under the terms of the GNU General Public License as published by
 *     the Free Software Foundation, either version 3 of the License, or
 *     (at your option) any later version.
 *
 *     This program is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 *     You should have received a copy of the GNU General Public License
 *     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package fr.plnech.lifelogger.model

import java.util.*
import kotlin.collections.HashMap

/**
 * An event tracked with some associated metadata.
 */
data class DataPoint(
    val date: Date = Date(),
    private val metadata: HashMap<String, Any> = HashMap()
) {

    constructor(name: String, count: Int = NONE) : this() {
        metadata["name"] = name
        metadata["count"] = count
    }

    private val name: String
        get() = metadata["name"] as String

    private val count: Int?
        get() = metadata["count"].let {
            if (it == NONE) null else it
        } as Int?

    override fun toString(): String {
        val b = StringBuilder(name)
        count?.let { b.append("($count)") }
        return b.toString()
    }

    companion object {
        const val NONE: Int = Int.MIN_VALUE
    }
}