diff --git a/.idea/encodings.xml b/.idea/encodings.xml index c0bce70..6589dfe 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -2,6 +2,8 @@ + + \ No newline at end of file diff --git a/src/main/java/Controller.java b/src/main/java/Controller.java index 48a6b1c..913c08f 100644 --- a/src/main/java/Controller.java +++ b/src/main/java/Controller.java @@ -4,11 +4,13 @@ import javafx.collections.FXCollections; import javafx.concurrent.Service; import javafx.concurrent.Task; import javafx.fxml.FXML; +import javafx.scene.control.Alert; import javafx.scene.control.Label; import javafx.scene.control.Tooltip; import javafx.stage.FileChooser; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.configuration2.ex.ConfigurationException; +import org.jsoup.HttpStatusException; import pojo.App; import util.CreamApiConfig; import util.CreamApiDllHandler; @@ -26,9 +28,23 @@ import java.util.Objects; public class Controller { private static final String REGEX = "(?steam_api(?:64)?.dll)$"; - private CreamApiDllHandler handler = CreamApiDllHandler.getInstance(); - private CreamApiConfig config = CreamApiConfig.getInstance(); - private SteamAppsListCache cache = new SteamAppsListCache(); + private CreamApiDllHandler handler = null; + { + try { + handler = CreamApiDllHandler.getInstance(); + } catch (IOException e) { + Alert alert = new Alert(Alert.AlertType.ERROR); + alert.setTitle("CreamAPI DLLs missing!"); + alert.setHeaderText("CreamAPI DLL files can't be found!"); + alert.setContentText("Please download CreamAPI and extract the non-log " + + "version in the same folder as Auto-CreamAPI!\nThe program will now close."); + alert.showAndWait(); + System.exit(10); + } + } + + private final CreamApiConfig config = CreamApiConfig.getInstance(); + private final SteamAppsListCache cache = new SteamAppsListCache(); @FXML public Label state_label; @FXML @@ -69,6 +85,7 @@ public class Controller { generate_tooltips(); fix_dlc_textarea_prompt_text(); reset(true); + state_label.setText("Ready."); } private void read() { @@ -148,8 +165,10 @@ public class Controller { config.sync(); } catch (IOException | ConfigurationException e) { e.printStackTrace(); + cancel(); } catch (NullPointerException e) { System.err.println("No configuration file set!"); + cancel(); } return null; } @@ -164,6 +183,10 @@ public class Controller { setDisableAllButtons(false); state_label.setText("Saved successfully!"); }); + s.setOnCancelled(event -> { + setDisableAllButtons(false); + state_label.setText("Could not save configuration file!"); + }); s.start(); } @@ -192,10 +215,20 @@ public class Controller { return new Task() { @Override protected Void call() { - Map collect = cache.getDlcMap(appId_textfield.getText()); - StringBuilder sb = new StringBuilder(); - collect.forEach((k, v) -> sb.append(k).append("=").append(v).append("\n")); - dlc_textarea.setText(sb.toString()); + try { + Map collect = cache.getDlcMap(appId_textfield.getText()); + StringBuilder sb = new StringBuilder(); + collect.forEach((k, v) -> sb.append(k).append("=").append(v).append("\n")); + dlc_textarea.setText(sb.toString()); + } catch (HttpStatusException e) { + if (e.getStatusCode() == 404) { + System.err.println("App ID empty or not found! (HTTP Status Code: 404)"); + } + cancel(); + } catch (IOException e) { + e.printStackTrace(); + cancel(); + } return null; } }; @@ -209,6 +242,10 @@ public class Controller { setDisableAllButtons(false); state_label.setText("Got list of DLCs successfully!"); }); + s.setOnCancelled(event -> { + setDisableAllButtons(false); + state_label.setText("Could not get list of DLCs!"); + }); s.start(); } @@ -225,6 +262,7 @@ public class Controller { path_textfield.setText(file.getParent()); steamApiPathString = file.getAbsolutePath(); reset(true); + state_label.setText("Ready."); } catch (ConfigurationException | IOException e) { e.printStackTrace(); } diff --git a/src/main/java/util/CreamApiConfig.java b/src/main/java/util/CreamApiConfig.java index 6100f5d..53ae0f5 100644 --- a/src/main/java/util/CreamApiConfig.java +++ b/src/main/java/util/CreamApiConfig.java @@ -20,8 +20,8 @@ public class CreamApiConfig { private Boolean unlockAll; private Boolean extraProtection; private Boolean forceOffline; - private Map dlc = new HashMap<>(); - private List languages = new ArrayList<>(); + private final Map dlc = new HashMap<>(); + private final List languages = new ArrayList<>(); private CreamApiConfig() { try { @@ -35,7 +35,7 @@ public class CreamApiConfig { File langFile = new File("languages.txt"); try { BufferedReader fIn = new BufferedReader(new FileReader(langFile)); - fIn.lines().filter(line -> !line.isEmpty() && !line.startsWith("#")).forEach(line -> languages.add(line)); + fIn.lines().filter(line -> !line.isEmpty() && !line.startsWith("#")).forEach(languages::add); } catch (IOException e) { e.printStackTrace(); } diff --git a/src/main/java/util/CreamApiDllHandler.java b/src/main/java/util/CreamApiDllHandler.java index 8027047..c9f88a0 100644 --- a/src/main/java/util/CreamApiDllHandler.java +++ b/src/main/java/util/CreamApiDllHandler.java @@ -15,24 +15,14 @@ public class CreamApiDllHandler { private final String steamApiDllMd5; private final String steamApi64DllMd5; - private CreamApiDllHandler() { - String steamApiDllMd5 = ""; - String steamApi64DllMd5 = ""; - try { - steamApiDllMd5 = DigestUtils.md5Hex(Files.newInputStream(steamApiDllPath)); - } catch (IOException e) { - System.err.println("File missing: " + steamApiDllPath.toAbsolutePath().toString()); - } - try { - steamApi64DllMd5 = DigestUtils.md5Hex(Files.newInputStream(steamApi64DllPath)); - } catch (IOException e) { - System.err.println("File missing: " + steamApi64DllPath.toAbsolutePath().toString()); - } + private CreamApiDllHandler() throws IOException { + String steamApiDllMd5 = DigestUtils.md5Hex(Files.newInputStream(steamApiDllPath)); + String steamApi64DllMd5 = DigestUtils.md5Hex(Files.newInputStream(steamApi64DllPath)); this.steamApiDllMd5 = steamApiDllMd5; this.steamApi64DllMd5 = steamApi64DllMd5; } - public static synchronized CreamApiDllHandler getInstance() { + public static synchronized CreamApiDllHandler getInstance() throws IOException { if (creamApiDllHandlerInstance == null) { creamApiDllHandlerInstance = new CreamApiDllHandler(); } diff --git a/src/main/java/util/SteamAppsListCache.java b/src/main/java/util/SteamAppsListCache.java index d7422d5..8a1534e 100644 --- a/src/main/java/util/SteamAppsListCache.java +++ b/src/main/java/util/SteamAppsListCache.java @@ -4,7 +4,6 @@ import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import kong.unirest.HttpResponse; import kong.unirest.Unirest; -import org.jsoup.HttpStatusException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; @@ -26,29 +25,31 @@ import java.util.stream.Collectors; public class SteamAppsListCache { private SteamAppsList list = new SteamAppsList(); - private File cacheFile = new File("steamapps.json"); + private final File cacheFile = new File("steamapps.json"); private MainEnv env; //private String key; public SteamAppsListCache() { try { - Class envDefault = Class.forName("util.env.Default"); + Class envDefault = Class.forName("util.env.Default"); env = (MainEnv) envDefault.newInstance(); - //System.out.println(env.getKey()); + // System.out.println(env.getKey()); } catch (ClassNotFoundException e) { env = new MainEnv(); } catch (IllegalAccessException | InstantiationException e) { // Only thrown by newInstance() e.printStackTrace(); } - boolean fileFound = true; + //boolean fileFound = true; try { getListFromFile(); } catch (FileNotFoundException e) { System.err.println("File does not exist, trying to create steamapps.json for the first time..."); - fileFound = false; + //fileFound = false; + sync(); } - if (!fileFound || Instant.now().isAfter(list.getTimestamp().plus(Duration.ofDays(3)))) { + if (Instant.now().isAfter(list.getTimestamp().plus(Duration.ofDays(3)))) { + System.err.println("List in file is not recent!"); sync(); } } @@ -89,6 +90,7 @@ public class SteamAppsListCache { } private void getListFromApi() { + System.out.println("Trying to get SteamAppList from API..."); List apps = getApps(); list.setTimestamp(Instant.now()); list.setSteamAppsList(apps); @@ -104,23 +106,27 @@ public class SteamAppsListCache { } private void saveListToFile() throws IOException { + System.out.println("Trying to save SteamAppList to file (" + cacheFile.getAbsolutePath() + ")..."); Gson gson = new Gson(); String jsonString = gson.toJson(list); BufferedWriter fOut = new BufferedWriter(new FileWriter(cacheFile)); fOut.write(jsonString); fOut.close(); + System.out.println("Successfully saved SteamAppList to file (" + cacheFile.getAbsolutePath() + ")..."); } private void getListFromFile() throws FileNotFoundException { + System.out.println("Trying to get SteamAppList from file (" + cacheFile.getAbsolutePath() + ")..."); BufferedReader fIn = new BufferedReader(new FileReader(cacheFile)); String json = fIn.lines().collect(Collectors.joining()); final Type type = new TypeToken() { }.getType(); Gson gson = new Gson(); list = gson.fromJson(json, type); + System.out.println("Successfully got SteamAppList from file (" + cacheFile.getAbsolutePath() + ")..."); } - public LinkedHashMap getDlcMap(String appId) { + public LinkedHashMap getDlcMap(String appId) throws IOException{ Map steamStoreDLCs = new HashMap<>(); Map steamDbDLCs = new HashMap<>(); //StringBuilder sb = new StringBuilder(); @@ -152,12 +158,6 @@ public class SteamAppsListCache { } steamDbDLCs.put(Integer.parseInt(dlc_id), dlc_name); } - } catch (HttpStatusException e) { - if (e.getStatusCode() == 404) { - System.err.println("App ID empty or not found! (HTTP Status Code: 404)"); - } - } catch (IOException e) { - e.printStackTrace(); } catch (NullPointerException e) { // ignore } diff --git a/steam_api.dll b/steam_api.dll index 117c18f..9e780d3 100644 Binary files a/steam_api.dll and b/steam_api.dll differ diff --git a/steam_api64.dll b/steam_api64.dll index f27c80f..bcb85c4 100644 Binary files a/steam_api64.dll and b/steam_api64.dll differ