00001 #ifndef _IEXTENDEDSELECT_H_ 00002 #define _IEXTENDEDSELECT_H_ 00003 // 00004 00005 // 00006 // Copyright (C) 2004-2006 Autodesk, Inc. 00007 // 00008 // This library is free software; you can redistribute it and/or 00009 // modify it under the terms of version 2.1 of the GNU Lesser 00010 // General Public License as published by the Free Software Foundation. 00011 // 00012 // This library is distributed in the hope that it will be useful, 00013 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 // Lesser General Public License for more details. 00016 // 00017 // You should have received a copy of the GNU Lesser General Public 00018 // License along with this library; if not, write to the Free Software 00019 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00020 // 00021 00022 #ifdef _WIN32 00023 #pragma once 00024 #endif 00025 00026 #include <Fdo/Commands/Feature/ISelect.h> 00027 #include <Fdo/Commands/Feature/IScrollableFeatureReader.h> 00028 00029 /// \brief 00030 /// The FdoIExtendedSelect interface defines a Select command with extended 00031 /// capabilities. It provides the same functionality as FdoISelect, plus the 00032 /// ability to create a scrollable reader that allows forward, reverse or 00033 /// random access to the results set. 00034 class FdoIExtendedSelect : public FdoISelect 00035 { 00036 00037 public: 00038 /// \brief 00039 /// Set the ordering option of the selection. 00040 /// 00041 /// \remarks 00042 /// This is only used if the ordering collection is not empty. 00043 /// 00044 /// \param propertyName 00045 /// Is the property name for which the ordering should be applied. 00046 /// This property should be in the ordering collection. 00047 /// 00048 /// \param option 00049 /// Is the ordering option and should be set to one of FdoOrderingOption_Ascending or FdoOrderingOption_Descending. 00050 /// FdoOrderingOption_Ascending is the default value. 00051 virtual void SetOrderingOption( FdoString* propertyName, FdoOrderingOption option ) = 0; 00052 00053 /// \brief 00054 /// Gets the ordering option for a given property. 00055 /// 00056 /// \param propertyName 00057 /// Is the property name for which the ordering should be applied. 00058 /// This property should be in the ordering collection. 00059 /// 00060 /// \return 00061 /// Returns the ordering option. 00062 virtual FdoOrderingOption GetOrderingOption( FdoString* propertyName ) = 0; 00063 00064 /// \brief 00065 /// Clears the internal list of property/ordering option list and re-sets the ordering option for all 00066 /// the ordering properties to the default FdoOrderingOption_Ascending or to the ordering option specified by the 00067 /// FdoIBaseSelect interface. 00068 virtual void ClearOrderingOptions( ) = 0; 00069 00070 /// \brief 00071 /// Executes the select command and returns an FdoIScrollableFeatureReader. 00072 /// 00073 /// \remarks 00074 /// If ordering is enabled, then the returned reader is sorted according to 00075 /// the ordering collection. This method performs sorting and allocates an integer value for each row. 00076 /// \return 00077 /// Returns a FdoIScrollableFeatureReader object 00078 virtual FdoIScrollableFeatureReader* ExecuteScrollable() = 0; 00079 }; 00080 #endif 00081 00082