Projekt

Obecné

Profil

Stáhnout (5.88 KB) Statistiky
| Větev: | Revize:
1
package vldc.aswi.service.parameter;
2

    
3
import lombok.extern.slf4j.Slf4j;
4
import org.springframework.beans.factory.annotation.Autowired;
5
import org.springframework.context.event.ContextRefreshedEvent;
6
import org.springframework.context.event.EventListener;
7
import org.springframework.core.annotation.Order;
8
import org.springframework.dao.InvalidDataAccessResourceUsageException;
9
import org.springframework.stereotype.Service;
10
import vldc.aswi.dao.AssemblyRepository;
11
import vldc.aswi.dao.parameter.ParameterInConfigurationRepository;
12
import vldc.aswi.domain.Assembly;
13
import vldc.aswi.domain.Configuration;
14
import vldc.aswi.domain.Function;
15
import vldc.aswi.domain.parameter.Parameter;
16
import vldc.aswi.domain.parameter.ParameterInConfiguration;
17

    
18
import javax.transaction.Transactional;
19
import java.util.ArrayList;
20
import java.util.LinkedList;
21
import java.util.List;
22

    
23
/**
24
 * Manager for ParameterInConfiguration.
25
 */
26
@Service
27
@Slf4j
28
public class ParameterInConfigurationManagerImpl implements ParameterInConfigurationManager {
29

    
30
    /** Autowired parameter in configuration repository. */
31
    @Autowired
32
    private ParameterInConfigurationRepository parameterInConfigurationRepository;
33

    
34
    /** Autowired assembly repository. */
35
    @Autowired
36
    private AssemblyRepository assemblyRepository;
37

    
38
    /**
39
     * Initialization setup for parameter in configuration manager.
40
     * Check if table "Parametr_konfigurace" exists.
41
     */
42
    @EventListener(classes = {
43
            ContextRefreshedEvent.class
44
    })
45
    @Order(4)
46
    @Transactional
47
    public void setup() {
48
        try {
49
            if (this.parameterInConfigurationRepository.count() == 0) {
50
                // Just checking if table exists.
51
            }
52
        }
53
        catch (InvalidDataAccessResourceUsageException e) {
54
            log.error("Table \"Parametr_konfigurace\" did not exists in database!");
55
            System.exit(1);
56
        }
57
    }
58

    
59
    /**
60
     * Get all parameter in configuration from database.
61
     * @return List of parameter in configuration.
62
     */
63
    @Override
64
    public List<ParameterInConfiguration> getAllParameterInConfiguration() {
65
        List<ParameterInConfiguration> retVal = new LinkedList<>();
66
        this.parameterInConfigurationRepository.findAll().forEach(retVal::add);
67
        return retVal;
68
    }
69

    
70
    /**
71
     * Add newly created parameters to all configurations, which are created from current assembly
72
     * @param assemblyId - ID of current assembly.
73
     * @param parameters Parameters to be added.
74
     */
75
    @Override
76
    public void addParameterIntoConfigurations(Long assemblyId, ArrayList<Parameter> parameters) {
77

    
78
        Assembly assembly = this.assemblyRepository.getById(assemblyId);
79
        List<Configuration> configurations = assembly.getConfigurations();
80

    
81
        for (Parameter parameter : parameters) {
82

    
83
            for (Configuration configuration : configurations) {
84
                ParameterInConfiguration parameterInConfiguration = new ParameterInConfiguration();
85

    
86
                parameterInConfiguration.setParameter(parameter);
87
                parameterInConfiguration.setConfiguration(configuration);
88
                parameterInConfiguration.setColumnName(parameter.getName());
89
                // Set temporary parameter order.
90
                parameterInConfiguration.setParameterOrder(0);
91

    
92
                this.parameterInConfigurationRepository.save(parameterInConfiguration);
93
            }
94
        }
95
    }
96

    
97
    /**
98
     * Delete all parameters in configuration by configuration id.
99
     * @param id - ID of parameter / configuration.
100
     * @param configurationUsed Stores if configuration is used.
101
     * @return List of deleted parameters in configuration.
102
     */
103
    @Override
104
    public boolean deleteParametersInConfiguration(Long id, boolean configurationUsed) {
105
        try {
106
            List<ParameterInConfiguration> parameterInConfigurations = null;
107

    
108
            if (configurationUsed) {
109
                parameterInConfigurations = this.parameterInConfigurationRepository.getAllByConfigurationId(id);
110
            }
111
            else {
112
                parameterInConfigurations = this.parameterInConfigurationRepository.getAllByParameterId(id);
113
            }
114
            for (ParameterInConfiguration parameterInConfiguration : parameterInConfigurations) {
115
                boolean success = deleteParameterInConfiguration(parameterInConfiguration);
116
                if (!success) {
117
                    return false;
118
                }
119
            }
120

    
121
            // Delete all parameters in configuration.
122
            this.parameterInConfigurationRepository.deleteAll(parameterInConfigurations);
123
            return true;
124
        } catch (Exception e) {
125
            return  false;
126
        }
127
    }
128

    
129
    private boolean deleteParameterInConfiguration(ParameterInConfiguration parameterInConfiguration) {
130
        try {
131

    
132
            // Delete all functions used in current parameter in table 'Parametr_Konfigurace_ma_Funkce'.
133
            List<Function> functionList = new ArrayList<>(parameterInConfiguration.getFunctions());
134
            for (Function function : functionList) {
135
                parameterInConfiguration.removeFunction(function);
136
            }
137

    
138
            return true;
139
        }
140
        catch (Exception e) {
141

    
142
            return false;
143
        }
144
    }
145

    
146
    /**
147
     * Update all parameter in configurations orders.
148
     * @param parameters - list of parameters for current assembly.
149
     */
150
    @Override
151
    public void updateParameterInConfigurationsOrder(List<Parameter> parameters) {
152

    
153
        // Update all parameters in configuration order.
154
        for (Parameter parameter : parameters) {
155

    
156
            for (ParameterInConfiguration parameterInConfiguration : this.parameterInConfigurationRepository.getAllByParameterId(parameter.getId())) {
157

    
158
                parameterInConfiguration.setParameterOrder(parameter.getParameterOrder());
159
                this.parameterInConfigurationRepository.save(parameterInConfiguration);
160
            }
161
        }
162
    }
163
}
(2-2/8)