Makes it possible to enable debug mode
Some checks failed
KnarCraft/FFmpegConvert/pipeline/head There was a failure building this commit

Debug mode is now enabled if the property `debug = true` is set in `conf/config.properties`
Changes code for reading internal configurations
Changes many primitive lists to List<>
Adds some missing annotations
Renames the main class
This commit is contained in:
2024-04-17 15:35:09 +02:00
parent f0e75eb440
commit 4ebd29b358
29 changed files with 492 additions and 177 deletions

View File

@@ -1,14 +1,12 @@
package net.knarcraft.ffmpegconverter.handler;
import net.knarcraft.ffmpegconverter.FFMpegConvert;
import net.knarcraft.ffmpegconverter.config.ConfigHandler;
import net.knarcraft.ffmpegconverter.utility.OutputUtil;
import org.apache.commons.configuration2.Configuration;
import org.apache.commons.configuration2.PropertiesConfiguration;
import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder;
import org.apache.commons.configuration2.builder.fluent.Configurations;
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -18,8 +16,7 @@ import java.util.List;
*/
public record AvailableHardwareEncoderHandler(@NotNull List<String> availableHardwareEncodings) {
private static final File configFolder = new File("conf").getAbsoluteFile();
private static final Configurations configurations = new Configurations();
private static final ConfigHandler configHandler = FFMpegConvert.getConfigHandler();
/**
* Gets all hardware encodings
@@ -42,30 +39,12 @@ public record AvailableHardwareEncoderHandler(@NotNull List<String> availableHar
}
/**
* Saves settings fro this available hardware encoder handler
*
* @throws ConfigurationException <p>If the configuration file cannot be saved</p>
* Saves settings for this available hardware encoder handler
*/
public void save() throws ConfigurationException {
OutputUtil.printDebug("Preparing to save config");
if (!configFolder.exists() && !configFolder.mkdir()) {
throw new RuntimeException("Unable to create config folder. Make sure to run this .jar file from a " +
"writable directory!");
}
File settingsFile = new File(configFolder, "config.properties");
try {
if (!settingsFile.exists() && !settingsFile.createNewFile()) {
OutputUtil.println("Failed to create configuration file.");
}
} catch (IOException e) {
OutputUtil.println("Failed to create configuration file.");
}
FileBasedConfigurationBuilder<PropertiesConfiguration> builder =
configurations.propertiesBuilder(settingsFile);
PropertiesConfiguration config = builder.getConfiguration();
config.setProperty("encoder.hardware", this.availableHardwareEncodings);
builder.save();
public void save() {
PropertiesConfiguration configuration = configHandler.getWritableConfiguration();
configuration.setProperty("encoder.hardware", this.availableHardwareEncodings);
configHandler.writeConfiguration();
OutputUtil.printDebug("Saved available hardware encoder handler");
}
@@ -73,14 +52,15 @@ public record AvailableHardwareEncoderHandler(@NotNull List<String> availableHar
* Loads saved settings for an available hardware encoder handler
*
* @return <p>The loaded available hardware encoder handler, or a new one if no data has been saved</p>
* @throws ConfigurationException <p>If the configuration file cannot be loaded</p>
*/
public static AvailableHardwareEncoderHandler load() throws ConfigurationException {
File settingsFile = new File(configFolder, "config.properties");
if (!settingsFile.exists()) {
return new AvailableHardwareEncoderHandler(new ArrayList<>());
@NotNull
public static AvailableHardwareEncoderHandler load() {
Configuration configuration;
try {
configuration = configHandler.load();
} catch (IOException e) {
throw new RuntimeException(e);
}
Configuration configuration = configurations.properties(settingsFile);
List<String> getEncodings = configuration.getList(String.class, "encoder.hardware");
return new AvailableHardwareEncoderHandler(getEncodings);
}