76 lines
2.2 KiB
Kotlin
76 lines
2.2 KiB
Kotlin
/*
|
|
* Track.kt
|
|
* Copyright (C) 2009-2022 Ultrasonic developers
|
|
*
|
|
* Distributed under terms of the GNU GPLv3 license.
|
|
*/
|
|
|
|
package org.moire.ultrasonic.domain
|
|
|
|
import androidx.room.ColumnInfo
|
|
import androidx.room.Entity
|
|
import androidx.room.PrimaryKey
|
|
import java.io.Serializable
|
|
import java.util.Date
|
|
|
|
@Entity(tableName = "tracks", primaryKeys = ["id", "serverId"])
|
|
data class Track(
|
|
override var id: String,
|
|
@ColumnInfo(defaultValue = "-1")
|
|
override var serverId: Int = -1,
|
|
override var parent: String? = null,
|
|
override var isDirectory: Boolean = false,
|
|
override var title: String? = null,
|
|
override var album: String? = null,
|
|
var albumId: String? = null,
|
|
override var artist: String? = null,
|
|
override var artistId: String? = null,
|
|
var track: Int? = null,
|
|
override var year: Int? = null,
|
|
override var genre: String? = null,
|
|
var contentType: String? = null,
|
|
var suffix: String? = null,
|
|
var transcodedContentType: String? = null,
|
|
var transcodedSuffix: String? = null,
|
|
override var coverArt: String? = null,
|
|
var size: Long? = null,
|
|
override var songCount: Long? = null,
|
|
override var duration: Int? = null,
|
|
var bitRate: Int? = null,
|
|
override var path: String? = null,
|
|
override var isVideo: Boolean = false,
|
|
override var starred: Boolean = false,
|
|
override var discNumber: Int? = null,
|
|
var type: String? = null,
|
|
override var created: Date? = null,
|
|
override var closeness: Int = 0,
|
|
var bookmarkPosition: Int = 0,
|
|
var userRating: Int? = null,
|
|
var averageRating: Float? = null,
|
|
override var name: String? = null
|
|
) : Serializable, MusicDirectory.Child() {
|
|
fun setDuration(duration: Long) {
|
|
this.duration = duration.toInt()
|
|
}
|
|
|
|
companion object {
|
|
private const val serialVersionUID = -3339106650010798108L
|
|
}
|
|
|
|
fun compareTo(other: Track): Int {
|
|
when {
|
|
this.closeness == other.closeness -> {
|
|
return 0
|
|
}
|
|
this.closeness > other.closeness -> {
|
|
return -1
|
|
}
|
|
else -> {
|
|
return 1
|
|
}
|
|
}
|
|
}
|
|
|
|
override fun compareTo(other: Identifiable) = compareTo(other as Track)
|
|
}
|