Merge branch 'DEVELOP' of ssh://git.eclipse.org:29418/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.backend into SI-295_VerteilerGruppen
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/repository/DistributionGroupMemberRepository.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/repository/DistributionGroupMemberRepository.java
index c5ad8b9..dae2ea1 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/repository/DistributionGroupMemberRepository.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/repository/DistributionGroupMemberRepository.java
@@ -39,4 +39,7 @@
@Query("select count(*) from TblDistributionGroupMember a where a.tblDistributionGroup.id=:groupId and a.contactId=:contactId and uuid <>:memberUuid")
Long countByDistributionGroupIdAndContactIdAndIsNotSame( @Param("groupId") Long groupId, @Param("contactId") UUID contactId, @Param("memberUuid") UUID memberUuid);
+ @Query("select count(*) from TblDistributionGroupMember a where a.tblDistributionGroup.id=:groupId and a.contactId=:contactId")
+ Long countByDistributionGroupIdAndContactId( @Param("groupId") Long groupId, @Param("contactId") UUID contactId);
+
}
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/DistributionGroupMemberService.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/DistributionGroupMemberService.java
index 166752a..2955150 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/DistributionGroupMemberService.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/DistributionGroupMemberService.java
@@ -102,11 +102,14 @@
distributionGroupMemberToSave.setUuid(UUID.randomUUID());
distributionGroupMemberToSave.setTblDistributionGroup(tblDistributionGroup);
+ if ( !checkUniqueContactForGroupMemberForInsert(tblDistributionGroup.getId(), distributionGroupMemberToSave.getContactId())) {
+ throw new OperationDeniedException(OperationType.INSERT, "distribution.group.member.already.existing.for.group");
+ }
+
TblDistributionGroupMember savedDistributionGroupMember = distributionGroupMemberRepository.save(distributionGroupMemberToSave);
return distributionGroupMemberMapper.toDistributionGroupMemberDto(savedDistributionGroupMember);
}
-
@Transactional
public void deleteDistributionGroupMember(UUID groupUuid, UUID memberUuid) {
TblDistributionGroup existingDistributionGroup = distributionGroupRepository.findByUuid(groupUuid)
@@ -139,6 +142,11 @@
return distributionGroupMemberMapper.toDistributionGroupMemberDto(savedMember);
}
+ private boolean checkUniqueContactForGroupMemberForInsert( Long distributionGroupId, UUID contactId){
+ Long result = distributionGroupMemberRepository.countByDistributionGroupIdAndContactId(distributionGroupId, contactId);
+ return result==0;
+ }
+
private boolean checkUniqueContactForGroupMemberForUpdate( Long distributionGroupId, UUID contactId, UUID memberUuid){
Long result = distributionGroupMemberRepository.countByDistributionGroupIdAndContactIdAndIsNotSame(distributionGroupId, contactId, memberUuid) ;
return result==0;
@@ -152,9 +160,9 @@
if( contact == null ) {
return groupMemberDto;
}
- completeDto.setFirstName(contact.getFirstName());
- completeDto.setLastName(contact.getLastName());
+ completeDto.setName(contact.getName());
completeDto.setEmail(contact.getEmail());
+ completeDto.setMainAddress(contact.getMainAddress());
List<CommunicationDto> communicationDtoList = contactApi.getContactCommunications(groupMemberDto.getContactId(), jwt);
if( communicationDtoList != null ) {
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/DistributionGroupMemberDto.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/DistributionGroupMemberDto.java
index 6ecf426..cf28340 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/DistributionGroupMemberDto.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/DistributionGroupMemberDto.java
@@ -30,10 +30,10 @@
private String distributionGroup;
private UUID contactId;
- private String firstName;
- private String lastName;
+ private String name;
private String email;
private String mobileNumber;
+ private String mainAddress;
}
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/DistributionGroupServiceMemberTest.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/DistributionGroupServiceMemberTest.java
index b54ff87..09f9571 100644
--- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/DistributionGroupServiceMemberTest.java
+++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/DistributionGroupServiceMemberTest.java
@@ -16,6 +16,7 @@
import org.eclipse.openk.gridfailureinformation.config.TestConfiguration;
import org.eclipse.openk.gridfailureinformation.exceptions.NotFoundException;
+import org.eclipse.openk.gridfailureinformation.exceptions.OperationDeniedException;
import org.eclipse.openk.gridfailureinformation.model.TblDistributionGroup;
import org.eclipse.openk.gridfailureinformation.model.TblDistributionGroupMember;
import org.eclipse.openk.gridfailureinformation.repository.DistributionGroupMemberRepository;
@@ -39,8 +40,7 @@
import static org.hibernate.validator.internal.util.Contracts.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.isA;
+import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.when;
@@ -91,7 +91,6 @@
assertEquals(dto.getUuid(), dto.getUuid());
}
-
@Test
public void shouldThrowExceptionWhenFailureNotFound() {
TblDistributionGroupMember groupMember = MockDataHelper.mockTblDistributionGroupMember();
@@ -117,6 +116,20 @@
}
@Test
+ public void shouldNotInsertMember_Exception_Member_Exists() {
+ DistributionGroupMemberDto memberDto = MockDataHelper.mockDistributionGroupMemberDto();
+ TblDistributionGroupMember tblDistributionGroupMember = MockDataHelper.mockTblDistributionGroupMember();
+
+ TblDistributionGroup tblDistributionGroup = MockDataHelper.mockTblDistributionGroup();
+
+ when(distributionGroupRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblDistributionGroup));
+ when(distributionGroupMemberRepository.countByDistributionGroupIdAndContactId(anyLong(),any(UUID.class))).thenReturn(4L);
+ when(distributionGroupMemberRepository.save(any(TblDistributionGroupMember.class))).thenReturn(tblDistributionGroupMember);
+
+ assertThrows(OperationDeniedException.class, () -> distributionGroupMemberService.insertDistributionGroupMember(UUID.randomUUID(), memberDto));
+ }
+
+ @Test
public void shouldDeleteDistributionGroupMember() {
TblDistributionGroupMember tblDistributionGroupMember = MockDataHelper.mockTblDistributionGroupMember();
TblDistributionGroup tblDistributionGroup = MockDataHelper.mockTblDistributionGroup();
@@ -155,7 +168,6 @@
when(distributionGroupRepository.findByUuid(any(UUID.class))).thenReturn(Optional.empty());
when(distributionGroupMemberRepository.save(any(TblDistributionGroupMember.class))).thenReturn(tblDistributionGroupMember);
-
when(distributionGroupMemberRepository.save(any(TblDistributionGroupMember.class)))
.then((Answer<TblDistributionGroupMember>) invocation -> {
Object[] args = invocation.getArguments();
@@ -165,5 +177,4 @@
}
-
}
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java
index cbf84f8..cd2d05d 100644
--- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java
+++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java
@@ -1064,6 +1064,7 @@
public static TblDistributionGroup mockTblDistributionGroup(){
TblDistributionGroup tblDistributionGroup = new TblDistributionGroup();
+ tblDistributionGroup.setId(1L);
tblDistributionGroup.setUuid(UUID.randomUUID());
tblDistributionGroup.setName("Testverteiler - Abteilung intern");
tblDistributionGroup.setDistributionText("Liebe Kollegen blabla ...");
@@ -1074,6 +1075,7 @@
public static TblDistributionGroup mockTblDistributionGroup2(){
TblDistributionGroup tblDistributionGroup = new TblDistributionGroup();
+ tblDistributionGroup.setId(2L);
tblDistributionGroup.setUuid(UUID.randomUUID());
tblDistributionGroup.setName("Testverteiler - Gruppe intern");
tblDistributionGroup.setDistributionText("Liebste Kollegen blabla ...");