All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.peekmoon.database.walker.DatabaseTaskInsert Maven / Gradle / Ivy

package org.peekmoon.database.walker;

import java.sql.Blob;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;

import org.peekmoon.database.walker.schema.CustomBlob;
import org.peekmoon.database.walker.schema.CustomClob;
import org.peekmoon.database.walker.schema.Table;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DatabaseTaskInsert {
	
	private final static Logger log = LoggerFactory.getLogger(DatabaseTaskDelete.class);

	public void insert(Connection conn, Fragment fragment) throws SQLException {
		for (Set partition : fragment.getInsertOrderedPartitions()) {
			if (partition.size()>1) throw new IllegalStateException("Row graph is not acyclic : " + partition);
			for (Row row : partition) {
				insert(conn, row);
			}
		}		
	}

	private void insert(Connection conn, Row row) throws SQLException {
		Table table = row.getTable();
		String sql = table.getSqlInsert();
		// TODO : mutualize preparedStatement
		List clobs = new LinkedList<>();
		List blobs = new LinkedList<>();
		try (PreparedStatement stmt =  conn.prepareStatement(sql)) {
			log.debug(sql);
			
			for (int i=0; i




© 2015 - 2025 Weber Informatics LLC | Privacy Policy