diff --git a/base/src/main/kotlin/de/staropensource/engine/base/implementable/Event.kt b/base/src/main/kotlin/de/staropensource/engine/base/implementable/Event.kt index f65267b..dbf964f 100644 --- a/base/src/main/kotlin/de/staropensource/engine/base/implementable/Event.kt +++ b/base/src/main/kotlin/de/staropensource/engine/base/implementable/Event.kt @@ -20,6 +20,7 @@ package de.staropensource.engine.base.implementable import de.staropensource.engine.base.Engine.Companion.logger +import de.staropensource.engine.base.extension.toStringType import de.staropensource.engine.base.utility.misc.StackTraceUtils /** @@ -103,21 +104,7 @@ abstract class Event { var value: Any? for (argument: String in arguments.keys) { value = arguments[argument] - append("\n${argument} = ") - - // Pretty formatting - if (value is Enum<*>) - append("${value::class.qualifiedName ?: ""}.${value.name}") - else if (value is CharSequence) - append("\"${value}\"") - else if (value is Char) - append("'${value}'") - else if (value is Byte) - append("0x${value.toHexString(HexFormat.UpperCase)}") - else if (value is ByteArray) - append("0x[ ${value.toHexString(HexFormat.UpperCase)} ]") - else - append(value.toString()) + append("\n${argument} = ${arguments[argument]?.toStringType()}") } } }) diff --git a/base/src/main/kotlin/de/staropensource/engine/base/implementation/logging/crashcategory/EnvironmentCrashCategory.kt b/base/src/main/kotlin/de/staropensource/engine/base/implementation/logging/crashcategory/EnvironmentCrashCategory.kt index abb3803..6a6ab4e 100644 --- a/base/src/main/kotlin/de/staropensource/engine/base/implementation/logging/crashcategory/EnvironmentCrashCategory.kt +++ b/base/src/main/kotlin/de/staropensource/engine/base/implementation/logging/crashcategory/EnvironmentCrashCategory.kt @@ -22,10 +22,8 @@ package de.staropensource.engine.base.implementation.logging.crashcategory import de.staropensource.engine.base.implementable.logging.CrashCategory import de.staropensource.engine.base.type.logging.Call import de.staropensource.engine.base.type.logging.ChannelSettings +import de.staropensource.engine.base.utility.DataSize import de.staropensource.engine.base.utility.Environment -import kotlinx.datetime.LocalDateTime -import kotlinx.datetime.TimeZone -import kotlinx.datetime.toLocalDateTime /** * [CrashCategory] implementation @@ -65,7 +63,7 @@ class EnvironmentCrashCategory private constructor() : CrashCategory { throwable: Throwable?, fatal: Boolean, ): LinkedHashMap { - if (Environment.isElevated() == null) + if (Environment.getOperatingSystem() == null) return linkedMapOf( Pair("Not available.", null) ) @@ -78,10 +76,10 @@ class EnvironmentCrashCategory private constructor() : CrashCategory { Pair("Bitness", "${Environment.getBitness()!!} bits"), )), Pair("Memory", linkedMapOf( - Pair("Total", "${Environment.getMemoryTotal()!!} bytes"), - Pair("Available", "${Environment.getMemoryAvailable()!!} bytes"), - Pair("Used", "${Environment.getMemoryUsed()!!} bytes"), - Pair("Page size", "${Environment.getMemoryPageSize()!!} bytes"), + Pair("Total", DataSize.ofBytes(Environment.getMemoryTotal()!!.toULong()).toPerfectRepresentationString()), + Pair("Available", DataSize.ofBytes(Environment.getMemoryAvailable()!!.toULong()).toPerfectRepresentationString()), + Pair("Used", DataSize.ofBytes(Environment.getMemoryUsed()!!.toULong()).toPerfectRepresentationString()), + Pair("Page size", DataSize.ofBytes(Environment.getMemoryPageSize()!!.toULong()).toPerfectRepresentationString()), )), Pair("CPU", linkedMapOf( Pair("Logical processors", Environment.getCPULogicalCount()!!.toString()), @@ -97,7 +95,7 @@ class EnvironmentCrashCategory private constructor() : CrashCategory { Pair("Device identifier", graphicsCard.getDeviceIdentifier()), Pair("Manufacturer", graphicsCard.getManufacturer()), Pair("Version", graphicsCard.getVersion()), - Pair("VRAM", "${graphicsCard.getVideoMemory()} bytes"), + Pair("VRAM", DataSize.ofBytes(graphicsCard.getVideoMemory().toULong()).toPerfectRepresentationString()), )) return map diff --git a/base/src/main/kotlin/de/staropensource/engine/base/utility/DataSize.kt b/base/src/main/kotlin/de/staropensource/engine/base/utility/DataSize.kt index 1dd92e9..0a9e1c0 100644 --- a/base/src/main/kotlin/de/staropensource/engine/base/utility/DataSize.kt +++ b/base/src/main/kotlin/de/staropensource/engine/base/utility/DataSize.kt @@ -22,7 +22,7 @@ package de.staropensource.engine.base.utility import java.math.RoundingMode import java.text.DecimalFormat import java.text.DecimalFormatSymbols -import java.util.Locale +import java.util.* /** * Converts between various data size units. @@ -40,6 +40,15 @@ data class DataSize( * @since v1-alpha10 */ companion object { + /** + * Creates a new [DataSize] instance. + * + * @param bytes bytes to pass + * @since v1-alpha10 + */ + @JvmStatic + fun ofBytes(bytes: ULong): DataSize = DataSize(bytes) + /** * Converts the specified amount of * kilobytes into a [DataSize] instance. @@ -310,6 +319,21 @@ data class DataSize( } } + /** + * Returns the perfect representation + * of the specified data size. + * + * @param binary uses a factor of `1024` (giving [Unit.MEBIBYTE], [Unit.GIBIBYTE], ...) instead of `1000` (giving [Unit.MEGABYTE], [Unit.GIGABYTE], ...) + * @param shortName whether to use the Unit's short name (see [Unit.getShortName]) or it's long name (see [Unit.getName]) + * @return pair of the converted amount and the [Unit] + * @since v1-alpha10 + */ + fun toPerfectRepresentationString(binary: Boolean = true, shortName: Boolean = true): String { + val representation: Pair = toPerfectRepresentation(binary = binary) + + return "${representation.first} ${if (shortName) representation.second.getShortName() else representation.second.getName()}" + } + // -----> Inner classes /** diff --git a/base/src/main/kotlin/de/staropensource/engine/base/utility/dnihbd/BuildInformation.kt b/base/src/main/kotlin/de/staropensource/engine/base/utility/dnihbd/BuildInformation.kt index 09940be..144960c 100644 --- a/base/src/main/kotlin/de/staropensource/engine/base/utility/dnihbd/BuildInformation.kt +++ b/base/src/main/kotlin/de/staropensource/engine/base/utility/dnihbd/BuildInformation.kt @@ -35,6 +35,7 @@ import java.io.InputStreamReader import java.io.Reader import java.io.StringReader import java.util.* +import kotlin.Throws /** * Loads the specified `-git.properties` and @@ -503,8 +504,8 @@ open class BuildInformation gitCommitAuthorMap.put("Email address", info!!.gitCommitAuthorEmail) // Add to 'gitCommitMap' - gitCommitMap.put("Identifier", "'${info!!.gitCommitIdentifierLong}'") - gitCommitMap.put("Message (short)", "'${info!!.gitCommitMessageShort}'") + gitCommitMap.put("Identifier", info!!.gitCommitIdentifierLong) + gitCommitMap.put("Message (short)", info!!.gitCommitMessageShort) gitCommitMap.put("Time", "${gitCommitTime.dayOfMonth}.${gitCommitTime.monthNumber}.${gitCommitTime.year} ${gitCommitTime.hour}:${gitCommitTime.minute}:${gitCommitTime.second} UTC") gitCommitMap.put("Author", gitCommitAuthorMap)