Projekt

Obecné

Profil

Stáhnout (10.3 KB) Statistiky
| Větev: | Revize:
1
package vldc.aswi.service;
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.stereotype.Service;
9
import vldc.aswi.dao.*;
10
import vldc.aswi.dao.parameter.ParameterInConfigurationRepository;
11
import vldc.aswi.dao.parameter.ParameterTypeRepository;
12
import vldc.aswi.domain.Assembly;
13
import vldc.aswi.domain.Configuration;
14
import vldc.aswi.domain.Function;
15
import vldc.aswi.domain.parameter.ParameterInConfiguration;
16
import vldc.aswi.service.parameter.ParameterInConfigurationManager;
17
import vldc.aswi.service.parameter.ParameterTypeManager;
18

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

    
24
@Service
25
@Slf4j
26
public class ConfigurationManagerImpl implements ConfigurationManager {
27

    
28
    /** Autowired configuration repository. */
29
    @Autowired
30
    private ConfigurationRepository configurationRepository;
31

    
32
    /** Autowired assembly repository. */
33
    @Autowired
34
    private AssemblyRepository assemblyRepository;
35

    
36
    /** Autowired parameterInConfiguration repository. */
37
    @Autowired
38
    private ParameterInConfigurationRepository parameterInConfigurationRepository;
39

    
40
    /** Autowired operator repository. */
41
    @Autowired
42
    private OperatorRepository operatorRepository;
43

    
44
    /** Autowired location repository. */
45
    @Autowired
46
    private LocationRepository locationRepository;
47

    
48
    /** Autowired parameter type manager. */
49
    @Autowired
50
    private ParameterTypeManager parameterTypeRepository;
51

    
52
    /** Autowired function repository. */
53
    @Autowired
54
    private FunctionRepository functionRepository;
55

    
56
    /** Autowired user repository. */
57
    @Autowired
58
    private UserRepository userRepository;
59

    
60
    /** Autowired parameter in configuration manager. */
61
    @Autowired
62
    private ParameterInConfigurationManager parameterInConfigurationManager;
63

    
64
    /**
65
     * Initialization setup for configuration manager. Check if configuration repository contains
66
     * records and if not, initialize default values.
67
     */
68
    @EventListener(classes = {
69
            ContextRefreshedEvent.class
70
    })
71
    @Order(1)
72
    @Transactional
73
    public void setup() {
74
        if (this.configurationRepository.count() == 0) {
75
            log.info("No configuration present, creating items.");
76

    
77
        }
78
    }
79

    
80
    /**
81
     * Get all configurations from database.
82
     * @return List of configurations.
83
     */
84
    @Override
85
    public List<Configuration> getConfigurations() {
86
        List<Configuration> retVal = new LinkedList<>();
87
        this.configurationRepository.findAll().forEach(retVal::add);
88
        return retVal;
89
    }
90

    
91
    /**
92
     * Gets configuration according to its ID
93
     * @param id ID of configuration
94
     * @return configuration by ID
95
     */
96
    @Override
97
    public Configuration getConfigurationById(Long id) {
98
        return configurationRepository.getById(id);
99
    }
100

    
101
    /**
102
     * Saves configuration and its contents into database
103
     * @param newConfiguration configuration to save
104
     * @param id id of configuration, if not empty configuration is updated
105
     * @return saved configuration
106
     */
107
    @Override
108
    public Configuration saveConfiguration(Configuration newConfiguration, String id) {
109
        if(id.equals("")) {
110
            return addConfiguration(newConfiguration);
111
        }
112
        else {
113
            return editConfiguration(newConfiguration, Long.valueOf(id));
114
        }
115
    }
116

    
117
    /**
118
     * Delete single configuration by id.
119
     * @param id - ID of configuration.
120
     * @return True if deleting was successful, false if not.
121
     */
122
    @Override
123
    public boolean deleteConfiguration(Long id) {
124
        try {
125
            this.parameterInConfigurationManager.deleteParametersInConfiguration(id);
126
            this.configurationRepository.deleteById(id);
127
            return true;
128
        } catch (Exception e) {
129
            return false;
130
        }
131
    }
132

    
133
    /**
134
     * Delete all configurations by assembly id.
135
     * @param assemblyId - ID of assembly.
136
     * @return True if all configurations were successfully deleted, false if not.
137
     */
138
    @Override
139
    public boolean deleteConfigurations(Long assemblyId) {
140
        try {
141
            // Delete parameters in current configuration.
142
            List<Configuration> configurations = this.configurationRepository.getByAssemblyId(assemblyId);
143
            for (Configuration configuration : configurations) {
144
                this.parameterInConfigurationManager.deleteParametersInConfiguration(configuration.getId());
145
            }
146

    
147
            // Delete configuration.
148
            this.configurationRepository.deleteAll(configurations);
149
            return true;
150
        } catch (Exception e) {
151
            return false;
152
        }
153
    }
154

    
155
    /**
156
     * Saves new configuration into database
157
     * @param newConfiguration container with data for a new configuration
158
     * @return saved configuration
159
     */
160
    private Configuration addConfiguration(Configuration newConfiguration) {
161
        Configuration configuration = new Configuration();
162
        Assembly assembly = assemblyRepository.getById(newConfiguration.getAssembly().getId());
163
        configuration.setAssembly(assembly);
164
        configuration.setName(newConfiguration.getName());
165
        configuration.setTableName(newConfiguration.getTableName());
166
        configuration.setUser(userRepository.getById((long) 1));
167
        Configuration savedConfiguration = configurationRepository.save(configuration);
168

    
169
        savedConfiguration.setParametersInConfiguration(new ArrayList<>());
170
        for(int i = 0; i < newConfiguration.getParametersInConfiguration().size(); i++) {
171
            ParameterInConfiguration parameterInConfiguration = new ParameterInConfiguration();
172
            parameterInConfiguration.setParameter(assembly.getParameters().get(i));
173
            parameterInConfiguration.setConfiguration(savedConfiguration);
174
            parameterInConfiguration.setOperatorValue(newConfiguration.getParametersInConfiguration().get(i).getOperatorValue());
175
            parameterInConfiguration.setColumnName(assembly.getParameters().get(i).getName());
176
            if(newConfiguration.getParametersInConfiguration().get(i).getColumnName() != null &&
177
                    !newConfiguration.getParametersInConfiguration().get(i).getColumnName().equals("")) {
178
                parameterInConfiguration.setColumnName(newConfiguration.getParametersInConfiguration().get(i).getColumnName());
179
            }
180
            if(newConfiguration.getParametersInConfiguration().get(i).getLocation() != null) {
181
                parameterInConfiguration.setLocation(locationRepository.getById(
182
                        newConfiguration.getParametersInConfiguration().get(i).getLocation().getId()));
183
            }
184
            if(newConfiguration.getParametersInConfiguration().get(i).getOperator() != null) {
185
                parameterInConfiguration.setOperator(operatorRepository.getByName(
186
                        newConfiguration.getParametersInConfiguration().get(i).getOperator().getName()));
187
            }
188
            if(newConfiguration.getParametersInConfiguration().get(i).getFunctions() != null) {
189
                parameterInConfiguration.setFunctions(new ArrayList<>());
190
                for (Function function : newConfiguration.getParametersInConfiguration().get(i).getFunctions()) {
191
                    parameterInConfiguration.getFunctions().add(functionRepository.getByName(function.getName()));
192
                }
193
            }
194
            ParameterInConfiguration savedParameterInConfiguration = parameterInConfigurationRepository.save(
195
                    parameterInConfiguration);
196
            savedConfiguration.getParametersInConfiguration().add(savedParameterInConfiguration);
197
        }
198
        savedConfiguration = configurationRepository.save(savedConfiguration);
199

    
200
        return savedConfiguration;
201
    }
202

    
203
    /**
204
     * Saves edited configuration with given ID
205
     * @param newConfiguration container with data for edited configuration
206
     * @param id ID of edited configuration
207
     * @return saved configuration
208
     */
209
    private Configuration editConfiguration(Configuration newConfiguration, Long id) {
210
        Configuration configuration = configurationRepository.getById(id);
211
        configuration.setName(newConfiguration.getName());
212
        configuration.setTableName(newConfiguration.getTableName());
213

    
214
        for(int i = 0; i < configuration.getParametersInConfiguration().size(); i++) {
215
            ParameterInConfiguration parameterInConfiguration = configuration.getParametersInConfiguration().get(i);
216
            parameterInConfiguration.setOperatorValue(newConfiguration.getParametersInConfiguration().get(i).getOperatorValue());
217
            if(newConfiguration.getParametersInConfiguration().get(i).getColumnName() != null &&
218
                    !newConfiguration.getParametersInConfiguration().get(i).getColumnName().equals("")) {
219
                parameterInConfiguration.setColumnName(newConfiguration.getParametersInConfiguration().get(i).getColumnName());
220
            }
221
            if(newConfiguration.getParametersInConfiguration().get(i).getLocation() != null) {
222
                parameterInConfiguration.setLocation(locationRepository.getById(
223
                        newConfiguration.getParametersInConfiguration().get(i).getLocation().getId()));
224
            }
225
            else {
226
                parameterInConfiguration.setLocation(null);
227
            }
228
            if(newConfiguration.getParametersInConfiguration().get(i).getOperator() != null) {
229
                parameterInConfiguration.setOperator(operatorRepository.getByName(
230
                        newConfiguration.getParametersInConfiguration().get(i).getOperator().getName()));
231
            }
232
            if(newConfiguration.getParametersInConfiguration().get(i).getFunctions() != null) {
233
                parameterInConfiguration.setFunctions(new ArrayList<>());
234
                for (Function function : newConfiguration.getParametersInConfiguration().get(i).getFunctions()) {
235
                    parameterInConfiguration.getFunctions().add(functionRepository.getByName(function.getName()));
236
                }
237
            }
238
            parameterInConfigurationRepository.save(parameterInConfiguration);
239
        }
240

    
241
        return configurationRepository.save(configuration);
242
    }
243
}
(4-4/16)