/*
* OpenClinica is distributed under the
* GNU Lesser General Public License (GNU LGPL).
* For details see: http://www.openclinica.org/license
* copyright 2003-2005 Akaza Research
*/
package org.akaza.openclinica.dao.core;
import org.apache.commons.digester.Digester;
import org.xml.sax.SAXException;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
// import org.apache.commons.digester.xmlrules.*;
/**
* <P>
* Creates an Apache Commons Digester, which parses SQL queries in XML and then
* stores them in a hashmap, to be accessed later. Idea is to create one XML
* file per Data Access Object, so that SQL syntax can be abstracted out of the
* Java JDBC code.
* </P>
*
* @author thickerson
*
* TODO
*/
public class DAODigester {
private final HashMap queries = new HashMap();
private InputStream fis;
public void run() throws IOException, SAXException {
Digester digester = new Digester();
digester.push(this);
// set up a simple format for grabbing queries through XML
/*
* <queries> <query> <name>userDaoInsert</name> <sql>INSERT INTO USER
* (USER_ID, USER_NAME, USER_PASS) VALUES (USER_ID_SEQ.NEXTVAL,?,?);</sql>
* </query> </queries>
*
*/
digester.addCallMethod("queries/query", "setQuery", 2);
digester.addCallParam("queries/query/name", 0);
digester.addCallParam("queries/query/sql", 1);
digester.parse(fis);
}
public void setQuery(String name, String query) {
queries.put(name, query);
}
public String getQuery(String name) {
return (String) queries.get(name);
}
public void setInputStream(InputStream fis) {
this.fis = fis;
}
}