Projekt

Obecné

Profil

Stáhnout (5.77 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
     */
74
    @Override
75
    public void addParameterIntoConfigurations(Long assemblyId, ArrayList<Parameter> parameters) {
76

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

    
80
        for (Parameter parameter : parameters) {
81

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

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

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

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

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

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

    
127
    private boolean deleteParameterInConfiguration(ParameterInConfiguration parameterInConfiguration) {
128
        try {
129

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

    
136
            return true;
137
        }
138
        catch (Exception e) {
139

    
140
            return false;
141
        }
142
    }
143

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

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

    
154
            for (ParameterInConfiguration parameterInConfiguration : this.parameterInConfigurationRepository.getAllByParameterId(parameter.getId())) {
155

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