package fr.tikione.steam.cleaner.util.conf;
import fr.tikione.ini.Ini;
import fr.tikione.steam.cleaner.Main;
import fr.tikione.steam.cleaner.util.Log;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import static fr.tikione.steam.cleaner.util.conf.Config.getProfilePath;
/**
* Configuration handler for remote Redist definitions files.
*/
@SuppressWarnings("ResultOfMethodCallIgnored")
public class RemotePatterns {
private static final String CONFIG_FOLDER = "remoteRedistDefinitions";
/**
* Store new remote Redist definitions files and remove olderones.
* @param contents content of new files.
* @throws IOException if an IO error occurs.
*/
public static void store(List<String> contents) throws IOException {
File thirdpartyFiles = new File(getProfilePath(), CONFIG_FOLDER);
thirdpartyFiles.mkdirs();
File[] oldFiles = thirdpartyFiles.listFiles();
if (null != oldFiles) {
for (File oldFile : oldFiles) {
oldFile.delete();
}
}
thirdpartyFiles.mkdirs();
for (String content : contents) {
File configFile = new File(thirdpartyFiles, System.nanoTime() + ".ini");
FileUtils.write(configFile, content, Main.CONF_ENCODING);
}
}
/**
* Get all Ini related to remote Redist definitions files recently downloaded.
* @return Ini objects.
*/
public static List<Ini> getInis() {
List<Ini> inis = new ArrayList<>(8);
File thirdpartyFiles = new File(getProfilePath(), CONFIG_FOLDER);
if (thirdpartyFiles.exists()) {
File[] iniFiles = thirdpartyFiles.listFiles();
if (null != iniFiles) {
for (File iniFile : iniFiles) {
try {
Ini ini = new Ini();
ini.getConfig().enableParseLineConcat(true);
ini.getConfig().enableReadUnicodeEscConv(true);
ini.load(iniFile, Main.CONF_ENCODING);
inis.add(ini);
} catch (IOException ex) {
Log.error("cannot load or parse ini file: " + iniFile.getAbsolutePath(), ex);
}
}
}
}
return inis;
}
}