/*
* Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com>
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: QueryHelper.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.database.queries;
import com.uwyn.rife.database.Datasource;
import com.uwyn.rife.database.exceptions.BeanException;
import com.uwyn.rife.database.exceptions.DbQueryException;
import com.uwyn.rife.database.types.SqlNull;
import com.uwyn.rife.tools.BeanUtils;
import com.uwyn.rife.tools.exceptions.BeanUtilsException;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
public abstract class QueryHelper
{
public static Set<String> getBeanPropertyNames(Class beanClass, String[] excludedFields)
throws DbQueryException
{
try
{
return BeanUtils.getPropertyNames(beanClass, null, excludedFields, null);
}
catch (BeanUtilsException e)
{
throw new BeanException("Error while obtaining bean property names.", beanClass, e);
}
}
public static Map<String, String> getBeanPropertyValues(Object bean, String[] includedFields, String[] excludedFields, Datasource datasource)
throws DbQueryException
{
Map<String, String> property_values_sql = new LinkedHashMap<String, String>();
if (bean != null)
{
Map<String, Object> property_values = null;
Set<Map.Entry<String, Object>> property_values_entries = null;
try
{
property_values = BeanUtils.getPropertyValues(bean, includedFields, excludedFields, null);
}
catch (BeanUtilsException e)
{
throw new BeanException("Error while obtaining bean property values.", bean.getClass(), e);
}
property_values_entries = property_values.entrySet();
// convert the property values to strings that are usable in sql statements
for (Map.Entry<String, Object> property_value_entry : property_values_entries)
{
// exclude null values
if (property_value_entry.getValue() != null)
{
String value = datasource.getSqlConversion().getSqlValue(property_value_entry.getValue());
// exclude some more null values
if (!value.equals(SqlNull.NULL.toString()))
{
property_values_sql.put(property_value_entry.getKey(), value);
}
}
}
}
assert property_values_sql != null;
return property_values_sql;
}
public static Map<String, Class> getBeanPropertyTypes(Class beanClass, String[] includedFields, String[] excludedFields)
throws DbQueryException
{
try
{
return BeanUtils.getPropertyTypes(beanClass, includedFields, excludedFields, null);
}
catch (BeanUtilsException e)
{
throw new BeanException("Error while obtaining bean property types.", beanClass, e);
}
}
}