00001 /** 00002 * C-JDBC: Clustered JDBC. 00003 * Copyright (C) 2002-2004 French National Institute For Research In Computer 00004 * Science And Control (INRIA). 00005 * Contact: c-jdbc@objectweb.org 00006 * 00007 * This library is free software; you can redistribute it and/or modify it 00008 * under the terms of the GNU Lesser General Public License as published by the 00009 * Free Software Foundation; either version 2.1 of the License, or any later 00010 * version. 00011 * 00012 * This library is distributed in the hope that it will be useful, but WITHOUT 00013 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00014 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License 00015 * for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public License 00018 * along with this library; if not, write to the Free Software Foundation, 00019 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 00020 * 00021 * Initial developer(s): Emmanuel Cecchet. 00022 * Contributor(s): ______________________________________. 00023 */ 00024 00025 package org.objectweb.cjdbc.controller.requestmanager; 00026 00027 import java.sql.SQLException; 00028 00029 import org.objectweb.cjdbc.common.sql.AbstractRequest; 00030 import org.objectweb.cjdbc.common.sql.schema.DatabaseSchema; 00031 00032 /** 00033 * This thread is used to process request parsing in background. 00034 * 00035 * @author <a href="mailto:Emmanuel.Cecchet@inria.fr">Emmanuel Cecchet</a> 00036 * @version 1.0 00037 */ 00038 public class ParserThread extends Thread 00039 { 00040 private boolean isCaseSensitive; 00041 private AbstractRequest request; 00042 private DatabaseSchema dbs; 00043 private int granularity; 00044 00045 /** 00046 * Creates a new ParserThread 00047 * 00048 * @param request the request to parse 00049 * @param dbs the database schema 00050 * @param granularity the parsing granularity to use 00051 * @param isCaseSensitive true if parsing is case sensitive 00052 */ 00053 public ParserThread( 00054 AbstractRequest request, 00055 DatabaseSchema dbs, 00056 int granularity, 00057 boolean isCaseSensitive) 00058 { 00059 this.request = request; 00060 this.dbs = dbs; 00061 this.granularity = granularity; 00062 this.isCaseSensitive = isCaseSensitive; 00063 start(); 00064 } 00065 00066 /** 00067 * @see java.lang.Runnable#run() 00068 */ 00069 public void run() 00070 { 00071 try 00072 { 00073 if (!request.isParsed()) 00074 request.parse(dbs, granularity, isCaseSensitive); 00075 } 00076 catch (SQLException e) 00077 { 00078 System.err.println("Error while parsing request (" + e + ")"); 00079 } 00080 } 00081 00082 }