Index: src/edu/ucsb/nceas/metacat/QuerySpecification.java
===================================================================
--- src/edu/ucsb/nceas/metacat/QuerySpecification.java	(revision 4334)
+++ src/edu/ucsb/nceas/metacat/QuerySpecification.java	(revision 4335)
@@ -33,11 +33,9 @@
 import java.io.Reader;
 import java.io.StringReader;
 import java.util.Enumeration;
-import java.util.Hashtable;
 import java.util.Stack;
 import java.util.Vector;
 
-import edu.ucsb.nceas.dbadapter.AbstractDatabase;
 import edu.ucsb.nceas.metacat.util.MetaCatUtil;
 
 import org.apache.log4j.Logger;
@@ -109,8 +107,6 @@
 
     private String accNumberSeparator = null;
 
-    private static final AbstractDatabase dbAdapter = MetaCatUtil.dbAdapter;
-
     private boolean percentageSearch = false;
 
     private String userName = null;
Index: src/edu/ucsb/nceas/metacat/MetacatReplication.java
===================================================================
--- src/edu/ucsb/nceas/metacat/MetacatReplication.java	(revision 4334)
+++ src/edu/ucsb/nceas/metacat/MetacatReplication.java	(revision 4335)
@@ -36,7 +36,7 @@
 import javax.servlet.*;
 import javax.servlet.http.*;
 
-import edu.ucsb.nceas.dbadapter.AbstractDatabase;
+import edu.ucsb.nceas.metacat.service.DatabaseService;
 import edu.ucsb.nceas.metacat.service.PropertyService;
 import edu.ucsb.nceas.metacat.service.SessionService;
 import edu.ucsb.nceas.metacat.util.LDAPUtil;
@@ -43,7 +43,6 @@
 import edu.ucsb.nceas.metacat.util.MetaCatUtil;
 import edu.ucsb.nceas.metacat.util.SessionData;
 import edu.ucsb.nceas.metacat.util.SystemUtil;
-import edu.ucsb.nceas.utilities.FileUtil;
 import edu.ucsb.nceas.utilities.GeneralPropertyException;
 import edu.ucsb.nceas.utilities.PropertyNotFoundException;
 
@@ -52,6 +51,8 @@
 
 public class MetacatReplication extends HttpServlet implements Runnable
 {
+
+  private static final long serialVersionUID = -2898600143193513155L;
   private long timeInterval;
   private Date firstTime;
   private boolean timedReplicationIsOn = false;
@@ -58,7 +59,6 @@
   Timer replicationDaemon;
   private Vector fileLocks = new Vector();
   private Thread lockThread = null;
-  private static final AbstractDatabase dbAdapter = MetaCatUtil.dbAdapter;
   public static final String FORCEREPLICATEDELETE = "forcereplicatedelete";
   private static final String TIMEREPLICATION = "replication.timedreplication";
   private static final String TIMEREPLICATIONINTERVAl = "replication.timedreplicationinterval";
@@ -407,7 +407,7 @@
         pstmt = dbConn.prepareStatement("INSERT INTO xml_replication " +
                   "(server, last_checked, replicate, datareplicate, hub) " +
                                       "VALUES ('" + server + "', "+
-                                      dbAdapter.toDate("01/01/1980", "MM/DD/YYYY")
+                                      DatabaseService.getDBAdapter().toDate("01/01/1980", "MM/DD/YYYY")
                                       + ", '" +
                                       replicate +"', '" +dataReplicate+"', '"
                                       + hub +"')");
@@ -1213,7 +1213,7 @@
 
       // Get correct docid that reside on this server according the requesting
       // server's replicate and data replicate value in xml_replication table
-      docsql.append(dbAdapter.getReplicationDocumentListSQL());
+      docsql.append(DatabaseService.getDBAdapter().getReplicationDocumentListSQL());
       //docsql.append("select docid, rev, doctype from xml_documents where (docid not in (select a.docid from xml_documents a, xml_revisions b where a.docid=b.docid and a.rev<=b.rev)) ");
       revisionSql.append("select docid, rev, doctype from xml_revisions ");
       // If the localhost is not a hub to the remote server, only replicate
Index: src/edu/ucsb/nceas/metacat/IndexingTimerTask.java
===================================================================
--- src/edu/ucsb/nceas/metacat/IndexingTimerTask.java	(revision 4334)
+++ src/edu/ucsb/nceas/metacat/IndexingTimerTask.java	(revision 4335)
@@ -33,6 +33,7 @@
 import java.util.Vector;
 import java.util.Iterator;
 
+import edu.ucsb.nceas.metacat.service.DatabaseService;
 import edu.ucsb.nceas.metacat.service.PropertyService;
 import edu.ucsb.nceas.metacat.util.MetaCatUtil;
 
@@ -89,7 +90,7 @@
 	    		}
 	    		
 	    		String xmlDocumentsCheck = 
