Skip to content

Commit 1538011

Browse files
Dennis LabordusRob Tjalma
authored andcommitted
Use of CompasExtensionsManager from core and added some tests.
Signed-off-by: Dennis Labordus <[email protected]>
1 parent a7566e1 commit 1538011

File tree

4 files changed

+103
-34
lines changed

4 files changed

+103
-34
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// SPDX-FileCopyrightText: 2021 Alliander N.V.
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
package org.lfenergy.compas.scl.data.rest;
5+
6+
import org.lfenergy.compas.commons.CompasExtensionsManager;
7+
8+
import javax.enterprise.inject.Produces;
9+
10+
public class CompasSclDataConfiguration {
11+
@Produces
12+
public CompasExtensionsManager createCompasExtensionsManager() {
13+
return new CompasExtensionsManager();
14+
}
15+
}

repository/src/test/java/org/lfenergy/compas/scl/data/model/SclTypeTest.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package org.lfenergy.compas.scl.data.model;
55

66
import org.junit.jupiter.api.Test;
7+
import org.lfenergy.compas.scl.extensions.TSclFileType;
78

89
import static org.junit.jupiter.api.Assertions.assertNotNull;
910

@@ -14,9 +15,25 @@ protected Class<? extends Enum<?>> getEnumClass() {
1415
}
1516

1617
@Test
17-
void testDescription() {
18+
void getDescription_WhenCalledForEveryType_ThenEveryTypeHasADescription() {
1819
for (var type : SclType.values()) {
1920
assertNotNull(type.getDescription());
2021
}
2122
}
23+
24+
@Test
25+
void convert_WhenCalledForEveryType_ThenEveryTypeCanBeConvertedToTSclFileType() {
26+
for (var type : SclType.values()) {
27+
TSclFileType tSclFileType = TSclFileType.valueOf(type.toString());
28+
assertNotNull(tSclFileType);
29+
}
30+
}
31+
32+
@Test
33+
void convert_WhenCalledForEveryTSclFileType_ThenEveryTSclFileTypeCanBeConvertedToType() {
34+
for (var tSclFileType : TSclFileType.values()) {
35+
SclType type = SclType.valueOf(tSclFileType.toString());
36+
assertNotNull(type);
37+
}
38+
}
2239
}

service/src/main/java/org/lfenergy/compas/scl/data/service/CompasSclDataService.java

Lines changed: 14 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@
44

55
package org.lfenergy.compas.scl.data.service;
66

7+
import org.lfenergy.compas.commons.CompasExtensionsManager;
78
import org.lfenergy.compas.scl.SCL;
8-
import org.lfenergy.compas.scl.TAnyContentFromOtherNamespace;
9-
import org.lfenergy.compas.scl.TPrivate;
109
import org.lfenergy.compas.scl.data.model.ChangeSetType;
1110
import org.lfenergy.compas.scl.data.model.Item;
1211
import org.lfenergy.compas.scl.data.model.SclType;
@@ -17,19 +16,22 @@
1716

1817
import javax.enterprise.context.ApplicationScoped;
1918
import javax.inject.Inject;
20-
import javax.xml.bind.JAXBElement;
21-
import javax.xml.namespace.QName;
2219
import java.util.List;
2320
import java.util.Optional;
2421
import java.util.UUID;
2522

