Skip to content

Commit 5fb970d

Browse files
committed
feat: add DTOs for module activation and configuration, enhance module query service
1 parent e76b8cc commit 5fb970d

18 files changed

+311
-245
lines changed

backend/src/main/java/com/park/utmstack/service/application_modules/UtmModuleQueryService.java

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import com.park.utmstack.domain.application_modules.UtmModule;
44
import com.park.utmstack.domain.application_modules.UtmModule_;
55
import com.park.utmstack.repository.application_modules.UtmModuleRepository;
6+
import com.park.utmstack.service.dto.application_modules.ModuleDTO;
67
import com.park.utmstack.service.dto.application_modules.UtmModuleCriteria;
8+
import com.park.utmstack.service.dto.application_modules.UtmModuleMapper;
79
import org.slf4j.Logger;
810
import org.slf4j.LoggerFactory;
911
import org.springframework.data.domain.Page;
@@ -29,8 +31,11 @@ public class UtmModuleQueryService extends QueryService<UtmModule> {
2931

3032
private final UtmModuleRepository utmModuleRepository;
3133

32-
public UtmModuleQueryService(UtmModuleRepository utmModuleRepository) {
34+
private final UtmModuleMapper utmModuleMapper;
35+
36+
public UtmModuleQueryService(UtmModuleRepository utmModuleRepository, UtmModuleMapper utmModuleMapper) {
3337
this.utmModuleRepository = utmModuleRepository;
38+
this.utmModuleMapper = utmModuleMapper;
3439
}
3540

3641
/**
@@ -46,6 +51,15 @@ public List<UtmModule> findByCriteria(UtmModuleCriteria criteria) {
4651
return utmModuleRepository.findAll(specification);
4752
}
4853

54+
@Transactional(readOnly = true)
55+
public ModuleDTO findById(Long id) throws Exception {
56+
UtmModule module = utmModuleRepository.findById(id)
57+
.orElseThrow(() -> new Exception(String.format("Module with ID: %1$s not found", id)));
58+
59+
return utmModuleMapper.toDto(module, true);
60+
}
61+
62+
4963
/**
5064
* Return a {@link Page} of {@link UtmModule} which matches the criteria from the database
5165
*
@@ -54,10 +68,12 @@ public List<UtmModule> findByCriteria(UtmModuleCriteria criteria) {
5468
* @return the matching entities.
5569
*/
5670
@Transactional(readOnly = true)
57-
public Page<UtmModule> findByCriteria(UtmModuleCriteria criteria, Pageable page) {
71+
public Page<ModuleDTO> findByCriteria(UtmModuleCriteria criteria, Pageable page) {
5872
log.debug("find by criteria : {}, page: {}", criteria, page);
5973
final Specification<UtmModule> specification = createSpecification(criteria);
60-
return utmModuleRepository.findAll(specification, page);
74+
Page<UtmModule> data = utmModuleRepository.findAll(specification, page);
75+
76+
return data.map(m -> utmModuleMapper.toDto(m, false));
6177
}
6278

6379
/**

backend/src/main/java/com/park/utmstack/service/application_modules/UtmModuleService.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.park.utmstack.repository.UtmModuleGroupRepository;
99
import com.park.utmstack.repository.application_modules.UtmModuleRepository;
1010
import com.park.utmstack.service.UtmMenuService;
11+
import com.park.utmstack.service.dto.application_modules.ModuleActivationDTO;
1112
import com.park.utmstack.service.index_pattern.UtmIndexPatternService;
1213
import com.park.utmstack.service.logstash_filter.UtmLogstashFilterService;
1314
import org.slf4j.Logger;
@@ -53,14 +54,17 @@ public UtmModuleService(UtmModuleRepository moduleRepository,
5354
/**
5455
* Activate or deactivate the module requested
5556
*
56-
* @param nameShort Short name of the module
57-
* @param activationStatus Activation status
57+
* @param moduleActivationDTO The module activation information
5858
* @return The current module information
59-
* @throws Exception In case of any error
59+
* @throws NoSuchElementException In case the module definition is not found for the server
6060
*/
61-
public UtmModule activateDeactivate(Long serverId, ModuleName nameShort, Boolean activationStatus) throws Exception {
61+
public UtmModule activateDeactivate(ModuleActivationDTO moduleActivationDTO) {
6262
final String ctx = CLASSNAME + ".activateDeactivate";
6363
try {
64+
long serverId = moduleActivationDTO.getServerId();
65+
ModuleName nameShort = moduleActivationDTO.getModuleName();
66+
boolean activationStatus = moduleActivationDTO.getActivationStatus();
67+
6468
UtmModule module = moduleRepository.findByServerIdAndModuleName(serverId, nameShort);
6569

6670
if (Objects.isNull(module))
@@ -79,7 +83,7 @@ public UtmModule activateDeactivate(Long serverId, ModuleName nameShort, Boolean
7983
enableDisableModuleFilter(nameShort, activationStatus);
8084
return module;
8185
} catch (Exception e) {
82-
throw new Exception(ctx + ": " + e.getMessage());
86+
throw new RuntimeException(ctx + ": " + e.getMessage());
8387
}
8488
}
8589

backend/src/main/java/com/park/utmstack/service/collectors/CollectorOpsService.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.park.utmstack.security.SecurityUtils;
2929
import com.park.utmstack.service.application_modules.UtmModuleGroupService;
3030
import com.park.utmstack.service.application_modules.UtmModuleService;
31+
import com.park.utmstack.service.dto.application_modules.ModuleActivationDTO;
3132
import com.park.utmstack.service.dto.collectors.CollectorModuleEnum;
3233
import com.park.utmstack.service.dto.collectors.dto.ListCollectorsResponseDTO;
3334
import com.park.utmstack.service.dto.collectors.dto.CollectorDTO;
@@ -481,7 +482,11 @@ public void deleteCollector(Long id) throws Exception {
481482
.collect(Collectors.toList());
482483

483484
if(modules.isEmpty()){
484-
this.utmModuleService.activateDeactivate(module.getServerId(), module.getModuleName(), false);
485+
this.utmModuleService.activateDeactivate(ModuleActivationDTO.builder()
486+
.serverId(module.getServerId())
487+
.moduleName(module.getModuleName())
488+
.activationStatus(false)
489+
.build());
485490
}
486491
}
487492
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.park.utmstack.service.dto.application_modules;
2+
3+
import com.park.utmstack.domain.application_modules.enums.ModuleRequirementStatus;
4+
import com.park.utmstack.domain.application_modules.types.ModuleRequirement;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
import lombok.Setter;
9+
10+
import java.util.List;
11+
12+
@Setter
13+
@Getter
14+
@AllArgsConstructor
15+
@NoArgsConstructor
16+
public class CheckRequirementsResponse {
17+
private ModuleRequirementStatus status;
18+
private List<ModuleRequirement> checks;
19+
20+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.park.utmstack.service.dto.application_modules;
2+
3+
import com.park.utmstack.domain.application_modules.enums.ModuleName;
4+
import com.park.utmstack.service.dto.auditable.AuditableDTO;
5+
import lombok.*;
6+
7+
import java.util.Map;
8+
9+
@Getter
10+
@Setter
11+
@Builder
12+
@AllArgsConstructor
13+
@NoArgsConstructor
14+
public class ModuleActivationDTO implements AuditableDTO {
15+
private Long serverId;
16+
private ModuleName moduleName;
17+
private Boolean activationStatus;
18+
19+
@Override
20+
public Map<String, Object> toAuditMap() {
21+
return Map.of(
22+
"serverId", serverId,
23+
"moduleName", moduleName != null ? moduleName.name() : null,
24+
"activationStatus", activationStatus
25+
);
26+
}
27+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.park.utmstack.service.dto.application_modules;
2+
3+
import com.park.utmstack.domain.UtmServer;
4+
import com.park.utmstack.domain.application_modules.UtmModuleGroup;
5+
import com.park.utmstack.domain.application_modules.enums.ModuleName;
6+
import lombok.AllArgsConstructor;
7+
import lombok.Getter;
8+
import lombok.RequiredArgsConstructor;
9+
import lombok.Setter;
10+
11+
import java.util.HashSet;
12+
import java.util.Set;
13+
14+
@Getter
15+
@Setter
16+
@RequiredArgsConstructor
17+
@AllArgsConstructor
18+
public class ModuleDTO {
19+
private Long id;
20+
21+
private Long serverId;
22+
23+
private String prettyName;
24+
25+
private ModuleName moduleName;
26+
27+
private String moduleDescription;
28+
29+
private Boolean moduleActive;
30+
31+
private String moduleIcon;
32+
33+
private String moduleCategory;
34+
35+
private Boolean liteVersion;
36+
37+
private Boolean needsRestart;
38+
39+
private Boolean isActivatable;
40+
41+
private UtmServer server;
42+
43+
private Set<UtmModuleGroup> moduleGroups = new HashSet<>();
44+
45+
}
Lines changed: 4 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.park.utmstack.service.dto.application_modules;
22

33
import com.park.utmstack.domain.application_modules.enums.ModuleName;
4+
import lombok.Getter;
5+
import lombok.Setter;
46
import tech.jhipster.service.filter.BooleanFilter;
57
import tech.jhipster.service.filter.Filter;
68
import tech.jhipster.service.filter.LongFilter;
@@ -16,6 +18,8 @@
1618
* As Spring is unable to properly convert the types, unless specific {@link Filter} class are used, we need to use
1719
* fix type specific filters.
1820
*/
21+
@Setter
22+
@Getter
1923
public class UtmModuleCriteria implements Serializable {
2024

2125
/**
@@ -36,75 +40,4 @@ public static class ModulesNameShortFilter extends Filter<ModuleName> {
3640
private BooleanFilter isActivatable;
3741
private StringFilter prettyName;
3842

39-
public LongFilter getId() {
40-
return id;
41-
}
42-
43-
public void setId(LongFilter id) {
44-
this.id = id;
45-
}
46-
47-
public LongFilter getServerId() {
48-
return serverId;
49-
}
50-
51-
public void setServerId(LongFilter serverId) {
52-
this.serverId = serverId;
53-
}
54-
55-
public ModulesNameShortFilter getModuleName() {
56-
return moduleName;
57-
}
58-
59-
public void setModuleName(ModulesNameShortFilter moduleName) {
60-
this.moduleName = moduleName;
61-
}
62-
63-
public BooleanFilter getModuleActive() {
64-
return moduleActive;
65-
}
66-
67-
public void setModuleActive(BooleanFilter moduleActive) {
68-
this.moduleActive = moduleActive;
69-
}
70-
71-
public StringFilter getModuleCategory() {
72-
return moduleCategory;
73-
}
74-
75-
public void setModuleCategory(StringFilter moduleCategory) {
76-
this.moduleCategory = moduleCategory;
77-
}
78-
79-
public BooleanFilter getNeedsRestart() {
80-
return needsRestart;
81-
}
82-
83-
public void setNeedsRestart(BooleanFilter needsRestart) {
84-
this.needsRestart = needsRestart;
85-
}
86-
87-
public BooleanFilter getLiteVersion() {
88-
return liteVersion;
89-
}
90-
91-
public void setLiteVersion(BooleanFilter liteVersion) {
92-
this.liteVersion = liteVersion;
93-
}
94-
95-
public StringFilter getPrettyName() {
96-
return prettyName;
97-
}
98-
99-
public void setPrettyName(StringFilter prettyName) {
100-
this.prettyName = prettyName;
101-
}
102-
103-
public BooleanFilter getIsActivatable() {
104-
return isActivatable;
105-
}
106-
107-
public void setIsActivatable(BooleanFilter isActivatable) {
108-
this.isActivatable = isActivatable;
109-
}
11043
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.park.utmstack.service.dto.application_modules;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
@Data
9+
@NoArgsConstructor
10+
@AllArgsConstructor
11+
public class UtmModuleGroupConfDTO {
12+
private String confKey;
13+
private String confValue;
14+
}
15+
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.park.utmstack.service.dto.application_modules;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Data;
5+
import lombok.NoArgsConstructor;
6+
7+
import java.util.List;
8+
9+
@Data
10+
@NoArgsConstructor
11+
@AllArgsConstructor
12+
public class UtmModuleGroupConfWrapperDTO {
13+
private List<UtmModuleGroupConfDTO> moduleGroupConfigurations;
14+
}
15+
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.park.utmstack.service.dto.application_modules;
2+
3+
import com.park.utmstack.domain.application_modules.UtmModule;
4+
import com.park.utmstack.domain.logstash_filter.UtmLogstashFilter;
5+
import org.slf4j.Logger;
6+
import org.slf4j.LoggerFactory;
7+
import org.springframework.stereotype.Component;
8+
9+
import java.util.List;
10+
import java.util.Optional;
11+
import java.util.stream.Collectors;
12+
13+
@Component
14+
public class UtmModuleMapper {
15+
16+
private final Logger logger = LoggerFactory.getLogger(UtmModuleMapper.class);
17+
18+
public ModuleDTO toDto(UtmModule entity, boolean includeDataType) {
19+
ModuleDTO dto = new ModuleDTO();
20+
dto.setId(entity.getId());
21+
dto.setServerId(entity.getServerId());
22+
dto.setPrettyName(entity.getPrettyName());
23+
dto.setModuleName(entity.getModuleName());
24+
dto.setModuleDescription(entity.getModuleDescription());
25+
dto.setModuleActive(entity.getModuleActive());
26+
dto.setModuleIcon(entity.getModuleIcon());
27+
dto.setModuleCategory(entity.getModuleCategory());
28+
dto.setLiteVersion(entity.getLiteVersion());
29+
dto.setNeedsRestart(entity.getNeedsRestart());
30+
dto.setIsActivatable(entity.getActivatable());
31+
dto.setModuleGroups(entity.getModuleGroups());
32+
33+
return dto;
34+
}
35+
36+
public List<ModuleDTO> toListDTO(List<UtmModule> modules) {
37+
return modules.stream()
38+
.map((m) -> this.toDto(m, false))
39+
.collect(Collectors.toList());
40+
}
41+
}

0 commit comments

Comments
 (0)