package org.jblooming.persistence.hibernate;
import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.FlushMode;
import org.hibernate.engine.SessionImplementor;
import org.hibernate.impl.QueryImpl;
import org.hibernate.impl.AbstractSessionImpl;
import org.hibernate.type.Type;
import org.jblooming.waf.settings.ApplicationState;
import org.jblooming.waf.settings.PlatformConfiguration;
import org.jblooming.waf.settings.PersistenceConfiguration;
import java.util.Collection;
/**
* @author Pietro Polsinelli ppolsinelli@open-lab.com
* @author Roberto Bicchierai rbicchierai@open-lab.com
*/
public class PlatformHibernateQuery extends QueryImpl {
public PlatformHibernateQuery(String oql, SessionImplementor sessionImplementor) {
super(oql, null,sessionImplementor,null);//((AbstractSessionImpl)sessionImplementor).getHQLQueryPlan( oql, false ).getParameterMetadata());
}
public Query setParameter(String name, Object val, Type type) {
if ((
!PersistenceConfiguration.getDefaultPersistenceConfiguration().stringPrimitiveFieldsConversion.equals(PlatformConfiguration.StringConversionType.NONE) ||
!PersistenceConfiguration.getDefaultPersistenceConfiguration().stringPrimitiveFieldsConversion.equals(PlatformConfiguration.StringConversionType.NONE)) &&
type.equals(Hibernate.STRING)) {
if (PersistenceConfiguration.getDefaultPersistenceConfiguration().stringPrimitiveFieldsConversion.equals(PlatformConfiguration.StringConversionType.LOWER))
val = ((String) val).toLowerCase();
else
val = ((String) val).toUpperCase();
}
return super.setParameter(name, val, type);
}
public Query setParameter(int position, Object val, Type type) {
if ((!PersistenceConfiguration.getDefaultPersistenceConfiguration().stringPrimitiveFieldsConversion.equals(PlatformConfiguration.StringConversionType.NONE) ||
!PersistenceConfiguration.getDefaultPersistenceConfiguration().stringPrimitiveFieldsConversion.equals(PlatformConfiguration.StringConversionType.NONE)) &&
type.equals(Hibernate.STRING)) {
if (PersistenceConfiguration.getDefaultPersistenceConfiguration().stringPrimitiveFieldsConversion.equals(PlatformConfiguration.StringConversionType.LOWER))
val = ((String) val).toLowerCase();
else
val = ((String) val).toUpperCase();
}
return super.setParameter(position, val, type);
}
public Query setParameterList(String name, Collection vals, Type type) throws HibernateException {
if ((!PersistenceConfiguration.getDefaultPersistenceConfiguration().stringPrimitiveFieldsConversion.equals(PlatformConfiguration.StringConversionType.NONE) ||
!PersistenceConfiguration.getDefaultPersistenceConfiguration().stringPrimitiveFieldsConversion.equals(PlatformConfiguration.StringConversionType.NONE)) &&
type.equals(Hibernate.STRING)) {
if (PersistenceConfiguration.getDefaultPersistenceConfiguration().stringPrimitiveFieldsConversion.equals(PlatformConfiguration.StringConversionType.LOWER))
for (Object val : vals) {
val = ((String) val).toLowerCase();
}
else
for (Object val : vals) {
val = ((String) val).toUpperCase();
}
}
return super.setParameterList(name, vals, type);
}
}