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..e167065 100644 --- a/src/main/java/Controller.java +++ b/src/main/java/Controller.java @@ -1,4 +1,5 @@ import com.jfoenix.controls.*; +import de.jensd.fx.glyphs.fontawesome.FontAwesomeIconView; import javafx.beans.value.ChangeListener; import javafx.collections.FXCollections; import javafx.concurrent.Service; @@ -9,6 +10,7 @@ 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,11 @@ 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(); + public FontAwesomeIconView creamApiDllAppliedIcon; + public FontAwesomeIconView creamApiConfigExists; + private final CreamApiDllHandler handler = CreamApiDllHandler.getInstance(); + private final CreamApiConfig config = CreamApiConfig.getInstance(); + private final SteamAppsListCache cache = new SteamAppsListCache(); @FXML public Label state_label; @FXML @@ -69,6 +73,7 @@ public class Controller { generate_tooltips(); fix_dlc_textarea_prompt_text(); reset(true); + state_label.setText("Ready."); } private void read() { @@ -148,8 +153,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 +171,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 +203,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 +230,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 +250,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/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/src/main/resources/mainWindow.fxml b/src/main/resources/mainWindow.fxml index 244d629..e0c98c7 100644 --- a/src/main/resources/mainWindow.fxml +++ b/src/main/resources/mainWindow.fxml @@ -8,50 +8,99 @@ + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +