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

org.kuali.common.impex.SchemaRequestHandler Maven / Gradle / Ivy

package org.kuali.common.impex;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.util.List;

import javax.sql.DataSource;

import org.apache.torque.engine.platform.Platform;
import org.kuali.common.impex.service.ImpexContext;
import org.kuali.common.impex.service.ImpexGeneratorService;
import org.kuali.common.threads.ElementHandler;
import org.kuali.common.threads.ListIteratorContext;
import org.springframework.jdbc.datasource.DataSourceUtils;

public class SchemaRequestHandler implements ElementHandler {

	@Override
	public void handleElement(ListIteratorContext context, int index, SchemaRequestBucket element) {
		List requests = element.getRequests();
		DataSource dataSource = element.getDataSource();
		ImpexContext impex = element.getImpexContext();
		Platform platform = impex.getPlatform();
		String schema = impex.getSchema();
		ImpexGeneratorService service = element.getImpexService();
		Connection conn = null;
		try {
			conn = DataSourceUtils.getConnection(dataSource);
			DatabaseMetaData metaData = conn.getMetaData();
			for (SchemaRequest request : requests) {
				if (request.getTable() != null) {
					service.fillInMetaData(impex, request.getTable(), metaData);
				}
				if (request.getView() != null) {
					View view = request.getView();
					String definition = platform.getViewDefinition(metaData.getConnection(), schema, view.getName());
					view.setDefinition(definition);
				}
				if (request.getSequence() != null) {
					Sequence sequence = request.getSequence();
					Long nextVal = platform.getSequenceNextVal(metaData.getConnection(), schema, sequence.getName());
					sequence.setNextVal(nextVal.toString());
				}
				element.getProgressTracker().incrementProgress(1);
			}
		} catch (Exception e) {
			throw new IllegalStateException(e);
		} finally {
			if (conn != null) {
				DataSourceUtils.releaseConnection(conn, dataSource);
			}
		}
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy