/**
 * 
 */
package gov.va.med.cds.persistence.hibernate;

import java.io.Serializable;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import org.hibernate.CacheMode;
import org.hibernate.Criteria;
import org.hibernate.FlushMode;
import org.hibernate.HibernateException;
import org.hibernate.LockMode;
import org.hibernate.LockOptions;
import org.hibernate.Query;
import org.hibernate.ScrollMode;
import org.hibernate.ScrollableResults;
import org.hibernate.transform.ResultTransformer;
import org.hibernate.type.Type;

/**
 * @author DNS   egberb
 *
 */
public class HibernateQueryCriteriaDelegate
    implements
        Query
{
    
    private Criteria criteria;
    
    public HibernateQueryCriteriaDelegate(Criteria criteria)
    {
        this.criteria = criteria;
    }

    /* (non-Javadoc)
     * @see org.hibernate.Query#executeUpdate()
     */
    @Override
    public int executeUpdate( )
        throws HibernateException
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#getNamedParameters()
     */
    @Override
    public String[] getNamedParameters( )
        throws HibernateException
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#getQueryString()
     */
    @Override
    public String getQueryString( )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#getReturnAliases()
     */
    @Override
    public String[] getReturnAliases( )
        throws HibernateException
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#getReturnTypes()
     */
    @Override
    public Type[] getReturnTypes( )
        throws HibernateException
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#isReadOnly()
     */
    @Override
    public boolean isReadOnly( )
    {
        return this.criteria.isReadOnly();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#iterate()
     */
    @Override
    public Iterator iterate( )
        throws HibernateException
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#list()
     */
    @Override
    public List list( )
        throws HibernateException
    {
        return criteria.list();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#scroll()
     */
    @Override
    public ScrollableResults scroll( )
        throws HibernateException
    {
        return this.criteria.scroll();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#scroll(org.hibernate.ScrollMode)
     */
    @Override
    public ScrollableResults scroll( ScrollMode arg0 )
        throws HibernateException
    {
        return this.criteria.scroll( arg0 );
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setBigDecimal(int, java.math.BigDecimal)
     */
    @Override
    public Query setBigDecimal( int arg0, BigDecimal arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setBigDecimal(java.lang.String, java.math.BigDecimal)
     */
    @Override
    public Query setBigDecimal( String arg0, BigDecimal arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setBigInteger(int, java.math.BigInteger)
     */
    @Override
    public Query setBigInteger( int arg0, BigInteger arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setBigInteger(java.lang.String, java.math.BigInteger)
     */
    @Override
    public Query setBigInteger( String arg0, BigInteger arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setBinary(int, byte[])
     */
    @Override
    public Query setBinary( int arg0, byte[] arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setBinary(java.lang.String, byte[])
     */
    @Override
    public Query setBinary( String arg0, byte[] arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setBoolean(int, boolean)
     */
    @Override
    public Query setBoolean( int arg0, boolean arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setBoolean(java.lang.String, boolean)
     */
    @Override
    public Query setBoolean( String arg0, boolean arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setByte(int, byte)
     */
    @Override
    public Query setByte( int arg0, byte arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setByte(java.lang.String, byte)
     */
    @Override
    public Query setByte( String arg0, byte arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setCacheMode(org.hibernate.CacheMode)
     */
    @Override
    public Query setCacheMode( CacheMode arg0 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setCacheRegion(java.lang.String)
     */
    @Override
    public Query setCacheRegion( String arg0 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setCacheable(boolean)
     */
    @Override
    public Query setCacheable( boolean arg0 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setCalendar(int, java.util.Calendar)
     */
    @Override
    public Query setCalendar( int arg0, Calendar arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setCalendar(java.lang.String, java.util.Calendar)
     */
    @Override
    public Query setCalendar( String arg0, Calendar arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setCalendarDate(int, java.util.Calendar)
     */
    @Override
    public Query setCalendarDate( int arg0, Calendar arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setCalendarDate(java.lang.String, java.util.Calendar)
     */
    @Override
    public Query setCalendarDate( String arg0, Calendar arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setCharacter(int, char)
     */
    @Override
    public Query setCharacter( int arg0, char arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setCharacter(java.lang.String, char)
     */
    @Override
    public Query setCharacter( String arg0, char arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setComment(java.lang.String)
     */
    @Override
    public Query setComment( String arg0 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setDate(int, java.util.Date)
     */
    @Override
    public Query setDate( int arg0, Date arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setDate(java.lang.String, java.util.Date)
     */
    @Override
    public Query setDate( String arg0, Date arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setDouble(int, double)
     */
    @Override
    public Query setDouble( int arg0, double arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setDouble(java.lang.String, double)
     */
    @Override
    public Query setDouble( String arg0, double arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setEntity(int, java.lang.Object)
     */
    @Override
    public Query setEntity( int arg0, Object arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setEntity(java.lang.String, java.lang.Object)
     */
    @Override
    public Query setEntity( String arg0, Object arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setFetchSize(int)
     */
    @Override
    public Query setFetchSize( int arg0 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setFirstResult(int)
     */
    @Override
    public Query setFirstResult( int arg0 )
    {
        criteria.setFirstResult( arg0 );
        return this;
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setFloat(int, float)
     */
    @Override
    public Query setFloat( int arg0, float arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setFloat(java.lang.String, float)
     */
    @Override
    public Query setFloat( String arg0, float arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setFlushMode(org.hibernate.FlushMode)
     */
    @Override
    public Query setFlushMode( FlushMode arg0 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setInteger(int, int)
     */
    @Override
    public Query setInteger( int arg0, int arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setInteger(java.lang.String, int)
     */
    @Override
    public Query setInteger( String arg0, int arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setLocale(int, java.util.Locale)
     */
    @Override
    public Query setLocale( int arg0, Locale arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setLocale(java.lang.String, java.util.Locale)
     */
    @Override
    public Query setLocale( String arg0, Locale arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setLockMode(java.lang.String, org.hibernate.LockMode)
     */
    @Override
    public Query setLockMode( String arg0, LockMode arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setLockOptions(org.hibernate.LockOptions)
     */
    @Override
    public Query setLockOptions( LockOptions arg0 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setLong(int, long)
     */
    @Override
    public Query setLong( int arg0, long arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setLong(java.lang.String, long)
     */
    @Override
    public Query setLong( String arg0, long arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setMaxResults(int)
     */
    @Override
    public Query setMaxResults( int arg0 )
    {
        this.criteria.setMaxResults( arg0 );
        return this;
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setParameter(int, java.lang.Object)
     */
    @Override
    public Query setParameter( int arg0, Object arg1 )
        throws HibernateException
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setParameter(java.lang.String, java.lang.Object)
     */
    @Override
    public Query setParameter( String arg0, Object arg1 )
        throws HibernateException
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setParameter(int, java.lang.Object, org.hibernate.type.Type)
     */
    @Override
    public Query setParameter( int arg0, Object arg1, Type arg2 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setParameter(java.lang.String, java.lang.Object, org.hibernate.type.Type)
     */
    @Override
    public Query setParameter( String arg0, Object arg1, Type arg2 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setParameterList(java.lang.String, java.util.Collection)
     */
    @Override
    public Query setParameterList( String arg0, Collection arg1 )
        throws HibernateException
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setParameterList(java.lang.String, java.lang.Object[])
     */
    @Override
    public Query setParameterList( String arg0, Object[] arg1 )
        throws HibernateException
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setParameterList(java.lang.String, java.util.Collection, org.hibernate.type.Type)
     */
    @Override
    public Query setParameterList( String arg0, Collection arg1, Type arg2 )
        throws HibernateException
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setParameterList(java.lang.String, java.lang.Object[], org.hibernate.type.Type)
     */
    @Override
    public Query setParameterList( String arg0, Object[] arg1, Type arg2 )
        throws HibernateException
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setParameters(java.lang.Object[], org.hibernate.type.Type[])
     */
    @Override
    public Query setParameters( Object[] arg0, Type[] arg1 )
        throws HibernateException
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setProperties(java.lang.Object)
     */
    @Override
    public Query setProperties( Object arg0 )
        throws HibernateException
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setProperties(java.util.Map)
     */
    @Override
    public Query setProperties( Map arg0 )
        throws HibernateException
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setReadOnly(boolean)
     */
    @Override
    public Query setReadOnly( boolean arg0 )
    {
        criteria.setReadOnly( arg0 );
        return this;
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setResultTransformer(org.hibernate.transform.ResultTransformer)
     */
    @Override
    public Query setResultTransformer( ResultTransformer arg0 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setSerializable(int, java.io.Serializable)
     */
    @Override
    public Query setSerializable( int arg0, Serializable arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setSerializable(java.lang.String, java.io.Serializable)
     */
    @Override
    public Query setSerializable( String arg0, Serializable arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setShort(int, short)
     */
    @Override
    public Query setShort( int arg0, short arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setShort(java.lang.String, short)
     */
    @Override
    public Query setShort( String arg0, short arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setString(int, java.lang.String)
     */
    @Override
    public Query setString( int arg0, String arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setString(java.lang.String, java.lang.String)
     */
    @Override
    public Query setString( String arg0, String arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setText(int, java.lang.String)
     */
    @Override
    public Query setText( int arg0, String arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setText(java.lang.String, java.lang.String)
     */
    @Override
    public Query setText( String arg0, String arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setTime(int, java.util.Date)
     */
    @Override
    public Query setTime( int arg0, Date arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setTime(java.lang.String, java.util.Date)
     */
    @Override
    public Query setTime( String arg0, Date arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setTimeout(int)
     */
    @Override
    public Query setTimeout( int arg0 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setTimestamp(int, java.util.Date)
     */
    @Override
    public Query setTimestamp( int arg0, Date arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#setTimestamp(java.lang.String, java.util.Date)
     */
    @Override
    public Query setTimestamp( String arg0, Date arg1 )
    {
        throw new UnsupportedOperationException();
    }


    /* (non-Javadoc)
     * @see org.hibernate.Query#uniqueResult()
     */
    @Override
    public Object uniqueResult( )
        throws HibernateException
    {
        throw new UnsupportedOperationException();
    }

	@Override
	public CacheMode getCacheMode() {
		 throw new UnsupportedOperationException();
	}

	@Override
	public String getCacheRegion() {
		 throw new UnsupportedOperationException();
	}

	@Override
	public Integer getFetchSize() {
		 throw new UnsupportedOperationException();
	}

	@Override
	public FlushMode getFlushMode() {
		 throw new UnsupportedOperationException();
	}

	@Override
	public Integer getTimeout() {
		 throw new UnsupportedOperationException();
	}

	@Override
	public boolean isCacheable() {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public Integer getMaxResults() {
		 throw new UnsupportedOperationException();
	}

	@Override
	public Integer getFirstResult() {
		 throw new UnsupportedOperationException();
	}

	@Override
	public LockOptions getLockOptions() {
		 throw new UnsupportedOperationException();
	}

	@Override
	public String getComment() {
		 throw new UnsupportedOperationException();
	}

	@Override
	public Query addQueryHint(String paramString) {
		 throw new UnsupportedOperationException();
	}

}
