-
Notifications
You must be signed in to change notification settings - Fork 8
/
ConfigService.java
99 lines (77 loc) · 3.23 KB
/
ConfigService.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package grimsi.accservermanager.backend.service;
import grimsi.accservermanager.backend.dto.ConfigDto;
import grimsi.accservermanager.backend.entity.Config;
import grimsi.accservermanager.backend.entity.Instance;
import grimsi.accservermanager.backend.exception.ApiException;
import grimsi.accservermanager.backend.exception.ConfigInUseException;
import grimsi.accservermanager.backend.exception.NotFoundException;
import grimsi.accservermanager.backend.repository.ConfigRepository;
import grimsi.accservermanager.backend.repository.ConfigurationJsonRepository;
import grimsi.accservermanager.backend.repository.EventJsonRepository;
import grimsi.accservermanager.backend.repository.SettingsJsonRepository;
import org.modelmapper.ModelMapper;
import org.modelmapper.TypeToken;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ConfigService {
@Autowired
JsonSchemaService jsonSchemaService;
@Autowired
ConfigRepository configRepository;
@Autowired
ConfigurationJsonRepository configurationJsonRepository;
@Autowired
EventJsonRepository eventJsonRepository;
@Autowired
SettingsJsonRepository settingsJsonRepository;
@Autowired
ModelMapper mapper;
@Autowired
InstanceService instanceService;
public List<ConfigDto> findAll() {
List<Config> configs = configRepository.findAll();
return mapper.map(configs, new TypeToken<List<ConfigDto>>() {
}.getType());
}
public ConfigDto findById(String id) {
Config config = configRepository.findById(id).orElseThrow(NotFoundException::new);
return convertToDto(config);
}
public void deleteById(String id) {
if(instanceService.isConfigInUse(id)){
throw new ConfigInUseException(id);
}
Config config = configRepository.findById(id).orElseThrow(NotFoundException::new);
eventJsonRepository.deleteById(config.eventJson.id);
settingsJsonRepository.deleteById(config.settingsJson.id);
configurationJsonRepository.deleteById(config.configurationJson.id);
configRepository.deleteById(id);
}
public ConfigDto updateById(String id, ConfigDto configDto) {
return create(configDto);
}
public ConfigDto create(ConfigDto configDto) {
Config config = convertToEntity(configDto);
config.configurationJson = configurationJsonRepository.save(config.configurationJson);
config.settingsJson = settingsJsonRepository.save(config.settingsJson);
config.eventJson = eventJsonRepository.save(config.eventJson);
config = configRepository.save(config);
return convertToDto(config);
}
public String getJsonSchema() {
String schema = jsonSchemaService.getJsonSchema(ConfigDto.class);
if (schema == null) {
throw new NullPointerException("Error parsing JSON schema");
}
return schema;
}
private ConfigDto convertToDto(Config config) {
return mapper.map(config, ConfigDto.class);
}
private Config convertToEntity(ConfigDto configDto) {
return mapper.map(configDto, Config.class);
}
}