-	    			MetaCatUtil.dbAdapter.getLeftJoinQuery("a.docid, a.rev", "xml_documents", 
+	    			DatabaseService.getDBAdapter().getLeftJoinQuery("a.docid, a.rev", "xml_documents", 
 	    					"xml_index", "a.docid = b.docid", nonJoinCriteria);
 
 	    		PreparedStatement xmlDocCheck = dbConn.prepareStatement(xmlDocumentsCheck);
Index: src/edu/ucsb/nceas/metacat/DocumentImpl.java
===================================================================
--- src/edu/ucsb/nceas/metacat/DocumentImpl.java	(revision 4334)
+++ src/edu/ucsb/nceas/metacat/DocumentImpl.java	(revision 4335)
@@ -41,7 +41,6 @@
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
-import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -49,7 +48,7 @@
 import java.util.TreeSet;
 import java.util.Vector;
 
-import edu.ucsb.nceas.dbadapter.AbstractDatabase;
+import edu.ucsb.nceas.metacat.service.DatabaseService;
 import edu.ucsb.nceas.metacat.service.PropertyService;
 import edu.ucsb.nceas.metacat.spatial.SpatialHarvester;
 import edu.ucsb.nceas.metacat.util.LDAPUtil;
@@ -63,7 +62,6 @@
 import org.xml.sax.EntityResolver;
 import org.xml.sax.ErrorHandler;
 import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
 import org.xml.sax.helpers.XMLReaderFactory;
 
@@ -127,7 +125,6 @@
     static final int ALL = 1;
     static final int WRITE = 2;
     static final int READ = 4;
-    protected static final AbstractDatabase dbAdapter = MetaCatUtil.dbAdapter;
     protected DBConnection connection = null;
     //protected String updatedVersion = null;
     protected String docname = null;
@@ -459,7 +456,7 @@
       
       PreparedStatement pstmt = null;
       int revision = (new Integer(rev)).intValue();
-      String sqlDateString = dbAdapter.getDateTimeFunction();
+      String sqlDateString = DatabaseService.getDBAdapter().getDateTimeFunction();
       if (createDate == null)
       {
           createDate = sqlDateString;
@@ -466,7 +463,7 @@
       }
       else
       {
-          createDate = dbAdapter.toDate(createDate, "YYYY-MM-DD HH24:MI:SS");
+          createDate = DatabaseService.getDBAdapter().toDate(createDate, "YYYY-MM-DD HH24:MI:SS");
       }
       
       if (updateDate == null)
@@ -475,7 +472,7 @@
       }
       else
       {
-          updateDate = dbAdapter.toDate(updateDate, "YYYY-MM-DD HH24:MI:SS");
+          updateDate = DatabaseService.getDBAdapter().toDate(updateDate, "YYYY-MM-DD HH24:MI:SS");
       }
       try
       {
@@ -1001,7 +998,7 @@
         } else {
             out = new PrintWriter(pw);
         }
