Revize cc904d05
Přidáno uživatelem stepanekp před asi 3 roky(ů)
src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/controller/AppController.java | ||
---|---|---|
232 | 232 |
* @return html file name for thymeleaf template |
233 | 233 |
*/ |
234 | 234 |
@PostMapping(value = "/configuration", params = "configuration-save-button") |
235 |
public String configurationPost(Model model, |
|
235 |
public String configurationSavePost(Model model,
|
|
236 | 236 |
@RequestParam(value = "thresholdValues", required = false) String[] thresholdValues, |
237 | 237 |
@RequestParam(value = "thresholdNames", required = false) String[] thresholdNames, |
238 | 238 |
@RequestParam(value = "antiPatternNames", required = false) String[] antiPatternNames, |
239 |
HttpSession session) { |
|
239 |
HttpSession session, RedirectAttributes redirectAttributes) {
|
|
240 | 240 |
|
241 | 241 |
String currentConfigurationName = configurationGetFromSession(session); |
242 | 242 |
|
... | ... | |
245 | 245 |
List<String> wrongParameters = configurationService.saveNewConfiguration(antiPatterns, currentConfigurationName, antiPatternNames, thresholdNames, thresholdValues); |
246 | 246 |
|
247 | 247 |
if (wrongParameters.isEmpty()) { |
248 |
model.addAttribute("successMessage", "All configuration values has been successfully saved.");
|
|
248 |
model.addAttribute("successMessage", "All configuration values have been successfully saved.");
|
|
249 | 249 |
} else { |
250 | 250 |
model.addAttribute("errorMessage", "One or more configuration values are not in correct format, see messages below."); |
251 | 251 |
antiPatternService.setErrorMessages(antiPatterns, wrongParameters); |
... | ... | |
256 | 256 |
return "configuration"; |
257 | 257 |
} |
258 | 258 |
|
259 |
/** |
|
260 |
* Method of storing new configurations for individual AP. |
|
261 |
* |
|
262 |
* @param model object for passing data to the UI |
|
263 |
* @param thresholdValues changed configuration values |
|
264 |
* @param thresholdNames changed configuration names |
|
265 |
* @return html file name for thymeleaf template |
|
266 |
*/ |
|
267 |
@PostMapping(value = "/configuration", params = "configuration-save-as-button") |
|
268 |
public String configurationSaveAsPost(Model model, |
|
269 |
@RequestParam(value = "thresholdValues", required = false) String[] thresholdValues, |
|
270 |
@RequestParam(value = "thresholdNames", required = false) String[] thresholdNames, |
|
271 |
@RequestParam(value = "antiPatternNames", required = false) String[] antiPatternNames, |
|
272 |
@RequestParam(value = "configuration-save-as-input", required = false) String newConfigName, |
|
273 |
HttpSession session, RedirectAttributes redirectAttributes) { |
|
274 |
|
|
275 |
List<AntiPattern> antiPatterns = antiPatternService.antiPatternsToModel(antiPatternService.getAllAntiPatterns()); |
|
276 |
|
|
277 |
List<String> allConfigurationNames = configurationService.getAllConfigurationNames(); |
|
278 |
if (newConfigName == null || newConfigName.length() == 0 || allConfigurationNames.contains(newConfigName)) { |
|
279 |
model.addAttribute("antiPatterns", antiPatterns); |
|
280 |
model.addAttribute("errorMessage", "Configuration name is not possible."); |
|
281 |
return "configuration"; |
|
282 |
} |
|
283 |
|
|
284 |
List<String> wrongParameters = configurationService.saveNewConfiguration(antiPatterns, newConfigName, antiPatternNames, thresholdNames, thresholdValues); |
|
285 |
|
|
286 |
if (wrongParameters.isEmpty()) { |
|
287 |
model.addAttribute("successMessage", "New configuration has been successfully saved."); |
|
288 |
} else { |
|
289 |
model.addAttribute("errorMessage", "One or more configuration values are not in correct format, see messages below."); |
|
290 |
antiPatternService.setErrorMessages(antiPatterns, wrongParameters); |
|
291 |
} |
|
292 |
|
|
293 |
model.addAttribute("antiPatterns", antiPatterns); |
|
294 |
session.setAttribute("configuration", newConfigName); |
|
295 |
model.addAttribute("configurations", configurationService.getConfigurationByName(newConfigName)); |
|
296 |
|
|
297 |
model.addAttribute("configurationList", configurationsGetList(session)); |
|
298 |
model.addAttribute("selectedConfiguration", session.getAttribute("configuration")); |
|
299 |
|
|
300 |
return "configuration"; |
|
301 |
} |
|
302 |
|
|
259 | 303 |
/** |
260 | 304 |
* Method for storing configuration values for the respective AP. |
261 | 305 |
* |
src/main/java/cz/zcu/fav/kiv/antipatterndetectionapp/repository/ConfigurationRepository.java | ||
---|---|---|
13 | 13 |
import java.io.*; |
14 | 14 |
import java.net.URL; |
15 | 15 |
import java.nio.file.Paths; |
16 |
import java.util.ArrayList; |
|
17 | 16 |
import java.util.HashMap; |
18 |
import java.util.List; |
|
19 | 17 |
import java.util.Map; |
20 | 18 |
|
21 | 19 |
@Component |
... | ... | |
140 | 138 |
root.set("configuration", array); |
141 | 139 |
|
142 | 140 |
try { |
143 |
URL url = servletContext.getResource(CONFIGURATION_DIR + configurationName + ".json"); |
|
144 |
JsonParser.getObjectWriter().writeValue(Paths.get(url.toURI()).toFile(), root); |
|
141 |
String uri = servletContext.getResource(CONFIGURATION_DIR).toURI() + configurationName + ".json"; |
|
142 |
|
|
143 |
JsonParser.getObjectWriter().writeValue(Paths.get(new URL(uri).toURI()).toFile(), root); |
|
145 | 144 |
} catch (Exception e) { |
146 | 145 |
LOGGER.error("Cannot write configuration to the file"); |
147 | 146 |
} |
src/main/webapp/WEB-INF/templates/configuration.html | ||
---|---|---|
87 | 87 |
</div> |
88 | 88 |
|
89 | 89 |
<!-- Submit button to save configuration --> |
90 |
<div class="save-configuration-button-container"> |
|
90 |
<div class="text-center save-configuration-button-container">
|
|
91 | 91 |
<button type="submit" class="btn btn-primary btn-lg custom-button" id="configuration-save-button" name="configuration-save-button" hidden>Save</button> |
92 |
<button type="submit" class="btn btn-outline-primary btn-lg custom-button" id="configuration-save-as-button" name="configuration-save-as-button" hidden>Save as</button> |
|
92 |
<div class="input-group w-25 mx-auto" style="margin: 15px"> |
|
93 |
<input type="text" class="form-control" placeholder="New configuration name" id="configuration-save-as-input" name="configuration-save-as-input"> |
|
94 |
<div class="input-group-append"> |
|
95 |
<button type="submit" class="btn btn-outline-primary" id="configuration-save-as-button" name="configuration-save-as-button" hidden>Save as</button> |
|
96 |
</div> |
|
97 |
</div> |
|
93 | 98 |
</div> |
94 | 99 |
<!-- ./Submit button to save configuration --> |
95 | 100 |
</form> |
src/main/webapp/resources/css/style.css | ||
---|---|---|
142 | 142 |
} |
143 | 143 |
|
144 | 144 |
.save-configuration-button-container { |
145 |
width: 30%; |
|
146 |
margin: 60px auto; |
|
147 |
display: flex; |
|
148 |
justify-content: space-between; |
|
145 |
margin: 40px auto; |
|
149 | 146 |
} |
150 | 147 |
|
151 | 148 |
/* ========================================================================== |
src/main/webapp/resources/js/config-edit.js | ||
---|---|---|
33 | 33 |
function showSaveAsButton(){ |
34 | 34 |
document.getElementById("configuration-save-button").hidden = true; |
35 | 35 |
document.getElementById("configuration-save-as-button").hidden = false; |
36 |
document.getElementById("configuration-save-as-input").hidden = false; |
|
36 | 37 |
} |
37 | 38 |
|
38 | 39 |
/** |
... | ... | |
41 | 42 |
function showBothSaveButtons(){ |
42 | 43 |
document.getElementById("configuration-save-button").hidden = false; |
43 | 44 |
document.getElementById("configuration-save-as-button").hidden = false; |
45 |
document.getElementById("configuration-save-as-input").hidden = false; |
|
44 | 46 |
} |
45 | 47 |
|
46 | 48 |
/** |
... | ... | |
49 | 51 |
function hideBothSaveButtons(){ |
50 | 52 |
document.getElementById("configuration-save-button").hidden = true; |
51 | 53 |
document.getElementById("configuration-save-as-button").hidden = true; |
54 |
document.getElementById("configuration-save-as-input").hidden = true; |
|
52 | 55 |
} |
Také k dispozici: Unified diff
#14 Saving configurations to new files