Package com.esri.gpt.framework.sql

Source Code of com.esri.gpt.framework.sql.BaseDao

/* See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* Esri Inc. licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.esri.gpt.framework.sql;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;

import com.esri.gpt.framework.collection.StringAttributeMap;
import com.esri.gpt.framework.context.ApplicationConfiguration;
import com.esri.gpt.framework.context.RequestContext;
import com.esri.gpt.framework.util.LogUtil;
import com.esri.gpt.framework.util.Val;

/**
* Super-class for a database access object.
*/
public class BaseDao {
 
// class variables =============================================================

// instance variables ==========================================================
private RequestContext _requestContext;

// constructors ================================================================

/** Default constructor. */
protected BaseDao() {}

/**
* Constructs with an associated request context.
* @param requestContext the request context
*/
public BaseDao(RequestContext requestContext) {
  setRequestContext(requestContext);
}

// properties ==================================================================

/**
* Gets the application configuration.
* @return the application configuration
*/
public ApplicationConfiguration getApplicationConfiguration() {
  return _requestContext.getApplicationContext().getConfiguration();
}

/**
* Gets the associated request context.
* @return the request context
*/
public RequestContext getRequestContext() {
  return _requestContext;
}
/**
* Sets the associated request context.
* @param requestContext the request context
*/
public void setRequestContext(RequestContext requestContext) {
  _requestContext = requestContext;
}
 
// methods =====================================================================

/**
* Appends an expression to an SQL where clause.
* @param whereClause the where clause
* @param expression the expression
*/
protected void appendExpression(StringBuffer whereClause,
                                String expression) {
  if (whereClause.length() > 0) {
    whereClause.append(" AND ");
  }
  whereClause.append("(").append(expression).append(")");
}

/**
* Appends a value filter to an SQL where clause.
* <p>
* This is intended for use within a PreparedStatement. The appended
* filter will have the following forms:
* <br/>field = ?
* <br/>field LIKE ?
* <p>
* The value returned should be bound within the PreparedStatement:
* <br/>preparedStatement.setString(n,value)
* @param whereClause the where clause
* @param field the field
* @param value the field value
* @param forceLike if true force an SQL LIKE
* @return the value - possible modified for LIKE (ie. "%"+value+"%")
*/
protected String appendValueFilter(StringBuffer whereClause,
                                   String field,
                                   String value,
                                   boolean forceLike) {
  value = value.replaceAll("\\*","%");
  String sExpression = "";
  if (value.indexOf("%") != -1) {
    sExpression = field+" LIKE ?";
  } else if (forceLike) {
    value = "%"+value+"%";
    sExpression = field+" LIKE ?";
  } else {
    sExpression = field+" = ?";
  }
  appendExpression(whereClause,sExpression);
  return value;
}

/**
* Closes a statement.
* @param st the JDBC Statement to close
*/
public static void closeStatement(Statement st) {
  if (st != null) {
    try {
      st.close();
    } catch (Throwable t) {
      LogUtil.getLogger().log(Level.SEVERE,"Error closing statement.",t);
    }
  }
}

/**
* Closes result set.
* @param rs result set to close
*/
public static void closeResultSet(ResultSet rs) {
  if (rs!=null) {
    try {
      rs.close();
    } catch (Throwable t) {
      LogUtil.getLogger().log(Level.SEVERE,"Error closing result set.",t);
    }
  }
}

/**
* Determine if the database is case sensitive.
* @param context the active request context
* @return true if the database is case sensitive
*/
public static boolean getIsDbCaseSensitive(RequestContext context) {
  if (context == null) return true;
  StringAttributeMap params  = context.getCatalogConfiguration().getParameters();
  String s = Val.chkStr(params.getValue("database.isCaseSensitive"));
  return !s.equalsIgnoreCase("false");
}

/**
* Logs a SQL expression.
* @param expression the expression to log
*/
protected void logExpression(String expression) {
  if (expression != null) {
    LogUtil.getLogger().finer(expression);
  }
}

/**
* Returns a managed connection to the default database.
* @throws SQLException if an exception occurs while establishing
*         the connection
*/
protected ManagedConnection returnConnection()
  throws SQLException {
  return getRequestContext().getConnectionBroker().returnConnection("");
}

}
TOP

Related Classes of com.esri.gpt.framework.sql.BaseDao

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.