Projekt

Obecné

Profil

Stáhnout (4.55 KB) Statistiky
| Větev: | Revize:
1
package vldc.aswi.web.controller;
2

    
3
import org.springframework.beans.factory.annotation.Autowired;
4
import org.springframework.stereotype.Controller;
5
import org.springframework.ui.ModelMap;
6
import org.springframework.validation.BindingResult;
7
import org.springframework.web.bind.annotation.GetMapping;
8
import org.springframework.web.bind.annotation.ModelAttribute;
9
import org.springframework.web.bind.annotation.PostMapping;
10
import org.springframework.web.bind.annotation.RequestParam;
11
import org.springframework.web.servlet.ModelAndView;
12
import vldc.aswi.domain.Configuration;
13
import vldc.aswi.domain.Location;
14
import vldc.aswi.domain.Operator;
15
import vldc.aswi.domain.parameter.ParameterInConfiguration;
16
import vldc.aswi.service.ConfigurationManager;
17
import vldc.aswi.utils.Utils;
18

    
19
import javax.validation.Valid;
20
import java.util.ArrayList;
21
import java.util.Comparator;
22
import java.util.List;
23

    
24
/**
25
 * Manager for configuration.
26
 */
27
@Controller
28
public class ConfigurationController extends BasicController{
29

    
30
    /** Autowired configuration manager */
31
    @Autowired
32
    private ConfigurationManager configurationManager;
33

    
34
    /**
35
     * Opens an configuration page after configuration name was clicked
36
     * @param id ID of configuration
37
     * @return modelAndView of page to be shown
38
     */
39
    @GetMapping("/configuration")
40
    public ModelAndView configurationGet(@Valid @ModelAttribute("configurationID") String id) {
41
        ModelAndView modelAndView = new ModelAndView("assembly");
42

    
43
        ModelMap modelMap = modelAndView.getModelMap();
44

    
45
        Configuration configuration = configurationManager.getConfigurationById(Long.parseLong(id));
46

    
47
        List<ParameterInConfiguration> parametersInConfiguration = new ArrayList<>(configuration.getParametersInConfiguration());
48
        configuration.setParametersInConfiguration(parametersInConfiguration);
49

    
50
        initializeFields(configuration);
51
        Comparator<ParameterInConfiguration> comparator = Comparator.comparingInt(o -> o.getParameter().getParameterOrder());
52

    
53
        modelMap.addAttribute("configuration", configuration);
54
        modelMap.addAttribute("comparator", comparator);
55

    
56
        return modelAndView;
57
    }
58

    
59
    /**
60
     * Saves or edits configuration and redirects to the page with configuration
61
     * @param newConfiguration contained with configuration data
62
     * @param id ID of configuration, if empty new configuration is created
63
     * @param bindingResult binding result
64
     * @return modelAndView with redirection
65
     */
66
    @PostMapping("/configuration")
67
    public ModelAndView configurationPost(@Valid Configuration newConfiguration, BindingResult bindingResult,
68
                                          @RequestParam("configurationID") String id) {
69
        ModelAndView modelAndView = new ModelAndView();
70

    
71
        if (bindingResult.hasErrors()) {
72
            modelAndView.setViewName("redirect:/");
73

    
74
            return modelAndView;
75
        }
76

    
77
        Configuration configuration = configurationManager.saveConfiguration(newConfiguration, id);
78

    
79
        initializeFields(configuration);
80

    
81
        modelAndView.setViewName("redirect:/configuration?configurationID=" + configuration.getId());
82

    
83
        return modelAndView;
84
    }
85

    
86
    /**
87
     * Get method for configuration delete.
88
     * @param id - ID of configuration.
89
     * @return ModelAndView for index.
90
     */
91
    @GetMapping("/configuration_delete")
92
    public ModelAndView configurationDeleteGet(@RequestParam("configurationID") String id) {
93
        ModelAndView modelAndView = new ModelAndView("redirect:/");
94

    
95
        Long configurationId = Utils.tryParseLong(id);
96

    
97
        if (configurationId == null) {
98
            // TODO: print error in index.
99
        }
100

    
101
        boolean success = this.configurationManager.deleteConfiguration(configurationId);
102
        // TODO: check success.
103

    
104
        return modelAndView;
105
    }
106

    
107
    /**
108
     * Initializes fields of a given configuration
109
     * @param configuration configuration which fields should be initialized
110
     */
111
    private void initializeFields(Configuration configuration) {
112
        for(ParameterInConfiguration parameterInConfiguration : configuration.getParametersInConfiguration()) {
113
            if(parameterInConfiguration.getLocation() == null) {
114
                parameterInConfiguration.setLocation(new Location());
115
            }
116
            if(parameterInConfiguration.getOperator() == null) {
117
                parameterInConfiguration.setOperator(new Operator());
118
            }
119
            if(parameterInConfiguration.getFunctions() == null) {
120
                parameterInConfiguration.setFunctions(new ArrayList<>());
121
            }
122
        }
123
    }
124
}
(3-3/5)