Projekt

Obecné

Profil

« Předchozí | Další » 

Revize ae1ff627

Přidáno uživatelem Vojtěch Danišík před asi 4 roky(ů)

re #7988 Parameters are now deleted from assembly + deleted parametersInConfiguration, which was created by deleted parameter.
re #7989 Added / deleted parameters are now instantly showed in page (refreshing not needed).

Zobrazit rozdíly:

src/main/java/vldc/aswi/service/parameter/ParameterManagerImpl.java
10 10
import vldc.aswi.dao.FunctionRepository;
11 11
import vldc.aswi.dao.LocationRepository;
12 12
import vldc.aswi.dao.OperatorRepository;
13
import vldc.aswi.dao.parameter.ParameterInConfigurationRepository;
13 14
import vldc.aswi.dao.parameter.ParameterRepository;
14 15
import vldc.aswi.dao.parameter.ParameterTypeRepository;
15 16
import vldc.aswi.dao.parameter.ParameterValueRepository;
16 17
import vldc.aswi.domain.*;
17 18
import vldc.aswi.domain.parameter.Parameter;
19
import vldc.aswi.domain.parameter.ParameterInConfiguration;
18 20
import vldc.aswi.domain.parameter.ParameterValue;
19 21

  
20 22
import javax.transaction.Transactional;
......
57 59
    @Autowired
58 60
    private ParameterValueRepository parameterValueRepository;
59 61

  
62
    /** Autowired parameter in configuration manager. */
63
    @Autowired
64
    private ParameterInConfigurationManager parameterInConfigurationManager;
65

  
60 66
    /**
61 67
     * Initialization setup for parameter manager. Check if parameter repository contains
62 68
     * records and if not, initialize default values.
......
92 98
    @Override
93 99
    public void addParameters(Long assemblyId, List<Parameter> parameterValuesList) {
94 100
        Assembly assembly = this.assemblyRepository.getById(assemblyId);
95
        // TODO: test it.
96 101
        if (parameterValuesList == null) return;
97 102

  
98 103
        for (Parameter parameterValues : parameterValuesList) {
99 104
            // Create new parameter and assign him all values.
100 105
            Parameter parameter = new Parameter();
101
            parameter.setName(parameterValues.getNameOfSelect());
106
            parameter.setName(parameterValues.getName());
102 107
            parameter.setNameOfSelect(parameterValues.getNameOfSelect());
103 108
            parameter.setAssembly(assembly);
109
            parameter.setParameterOrder(parameterValues.getParameterOrder());
104 110
            parameter.setParameterType(this.parameterTypeRepository.findByName(parameterValues.getParameterType().getName()));
105 111
            parameter.setDefaultValue(parameterValues.getDefaultValue());
106 112

  
......
130 136
                }
131 137
            }
132 138

  
133
            // Try to put all operators into list.
134
            if (parameterValues.getParameterValues() != null && parameterValues.getParameterValues().size() > 0) {
135
                for (ParameterValue parameterValue : parameterValues.getParameterValues()) {
136
                    valueList.add(this.parameterValueRepository.getById(parameterValue.getId()));
139
            if (parameter.getParameterType().getName().equals("Výčet")) {
140
                // Try to put all values into list.
141
                if (parameterValues.getParameterValues() != null && parameterValues.getParameterValues().size() > 0) {
142
                    for (ParameterValue parameterValue : parameterValues.getParameterValues()) {
143
                        valueList.add(this.parameterValueRepository.getById(parameterValue.getId()));
144
                    }
137 145
                }
146

  
147
                parameter.setParameterValues(valueList);
138 148
            }
139 149

  
140 150
            // Set lists of values into parameter.
141 151
            parameter.setLocations(locationList);
142 152
            parameter.setFunctions(functionList);
143 153
            parameter.setOperators(operatorList);
144
            parameter.setParameterValues(valueList);
145 154

  
146 155
            // Insert parameter into database.
147 156
            this.parameterRepository.save(parameter);
......
159 168
        List<Parameter> currentAssemblyParameters = assembly.getParameters();
160 169

  
161 170
        if (newAssemblyParameters != null) {
171
            // Remove removed parameters.
172
            newAssemblyParameters = removeRemovedParametersFromList(newAssemblyParameters);
173

  
162 174
            // Find new parameters.
163 175
            List<Parameter> currentAssemblyParametersNew = new LinkedList<>(currentAssemblyParameters);
164 176
            List<Parameter> newAssemblyParametersNew = new LinkedList<>(newAssemblyParameters);
......
179 191
                return;
180 192

  
181 193
            // Remove deleted parameters.
182
            for (Parameter parameter : currentAssemblyParametersDeleted) {
183
                for (ParameterValue parameterValue : parameter.getParameterValues()) {
184
                    // Remove parameters values.
185
                    this.parameterValueRepository.delete(parameterValue);
186
                }
187

  
188
                // Remove parameter.
189
                this.parameterRepository.delete(parameter);
194
            for (Parameter parameterWithValues : currentAssemblyParametersDeleted) {
195
                deleteParameter(parameterWithValues.getId());
190 196
            }
191 197

  
192 198
            // Update rest parameters.
......
194 200

  
195 201
            // Add new parameters
196 202
            addParameters(assemblyId, newAssemblyParametersNew);
203

  
204
            assembly.setParameters(this.parameterRepository.getByAssemblyId(assemblyId));
205
        }
206
    }
207

  
208
    /**
209
     * Remove removed parameters by web application.
210
     * Web page returns list of parameters, even those, which was removed, but those parameters
211
     * are empty object (null values in every attribute), so we need to remove them from list.
212
     * @param parameterValuesList - List of parameters from web.
213
     * @return Filtered list of parameters.
214
     */
