summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sol-pretty-printer/src/Solutions.java')
-rw-r--r--sol-pretty-printer/src/Solutions.java96
1 files changed, 96 insertions, 0 deletions
diff --git a/sol-pretty-printer/src/Solutions.java b/sol-pretty-printer/src/Solutions.java
new file mode 100644
index 0000000..38a426a
--- /dev/null
+++ b/sol-pretty-printer/src/Solutions.java
@@ -0,0 +1,96 @@
+import java.util.Map;
+import java.util.List;
+
+import java.io.IOException;
+
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.charset.StandardCharsets;
+
+
+public class Solutions
+{
+ private static String load_file (final String filename)
+ throws IOException
+ {
+ return
+ new String
+ (
+ Files.readAllBytes(Paths.get(filename)),
+ StandardCharsets.UTF_8
+ );
+ }
+
+ public static boolean print (final String sol_file, final String pp_file)
+ throws IOException
+ {
+ final String pp_content;
+ final QuickSolParser qsp;
+ List<String[]> solution;
+
+ pp_content = load_file(pp_file);
+
+ qsp = new QuickSolParser(sol_file);
+
+ for (;;)
+ {
+ solution = qsp.next_solution();
+
+ if (solution == null)
+ {
+ return true;
+ }
+
+ if (!handle_solution(solution, pp_content))
+ {
+ return false;
+ }
+ }
+ }
+
+ private static boolean handle_solution
+ (
+ final List<String[]> solution,
+ String pp_content
+ )
+ {
+ for (final String[] sol_data: solution)
+ {
+ final SolutionItem si;
+
+ si = SolutionItem.get_item_from_id(sol_data[1]);
+
+ if (si == null)
+ {
+ System.err.println
+ (
+ "[E] There is no element in the model with an ID of \""
+ + sol_data[1]
+ + "\", yet the solution file refers to it."
+ );
+
+ return false;
+ }
+
+ for (final Map.Entry<String, String> me: si.get_functions_data())
+ {
+ pp_content =
+ pp_content.replace
+ (
+ (
+ "$"
+ + sol_data[0]
+ + "."
+ + me.getKey().toUpperCase()
+ + "$"
+ ),
+ Strings.get_string_from_id(me.getValue())
+ );
+ }
+ }
+
+ System.out.println(pp_content);
+
+ return true;
+ }
+}