LanguageContainer.kt 2.14 KB
Newer Older
Jonas Waeber's avatar
Jonas Waeber committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/*
 * search-doc-service
 * Copyright (C) 2020 Memoriav
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero 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 Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

Jonas Waeber's avatar
Jonas Waeber committed
19
package org.memobase.model
Jonas Waeber's avatar
Jonas Waeber committed
20

Jonas Waeber's avatar
Jonas Waeber committed
21
import com.fasterxml.jackson.annotation.JsonInclude
22
import org.memobase.helpers.KEYS
Jonas Waeber's avatar
Jonas Waeber committed
23

Jonas Waeber's avatar
Jonas Waeber committed
24
@JsonInclude(JsonInclude.Include.NON_NULL)
25
open class LanguageContainer(
Jonas Waeber's avatar
Jonas Waeber committed
26 27 28 29 30
    val de: List<String>,
    val fr: List<String>,
    val it: List<String>,
    val un: List<String> // if the language is not known
) {
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
    companion object {
        val EMPTY = LanguageContainer(
            emptyList(),
            emptyList(),
            emptyList(),
            emptyList()
        )
        val DEFAULT = LanguageContainer(
            listOf(KEYS.missingLabelDe),
            listOf(KEYS.missingLabelFr),
            listOf(KEYS.missingLabelIt),
            listOf(KEYS.missingLabelEn)
        )

        fun placeholder(placeholder: String): LanguageContainer {
            return LanguageContainer(listOf(placeholder), listOf(placeholder), listOf(placeholder), listOf(placeholder))
        }
    }

Jonas Waeber's avatar
Jonas Waeber committed
50 51
    fun toList(): List<String> {
        return de + fr + it + un
Jonas Waeber's avatar
Jonas Waeber committed
52 53
    }

Jonas Waeber's avatar
Jonas Waeber committed
54 55 56 57 58 59 60
    fun merge(container: LanguageContainer): LanguageContainer {
        return LanguageContainer(
            de + container.de,
            fr + container.fr,
            it + container.it,
            un + container.un
        )
Jonas Waeber's avatar
Jonas Waeber committed
61
    }
62 63 64 65 66 67 68 69 70 71 72

    fun any(): String {
        return when {
            un.isNotEmpty() -> un[0]
            de.isNotEmpty() -> de[0]
            fr.isNotEmpty() -> fr[0]
            it.isNotEmpty() -> it[0]
            else -> ""
        }
    }
}