SI-1358: Channels als Rückgabe ins DTO
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/ProcessHelper.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/ProcessHelper.java
index 2e35f34..3e8635e 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/ProcessHelper.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/ProcessHelper.java
@@ -10,14 +10,17 @@
import org.eclipse.openk.gridfailureinformation.model.RefFailureClassification;
import org.eclipse.openk.gridfailureinformation.model.RefStatus;
import org.eclipse.openk.gridfailureinformation.model.TblFailureInformation;
+import org.eclipse.openk.gridfailureinformation.model.TblFailureInformationPublicationChannel;
import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
import java.util.Optional;
import java.util.UUID;
+import java.util.stream.Collectors;
@Log4j2
@RequiredArgsConstructor
@@ -62,9 +65,14 @@
}
public void publishFailureInformation( FailureInformationDto dto ) {
- String[] channels = new String[dto.getPublicationChannels().size()];
+
+ TblFailureInformation tblFailureInfo = environment.getFailureInformationRepository().findByUuid(dto.getUuid()).orElseThrow(()-> new NotFoundException(""));
+ List<TblFailureInformationPublicationChannel> channelList = environment.getChannelRepository().findByTblFailureInformation(tblFailureInfo);
+
+ String[] channels = new String[channelList.size()];
environment.getExportService().exportFailureInformation(dto.getUuid(),
- dto.getPublicationChannels().toArray(channels));
+ channelList.stream().map(x->x.getPublicationChannel()).collect(Collectors.toList()).toArray(channels));
+
}
public void resetPublishedStateForChannels( FailureInformationDto dto ) {
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformation.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformation.java
index cc9fbca..08ba8d2 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformation.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformation.java
@@ -14,7 +14,9 @@
*/
package org.eclipse.openk.gridfailureinformation.model;
+import lombok.AccessLevel;
import lombok.Data;
+import lombok.Setter;
import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedBy;
@@ -110,21 +112,24 @@
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "tblFailureInformationDistributionGroup",
- joinColumns = {@JoinColumn(name = "fkTblFailureInformation")},
+ joinColumns = {@JoinColumn(updatable = false, name = "fkTblFailureInformation")},
inverseJoinColumns = {@JoinColumn(name = "fkTblDistributionGroup")}
)
- private List<TblDistributionGroup> distributionGroups = new LinkedList<>();
+
+ private List<TblDistributionGroup> distributionGroups = new LinkedList<>();
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "tblFailureInformationStation",
- joinColumns = {@JoinColumn(name = "fkTblFailureInformation")},
+ joinColumns = {@JoinColumn(updatable = false, name = "fkTblFailureInformation")},
inverseJoinColumns = {@JoinColumn(name = "stationStationId", referencedColumnName="stationId") }
)
private Set<TblStation> stations = new HashSet<>();
@OneToOne(mappedBy = "tblFailureInformation")
private TblFailureInformationReminderMailSent failureInformationReminderMailSent;
+
+ //@Setter(AccessLevel.NONE)
@OneToMany(cascade=CascadeType.ALL, mappedBy="tblFailureInformation", orphanRemoval = true)
private List<TblFailureInformationPublicationChannel> publicationChannelList = new ArrayList<>();
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformationPublicationChannel.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformationPublicationChannel.java
index 326103b..d199e12 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformationPublicationChannel.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformationPublicationChannel.java
@@ -32,7 +32,7 @@
private Long id;
@ManyToOne
- @JoinColumn( name = "fk_tbl_failure_information")
+ @JoinColumn( name = "fkTblFailureInformation")
//@NotNull
private TblFailureInformation tblFailureInformation;
//@NotNull
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationService.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationService.java
index 942f8aa..d7783c7 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationService.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationService.java
@@ -159,7 +159,9 @@
if( getRefStatus(failureInformationDto).getId() != GfiProcessState.QUALIFIED.getStatusValue()) {
throw new BadRequestException("Publishing is only possible with state 'qualified'");
}
- if( failureInformationDto.getPublicationChannels().isEmpty()) {
+ TblFailureInformation tblFailureInfo = failureInformationRepository.findByUuid(failureInformationDto.getUuid()).orElseThrow(()-> new NotFoundException(""));
+ List<TblFailureInformationPublicationChannel> channelList = failureInformationPublicationChannelRepository.findByTblFailureInformation(tblFailureInfo);
+ if( channelList.isEmpty()) {
throw new BadRequestException("Publishing is only possible with at least one selected channel");
}
return processGrid(failureInformationDto, GfiProcessState.CHECKED_FOR_PUBLISH_);
@@ -238,11 +240,20 @@
// if(sourceDto.getPublicationChannels() != null){
// updatePublicationChannels(sourceDto, destTblFailureInformation);
// }
-
+ resolvePublicationChannels(destTblFailureInformation);
resolveStationIds(destTblFailureInformation, sourceDto);
resolveDistributionGroups(destTblFailureInformation, sourceDto);
}
+ private void resolvePublicationChannels(TblFailureInformation destTblFailureInformation) {
+
+ List<TblFailureInformationPublicationChannel> channelList = failureInformationPublicationChannelRepository.findByTblFailureInformation(destTblFailureInformation);
+
+ if(!channelList.isEmpty()){
+ destTblFailureInformation.setPublicationChannelList(channelList);
+ }
+ }
+
private void resolveDistributionGroups(TblFailureInformation destTblFailureInformation, FailureInformationDto sourceDto) {
if( sourceDto.getDistributionGroupUuids() != null ) {
resolveDistributionGroupUuids(destTblFailureInformation, sourceDto);
@@ -270,6 +281,8 @@
for (UUID distributionGroupUuid : sourceDto.getDistributionGroupUuids()) {
distributionGroupList.add(distributionGroupRepository.findByUuid(distributionGroupUuid).orElseThrow(() -> new NotFoundException("distribution.group.uuid.not.existing")));
}
+
+ destTblFailureInformation.setDistributionGroups(distributionGroupList.stream().collect(Collectors.toList()));
}
private void resolveCondensed(TblFailureInformation destTblFailureInformation, FailureInformationDto sourceDto) {
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java
index 136fe7c..4a190cb 100644
--- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java
+++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java
@@ -69,6 +69,8 @@
private AddressRepository addressRepository;
@MockBean
private DistributionGroupRepository distributionGroupRepository;
+ @MockBean
+ private FailureInformationPublicationChannelRepository failureInformationPublicationChannelRepository;
@Test
public void shouldFindFailureInformations() {
@@ -487,6 +489,7 @@
RefExpectedReason refExpectedReason = MockDataHelper.mockRefExpectedReason();
TblStation tblStation = MockDataHelper.mockTblStation();
TblDistributionGroup tblDistributionGroup = MockDataHelper.mockTblDistributionGroup();
+ List<TblFailureInformationPublicationChannel> publicationChannelList = MockDataHelper.mockTblFailureInformationPublicationChannelList();
when(statusRepository.findById(anyLong())).thenReturn(Optional.of(refStatus));
when(failureInformationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(fiTbl), Optional.of(fiTbl));
@@ -497,6 +500,7 @@
when(expectedReasonRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refExpectedReason));
when(stationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblStation));
when(distributionGroupRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblDistributionGroup));
+ when(failureInformationPublicationChannelRepository.findByTblFailureInformation(any(TblFailureInformation.class))).thenReturn(publicationChannelList);
fiDto.setUuid(null);
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 ebb0b2f..1361769 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
@@ -1279,6 +1279,14 @@
return tfipChannel;
}
+ public static List<TblFailureInformationPublicationChannel> mockTblFailureInformationPublicationChannelList(){
+ List<TblFailureInformationPublicationChannel> channelList = new LinkedList<>();
+ channelList.add(mockTblFailureInformationPublicationChannel());
+ channelList.add(mockTblFailureInformationPublicationChannel2());
+
+ return channelList;
+ }
+
public static List<ArrayList<BigDecimal>> mockPolygonCoordinatesList(){
List<ArrayList<BigDecimal>> cordinatesList = new LinkedList<>();