| summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'sol-pretty-printer/src/Solutions.java')
| -rw-r--r-- | sol-pretty-printer/src/Solutions.java | 96 |
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; + } +} |


