Dictionary/src/java/org/thdl/lex/HibernateTestServlet.java

219 lines
5.0 KiB
Java

package org.thdl.lex;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.Iterator;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Query;
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.cfg.Configuration;
import org.thdl.lex.component.IPronunciation;
/**
* Description of the Class
*
* @author travis
* @created October 1, 2003
*/
public class HibernateTestServlet extends HttpServlet {
private SessionFactory sessionFactory;
private Session session;
private Transaction transaction;
/**
* Sets the sessionFactory attribute of the HibernateTestServlet object
*
* @param sessionFactory
* The new sessionFactory value
* @since
*/
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
/**
* Sets the session attribute of the HibernateTestServlet object
*
* @param session
* The new session value
* @since
*/
public void setSession(Session session) {
this.session = session;
}
/**
* Sets the transaction attribute of the HibernateTestServlet object
*
* @param transaction
* The new transaction value
* @since
*/
public void setTransaction(Transaction transaction) {
this.transaction = transaction;
}
/**
* Gets the sessionFactory attribute of the HibernateTestServlet object
*
* @return The sessionFactory value
* @since
*/
public SessionFactory getSessionFactory() {
return sessionFactory;
}
/**
* Gets the session attribute of the HibernateTestServlet object
*
* @return The session value
* @since
*/
public Session getSession() {
return session;
}
/**
* Gets the transaction attribute of the HibernateTestServlet object
*
* @return The transaction value
* @since
*/
public Transaction getTransaction() {
return transaction;
}
/**
* Description of the Method
*
* @param request
* Description of Parameter
* @param response
* Description of Parameter
* @exception ServletException
* Description of Exception
* @exception IOException
* Description of Exception
* @since
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
initHibernate();
//response.setContentType( "text/html" );
response.setContentType("text/html;charset=UTF-8;");
request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.println("<html><body>");
beginTransaction();
testQuery(out);
endTransaction(false);
LexLogger.logRequestState(request);
LexLogger.logResponseState(response);
out.println("</body></html>");
} catch (SQLException e) {
try {
getSession().close();
throw new ServletException(e);
} catch (HibernateException he) {
throw new ServletException(he);
}
} catch (HibernateException e) {
try {
getSession().close();
throw new ServletException(e);
} catch (HibernateException he) {
throw new ServletException(he);
}
}
}
// Helper Methods
/**
* Description of the Method
*
* @exception HibernateException
* Description of Exception
* @since
*/
private void initHibernate() throws HibernateException {
// Load Configuration and build SessionFactory
setSessionFactory(new Configuration().configure().buildSessionFactory());
}
/**
* Description of the Method
*
* @exception HibernateException
* Description of Exception
* @since
*/
private void beginTransaction() throws HibernateException {
setSession(getSessionFactory().openSession());
setTransaction(session.beginTransaction());
}
/**
* Description of the Method
*
* @param commit
* Description of Parameter
* @exception HibernateException
* Description of Exception
* @since
*/
private void endTransaction(boolean commit) throws HibernateException {
if (commit) {
getTransaction().commit();
} else {
// Don't commit the transaction, can be faster for read-only
// operations
getTransaction().rollback();
}
getSession().close();
}
/**
* A unit test for JUnit
*
* @param out
* Description of Parameter
* @exception SQLException
* Description of Exception
* @exception HibernateException
* Description of Exception
* @since
*/
public void testQuery(PrintWriter out) throws SQLException,
HibernateException {
String queryString = "FROM org.thdl.lex.component.Pronunciation";
Query query = getSession().createQuery(queryString);
for (Iterator it = query.iterate(); it.hasNext();) {
String s = ((IPronunciation) it.next()).getPhonetics();
out.println(s + "<br/>");
LexLogger.debug("Diacritics Test: " + s);
}
}
}