Revize ae1ff627
Přidáno uživatelem Vojtěch Danišík před asi 4 roky(ů)
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
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).