-
+       
         // Here add code to handle subtree access control
         /*
          * PermissionController control = new PermissionController(docid);
@@ -1258,6 +1255,7 @@
                 // Any other types of nodes are not handled.
                 // Probably should throw an exception here to indicate this
             }
+            
             out.flush();
         }
 
@@ -1863,7 +1861,7 @@
         String nodeprefix = null;
         String nodedata = null;
         float nodedatanumerical = -1;
-        String quotechar = dbAdapter.getStringDelimiter();
+        String quotechar = DatabaseService.getDBAdapter().getStringDelimiter();
         String table = "xml_nodes";
         //System.out.println("in getNodeREcorelist !!!!!!!!!!!for root node id "+rootnodeid);
         try {
@@ -1950,7 +1948,7 @@
             String catalogid, int serverCode, String createDate, String updateDate) throws SQLException, Exception
     {
         //System.out.println("!!!!!!!!1write document to db  " +docid +"."+rev);
-        String sysdate = dbAdapter.getDateTimeFunction();
+        String sysdate = DatabaseService.getDBAdapter().getDateTimeFunction();
         if (createDate == null)
         {
             createDate = sysdate;
@@ -1957,7 +1955,7 @@
         }
         else
         {
-            createDate = dbAdapter.toDate(createDate, "YYYY-MM-DD HH24:MI:SS");
+            createDate = DatabaseService.getDBAdapter().toDate(createDate, "YYYY-MM-DD HH24:MI:SS");
         }
         if (updateDate == null)
         {
@@ -1965,7 +1963,7 @@
         }
         else
         {
-            updateDate = dbAdapter.toDate(updateDate, "YYYY-MM-DD HH24:MI:SS");
+            updateDate = DatabaseService.getDBAdapter().toDate(updateDate, "YYYY-MM-DD HH24:MI:SS");
         }
         DocumentImpl thisdoc = null;
 
@@ -3187,7 +3185,7 @@
     private static void archiveDocAndNodesRevison(DBConnection dbconn, String docid, 
                                      String user, long rootNodeId) throws Exception
     {
-        String sysdate = dbAdapter.getDateTimeFunction();
+        String sysdate = DatabaseService.getDBAdapter().getDateTimeFunction();
         //DBConnection conn = null;
         //int serialNumber = -1;
         PreparedStatement pstmt = null;
@@ -3273,7 +3271,7 @@
     /** Save a document entry in the xml_revisions table */
     private static void archiveDocRevision(String docid, String user, DBConnection conn) throws Exception
     {
-        String sysdate = dbAdapter.getDateTimeFunction();
+        String sysdate = DatabaseService.getDBAdapter().getDateTimeFunction();
         PreparedStatement pstmt = null;
 
         // create a record in xml_revisions table
@@ -3521,7 +3519,7 @@
                         .prepareStatement("INSERT INTO xml_replication "
                                 + "(server, last_checked, replicate, datareplicate, hub) "
                                 + "VALUES ('" + server + "', "
-                                + dbAdapter.toDate("01/01/1980", "MM/DD/YYYY")
+                                + DatabaseService.getDBAdapter().toDate("01/01/1980", "MM/DD/YYYY")
                                 + ", '" + replicate + "', '" + dataReplicate
                                 + "','" + hub + "')");
 
@@ -3717,20 +3715,20 @@
             
             if (createDate == null)
             {
-                createDate = dbAdapter.getDateTimeFunction();
+                createDate = DatabaseService.getDBAdapter().getDateTimeFunction();
             }
             else
             {
-                createDate = dbAdapter.toDate(createDate, "YYYY-MM-DD HH24:MI:SS");
+                createDate = DatabaseService.getDBAdapter().toDate(createDate, "YYYY-MM-DD HH24:MI:SS");
             }
             logMetacat.info("the create date is "+createDate);
             if (updateDate == null)
             {
-                updateDate = dbAdapter.getDateTimeFunction();
+                updateDate = DatabaseService.getDBAdapter().getDateTimeFunction();
             }
             else
             {
-                updateDate = dbAdapter.toDate(updateDate, "YYYY-MM-DD HH24:MI:SS");
+                updateDate = DatabaseService.getDBAdapter().toDate(updateDate, "YYYY-MM-DD HH24:MI:SS");
             }
             logMetacat.info("the update date is "+updateDate);
             PreparedStatement pstmt = null;
Index: src/edu/ucsb/nceas/metacat/ReplicationHandler.java
===================================================================
--- src/edu/ucsb/nceas/metacat/ReplicationHandler.java	(revision 4334)
+++ src/edu/ucsb/nceas/metacat/ReplicationHandler.java	(revision 4335)
@@ -26,7 +26,7 @@
 
 package edu.ucsb.nceas.metacat;
 
-import edu.ucsb.nceas.dbadapter.AbstractDatabase;
+import edu.ucsb.nceas.metacat.service.DatabaseService;
 import edu.ucsb.nceas.metacat.service.PropertyService;
 import edu.ucsb.nceas.metacat.util.MetaCatUtil;
 import edu.ucsb.nceas.utilities.PropertyNotFoundException;
@@ -64,7 +64,7 @@
   int serverCheckCode = 1;
   ReplicationServerList serverList = null;
   //PrintWriter out;
-  private static final AbstractDatabase dbAdapter = MetaCatUtil.dbAdapter;
+//  private static final AbstractDatabase dbAdapter = MetaCatUtil.dbAdapter;
   private static Logger logMetacat = Logger.getLogger(ReplicationHandler.class);
   private static int DOCINSERTNUMBER = 1;
   private static int DOCERRORNUMBER  = 1;
@@ -613,7 +613,7 @@
          sql.append(datestr).append("', 'YY-MM-DD HH24:MI:SS') where ");
          sql.append("server like '").append(server).append("'");*/
          sql.append("update xml_replication set last_checked = ");
-         sql.append(dbAdapter.toDate(datestr, "MM/DD/YY HH24:MI:SS"));
+         sql.append(DatabaseService.getDBAdapter().toDate(datestr, "MM/DD/YY HH24:MI:SS"));
          sql.append(" where server like '").append(server).append("'");
          pstmt = dbConn.prepareStatement(sql.toString());
 
Index: src/edu/ucsb/nceas/metacat/DBSAXNode.java
===================================================================
--- src/edu/ucsb/nceas/metacat/DBSAXNode.java	(revision 4334)
+++ src/edu/ucsb/nceas/metacat/DBSAXNode.java	(revision 4335)
@@ -27,15 +27,12 @@
 package edu.ucsb.nceas.metacat;
 
 import java.sql.*;
-import java.io.IOException;
 import java.util.Hashtable;
 import java.util.Enumeration;
-//import oracle.jdbc.driver.*;
 import org.apache.log4j.Logger;
 import org.xml.sax.SAXException;
 
-import edu.ucsb.nceas.dbadapter.AbstractDatabase;
-import edu.ucsb.nceas.metacat.util.MetaCatUtil;
+import edu.ucsb.nceas.metacat.service.DatabaseService;
 
 /**
  * A Class that represents an XML node and its contents and
@@ -45,7 +42,6 @@
 
   private DBConnection	connection;
   private DBSAXNode	parentNode;
-  private static final AbstractDatabase dbAdapter = MetaCatUtil.dbAdapter;
   private Logger logMetacat = Logger.getLogger(DBSAXNode.class);
 
   /**
@@ -207,7 +203,7 @@
       pstmt.close();
 
       // get the generated unique id afterward
-      nid = dbAdapter.getUniqueID(connection.getConnections(), "xml_nodes");
+      nid = DatabaseService.getDBAdapter().getUniqueID(connection.getConnections(), "xml_nodes");
       //should incease connection usage!!!!!!
 
 
@@ -339,7 +335,7 @@
       pstmt.close();
 
       // get the generated unique id afterward
-      nid = dbAdapter.getUniqueID(connection.getConnections(), "xml_nodes");
+      nid = DatabaseService.getDBAdapter().getUniqueID(connection.getConnections(), "xml_nodes");
       //should incease connection usage!!!!!!
 
     } catch (SQLException e) {
Index: src/edu/ucsb/nceas/metacat/service/DatabaseService.java
===================================================================
--- src/edu/ucsb/nceas/metacat/service/DatabaseService.java	(nonexistent)
+++ src/edu/ucsb/nceas/metacat/service/DatabaseService.java	(revision 4335)
@@ -0,0 +1,94 @@
+/**
+ *  '$RCSfile$'
+ *    Purpose: A Class that implements database utility methods 
+ *  Copyright: 2008 Regents of the University of California and the
+ *             National Center for Ecological Analysis and Synthesis
+ *    Authors: Michael Daigle
+ * 
+ *   '$Author: daigle $'
+ *     '$Date: 2008-08-22 16:23:38 -0700 (Fri, 22 Aug 2008) $'
+ * '$Revision: 4297 $'
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+package edu.ucsb.nceas.metacat.service;
+
+import org.apache.log4j.Logger;
+
+import edu.ucsb.nceas.dbadapter.AbstractDatabase;
+
+public class DatabaseService implements ServiceInterface {
+	
+	private static DatabaseService databaseService = null;
+	private static AbstractDatabase dbAdapter;	
+	private static Logger logMetacat = Logger.getLogger(DatabaseService.class);
+
+	/**
+	 * private constructor since this is a singleton
+	 */
+	private DatabaseService() {
+    	// Determine our db adapter class and create an instance of that class
+        try {
+            dbAdapter = (AbstractDatabase) createObject(PropertyService.getProperty("database.adapter"));
+        } catch (Exception e) {
+            logMetacat.error("Could not create dbAdaptor" + e.getMessage());
+            e.printStackTrace();
+        }
+	}
+	
+	/**
+	 * Get the single instance of AuthAdmin.
+	 * 
+	 * @return the single instance of AuthAdmin
+	 */
+	public static DatabaseService getInstance() {
+		if (databaseService == null) {
+			databaseService = new DatabaseService();
+		}
+		return databaseService;
+	}
+	
+    /**
+	 * Instantiate a class using the name of the class at runtime
+	 *
+	 * @param className the fully qualified name of the class to instantiate
+	 */
+	public static Object createObject(String className) throws Exception {
+
+		Object object = null;
+		try {
+			Class classDefinition = Class.forName(className);
+			object = classDefinition.newInstance();
+		} catch (InstantiationException e) {
+			throw e;
+		} catch (IllegalAccessException e) {
+			throw e;
+		} catch (ClassNotFoundException e) {
+			throw e;
+		}
+		return object;
+	}
+	
+	/**
+	 * gets the database adapter
+	 * 
+	 * @return AbstractDatabase object for this application's database adapter.
+	 */
+	public static AbstractDatabase getDBAdapter() {
+		return dbAdapter;
+	}
+
+}

