package com.sun.j2ee.blueprints.petstore.tools.populate;
import java.util.*;
import java.sql.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
public class ProductPopulator {
public static final String XML_PRODUCTS = "Products";
static final String XML_PRODUCT = "Product";
static final String XML_ID = "Product/@id";
public static final String XML_CATEGORY = "Product/@category";
private static final String[] PARAMETER_NAMES = { XML_ID, XML_CATEGORY };
private String rootTag;
private Map sqlStatements;
private ProductDetailsPopulator productDetailsPopulator;
public ProductPopulator(Map sqlStatements) throws PopulateException {
this(XML_PRODUCTS, sqlStatements);
return;
}
public ProductPopulator(String rootTag, Map sqlStatements) throws PopulateException {
this.rootTag = rootTag;
this.sqlStatements = sqlStatements;
productDetailsPopulator = new ProductDetailsPopulator(XML_PRODUCT, sqlStatements);
return;
}
public XMLFilter setup(XMLReader reader, final Connection connection) {
return new XMLDBHandler(productDetailsPopulator.setup(reader, connection), rootTag, XML_PRODUCT, true) {
public void update() throws PopulateException {}
public void create() throws PopulateException {
if (connection == null) {
PopulateUtils.printSQLStatement(sqlStatements, PopulateUtils.makeSQLStatementKey(PopulateUtils.INSERT_OPERATION, "product"), PARAMETER_NAMES, this);
} else {
PopulateUtils.executeSQLStatement(connection, sqlStatements, PopulateUtils.makeSQLStatementKey(PopulateUtils.INSERT_OPERATION, "product"), PARAMETER_NAMES, this);
}
}
};
}
public boolean check(Connection connection) throws PopulateException {
return PopulateUtils.executeSQLStatement(connection, sqlStatements, PopulateUtils.makeSQLStatementKey(PopulateUtils.CHECK_OPERATION, "product"), null, null) && productDetailsPopulator.check(connection);
}
public void dropTables(Connection connection) throws PopulateException {
try {
productDetailsPopulator.dropTables(connection);
} catch (PopulateException exception) {}
PopulateUtils.executeSQLStatement(connection, sqlStatements, PopulateUtils.makeSQLStatementKey(PopulateUtils.DROP_OPERATION, "product"), null, null);
return;
}
public void createTables(Connection connection) throws PopulateException {
PopulateUtils.executeSQLStatement(connection, sqlStatements, PopulateUtils.makeSQLStatementKey(PopulateUtils.CREATE_OPERATION, "product"), null, null);
productDetailsPopulator.createTables(connection);
return;
}
}