summaryrefslogtreecommitdiffstats
path: root/cps-ri/src/main/java/org/onap
diff options
context:
space:
mode:
authordanielhanrahan <daniel.hanrahan@est.tech>2023-05-04 22:34:41 +0100
committerdanielhanrahan <daniel.hanrahan@est.tech>2023-05-12 13:17:38 +0100
commitb740156bb50784fc461e2fbda13cd91e3f208b38 (patch)
treeb305c9c827ae7c323e40ac10975a34093e86fecc /cps-ri/src/main/java/org/onap
parent26a51754dd8aa9b467bcb442e6042f22af2ba001 (diff)
Remove dataspace_id column from Fragment table
- Remove dataspace_id column from fragment table and drop associated index, foreign key constraint and uniqueness constaint. - Add uniqueness constraint using only fragment xpath and anchor_id. - Add not-null constraint to anchor_id. - Update code and test data to remove references to dataspace_id. - Repopulate the dataspace_id in Liquibase rollback (verified with manual testing of update/rollback). Issue-ID: CPS-1677 Signed-off-by: danielhanrahan <daniel.hanrahan@est.tech> Change-Id: I467cccba25ac5d884ec790064ca58150281b7e1d
Diffstat (limited to 'cps-ri/src/main/java/org/onap')
-rwxr-xr-xcps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntity.java4
-rw-r--r--cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntityArranger.java7
-rw-r--r--cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java1
-rw-r--r--cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentQueryBuilder.java23
-rwxr-xr-xcps-ri/src/main/java/org/onap/cps/spi/repository/FragmentRepository.java5
5 files changed, 14 insertions, 26 deletions
diff --git a/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntity.java b/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntity.java
index 62c8c19cb..f2cfe6322 100755
--- a/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntity.java
+++ b/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntity.java
@@ -82,10 +82,6 @@ public class FragmentEntity implements Serializable {
@NotNull
@ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "dataspace_id")
- private DataspaceEntity dataspace;
-
- @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "anchor_id")
@EqualsAndHashCode.Include
private AnchorEntity anchor;
diff --git a/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntityArranger.java b/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntityArranger.java
index b7ce98e1a..c1b1322bb 100644
--- a/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntityArranger.java
+++ b/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntityArranger.java
@@ -1,6 +1,6 @@
/*
* ============LICENSE_START=======================================================
- * Copyright (C) 2022 Nordix Foundation
+ * Copyright (C) 2022-2023 Nordix Foundation
* Modifications Copyright (C) 2023 TechMahindra Ltd.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -71,10 +71,7 @@ public class FragmentEntityArranger {
private static FragmentEntity toFragmentEntity(final AnchorEntity anchorEntity,
final FragmentExtract fragmentExtract) {
final FragmentEntity fragmentEntity = new FragmentEntity();
- if (anchorEntity != null) {
- fragmentEntity.setAnchor(anchorEntity);
- fragmentEntity.setDataspace(anchorEntity.getDataspace());
- }
+ fragmentEntity.setAnchor(anchorEntity);
fragmentEntity.setId(fragmentExtract.getId());
fragmentEntity.setXpath(fragmentExtract.getXpath());
fragmentEntity.setAttributes(fragmentExtract.getAttributes());
diff --git a/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java b/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java
index d0154e116..890941bf3 100644
--- a/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java
+++ b/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java
@@ -218,7 +218,6 @@ public class CpsDataPersistenceServiceImpl implements CpsDataPersistenceService
private FragmentEntity toFragmentEntity(final AnchorEntity anchorEntity, final DataNode dataNode) {
return FragmentEntity.builder()
- .dataspace(anchorEntity.getDataspace())
.anchor(anchorEntity)
.xpath(dataNode.getXpath())
.attributes(jsonObjectMapper.asJsonString(dataNode.getLeaves()))
diff --git a/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentQueryBuilder.java b/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentQueryBuilder.java
index 76cfaa89f..72750dcc9 100644
--- a/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentQueryBuilder.java
+++ b/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentQueryBuilder.java
@@ -88,8 +88,14 @@ public class FragmentQueryBuilder {
final StringBuilder sqlStringBuilder = new StringBuilder();
final Map<String, Object> queryParameters = new HashMap<>();
- sqlStringBuilder.append("SELECT * FROM fragment WHERE ");
- addDataspaceOrAnchor(sqlStringBuilder, queryParameters, dataspaceEntity, anchorEntity);
+ if (anchorEntity == ACROSS_ALL_ANCHORS) {
+ sqlStringBuilder.append("SELECT fragment.* FROM fragment JOIN anchor ON anchor.id = fragment.anchor_id"
+ + " WHERE dataspace_id = :dataspaceId");
+ queryParameters.put("dataspaceId", dataspaceEntity.getId());
+ } else {
+ sqlStringBuilder.append("SELECT * FROM fragment WHERE anchor_id = :anchorId");
+ queryParameters.put("anchorId", anchorEntity.getId());
+ }
addXpathSearch(cpsPathQuery, sqlStringBuilder, queryParameters);
addLeafConditions(cpsPathQuery, sqlStringBuilder);
addTextFunctionCondition(cpsPathQuery, sqlStringBuilder, queryParameters);
@@ -100,19 +106,6 @@ public class FragmentQueryBuilder {
return query;
}
- private static void addDataspaceOrAnchor(final StringBuilder sqlStringBuilder,
- final Map<String, Object> queryParameters,
- final DataspaceEntity dataspaceEntity,
- final AnchorEntity anchorEntity) {
- if (anchorEntity == ACROSS_ALL_ANCHORS) {
- sqlStringBuilder.append("dataspace_id = :dataspaceId");
- queryParameters.put("dataspaceId", dataspaceEntity.getId());
- } else {
- sqlStringBuilder.append("anchor_id = :anchorId");
- queryParameters.put("anchorId", anchorEntity.getId());
- }
- }
-
private static void addXpathSearch(final CpsPathQuery cpsPathQuery,
final StringBuilder sqlStringBuilder,
final Map<String, Object> queryParameters) {
diff --git a/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentRepository.java b/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentRepository.java
index a2763184a..2691be984 100755
--- a/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentRepository.java
+++ b/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentRepository.java
@@ -54,7 +54,10 @@ public interface FragmentRepository extends JpaRepository<FragmentEntity, Long>,
return findByAnchorIdAndXpathIn(anchorEntity.getId(), xpaths.toArray(new String[0]));
}
- List<FragmentEntity> findByDataspaceIdAndXpathIn(int dataspaceId, String[] xpaths);
+ @Query(value = "SELECT fragment.* FROM fragment JOIN anchor ON anchor.id = fragment.anchor_id "
+ + "WHERE dataspace_id = :dataspaceId AND xpath = ANY (:xpaths)", nativeQuery = true)
+ List<FragmentEntity> findByDataspaceIdAndXpathIn(@Param("dataspaceId") int dataspaceId,
+ @Param("xpaths") String[] xpaths);
default List<FragmentEntity> findByDataspaceAndXpathIn(final DataspaceEntity dataspaceEntity,
final Collection<String> xpaths) {