Add boolean and integer conversion methods
This commit also reorganizes the method order inside Miscellaneous.java
This commit is contained in:
parent
67909e9cc3
commit
a0a89d2f3c
1 changed files with 81 additions and 43 deletions
|
@ -20,8 +20,11 @@
|
||||||
package de.staropensource.sosengine.base.utility;
|
package de.staropensource.sosengine.base.utility;
|
||||||
|
|
||||||
import de.staropensource.sosengine.base.events.ThrowableCatchEvent;
|
import de.staropensource.sosengine.base.events.ThrowableCatchEvent;
|
||||||
|
import de.staropensource.sosengine.base.exceptions.TristateConversionException;
|
||||||
|
import de.staropensource.sosengine.base.types.Tristate;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.jetbrains.annotations.Range;
|
||||||
|
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -44,6 +47,41 @@ public final class Miscellaneous {
|
||||||
*/
|
*/
|
||||||
public Miscellaneous() {}
|
public Miscellaneous() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a boolean into an integer.
|
||||||
|
*
|
||||||
|
* @since v1-alpha2
|
||||||
|
*/
|
||||||
|
@Range(from = 0, to = 1)
|
||||||
|
public static int getIntegerizedBoolean(boolean bool) {
|
||||||
|
return bool ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts an integer into a {@link Tristate}.
|
||||||
|
*
|
||||||
|
* @return the expected boolean result, except if neither {@code 0} or {@code 1}, in which case {@link Tristate#UNSET} is returned
|
||||||
|
* @since v1-alpha2
|
||||||
|
*/
|
||||||
|
public static Tristate getTristatedInteger(@Range(from = 0, to = 1) int integer) {
|
||||||
|
return switch (integer) {
|
||||||
|
case 0 -> Tristate.TRUE;
|
||||||
|
case 1 -> Tristate.FALSE;
|
||||||
|
default -> Tristate.UNSET;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts an integer into a {@link Tristate} and then into a boolean.
|
||||||
|
*
|
||||||
|
* @return booleanized integer
|
||||||
|
* @throws TristateConversionException when encountering {@link Tristate#UNSET}.
|
||||||
|
* @since v1-alpha2
|
||||||
|
*/
|
||||||
|
public static boolean getBooleanizedInteger(@Range(from = 0, to = 1) int integer) throws TristateConversionException {
|
||||||
|
return Tristate.toBoolean(getTristatedInteger(integer));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds padding zeros to a number.
|
* Adds padding zeros to a number.
|
||||||
*
|
*
|
||||||
|
@ -57,34 +95,6 @@ public final class Miscellaneous {
|
||||||
return String.format("%0" + length + "d", number);
|
return String.format("%0" + length + "d", number);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Forcefully invokes the garbage collector and blocks execution until finished.<br/>
|
|
||||||
* If you want to run it in parallel to your program, consider running it in a {@link java.lang.VirtualThread}.
|
|
||||||
*
|
|
||||||
* @since v1-alpha0
|
|
||||||
*/
|
|
||||||
@SuppressWarnings("UnusedAssignment")
|
|
||||||
public static void invokeGarbageCollector() {
|
|
||||||
Object object = new Object();
|
|
||||||
WeakReference<Object> weakReference = new WeakReference<>(object);
|
|
||||||
object = null;
|
|
||||||
while(weakReference.get() != null) System.gc();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Measures the execution time of a {@link Runnable}.
|
|
||||||
*
|
|
||||||
* @param runnable {@link Runnable} to execute
|
|
||||||
* @return execution time in milliseconds
|
|
||||||
* @see Runnable
|
|
||||||
* @since v1-alpha0
|
|
||||||
*/
|
|
||||||
public static long measureExecutionTime(@NotNull Runnable runnable) {
|
|
||||||
long initTime = System.currentTimeMillis();
|
|
||||||
runnable.run();
|
|
||||||
return System.currentTimeMillis() - initTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Searches for a value in a {@link Map}.
|
* Searches for a value in a {@link Map}.
|
||||||
*
|
*
|
||||||
|
@ -101,21 +111,6 @@ public final class Miscellaneous {
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Executes a {@link Runnable} and emits {@link ThrowableCatchEvent} if a throwable is caught.
|
|
||||||
*
|
|
||||||
* @param runnable {@link Runnable} to execute
|
|
||||||
* @param identifier some identifier to distinguish {@link Runnable}s
|
|
||||||
* @since v1-alpha1
|
|
||||||
*/
|
|
||||||
public static void executeSafely(@NotNull Runnable runnable, @NotNull String identifier) {
|
|
||||||
try {
|
|
||||||
runnable.run();
|
|
||||||
} catch (Throwable throwable) {
|
|
||||||
new ThrowableCatchEvent().callEvent(throwable, identifier);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Counts the occurrences of a substring inside of a string.
|
* Counts the occurrences of a substring inside of a string.
|
||||||
*
|
*
|
||||||
|
@ -164,6 +159,49 @@ public final class Miscellaneous {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Measures the execution time of a {@link Runnable}.
|
||||||
|
*
|
||||||
|
* @param runnable {@link Runnable} to execute
|
||||||
|
* @return execution time in milliseconds
|
||||||
|
* @see Runnable
|
||||||
|
* @since v1-alpha0
|
||||||
|
*/
|
||||||
|
public static long measureExecutionTime(@NotNull Runnable runnable) {
|
||||||
|
long initTime = System.currentTimeMillis();
|
||||||
|
runnable.run();
|
||||||
|
return System.currentTimeMillis() - initTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Executes a {@link Runnable} and emits {@link ThrowableCatchEvent} if a throwable is caught.
|
||||||
|
*
|
||||||
|
* @param runnable {@link Runnable} to execute
|
||||||
|
* @param identifier some identifier to distinguish {@link Runnable}s
|
||||||
|
* @since v1-alpha1
|
||||||
|
*/
|
||||||
|
public static void executeSafely(@NotNull Runnable runnable, @NotNull String identifier) {
|
||||||
|
try {
|
||||||
|
runnable.run();
|
||||||
|
} catch (Throwable throwable) {
|
||||||
|
new ThrowableCatchEvent().callEvent(throwable, identifier);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forcefully invokes the garbage collector and blocks execution until finished.<br/>
|
||||||
|
* If you want to run it in parallel to your program, consider running it in a {@link VirtualThread}.
|
||||||
|
*
|
||||||
|
* @since v1-alpha0
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("UnusedAssignment")
|
||||||
|
public static void invokeGarbageCollector() {
|
||||||
|
Object object = new Object();
|
||||||
|
WeakReference<Object> weakReference = new WeakReference<>(object);
|
||||||
|
object = null;
|
||||||
|
while(weakReference.get() != null) System.gc();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ensures that the code is running on the main thread.
|
* Ensures that the code is running on the main thread.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue