/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF 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.
 * 
 *************************************************************/


#ifndef __com_sun_star_sdb_SingleSelectQueryComposer_idl__ 
#define __com_sun_star_sdb_SingleSelectQueryComposer_idl__ 
 
#ifndef __com_sun_star_sdb_SingleSelectQueryAnalyzer_idl__ 
#include <com/sun/star/sdb/SingleSelectQueryAnalyzer.idl> 
#endif 
#ifndef __com_sun_star_beans_XPropertySet_idl__ 
#include <com/sun/star/beans/XPropertySet.idl> 
#endif 

module com {  module sun {  module star {  module sdb { 
 
interface XSingleSelectQueryComposer;
/** represents a service for composing a single select statement.
	
	<p>
	It hides the complexity of parsing and evaluating a single select statement and provides
	sophisticated methods for expanding a statement with filter, group by, having and order
	criteria. To get the new extended statement use the methods from <type scope="com::sun::star::sdb">SingleSelectQueryAnalyzer</type>.
	</p>

    <p>A <type>SingleSelectQueryComposer</type> is usually obtained from a <type>Connection</type>
    using the <type scope="com::sun::star::lang">XMultiServiceFactory</type> interface.</p>
 */
service SingleSelectQueryComposer
{ 
	// gives access to the properties.
	interface com::sun::star::beans::XPropertySet; 

	/** access to the analyzer service.
	 */
	service SingleSelectQueryAnalyzer; 

	interface XSingleSelectQueryComposer;

	/** is the orignal SQL statement set with the interface <type scope="com::sun::star::sdb">XSingleSelectQueryAnalyzer</type>.
	*/
	[readonly, property] string Original;  
}; 
 
//============================================================================= 
 
}; }; }; }; 
 
/*=========================================================================== 
===========================================================================*/ 
#endif 
