
org.eobjects.metamodel.jdbc.JdbcUtils Maven / Gradle / Ivy
/**
* eobjects.org MetaModel
* Copyright (C) 2010 eobjects.org
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, as published by the Free Software Foundation.
*
* 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 Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this distribution; if not, write to:
* Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
*/
package org.eobjects.metamodel.jdbc;
import java.sql.SQLException;
import java.util.List;
import org.eobjects.metamodel.MetaModelException;
import org.eobjects.metamodel.jdbc.dialects.IQueryRewriter;
import org.eobjects.metamodel.query.FilterItem;
import org.eobjects.metamodel.query.QueryParameter;
import org.eobjects.metamodel.schema.Column;
import org.eobjects.metamodel.schema.ColumnType;
import org.eobjects.metamodel.util.FormatHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public final class JdbcUtils {
private static final Logger logger = LoggerFactory.getLogger(JdbcUtils.class);
public static MetaModelException wrapException(SQLException e, String actionDescription) throws MetaModelException {
if (logger.isWarnEnabled()) {
logger.warn("Could not " + actionDescription + ": " + e.getMessage(), e);
logger.warn("Error code={}, SQL state={}", e.getErrorCode(), e.getSQLState());
final SQLException nextException = e.getNextException();
if (nextException != null) {
logger.warn("Next SQL exception: " + nextException.getMessage(), nextException);
}
}
return new MetaModelException("Could not " + actionDescription, e);
}
public static String getValueAsSql(Column column, Object value, IQueryRewriter queryRewriter) {
if (value == null) {
return "NULL";
}
final ColumnType columnType = column.getType();
if (columnType.isLiteral() && value instanceof String) {
value = queryRewriter.escapeQuotes((String) value);
}
String formatSqlValue = FormatHelper.formatSqlValue(columnType, value);
return formatSqlValue;
}
public static String createWhereClause(List whereItems, IQueryRewriter queryRewriter,
boolean inlineValues) {
if (whereItems.isEmpty()) {
return "";
}
StringBuilder sb = new StringBuilder();
sb.append(" WHERE ");
boolean firstValue = true;
for (FilterItem whereItem : whereItems) {
if (firstValue) {
firstValue = false;
} else {
sb.append(" AND ");
}
if (!inlineValues) {
if (!whereItem.isCompoundFilter()) {
// replace operator with parameter
whereItem = new FilterItem(whereItem.getSelectItem(), whereItem.getOperator(), new QueryParameter());
}
}
final String whereItemLabel = queryRewriter.rewriteFilterItem(whereItem);
sb.append(whereItemLabel);
}
return sb.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy