Projekt

Obecné

Profil

« Předchozí | Další » 

Revize cc904d05

Přidáno uživatelem stepanekp před asi 3 roky(ů)

#14 Saving configurations to new files

Zobrazit rozdíly:

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