Files
elink-test-master/src/main/java/com/eactive/testmaster/client/service/ApiLayoutMgmtService.java
T
2024-05-13 16:52:10 +09:00

86 lines
3.6 KiB
Java

package com.eactive.testmaster.client.service;
import com.eactive.testmaster.client.entity.ApiLayout;
import com.eactive.testmaster.client.entity.ApiRequestInfo;
import com.eactive.testmaster.client.repository.ApiLayoutRepository;
import com.eactive.testmaster.client.repository.ApiRequestRepository;
import com.eactive.testmaster.common.exception.NotFoundException;
import java.util.Optional;
import java.util.UUID;
import javax.transaction.Transactional;
import org.springframework.stereotype.Service;
@Service
@Transactional
public class ApiLayoutMgmtService {
private final ApiLayoutRepository apiLayoutRepository;
private final ApiRequestRepository apiRequestRepository;
public ApiLayoutMgmtService(ApiRequestRepository apiRequestRepository, ApiLayoutRepository apiLayoutRepository) {
this.apiRequestRepository = apiRequestRepository;
this.apiLayoutRepository = apiLayoutRepository;
}
public ApiLayout findLayoutByApiRequest(String apiRequestId) {
ApiRequestInfo apiRequestInfo = apiRequestRepository.findById(apiRequestId)
.orElseThrow(() -> new NotFoundException(String.format("ApiRequestInfo with ID %s not found", apiRequestId)));
return apiLayoutRepository.findFirstByApiRequestInfo(apiRequestInfo);
}
public ApiLayout saveLayout(ApiLayout layout) {
ApiLayout apiLayout = apiLayoutRepository.findFirstByApiRequestInfo(layout.getApiRequestInfo());
return apiLayout == null ? createLayout(layout) : updateLayout(apiLayout.getId(), layout);
}
public ApiLayout createLayout(ApiLayout layout) {
layout.setId(UUID.randomUUID().toString());
if (layout.getLayoutItems() != null && !layout.getLayoutItems().isEmpty()) {
layout.getLayoutItems().forEach(layoutItem -> {
layoutItem.setApiLayout(layout);
});
}
return apiLayoutRepository.save(layout);
}
public ApiLayout updateLayout(String layoutId, ApiLayout updatedLayout) {
ApiLayout layout = apiLayoutRepository.findById(layoutId)
.orElseThrow(() -> new NotFoundException(String.format("Layout with ID %s not found", layoutId)));
// Update fields based on the values provided in updatedLayout
layout.setLoutName(updatedLayout.getLoutName());
layout.setLoutDesc(updatedLayout.getLoutDesc());
layout.setLoutPtrnName(updatedLayout.getLoutPtrnName());
layout.setLoutDesc(updatedLayout.getLoutDesc());
layout.setEaiBzwkDstCd(updatedLayout.getEaiBzwkDstCd());
layout.setUApplName(updatedLayout.getUApplName());
layout.setSysIntFacName(updatedLayout.getSysIntFacName());
layout.setAuthor(updatedLayout.getAuthor());
layout.setEaiSevRdStCd(updatedLayout.getEaiSevRdStCd());
layout.setModfMgtStusDstCd(updatedLayout.getModfMgtStusDstCd());
layout.setUseYn(updatedLayout.getUseYn());
layout.setVerInfo(updatedLayout.getVerInfo());
if (updatedLayout.getLayoutItems() != null && !updatedLayout.getLayoutItems().isEmpty()) {
layout.getLayoutItems().clear();
updatedLayout.getLayoutItems().forEach(layoutItem -> {
layoutItem.setApiLayout(layout); // Set back reference to layout
layout.getLayoutItems().add(layoutItem);
});
}
return apiLayoutRepository.save(layout);
}
// Method to delete a layout
public void deleteLayout(String id) {
ApiLayout layout = apiLayoutRepository.findById(id)
.orElseThrow(() -> new NotFoundException(String.format("Layout with ID %s not found", id)));
apiLayoutRepository.delete(layout);
}
}