|
10 | 10 | import es.urjc.etsii.grafo.autoconfig.irace.IraceRuntimeConfiguration; |
11 | 11 | import es.urjc.etsii.grafo.config.SolverConfig; |
12 | 12 | import jakarta.servlet.http.HttpServletRequest; |
13 | | -import org.springframework.context.annotation.Profile; |
14 | 13 | import org.springframework.web.bind.annotation.GetMapping; |
15 | 14 | import org.springframework.web.bind.annotation.RestController; |
16 | 15 |
|
@@ -72,11 +71,50 @@ public Object getInventory(){ |
72 | 71 | return this.inventory.getInventory(); |
73 | 72 | } |
74 | 73 |
|
| 74 | + @GetMapping("/auto/debug/toIraceConfig/**") |
| 75 | + public Object toIraceConfig(HttpServletRequest request){ |
| 76 | + String url = request.getRequestURI(); |
| 77 | + String[] parts = url.split("/toIraceConfig/"); |
| 78 | + if(parts.length != 2){ |
| 79 | + return Map.of("error", "Invalid URL format. Expected format: /toIraceConfig/{commandLine}"); |
| 80 | + } |
| 81 | + String cmdline = URLDecoder.decode(parts[1], StandardCharsets.UTF_8); |
| 82 | + cmdline = cleanCmdLine(cmdline); |
| 83 | + Map<String, String> params = extractParameters(cmdline); |
| 84 | + var line1 = new StringBuilder(); |
| 85 | + var line2 = new StringBuilder(); |
| 86 | + for(var entry: params.entrySet()){ |
| 87 | + line1.append(entry.getKey()).append("\t"); |
| 88 | + line2.append(entry.getValue()).append("\t"); |
| 89 | + } |
| 90 | + return Map.of("iraceConfig", line1.toString().trim() + "\n" + line2.toString().trim()); |
| 91 | + } |
| 92 | + |
| 93 | + private static Map<String, String> extractParameters(String cmdline) { |
| 94 | + Map<String, String> params = new LinkedHashMap<>(); |
| 95 | + for(var pair: cmdline.split("\\s+")) { |
| 96 | + if (pair.contains("=")) { |
| 97 | + var parts = pair.split("="); |
| 98 | + if (parts.length == 2) { |
| 99 | + params.put(parts[0], parts[1]); |
| 100 | + } else { |
| 101 | + throw new IllegalArgumentException("Invalid parameter format: " + pair); |
| 102 | + } |
| 103 | + } else { |
| 104 | + throw new IllegalArgumentException("Parameter without value: " + pair); |
| 105 | + } |
| 106 | + } |
| 107 | + return params; |
| 108 | + } |
| 109 | + |
75 | 110 | @GetMapping("/auto/debug/decode/**") |
76 | 111 | public Object decode(HttpServletRequest request){ |
77 | 112 | String url = request.getRequestURI(); |
78 | | - String cmdline = url.split("/decode/")[1]; |
79 | | - cmdline = URLDecoder.decode(cmdline, StandardCharsets.UTF_8); |
| 113 | + String[] parts = url.split("/decode/"); |
| 114 | + if(parts.length != 2){ |
| 115 | + return Map.of("error", "Invalid URL format. Expected format: /toIraceConfig/{commandLine}"); |
| 116 | + } |
| 117 | + String cmdline = URLDecoder.decode(parts[1], StandardCharsets.UTF_8); |
80 | 118 | cmdline = cleanCmdLine(cmdline); |
81 | 119 |
|
82 | 120 | var config = cmdline.startsWith("ROOT")? |
|
0 commit comments