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 @@
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+