NumberFormatter.ktAnnotationen: param, JvmOverloads, JvmStatic, return, see
Objekte: NumberFormatter, is, is, is
Funktionen (9): format, format, format, format, format, formatCurrency, formatNull, internalFormat, formatPercent
Eigenschaften (5): df, useLocale, amount, format, bigDecimal
Importe: 10 Pakete
Paket: org.projectforge.framework.utils
package org.projectforge.framework.utils
import org.projectforge.Constants
import org.projectforge.framework.persistence.user.api.ThreadLocalUserContext
import java.math.BigDecimal
import java.math.BigInteger
import java.math.RoundingMode
import java.text.DecimalFormat
import java.text.NumberFormat
import java.time.Month
import java.time.format.TextStyle
import java.util.*
object NumberFormatter {
/**
* @param value Formatiert diesen Wert.
* @param pattern Der Formatstring für [DecimalFormat].
* @param roundingMode [RoundingMode.HALF_UP] ist Standard.
* @return Die formatierte Zahl oder eine leere Zeichenkette, wenn der Wert null ist.
* @see ThreadLocalUserContext.getLocale
*/
@JvmStatic
@JvmOverloads
fun format(value: Number?, pattern: String, roundingMode: RoundingMode = RoundingMode.HALF_UP): String {
value ?: return ""
return format(value, pattern, ThreadLocalUserContext.locale!!, roundingMode)
}
/**
* @param value Formatiert diesen Wert.
* @param pattern Der Formatstring für [DecimalFormat].
* @param locale Das zu verwendende Gebietsschema.
* @param roundingMode [RoundingMode.HALF_UP] ist Standard.
* @return Die formatierte Zahl oder eine leere Zeichenkette, wenn der Wert null ist.
*/
@JvmStatic
@JvmOverloads
fun format(
value: Number?,
pattern: String,
locale: Locale,
roundingMode: RoundingMode = RoundingMode.HALF_UP
): String {
value ?: return ""
val df = DecimalFormat.getInstance(locale) as DecimalFormat
df.applyPattern(pattern);
df.roundingMode = roundingMode
return df.format(value)
}
/**
* Gibt den angegebenen ganzzahligen Wert als Zeichenkettendarstellung zurück.
*
* @param value Der umzuwandelnde ganzzahlige Wert.
* @param scale Skalierung der Ausgabe, null ist Standard, d.h. die Skalierung des Objekts wird verwendet.
* @return Die Zeichenkettendarstellung oder eine leere/null-Zeichenkette, wenn der Wert null ist.
*/
@JvmStatic
fun format(value: Number?, locale: Locale): String {
return internalFormat(value, locale = locale) ?: ""
}
/**
* Gibt den angegebenen ganzzahligen Wert als Zeichenkettendarstellung zurück.
*
* @param value Der umzuwandelnde ganzzahlige Wert.
* @param scale Skalierung der Ausgabe, null ist Standard, d.h. die Skalierung des Objekts wird verwendet.
* @return Die Zeichenkettendarstellung oder eine leere/null-Zeichenkette, wenn der Wert null ist.
*/
@JvmStatic
@JvmOverloads
fun format(value: Number?, scale: Int? = null): String {
return internalFormat(value, scale) ?: ""
}
@JvmStatic
@JvmOverloads
fun format(month: Month, locale: Locale? = ThreadLocalUserContext.locale): String {
val useLocale = locale ?: Locale.ENGLISH
return month.getDisplayName(TextStyle.FULL_STANDALONE, useLocale)
}
/**
* Gibt den angegebenen ganzzahligen Wert als Zeichenkettendarstellung zurück (Skalierung = 2).
*
* @param value Der umzuwandelnde ganzzahlige Wert.
*/
@JvmStatic
@JvmOverloads
fun formatCurrency(value: Number?, withCurrencySymbol: Boolean = false): String {
val amount = internalFormat(value, 2) ?: return ""
return if (!withCurrencySymbol || Constants.CURRENCY_SYMBOL.isNullOrBlank()) {
amount
} else {
"$amount ${Constants.CURRENCY_SYMBOL}"
}
}
/**
* Gibt den angegebenen ganzzahligen Wert als Zeichenkettendarstellung zurück.
*
* @param value Der umzuwandelnde ganzzahlige Wert.
* @param defaultValue Für null-Werte wird dieser Wert zurückgegeben (Standard ist "").
* @param scale Skalierung der Ausgabe, null ist Standard, d.h. die Skalierung des Objekts wird verwendet.
* @return Die Zeichenkettendarstellung oder eine leere/null-Zeichenkette, wenn der Wert null ist.
*/
@JvmStatic
@JvmOverloads
fun formatNull(value: Number?, scale: Int? = null): String? {
return internalFormat(value, scale)
}
private fun internalFormat(
value: Number?,
scale: Int? = null,
locale: Locale = ThreadLocalUserContext.locale!!
): String? {
if (value == null)
return null
// ... (gekürzt, insgesamt 152 Zeilen)
868d6abb7 2025 -> 2026 63081666f Quellcodedatei-Header: 2024 -> 2025. b6092df09 Urheberrecht 2023 -> 2024 ab45d51fa Urheberrecht 2001-2022 -> 2001-2023. dcfc7c1a9 Alter Kalender in Untermenü verschoben, ScriptingTask*, JiraUtils