Revert "Migrate CPS to Spring-boot 3.0"
[cps.git] / cps-ri / src / main / java / org / onap / cps / spi / repository / TempTableCreator.java
index 338b0b1..4c7971e 100644 (file)
 
 package org.onap.cps.spi.repository;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -33,6 +31,7 @@ import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.onap.cps.spi.utils.EscapeUtils;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -60,29 +59,12 @@ public class TempTableCreator {
         final StringBuilder sqlStringBuilder = new StringBuilder("CREATE TEMPORARY TABLE ");
         sqlStringBuilder.append(tempTableName);
         defineColumns(sqlStringBuilder, columnNames);
+        sqlStringBuilder.append(" ON COMMIT DROP;");
         insertData(sqlStringBuilder, tempTableName, columnNames, sqlData);
         entityManager.createNativeQuery(sqlStringBuilder.toString()).executeUpdate();
         return tempTableName;
     }
 
-    /**
-     * Create a uniquely named temporary table with a single column.
-     *
-     * @param prefix     prefix for the table name (so you can recognize it)
-     * @param sqlData    data to insert (strings only); each entry is a single row of data
-     * @param columnName column name
-     * @return a unique temporary table name with given prefix
-     */
-    public String createTemporaryTable(final String prefix,
-                                       final Collection<String> sqlData,
-                                       final String columnName) {
-        final Collection<List<String>> tableData = new ArrayList<>(sqlData.size());
-        for (final String entry : sqlData) {
-            tableData.add(Collections.singletonList(entry));
-        }
-        return createTemporaryTable(prefix, tableData, columnName);
-    }
-
     private static void defineColumns(final StringBuilder sqlStringBuilder, final String[] columnNames) {
         sqlStringBuilder.append('(');
         final Iterator<String> it = Arrays.stream(columnNames).iterator();
@@ -95,7 +77,7 @@ public class TempTableCreator {
                 sqlStringBuilder.append(",");
             }
         }
-        sqlStringBuilder.append(");");
+        sqlStringBuilder.append(")");
     }
 
     private static void insertData(final StringBuilder sqlStringBuilder,
@@ -105,7 +87,7 @@ public class TempTableCreator {
         final Collection<String> sqlInserts = new HashSet<>(sqlData.size());
         for (final Collection<String> rowValues : sqlData) {
             final Collection<String> escapedValues =
-                rowValues.stream().map(it -> escapeSingleQuotesByDoublingThem(it)).collect(Collectors.toList());
+                rowValues.stream().map(EscapeUtils::escapeForSqlStringLiteral).collect(Collectors.toList());
             sqlInserts.add("('" + String.join("','", escapedValues) + "')");
         }
         sqlStringBuilder.append("INSERT INTO ");
@@ -117,8 +99,4 @@ public class TempTableCreator {
         sqlStringBuilder.append(";");
     }
 
-    private static String escapeSingleQuotesByDoublingThem(final String value) {
-        return value.replace("'", "''");
-    }
-
 }