Adds a new class for handling converter profiles

This commit is contained in:
Kristian Knarvik 2021-01-25 22:06:54 +01:00
parent a0b5b65054
commit d349629574

View File

@ -0,0 +1,64 @@
package net.knarcraft.ffmpegconverter.converter;
import net.knarcraft.ffmpegconverter.utility.FileUtil;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* The ConverterProfiles class is responsible for loading and retrieving settings for a converter
*/
public class ConverterProfiles {
private Map<String, Map<String, String>> loadedProfiles;
/**
* Instantiates a new converter profiles object
*/
public ConverterProfiles() {
loadedProfiles = new HashMap<>();
try {
loadProfiles();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* Gets all available converter profiles as a set
* @return <p>A set of all loaded converter profiles.</p>
*/
public Set<String> getProfiles() {
return loadedProfiles.keySet();
}
/**
* Gets all profile settings for the given converter profile
* @param profileName <p>The name of the converter profile to get settings for.</p>
* @return <p>Settings for the converter profile.</p>
*/
public Map<String, String> getProfileSettings(String profileName) {
return loadedProfiles.get(profileName);
}
/**
* Loads all converter profiles
* @throws IOException <p>If unable to read the converter profiles file.</p>
*/
private void loadProfiles() throws IOException {
String[] profiles = FileUtil.readFileLines("converter_profiles.txt");
for (String profile : profiles) {
Map<String, String> profileSettings = new HashMap<>();
String[] settings = profile.split("\\|");
String profileName = settings[0];
for (int i = 1; i < settings.length; i++) {
String[] settingParts = settings[i].split(":");
profileSettings.put(settingParts[0], settingParts[1]);
}
loadedProfiles.put(profileName, profileSettings);
}
}
}