23+
import static org.lfenergy.compas.scl.extensions.common.CompasExtensionsField.SCL_FILETYPE_EXTENSION;
24+
import static org.lfenergy.compas.scl.extensions.common.CompasExtensionsField.SCL_NAME_EXTENSION;
25+
2626
@ApplicationScoped
2727
public class CompasSclDataService {
2828
private CompasSclDataRepository repository;
29+
private CompasExtensionsManager compasExtensionsManager;
2930

3031
@Inject
31-
public CompasSclDataService(CompasSclDataRepository repository) {
32+
public CompasSclDataService(CompasSclDataRepository repository, CompasExtensionsManager compasExtensionsManager) {
3233
this.repository = repository;
34+
this.compasExtensionsManager = compasExtensionsManager;
3335
}
3436

3537
public List<Item> list(SclType type) {
@@ -84,23 +86,6 @@ public void delete(SclType type, UUID id, Version version) {
8486
repository.delete(type, id, version);
8587
}
8688

87-
private Optional<TPrivate> getCompasPrivate(SCL scl) {
88-
return scl.getPrivate()
89-
.stream()
90-
.filter(tPrivate -> tPrivate.getType().equals("compas_scl"))
91-
.findFirst();
92-
}
93-
94-
private Optional<JAXBElement> getCompasElement(SCL scl, String name) {
95-
return getCompasPrivate(scl).stream()
96-
.map(TAnyContentFromOtherNamespace::getContent)
97-
.flatMap(List::stream)
98-
.filter(element -> element instanceof JAXBElement)
99-
.map(element -> (JAXBElement) element)
100-
.filter(element -> element.getName().equals(new QName("https://www.lfenergy.org/compas/v1", name)))
101-
.findFirst();
102-
}
103-
10489
/**
10590
* Set the full CoMPAS private element for the given SCL file.
10691
*
@@ -110,27 +95,26 @@ private Optional<JAXBElement> getCompasElement(SCL scl, String name) {
11095
*/
11196
private void setSclCompasPrivateElement(SCL scl, Optional<String> filename, SclType fileType) {
11297
var compasPrivateElementFactory = new ObjectFactory();
113-
var compasPrivate = getCompasPrivate(scl)
98+
var compasPrivate = compasExtensionsManager.getCompasPrivate(scl)
11499
.orElseGet(() -> {
115100
// Creating a private
116-
var newPrivate = new TPrivate();
117-
// Setting the type (required for a SCL private element)
118-
newPrivate.setType("compas_scl");
101+
var newPrivate = compasExtensionsManager.createCompasPrivate();
119102
// Adding it to the SCL file.
120103
scl.getPrivate().add(newPrivate);
121104
return newPrivate;
122105
});
123106

124-
// Adding the filename element and the file type element
107+
// If a filename is passed, this name will be set as private element.
125108
filename.ifPresent(value ->
126-
getCompasElement(scl, "SclFilename")
109+
compasExtensionsManager.getCompasElement(compasPrivate, SCL_NAME_EXTENSION)
127110
.ifPresentOrElse(
128111
element -> element.setValue(value),
129-
() -> compasPrivate.getContent().add(compasPrivateElementFactory.createSclFilename(value)))
112+
() -> compasPrivate.getContent().add(compasPrivateElementFactory.createSclName(value)))
130113
);
131114

115+
// Always set the file type as private element.
132116
TSclFileType sclFileType = TSclFileType.valueOf(fileType.toString());
133-
getCompasElement(scl, "SclFileType")
117+
compasExtensionsManager.getCompasElement(compasPrivate, SCL_FILETYPE_EXTENSION)
134118
.ifPresentOrElse(
135119
element -> element.setValue(sclFileType),
136120
() -> compasPrivate.getContent().add(compasPrivateElementFactory.createSclFileType(sclFileType))

service/src/test/java/org/lfenergy/compas/scl/data/service/CompasSclDataServiceTest.java

Lines changed: 56 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,43 @@
33
// SPDX-License-Identifier: Apache-2.0
44
package org.lfenergy.compas.scl.data.service;
55

6+
import org.junit.jupiter.api.BeforeEach;
67
import org.junit.jupiter.api.Test;
78
import org.junit.jupiter.api.extension.ExtendWith;
9+
import org.lfenergy.compas.commons.CompasExtensionsManager;
810
import org.lfenergy.compas.scl.SCL;
911
import org.lfenergy.compas.scl.THeader;
1012
import org.lfenergy.compas.scl.data.model.ChangeSetType;
1113
import org.lfenergy.compas.scl.data.model.SclType;
1214
import org.lfenergy.compas.scl.data.model.Version;
1315
import org.lfenergy.compas.scl.data.repository.CompasSclDataRepository;
14-
import org.mockito.InjectMocks;
16+
import org.lfenergy.compas.scl.extensions.ObjectFactory;
17+
import org.lfenergy.compas.scl.extensions.TSclFileType;
1518
import org.mockito.Mock;
1619
import org.mockito.junit.jupiter.MockitoExtension;
1720

1821
import java.util.UUID;
1922

2023
import static java.util.Collections.emptyList;
21-
import static org.junit.jupiter.api.Assertions.assertNotNull;
24+
import static org.junit.jupiter.api.Assertions.*;
25+
import static org.lfenergy.compas.scl.extensions.common.CompasExtensionsField.SCL_FILETYPE_EXTENSION;
26+
import static org.lfenergy.compas.scl.extensions.common.CompasExtensionsField.SCL_NAME_EXTENSION;
2227
import static org.mockito.Mockito.*;
2328

2429
@ExtendWith(MockitoExtension.class)
2530
class CompasSclDataServiceTest {
31+
private CompasExtensionsManager compasExtensionsManager = new CompasExtensionsManager();
32+
2633
@Mock
2734
private CompasSclDataRepository compasSclDataRepository;
2835

29-
@InjectMocks
3036
private CompasSclDataService compasSclDataService;
3137

38+
@BeforeEach
39+
void beforeEach() {
40+
compasSclDataService = new CompasSclDataService(compasSclDataRepository, compasExtensionsManager);
41+
}
42+
3243
@Test
3344
void list_WhenCalled_ThenRepositoryIsCalled() {
3445
var type = SclType.SCD;
@@ -88,20 +99,40 @@ void create_WhenCalled_ThenRepositoryIsCalledAndUUIDIsReturned() {
8899
var uuid = compasSclDataService.create(type, name, scl);
89100

90101
assertNotNull(uuid);
102+
assertCompasExtenions(scl, name, type);
103+
verify(compasSclDataRepository, times(1)).create(eq(type), any(UUID.class), eq(scl), any(Version.class));
104+
}
105+
106+
@Test
107+
void create_WhenCalledWithCompasExtension_ThenRepositoryIsCalledAndUUIDIsReturned() {
108+
var type = SclType.SCD;
109+
var name = "JUSTSOMENAME";
110+
var scl = createBasicSCL();
111+
createCompasPrivate(scl, "JUSTANOTHERNAME", SclType.ISD);
112+
113+
doNothing().when(compasSclDataRepository).create(eq(type), any(UUID.class), eq(scl), any(Version.class));
114+
115+
var uuid = compasSclDataService.create(type, name, scl);
116+
117+
assertNotNull(uuid);
118+
assertCompasExtenions(scl, name, type);
91119
verify(compasSclDataRepository, times(1)).create(eq(type), any(UUID.class), eq(scl), any(Version.class));
92120
}
93121

94122
@Test
95123
void update_WhenCalled_ThenRepositoryIsCalledAndNewUUIDIsReturned() {
96124
var type = SclType.SCD;
125+
var name = "JUSTANOTHERNAME";
97126
var uuid = UUID.randomUUID();
98127
var scl = createBasicSCL();
128+
createCompasPrivate(scl, name, SclType.ISD);
99129

100130
when(compasSclDataRepository.findByUUID(type, uuid)).thenReturn(createBasicSCL());
101131
doNothing().when(compasSclDataRepository).create(eq(type), eq(uuid), eq(scl), any(Version.class));
102132

103133
compasSclDataService.update(type, uuid, ChangeSetType.MAJOR, scl);
104134

135+
assertCompasExtenions(scl, name, type);
105136
verify(compasSclDataRepository, times(1)).create(eq(type), eq(uuid), eq(scl), any(Version.class));
106137
verify(compasSclDataRepository, times(1)).findByUUID(type, uuid);
107138
}
@@ -131,10 +162,32 @@ void delete_WhenCalledWithVersion_ThenRepositoryIsCalled() {
131162
verify(compasSclDataRepository, times(1)).delete(type, uuid, version);
132163
}
133164

165+
private void assertCompasExtenions(SCL scl, String name, SclType type) {
166+
var compasPrivate = compasExtensionsManager.getCompasPrivate(scl);
167+
assertTrue(compasPrivate.isPresent());
168+
169+
var nameElement = compasExtensionsManager.getCompasElement(compasPrivate.get(), SCL_NAME_EXTENSION);
170+
assertTrue(nameElement.isPresent());
171+
assertEquals(name, nameElement.get().getValue().toString());
172+
173+
var typeElement = compasExtensionsManager.getCompasElement(compasPrivate.get(), SCL_FILETYPE_EXTENSION);
174+
assertTrue(typeElement.isPresent());
175+
assertEquals(type.toString(), typeElement.get().getValue().toString());
176+
}
177+
134178
private SCL createBasicSCL() {
135179
var scl = new SCL();
136180
scl.setHeader(new THeader());
137181
scl.getHeader().setVersion("1.0.0");
138182
return scl;
139183
}
184+
185+
private void createCompasPrivate(SCL scl, String name, SclType type) {
186+
var compasPrivateElementFactory = new ObjectFactory();
187+
var compasPrivate = compasExtensionsManager.createCompasPrivate();
188+
compasPrivate.getContent().add(compasPrivateElementFactory.createSclName(name));
189+
TSclFileType sclFileType = TSclFileType.valueOf(type.toString());
190+
compasPrivate.getContent().add(compasPrivateElementFactory.createSclFileType(sclFileType));
191+
scl.getPrivate().add(compasPrivate);
192+
}
140193
}

0 commit comments

Comments
 (0)