Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 74a73b3b

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

re #7887 Deleting configurations and assemblies, Minor restructuralization.

Zobrazit rozdíly:

src/main/java/vldc/aswi/service/parameter/ParameterManagerImpl.java
18 18
import vldc.aswi.domain.parameter.ParameterValue;
19 19

  
20 20
import javax.transaction.Transactional;
21
import java.util.ArrayList;
21 22
import java.util.LinkedList;
22 23
import java.util.List;
23 24

  
......
157 158
        Assembly assembly = this.assemblyRepository.getById(assemblyId);
158 159
        List<Parameter> currentAssemblyParameters = assembly.getParameters();
159 160

  
160
        // Find new parameters.
161
        List<Parameter> currentAssemblyParametersNew = new LinkedList<>(currentAssemblyParameters);
162
        List<Parameter> newAssemblyParametersNew = new LinkedList<>(newAssemblyParameters);
163
        newAssemblyParametersNew.removeAll(currentAssemblyParametersNew);
164

  
165
        // Find deleted parameters.
166
        List<Parameter> currentAssemblyParametersDeleted = new LinkedList<>(currentAssemblyParameters);
167
        List<Parameter> newAssemblyParametersDeleted = new LinkedList<>(newAssemblyParameters);
168
        currentAssemblyParametersDeleted.removeAll(newAssemblyParametersDeleted);
169

  
170
        // Find duplicate elements - for updating.
171
        List<Parameter> currentAssemblyParametersUpdated = new LinkedList<>(currentAssemblyParameters);
172
        List<Parameter> newAssemblyParametersUpdated = new LinkedList<>(newAssemblyParameters);
173
        newAssemblyParametersUpdated.retainAll(currentAssemblyParametersUpdated);
174

  
175
        // If no parameter has been deleted or added, then updating is unnecessary.
176
        if (newAssemblyParametersNew.size() == 0 && currentAssemblyParametersDeleted.size() == 0 && newAssemblyParametersUpdated.size() == 0) return;
177

  
178
        // Remove deleted parameters.
179
        for (Parameter parameter : currentAssemblyParametersDeleted) {
180
            for (ParameterValue parameterValue : parameter.getParameterValues()) {
181
                // Remove parameters values.
182
                this.parameterValueRepository.delete(parameterValue);
183
            }
161
        if (newAssemblyParameters != null) {
162
            // Find new parameters.
163
            List<Parameter> currentAssemblyParametersNew = new LinkedList<>(currentAssemblyParameters);
164
            List<Parameter> newAssemblyParametersNew = new LinkedList<>(newAssemblyParameters);
165
            newAssemblyParametersNew.removeAll(currentAssemblyParametersNew);
166

  
167
            // Find deleted parameters.
168
            List<Parameter> currentAssemblyParametersDeleted = new LinkedList<>(currentAssemblyParameters);
169
            List<Parameter> newAssemblyParametersDeleted = new LinkedList<>(newAssemblyParameters);
170
            currentAssemblyParametersDeleted.removeAll(newAssemblyParametersDeleted);
171

  
172
            // Find duplicate elements - for updating.
173
            List<Parameter> currentAssemblyParametersUpdated = new LinkedList<>(currentAssemblyParameters);
174
            List<Parameter> newAssemblyParametersUpdated = new LinkedList<>(newAssemblyParameters);
175
            newAssemblyParametersUpdated.retainAll(currentAssemblyParametersUpdated);
176

  
177
            // If no parameter has been deleted or added, then updating is unnecessary.
178
            if (newAssemblyParametersNew.size() == 0 && currentAssemblyParametersDeleted.size() == 0 && newAssemblyParametersUpdated.size() == 0)
179
                return;
180

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

  
185
            // Remove parameter.
186
            this.parameterRepository.delete(parameter);
187
        }
188
                // Remove parameter.
189
                this.parameterRepository.delete(parameter);
190
            }
188 191

  
189
        // Update rest parameters.
190
        updateParameters(newAssemblyParametersUpdated);
192
            // Update rest parameters.
193
            updateParameters(newAssemblyParametersUpdated);
191 194

  
192
        // Add new parameters
193
        addParameters(assemblyId, newAssemblyParametersNew);
195
            // Add new parameters
196
            addParameters(assemblyId, newAssemblyParametersNew);
197
        }
194 198
    }
195 199

  
196 200
    /**
......
391 395
            this.parameterValueRepository.save(parameterValue);
392 396
        }
393 397
    }
394
}
398

  
399
    /**
400
     * Delete parameters by assembly id.
401
     * @param assemblyId - ID of assembly.
402
     */
403
    @Override
404
    public boolean deleteParameters(Long assemblyId) {
405
        try {
406
            List<Parameter> parameters = this.parameterRepository.getByAssemblyId(assemblyId);
407

  
408
            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);
425
                }
426
            }
427

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

Také k dispozici: Unified diff