215
    private List<Parameter> removeRemovedParametersFromList(List<Parameter> parameterValuesList) {
216
        List<Parameter> filteredParametersWithValues = new ArrayList<Parameter>();
217

  
218
        for (Parameter parameterWithValues : parameterValuesList) {
219
            // Because name of parameter is required, then we know that parameter
220
            // with name == null is just empty object.
221
            if (parameterWithValues.getName() != null) {
222
                filteredParametersWithValues.add(parameterWithValues);
223
            }
197 224
        }
225

  
226
        return filteredParametersWithValues;
198 227
    }
199 228

  
200 229
    /**
......
207 236
            Parameter parameter = this.parameterRepository.getById(parameterValues.getId());
208 237
            // Update current parameter values.
209 238
            parameter.setName(parameterValues.getName());
239
            parameter.setParameterOrder(parameterValues.getParameterOrder());
210 240
            parameter.setNameOfSelect(parameterValues.getNameOfSelect());
211 241
            parameter.setAssembly(this.assemblyRepository.getById(parameterValues.getAssembly().getId()));
212 242
            parameter.setParameterType(this.parameterTypeRepository.getById(parameterValues.getParameterType().getId()));
......
216 246
            this.parameterRepository.save(parameter);
217 247

  
218 248
            // Update parameter values, locations, functions and operators.
219
            updateParameterValues(parameterValues.getId(), parameterValues.getParameterValues());
249
            if (parameter.getParameterType().equals("Výčet")) {
250
                updateParameterValues(parameterValues.getId(), parameterValues.getParameterValues());
251
            }
252

  
220 253
            updateParameterLocations(parameterValues.getId(), parameterValues.getLocations());
221 254
            updateParameterFunctions(parameterValues.getId(), parameterValues.getFunctions());
222 255
            updateParameterOperators(parameterValues.getId(), parameterValues.getOperators());
......
396 429
        }
397 430
    }
398 431

  
432
    /**
433
     * Delete parameter by id.
434
     * @param parameterId - ID of parameter.
435
     * @return True if parameter was successfully deleted, false if not.
436
     */
437
    private boolean deleteParameter(Long parameterId) {
438
        try {
439
            Parameter parameter = this.parameterRepository.getById(parameterId);
440

  
441
            this.parameterInConfigurationManager.deleteParametersInConfiguration(parameterId, false);
442

  
443
            // Delete removed parameter values.
444
            for (ParameterValue parameterValue : parameter.getParameterValues()) {
445
                this.parameterValueRepository.delete(parameterValue);
446
            }
447

  
448
            // Delete all functions from parameter in table 'Parametr_ma_Funkce'.
449
            List<Function> functionList = new ArrayList<>(parameter.getFunctions());
450
            for (Function function : functionList) {
451
                parameter.removeFunction(function);
452
            }
453

  
454
            // Delete all operators from parameter in table 'Parametr_ma_Operator'.
455
            List<Operator> operatorList = new ArrayList<>(parameter.getOperators());
456
            for (Operator operator : operatorList) {
457
                parameter.removeOperator(operator);
458
            }
459

  
460
            // Delete all locations from parameter in table 'Parametr_ma_Umisteni'.
461
            List<Location> locationList = new ArrayList<>(parameter.getLocations());
462
            for (Location location : locationList) {
463
                parameter.removeLocation(location);
464
            }
465

  
466
            this.parameterRepository.delete(parameter);
467

  
468
            return true;
469
        }
470
        catch (Exception e) {
471
            return false;
472
        }
473
    }
474

  
399 475
    /**
400 476
     * Delete parameters by assembly id.
401 477
     * @param assemblyId - ID of assembly.
478
     * @return True if all parameters were successfully deleted, false if not.
402 479
     */
403 480
    @Override
404 481
    public boolean deleteParameters(Long assemblyId) {
......
406 483
            List<Parameter> parameters = this.parameterRepository.getByAssemblyId(assemblyId);
407 484

  
408 485
            for (Parameter parameter : parameters) {
409
                // Delete all functions from parameter in table 'Parametr_ma_Funkce'.
410
                List<Function> functionList = new ArrayList<>(parameter.getFunctions());
411
                for (Function function : functionList) {
412
                    parameter.removeFunction(function);
413
                }
414

  
415
                // Delete all operators from parameter in table 'Parametr_ma_Operator'.
416
                List<Operator> operatorList = new ArrayList<>(parameter.getOperators());
417
                for (Operator operator : operatorList) {
418
                    parameter.removeOperator(operator);
419
                }
420

  
421
                // Delete all locations from parameter in table 'Parametr_ma_Umisteni'.
422
                List<Location> locationList = new ArrayList<>(parameter.getLocations());
423
                for (Location location : locationList) {
424
                    parameter.removeLocation(location);
486
                boolean success = deleteParameter(parameter.getId());
487
                if (success == false) {
488
                    return false;
425 489
                }
426 490
            }
427

  
428
            // Delete all parameters.
429
            this.parameterRepository.deleteAll(parameters);
430 491
            return true;
431 492
        } catch (Exception e) {
432 493
            return false;

Také k dispozici: Unified diff