/* * 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 } }