Projekt

Obecné

Profil

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

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

    
23
import javax.validation.Valid;
24
import java.util.ArrayList;
25
import java.util.Comparator;
26
import java.util.List;
27

    
28
/**
29
 * Manager for configuration.
30
 */
31
@Controller
32
public class ConfigurationController extends BasicController{
33

    
34
    /** Autowired configuration manager */
35
    @Autowired
36
    private ConfigurationManager configurationManager;
37

    
38
    /**
39
     * Opens an configuration page after configuration name was clicked
40
     * @param id ID of configuration
41
     * @return modelAndView of page to be shown
42
     */
43
    @GetMapping("/configuration")
44
    public ModelAndView configurationGet(@RequestParam("configurationID") String id) {
45
        ModelAndView modelAndView = new ModelAndView("assembly");
46

    
47
        ModelMap modelMap = modelAndView.getModelMap();
48

    
49
        Configuration configuration = configurationManager.getConfigurationById(Long.parseLong(id));
50

    
51
        // TODO: 04.05.2020 error page when id doesn't exist
52

    
53
        String userName = AuthControl.getUserName();
54

    
55
        if (userName == null) {
56
            // TODO: 04.05.2020 error message, user not authenticated
57
        }
58
        else if (!userName.equals(configuration.getUser().getUsername())) {
59
            // TODO: 04.05.2020 error page wrong user
60
            return new ModelAndView("redirect:/");
61
        }
62

    
63
        List<ParameterInConfiguration> parametersInConfiguration = new ArrayList<>(configuration.getParametersInConfiguration());
64
        configuration.setParametersInConfiguration(parametersInConfiguration);
65

    
66
        initializeFields(configuration);
67
        Comparator<ParameterInConfiguration> comparator = Comparator.comparingInt(o -> o.getParameter().getParameterOrder());
68

    
69
        modelMap.addAttribute("configuration", configuration);
70
        modelMap.addAttribute("comparator", comparator);
71
        modelMap.addAttribute("formAction", "/configuration?configurationID=" + configuration.getId());
72

    
73
        return modelAndView;
74
    }
75

    
76
    /**
77
     * Saves or edits configuration and redirects to the page with configuration
78
     * @param newConfiguration contained with configuration data
79
     * @param id ID of configuration, if empty new configuration is created
80
     * @param bindingResult binding result
81
     * @return modelAndView with redirection
82
     */
83
    @PostMapping("/configuration")
84
    public ModelAndView configurationPost( Configuration newConfiguration,
85
                                           BindingResult bindingResult,
86
                                           @RequestParam("configurationID") String id,
87
                                           @RequestParam(required=false, value="generateTable") String generateTable,
88
                                           @RequestParam(required=false, value="exportXls") String exportXls,
89
                                           @RequestParam(required=false, value="exportPdf") String exportPdf,
90
                                           @RequestParam(required=false, value="saveConfiguration") String saveConfiguration)
91
    {
92
        if (generateTable != null)
93
        {
94
            System.out.println("Generuj tabulku");
95
        }
96
        else if (exportXls != null)
97
        {
98
            System.out.println("Generuj XLS");
99
        }
100
        else if (exportPdf != null)
101
        {
102
            System.out.println("Generuj PDF");
103
        }
104
        else if (saveConfiguration != null)
105
        {
106
            System.out.println("ulož konfiguraci");
107
        }
108

    
109

    
110
        ModelAndView modelAndView = new ModelAndView();
111

    
112
        if (bindingResult.hasErrors()) {
113
            // TODO: 04.05.2020 Error message
114
            modelAndView.setViewName("redirect:/");
115

    
116
            return modelAndView;
117
        }
118

    
119
        Configuration configuration = configurationManager.saveConfiguration(newConfiguration, id);
120

    
121
        initializeFields(configuration);
122

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

    
125
        return modelAndView;
126
    }
127

    
128
    /**
129
     * Get method for configuration delete.
130
     * @param id - ID of configuration.
131
     * @return ModelAndView for index.
132
     */
133
    @GetMapping("/configuration_delete")
134
    public ModelAndView configurationDeleteGet(@RequestParam("configurationID") String id) {
135
        ModelAndView modelAndView = new ModelAndView("redirect:/");
136

    
137
        Long configurationId = Utils.tryParseLong(id);
138

    
139
        if (configurationId == null) {
140
            // TODO: print error in index.
141
        }
142

    
143
        boolean success = this.configurationManager.deleteConfiguration(configurationId);
144
        // TODO: check success.
145

    
146
        return modelAndView;
147
    }
148

    
149
    /**
150
     * Initializes fields of a given configuration
151
     * @param configuration configuration which fields should be initialized
152
     */
153
    private void initializeFields(Configuration configuration) {
154
        for(ParameterInConfiguration parameterInConfiguration : configuration.getParametersInConfiguration()) {
155
            if(parameterInConfiguration.getLocation() == null) {
156
                parameterInConfiguration.setLocation(new Location());
157
            }
158
            if(parameterInConfiguration.getOperator() == null) {
159
                parameterInConfiguration.setOperator(new Operator());
160
            }
161
            if(parameterInConfiguration.getFunctions() == null) {
162
                parameterInConfiguration.setFunctions(new ArrayList<>());
163
            }
164
        }
165
    }
166
}
(3-3/5)