X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cps-ri%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fcps%2Fspi%2Frepository%2FModuleReferenceRepositoryImpl.java;h=454848b98f49698bc2e7cacd6ebe64a5b2574708;hb=a01f8861a84931f4bdf2d69fa05a793afabc22e0;hp=681bbcddec269c98c578f45a4f4ed85557ee35d8;hpb=1410509e33142c0c79ff0e111c63abc47f5936d3;p=cps.git diff --git a/cps-ri/src/main/java/org/onap/cps/spi/repository/ModuleReferenceRepositoryImpl.java b/cps-ri/src/main/java/org/onap/cps/spi/repository/ModuleReferenceRepositoryImpl.java index 681bbcdde..454848b98 100644 --- a/cps-ri/src/main/java/org/onap/cps/spi/repository/ModuleReferenceRepositoryImpl.java +++ b/cps-ri/src/main/java/org/onap/cps/spi/repository/ModuleReferenceRepositoryImpl.java @@ -20,13 +20,13 @@ package org.onap.cps.spi.repository; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashSet; import java.util.List; -import java.util.UUID; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import lombok.AllArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -41,6 +41,8 @@ public class ModuleReferenceRepositoryImpl implements ModuleReferenceQuery { @PersistenceContext private EntityManager entityManager; + private TempTableCreator tempTableCreator; + @Override @SneakyThrows public Collection identifyNewModuleReferences( @@ -50,42 +52,18 @@ public class ModuleReferenceRepositoryImpl implements ModuleReferenceQuery { return Collections.emptyList(); } - final String tempTableName = "moduleReferencesToCheckTemp" - + UUID.randomUUID().toString().replace("-", ""); - - createTemporaryTable(tempTableName); - insertDataIntoTable(tempTableName, moduleReferencesToCheck); - - return identifyNewModuleReferencesForCmHandle(tempTableName); - } - - private void createTemporaryTable(final String tempTableName) { - final StringBuilder sqlStringBuilder = new StringBuilder("CREATE TEMPORARY TABLE " + tempTableName + "("); - sqlStringBuilder.append(" id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,"); - sqlStringBuilder.append(" module_name varchar NOT NULL,"); - sqlStringBuilder.append(" revision varchar NOT NULL"); - sqlStringBuilder.append(");"); - - entityManager.createNativeQuery(sqlStringBuilder.toString()).executeUpdate(); - } - - private void insertDataIntoTable(final String tempTableName, final Collection moduleReferences) { - final StringBuilder sqlStringBuilder = new StringBuilder("INSERT INTO " + tempTableName); - sqlStringBuilder.append(" (module_name, revision) "); - sqlStringBuilder.append(" VALUES "); - - for (final ModuleReference moduleReference : moduleReferences) { - sqlStringBuilder.append("('"); - sqlStringBuilder.append(moduleReference.getModuleName()); - sqlStringBuilder.append("', '"); - sqlStringBuilder.append(moduleReference.getRevision()); - sqlStringBuilder.append("'),"); + final Collection> sqlData = new HashSet<>(moduleReferencesToCheck.size()); + for (final ModuleReference moduleReference : moduleReferencesToCheck) { + final List row = new ArrayList<>(2); + row.add(moduleReference.getModuleName()); + row.add(moduleReference.getRevision()); + sqlData.add(row); } - // replace last ',' with ';' - sqlStringBuilder.replace(sqlStringBuilder.length() - 1, sqlStringBuilder.length(), ";"); + final String tempTableName = tempTableCreator.createTemporaryTable( + "moduleReferencesToCheckTemp", sqlData, "module_name", "revision"); - entityManager.createNativeQuery(sqlStringBuilder.toString()).executeUpdate(); + return identifyNewModuleReferencesForCmHandle(tempTableName); } private Collection identifyNewModuleReferencesForCmHandle(final String tempTableName) {