
java.fedora.server.utilities.TableCreatingConnection Maven / Gradle / Ivy
Show all versions of fcrepo-client Show documentation
/*
* -----------------------------------------------------------------------------
*
* License and Copyright: The contents of this file are subject to the
* Apache License, Version 2.0 (the "License"); you may not use
* this file except in compliance with the License. You may obtain a copy of
* the License at
* http://www.fedora-commons.org/licenses.
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
*
* The entire file consists of original code.
* Copyright © 2008 Fedora Commons, Inc.
*
Copyright © 2002-2007 The Rector and Visitors of the University of
* Virginia and Cornell University
* All rights reserved.
*
* -----------------------------------------------------------------------------
*/
package fedora.server.utilities;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Iterator;
/**
*
* Title: TableCreatingConnection.java
* Description: A ConnectionWrapper that creates tables on the
* target database given a TableSpec.
*
* @author [email protected]
* @version $Id: TableCreatingConnection.java 3966 2005-04-21 13:33:01Z rlw $
*/
public class TableCreatingConnection
extends ConnectionWrapper {
private DDLConverter m_converter;
/**
* Constructs a TableCreatingConnection.
*
* @param wrapped The wrapped connection.
* @param converter A converter that can translate from a TableSpec to
* DB-specific DDL.
*/
public TableCreatingConnection(Connection wrapped, DDLConverter converter) {
super(wrapped);
m_converter=converter;
}
/**
* Get the DDLConverter this TableCreatingConnection works with.
*
* @return The converter.
*/
public DDLConverter getDDLConverter() {
return m_converter;
}
/**
* Creates a table in the target database.
*
* This method may execute more than one update
* command and it ignores the transaction state of
* the connection.
*
* @param spec A description of the table to be created.
*/
public void createTable(TableSpec spec)
throws SQLException {
Statement s=createStatement();
Iterator iter=m_converter.getDDL(spec).iterator();
while (iter.hasNext()) {
String updateSQL=(String) iter.next();
s.executeUpdate(updateSQL);
}
}
}