Property changes on: src/edu/ucsb/nceas/metacat/service/DatabaseService.java
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: src/edu/ucsb/nceas/metacat/AccessionNumber.java
===================================================================
--- src/edu/ucsb/nceas/metacat/AccessionNumber.java	(revision 4334)
+++ src/edu/ucsb/nceas/metacat/AccessionNumber.java	(revision 4335)
@@ -31,9 +31,7 @@
 import java.sql.ResultSet;
 import java.sql.SQLException;
 
-import edu.ucsb.nceas.dbadapter.AbstractDatabase;
 import edu.ucsb.nceas.metacat.service.PropertyService;
-import edu.ucsb.nceas.metacat.util.MetaCatUtil;
 import edu.ucsb.nceas.utilities.PropertyNotFoundException;
 
 /**
@@ -46,8 +44,6 @@
  */
 public class AccessionNumber  {
 
-  private static final AbstractDatabase dbAdapter = MetaCatUtil.dbAdapter;
-
   private String sitecode = null;
   private String sep = null;
   private String docid = null;
Index: src/edu/ucsb/nceas/metacat/util/MetaCatUtil.java
===================================================================
--- src/edu/ucsb/nceas/metacat/util/MetaCatUtil.java	(revision 4334)
+++ src/edu/ucsb/nceas/metacat/util/MetaCatUtil.java	(revision 4335)
@@ -32,12 +32,9 @@
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.net.MalformedURLException;
-import java.util.HashMap;
 import java.util.Hashtable;
-import java.util.Properties;
 import java.util.Stack;
 import java.util.Vector;
-import java.util.regex.PatternSyntaxException;
 
 import org.apache.log4j.Logger;
 
@@ -69,16 +66,7 @@
     private static char separator = '.';
 
     static {
-    	// Determine our db adapter class and create an instance of that class
         try {
-            dbAdapter = (AbstractDatabase) createObject(PropertyService.getProperty("database.adapter"));
-        } catch (Exception e) {
-            System.err.println("Error in MetaCatUtil static block:"
-                    + e.getMessage());
-            e.printStackTrace();
-        }
-
-        try {
         	separator = PropertyService.getProperty("document.accNumSeparator").charAt(0);
         } catch (PropertyNotFoundException pnfe) {
         	logMetacat.error("Could not retrieve account number separator. " 
@@ -85,29 +73,7 @@
         			+ "Separator set to '.' : " + pnfe.getMessage());
         }
     }
-    
-    /**
-     * Instantiate a class using the name of the class at runtime
-     *
-     * @param className the fully qualified name of the class to instantiate
-     */
-    public static Object createObject(String className) throws Exception
-    {
 
-        Object object = null;
-        try {
-            Class classDefinition = Class.forName(className);
-            object = classDefinition.newInstance();
-        } catch (InstantiationException e) {
-            throw e;
-        } catch (IllegalAccessException e) {
-            throw e;
-        } catch (ClassNotFoundException e) {
-            throw e;
-        }
-        return object;
-    }
-
     /**
      * Utility method to parse the query part of a URL into parameters. This
      * method assumes the format of the query par tof the url is an ampersand
Index: src/edu/ucsb/nceas/metacat/ReplicationServerList.java
===================================================================
--- src/edu/ucsb/nceas/metacat/ReplicationServerList.java	(revision 4334)
+++ src/edu/ucsb/nceas/metacat/ReplicationServerList.java	(revision 4335)
@@ -27,8 +27,7 @@
 
 package edu.ucsb.nceas.metacat;
 
-import edu.ucsb.nceas.dbadapter.AbstractDatabase;
-import edu.ucsb.nceas.metacat.util.MetaCatUtil;
+import edu.ucsb.nceas.metacat.service.DatabaseService;
 
 import java.util.Vector;
 import java.sql.*;
@@ -42,7 +41,6 @@
 public class ReplicationServerList
 {
   private static Vector serverList = null; //Vector to store server list
-  private static final AbstractDatabase dbAdapter = MetaCatUtil.dbAdapter;
   private static Logger logMetacat = Logger.getLogger(ReplicationServer.class);
 
   /**
@@ -456,7 +454,7 @@
         pStmt = dbConn.prepareStatement("INSERT INTO xml_replication " +
                       "(server, last_checked, replicate, datareplicate, hub) "+
                        "VALUES ('" + givenServerName + "', "+
-                        dbAdapter.toDate("01/01/1980","MM/DD/YYYY") + ", '" +
+                        DatabaseService.getDBAdapter().toDate("01/01/1980","MM/DD/YYYY") + ", '" +
                        replicate +"', '"+dataReplicate+"','"+ hub + "')");
         pStmt.execute();
        
Index: src/edu/ucsb/nceas/metacat/AccessControlList.java
===================================================================
--- src/edu/ucsb/nceas/metacat/AccessControlList.java	(revision 4334)
+++ src/edu/ucsb/nceas/metacat/AccessControlList.java	(revision 4335)
@@ -47,6 +47,7 @@
 import org.xml.sax.helpers.XMLReaderFactory;
 import org.xml.sax.helpers.DefaultHandler;
 
+import edu.ucsb.nceas.metacat.service.DatabaseService;
 import edu.ucsb.nceas.metacat.service.PropertyService;
 import edu.ucsb.nceas.metacat.util.MetaCatUtil;
 import edu.ucsb.nceas.metacat.util.SystemUtil;
@@ -62,8 +63,8 @@
 {
 
  
-  private static String sysdate = MetaCatUtil.dbAdapter.getDateTimeFunction();
-  private static String isnull = MetaCatUtil.dbAdapter.getIsNULLFunction();
+  private static String sysdate = DatabaseService.getDBAdapter().getDateTimeFunction();
+  private static String isnull = DatabaseService.getDBAdapter().getIsNULLFunction();
   
   private DBConnection connection;
   private String parserName;
