xref: /aoo4110/main/offapi/com/sun/star/sdb/RowSet.idl (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski/**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_sdb_RowSet_idl__
24*b1cdbd2cSJim Jagielski#define __com_sun_star_sdb_RowSet_idl__
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_sdbc_RowSet_idl__
27*b1cdbd2cSJim Jagielski#include <com/sun/star/sdbc/RowSet.idl>
28*b1cdbd2cSJim Jagielski#endif
29*b1cdbd2cSJim Jagielski
30*b1cdbd2cSJim Jagielskimodule com {  module sun {  module star {  module sdbc {
31*b1cdbd2cSJim Jagielskipublished interface XConnection;
32*b1cdbd2cSJim Jagielski};};};};
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_sdb_ResultSet_idl__
35*b1cdbd2cSJim Jagielski#include <com/sun/star/sdb/ResultSet.idl>
36*b1cdbd2cSJim Jagielski#endif
37*b1cdbd2cSJim Jagielski
38*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_sdb_XCompletedExecution_idl__
39*b1cdbd2cSJim Jagielski#include <com/sun/star/sdb/XCompletedExecution.idl>
40*b1cdbd2cSJim Jagielski#endif
41*b1cdbd2cSJim Jagielski
42*b1cdbd2cSJim Jagielski module com {  module sun {  module star {  module sdbcx {
43*b1cdbd2cSJim Jagielskipublished interface XDeleteRows;
44*b1cdbd2cSJim Jagielski};};};};
45*b1cdbd2cSJim Jagielski
46*b1cdbd2cSJim Jagielski module com {  module sun {  module star {  module sdb {
47*b1cdbd2cSJim Jagielski
48*b1cdbd2cSJim Jagielskipublished interface XRowSetApproveBroadcaster;
49*b1cdbd2cSJim Jagielskipublished interface XResultSetAccess;
50*b1cdbd2cSJim Jagielskipublished interface XParametersSupplier;
51*b1cdbd2cSJim Jagielski
52*b1cdbd2cSJim Jagielski
53*b1cdbd2cSJim Jagielski/** is a client side RowSet, which use retrieves is data based on a database table,
54*b1cdbd2cSJim Jagielski	a query or a SQL command or by a rowset reader, who mustn't support SQL.
55*b1cdbd2cSJim Jagielski	The connection of the rowset is typically a named DataSource or a DataAccess component
56*b1cdbd2cSJim Jagielski	or a previous instanciated connection.
57*b1cdbd2cSJim Jagielski	<p>
58*b1cdbd2cSJim Jagielski	Depending on the
59*b1cdbd2cSJim Jagielski	<type scope="com::sun::star::sdbc">ResultSetConcurrency</type>
60*b1cdbd2cSJim Jagielski	, the RowSet caches all data or uses
61*b1cdbd2cSJim Jagielski	an optimized way for retrieving the data, such as, refetching rows by their keys or
62*b1cdbd2cSJim Jagielski	if provided, by their bookmarks.
63*b1cdbd2cSJim Jagielski	</p>
64*b1cdbd2cSJim Jagielski	<p>
65*b1cdbd2cSJim Jagielski	In addition, it provides events for RowSet navigation and RowSet modifications
66*b1cdbd2cSJim Jagielski	to approve the actions and to react on them.
67*b1cdbd2cSJim Jagielski	@see com::sun::star::sdb::RowChangeAction
68*b1cdbd2cSJim Jagielski	@see com::sun::star::sdb::RowChangeEvent
69*b1cdbd2cSJim Jagielski    @see com::sun::star::sdb::RowsChangeEvent
70*b1cdbd2cSJim Jagielski	</p>
71*b1cdbd2cSJim Jagielski
72*b1cdbd2cSJim Jagielski	<h3>Notifications</h3>
73*b1cdbd2cSJim Jagielski    <p>A row set is able to be operated in various ways, and additionally it notifies various changes in it's
74*b1cdbd2cSJim Jagielski	state. Clients of this service can rely on a fixed order of notifications, depending on how they operate
75*b1cdbd2cSJim Jagielski	on the component.</br>
76*b1cdbd2cSJim Jagielski	The following describes the general order of all possible notifications which you can encounter when
77*b1cdbd2cSJim Jagielski	working with a row set:
78*b1cdbd2cSJim Jagielski	<table>
79*b1cdbd2cSJim Jagielski		<tr><td valign="top"><em>approving</em></td>
80*b1cdbd2cSJim Jagielski			<td valign="top">Before anything really happens, any veto listeners are called to approve the operation
81*b1cdbd2cSJim Jagielski				which is just being done. This may be either a
82*b1cdbd2cSJim Jagielski				<member>XRowSetApproveListener::approveCursorMove</member> or
83*b1cdbd2cSJim Jagielski				<member>XRowSetApproveListener::approveRowChange</member> call.
84*b1cdbd2cSJim Jagielski				@see XRowSetApproveListener
85*b1cdbd2cSJim Jagielski			</td>
86*b1cdbd2cSJim Jagielski		</tr>
87*b1cdbd2cSJim Jagielski		<tr><td valign="top"><em>column values</em></td>
88*b1cdbd2cSJim Jagielski			<td valign="top">If the opration includes changes in the values of the columns of the row set, then these are
89*b1cdbd2cSJim Jagielski			notified before anything else (except requests for approval).
90*b1cdbd2cSJim Jagielski			@see ResultSet
91*b1cdbd2cSJim Jagielski			@see com::sun::star::sdbcx::XColumnsSupplier
92*b1cdbd2cSJim Jagielski			</td>
93*b1cdbd2cSJim Jagielski		</tr>
94*b1cdbd2cSJim Jagielski		<tr><td valign="top"><em>operation done</em></td>
95*b1cdbd2cSJim Jagielski			<td valign="top">When the operation is done, you get a notification about this. It may be a
96*b1cdbd2cSJim Jagielski			<member scope="com::sun::star::sdbc">XRowSetListener::cursorMoved</member> or a
97*b1cdbd2cSJim Jagielski			<member scope="com::sun::star::sdbc">XRowSetListener::rowChanged</member> call or a
98*b1cdbd2cSJim Jagielski            <member>XRowsChangeListener::rowsChanged</member> call.
99*b1cdbd2cSJim Jagielski			</td>
100*b1cdbd2cSJim Jagielski		</tr>
101*b1cdbd2cSJim Jagielski		<tr><td valign="top"><em>row state</em></td>
102*b1cdbd2cSJim Jagielski			<td valign="top">If the operation leads to a change in the state of the <member>IsModified</member>
103*b1cdbd2cSJim Jagielski			and/or <member>IsNew</member> property, this is notified next (in this order).
104*b1cdbd2cSJim Jagielski			</td>
105*b1cdbd2cSJim Jagielski		</tr>
106*b1cdbd2cSJim Jagielski		<tr><td valign="top"><em>row count</em></td>
107*b1cdbd2cSJim Jagielski			<td valign="top">If the operation leads to new knowledge about the number of rows in the result set,
108*b1cdbd2cSJim Jagielski			the respective changes in the <member>RowCount</member> and <member>IsRowCountFinal</member>
109*b1cdbd2cSJim Jagielski			are notified last (in this order).
110*b1cdbd2cSJim Jagielski			</td>
111*b1cdbd2cSJim Jagielski		</tr>
112*b1cdbd2cSJim Jagielski	</table>
113*b1cdbd2cSJim Jagielski	</p>
114*b1cdbd2cSJim Jagielski
115*b1cdbd2cSJim Jagielski	<br/>
116*b1cdbd2cSJim Jagielski
117*b1cdbd2cSJim Jagielski	<p>The following matrix shows the notifications which apply to the different operations:
118*b1cdbd2cSJim Jagielski	<table border="1" frame="all">
119*b1cdbd2cSJim Jagielski		<tr><td/><td><strong>approveCursorMove</strong></td><td><strong>approveRowChange</strong></td>
120*b1cdbd2cSJim Jagielski				<td><strong>column values</strong></td>
121*b1cdbd2cSJim Jagielski				<td><strong>cursorMoved</strong></td><td><strong>rowChanged</strong></td>
122*b1cdbd2cSJim Jagielski                <td><strong>rowsChanged</strong></td>
123*b1cdbd2cSJim Jagielski				<td><strong>IsModified</strong></td><td><strong>IsNew</strong></td>
124*b1cdbd2cSJim Jagielski				<td><strong>RowCount</strong></td><td><strong>IsRowCountFinal</strong></td>
125*b1cdbd2cSJim Jagielski		</tr>
126*b1cdbd2cSJim Jagielski
127*b1cdbd2cSJim Jagielski		<tr><td><type scope="com::sun::star::sdbc">XResultSet</type></td><td/><td/><td/><td/><td/><td/><td/><td/></tr>
128*b1cdbd2cSJim Jagielski
129*b1cdbd2cSJim Jagielski		<tr><td align="right"><em>next</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td>
130*b1cdbd2cSJim Jagielski		<tr><td align="right"><em>beforeFirst</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td/><td/></tr>
131*b1cdbd2cSJim Jagielski		<tr><td align="right"><em>afterLast</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr>
132*b1cdbd2cSJim Jagielski		<tr><td align="right"><em>first</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr>
133*b1cdbd2cSJim Jagielski		<tr><td align="right"><em>last</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr>
134*b1cdbd2cSJim Jagielski		<tr><td align="right"><em>absolute</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr>
135*b1cdbd2cSJim Jagielski		<tr><td align="right"><em>relative</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr>
136*b1cdbd2cSJim Jagielski		<tr><td align="right"><em>previous</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr>
137*b1cdbd2cSJim Jagielski		<tr><td align="right"><em>refreshRow</em></td><td/><td/><td align="center">X</td><td/><td/><td/><td align="center">X</td><td align="center">X</td><td/><td/></tr>
138*b1cdbd2cSJim Jagielski		<tr><td align="right"><em>cancelRowUpdates</em></td><td/><td/><td align="center">X</td><td/><td/><td/><td align="center">X</td><td/><td/><td/></tr>
139*b1cdbd2cSJim Jagielski
140*b1cdbd2cSJim Jagielski		<tr><td><type scope="com::sun::star::sdbc">XResultSetUpdate</type></td><td/><td/><td/><td/><td/><td/><td/><td/></tr>
141*b1cdbd2cSJim Jagielski
142*b1cdbd2cSJim Jagielski		<tr><td align="right"><em>insertRow</em></td><td/><td align="center">X</td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr>
143*b1cdbd2cSJim Jagielski		<tr><td align="right"><em>updateRow</em></td><td/><td align="center">X</td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td/><td/><td/></tr>
144*b1cdbd2cSJim Jagielski		<tr><td align="right"><em>deleteRow</em></td><td/><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr>
145*b1cdbd2cSJim Jagielski		<tr><td align="right"><em>moveToInsertRow</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td/><td align="center">X</td><td align="center">X</td></tr>
146*b1cdbd2cSJim Jagielski		<tr><td align="right"><em>moveToCurrentRow</em></td><td align="center">X</td><td/><td/><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td/><td/></tr>
147*b1cdbd2cSJim Jagielski
148*b1cdbd2cSJim Jagielski		<tr><td><type scope="com::sun::star::sdbcx">XDeleteRows</type></td><td/><td/><td/><td/><td/><td/><td/><td/></tr>
149*b1cdbd2cSJim Jagielski
150*b1cdbd2cSJim Jagielski		<tr><td align="right"><em>deleteRows</em></td><td/><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr>
151*b1cdbd2cSJim Jagielski
152*b1cdbd2cSJim Jagielski		<tr><td><type scope="com::sun::star::sdbcx">XRowLocate</type></td><td/><td/><td/><td/><td/><td/><td/><td/></tr>
153*b1cdbd2cSJim Jagielski
154*b1cdbd2cSJim Jagielski		<tr><td align="right"><em>moveToBookmark</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td/><td/></tr>
155*b1cdbd2cSJim Jagielski		<tr><td align="right"><em>moveRelativeToBookmark</em></td><td align="center">X</td><td/><td align="center">X</td><td align="center">X</td><td/><td/><td align="center">X</td><td align="center">X</td><td align="center">X</td><td align="center">X</td></tr>
156*b1cdbd2cSJim Jagielski
157*b1cdbd2cSJim Jagielski		</tr>
158*b1cdbd2cSJim Jagielski	</table>
159*b1cdbd2cSJim Jagielski	</p>
160*b1cdbd2cSJim Jagielski
161*b1cdbd2cSJim Jagielski    <h3>Deletions</h3>
162*b1cdbd2cSJim Jagielski    <p>Via <member scope="com::sun::star::sdbc">XResultSetUpdate::deleteRow</member>, you can delete the current row of a
163*b1cdbd2cSJim Jagielski    <type>RowSet</type>. This deleted row then doesn't vanish immediately, but is still present, and subsequent calls to
164*b1cdbd2cSJim Jagielski    <member scope="com::sun::star::sdbc">XResultSet::rowDeleted</member> will return <TRUE/>. The deleted row "vanishes" from
165*b1cdbd2cSJim Jagielski    the <type>RowSet</type> as soon as the cursor is moved away from it.<br/>
166*b1cdbd2cSJim Jagielski    As a consequence, the behaviour of several other methods is affected:<br/>
167*b1cdbd2cSJim Jagielski	<dl>
168*b1cdbd2cSJim Jagielski        <dt><member scope="com::sun::star::sdbc">XResultSet::getRow</member></dt>
169*b1cdbd2cSJim Jagielski        <dd>returns the position of the cursor, which has not been changed by the deletion.</dd>
170*b1cdbd2cSJim Jagielski
171*b1cdbd2cSJim Jagielski        <dt><type scope="com::sun::star::sdbc">XResultSet</type>: <code>next</code>, <code>first</code>, <code>last</code>, <code>absolute</code>,
172*b1cdbd2cSJim Jagielski            <code>relative</code>, <code>previous</code>, <code>beforeFirst</code>, <code>afterLast</code></dt>
173*b1cdbd2cSJim Jagielski        <dd>will let the deleted row vanish from the result set. As a consequence, the <member>RowCount</member>
174*b1cdbd2cSJim Jagielski            will decrease when you do such a move operation after deleting a row.<br/>
175*b1cdbd2cSJim Jagielski            A special case to note is the <code>next<code> call: When you delete row, say,
176*b1cdbd2cSJim Jagielski            <code>15</code>, followed by <code>next</code>, then your <type>RowSet</type> afterwards
177*b1cdbd2cSJim Jagielski            still is on row 15, since the deleted row vanished with the move operation.</dd>
178*b1cdbd2cSJim Jagielski
179*b1cdbd2cSJim Jagielski        <dt><member scope="com::sun::star::sdbc">XResultSet::refreshRow</member></dt>
180*b1cdbd2cSJim Jagielski        <dd>will throw an exception when the cursor is on a deleted row.</dd>
181*b1cdbd2cSJim Jagielski
182*b1cdbd2cSJim Jagielski        <dt><type scope="com::sun::star::sdbc">XRow</type>: <code>getFoo</code></dt>
183*b1cdbd2cSJim Jagielski        <dd>will return an empty value when the cursor is on a deleted row.</dd>
184*b1cdbd2cSJim Jagielski
185*b1cdbd2cSJim Jagielski        <dt><member scope="com::sun::star::sdbcx">XRowLocate::getBookmark</member></dt>
186*b1cdbd2cSJim Jagielski        <dd>will throw an exception when the cursor is on a deleted row.</dd>
187*b1cdbd2cSJim Jagielski
188*b1cdbd2cSJim Jagielski        <dt><type scope="com::sun::star::sdbc">XRowUpdate</type>: <code>updateFoo</code></dt>
189*b1cdbd2cSJim Jagielski        <dd>will throw an exception when the cursor is on a deleted row.</dd>
190*b1cdbd2cSJim Jagielski
191*b1cdbd2cSJim Jagielski        <dt><member scope="com::sun::star::sdbc">XResultSetUpdate::deleteRow</member></dt>
192*b1cdbd2cSJim Jagielski        <dd>will throw an exception when the cursor is on a deleted row.</dd>
193*b1cdbd2cSJim Jagielski
194*b1cdbd2cSJim Jagielski        <dt><member scope="com::sun::star::sdbc">XResultSetUpdate::moveToInsertRow</member></dt>
195*b1cdbd2cSJim Jagielski        <dd>will let the deleted row vanish from the result set. As a consequence, the <member>RowCount</member>
196*b1cdbd2cSJim Jagielski            will decrease. Also, subsequent calls to
197*b1cdbd2cSJim Jagielski            <member scope="com::sun::star::sdbc">XResultSetUpdate::moveToCurrentRow</member> will not
198*b1cdbd2cSJim Jagielski            be able to move back to the deleted row (since it vanished), but only to the
199*b1cdbd2cSJim Jagielski            row after the deleted row.</dd>
200*b1cdbd2cSJim Jagielski    </dl>
201*b1cdbd2cSJim Jagielski    </p>
202*b1cdbd2cSJim Jagielski */
203*b1cdbd2cSJim Jagielskipublished service RowSet
204*b1cdbd2cSJim Jagielski{
205*b1cdbd2cSJim Jagielski	service com::sun::star::sdbc::RowSet;
206*b1cdbd2cSJim Jagielski
207*b1cdbd2cSJim Jagielski	service com::sun::star::sdb::ResultSet;
208*b1cdbd2cSJim Jagielski
209*b1cdbd2cSJim Jagielski	/** can be used to allow an interaction handler to supply missing data during a execute process.
210*b1cdbd2cSJim Jagielski
211*b1cdbd2cSJim Jagielski		<p>If you want a row set to be based on a parametrized query, you will usually use
212*b1cdbd2cSJim Jagielski		the <type scope="com::sun::star::sdbc">XParameters</type> interface.<br/>
213*b1cdbd2cSJim Jagielski		However, you can also choose to let an interaction handler supply such data. For this, you may
214*b1cdbd2cSJim Jagielski		for instance instantiate an <type>InteractionHandler</type>, which asks the user for the
215*b1cdbd2cSJim Jagielski		data, or you may write your own one, which supplies the data from somewhere else.
216*b1cdbd2cSJim Jagielski        The default implementation will only ask for parameters which aren't set before through the <type scope="com::sun::star::sdbc">XParameters</type> interface.</p>
217*b1cdbd2cSJim Jagielski
218*b1cdbd2cSJim Jagielski		@see com::sun::star::sdb::InteractionHandler
219*b1cdbd2cSJim Jagielski	*/
220*b1cdbd2cSJim Jagielski	interface com::sun::star::sdb::XCompletedExecution;
221*b1cdbd2cSJim Jagielski
222*b1cdbd2cSJim Jagielski	/** approving of actions performed on the rowset.
223*b1cdbd2cSJim Jagielski
224*b1cdbd2cSJim Jagielski        <p>The support of this interface implies a sematical extension to the <type scope="com::sun::star::sdbc">XResultSetUpdate</type>
225*b1cdbd2cSJim Jagielski        interface which is supported via the <type scope="com::sun::star::sdbc">ResultSet</type>.</p>
226*b1cdbd2cSJim Jagielski
227*b1cdbd2cSJim Jagielski        @see XResultSetUpdate
228*b1cdbd2cSJim Jagielski	 */
229*b1cdbd2cSJim Jagielski	interface XRowSetApproveBroadcaster;
230*b1cdbd2cSJim Jagielski
231*b1cdbd2cSJim Jagielski	/** is the interface for updating row data to the database.
232*b1cdbd2cSJim Jagielski
233*b1cdbd2cSJim Jagielski        <p>The optional support of this interface is already implied with the support of the <type scope="com::sun::star::sdbc">ResultSet</type> service.</p>
234*b1cdbd2cSJim Jagielski
235*b1cdbd2cSJim Jagielski        <p>However, note that the additional support of the <type>XRowSetApproveBroadcaster</type> interface results
236*b1cdbd2cSJim Jagielski        in a sematical extension: the methods <member scope="com::sun::star::sdbc">XResultSetUpdate::insertRow</member>,
237*b1cdbd2cSJim Jagielski        <member scope="com::sun::star::sdbc">XResultSetUpdate::updateRow</member> and <member scope="com::sun::star::sdbc">XResultSetUpdate::deleteRow</member>
238*b1cdbd2cSJim Jagielski        will now throw the <type>RowSetVetoException</type> if the action which is to be performed was vetoed
239*b1cdbd2cSJim Jagielski        by one of the <type>XRowSetApproveListener</type>'s.</p>
240*b1cdbd2cSJim Jagielski	 */
241*b1cdbd2cSJim Jagielski    [optional] interface com::sun::star::sdbc::XResultSetUpdate;
242*b1cdbd2cSJim Jagielski
243*b1cdbd2cSJim Jagielski	/** is the interface for deleting more than one row, identified by it's bookmark.
244*b1cdbd2cSJim Jagielski
245*b1cdbd2cSJim Jagielski        <p>The optional support of this interface is already implied with the support of the <type scope="com::sun::star::sdbcx">ResultSet</type> service.</p>
246*b1cdbd2cSJim Jagielski
247*b1cdbd2cSJim Jagielski        <p>However, note that the additional support of the <type>XRowSetApproveBroadcaster</type> interface results
248*b1cdbd2cSJim Jagielski        in a sematical extension: the method <member scope="com::sun::star::sdbcx">XDeleteRows::deleteRows</member>
249*b1cdbd2cSJim Jagielski        will now throw the <type>RowSetVetoException</type> if the deletion was vetoed
250*b1cdbd2cSJim Jagielski        by one of the <type>XRowSetApproveListener</type>'s.</p>
251*b1cdbd2cSJim Jagielski	 */
252*b1cdbd2cSJim Jagielski	[optional] interface com::sun::star::sdbcx::XDeleteRows;
253*b1cdbd2cSJim Jagielski
254*b1cdbd2cSJim Jagielski    /** creates a second result set which is based on the same data.
255*b1cdbd2cSJim Jagielski		<p>
256*b1cdbd2cSJim Jagielski		The new result set is interoperable with the row set which created it,
257*b1cdbd2cSJim Jagielski		e.g., you can exchange bookmarks between both sets.
258*b1cdbd2cSJim Jagielski		</p>
259*b1cdbd2cSJim Jagielski		<p>
260*b1cdbd2cSJim Jagielski		If the row set is not alive (i.e., it was not executed before),
261*b1cdbd2cSJim Jagielski		<NULL/>
262*b1cdbd2cSJim Jagielski		is returned.
263*b1cdbd2cSJim Jagielski		</p>
264*b1cdbd2cSJim Jagielski	*/
265*b1cdbd2cSJim Jagielski	interface XResultSetAccess;
266*b1cdbd2cSJim Jagielski
267*b1cdbd2cSJim Jagielski    /** gives access to the parameters contained in the SQL statement represented by the component.
268*b1cdbd2cSJim Jagielski
269*b1cdbd2cSJim Jagielski        <p>If your <code>RowSet</code> is bound to an SQL command or query which contains parameters, or has
270*b1cdbd2cSJim Jagielski        a <member>Filter</member> or <member>Order</member> which contains parameters, then those can be accessed
271*b1cdbd2cSJim Jagielski        using the <code>XParametersSupplier</code> interface.</p>
272*b1cdbd2cSJim Jagielski
273*b1cdbd2cSJim Jagielski        <p>The returned container contains parameter objects which do allow write access to the parameters (which
274*b1cdbd2cSJim Jagielski        is equivalent to using the <type scope="com::sun::star::sdbc">XParameters</type> interface inherited from
275*b1cdbd2cSJim Jagielski        <type scope="com::sun::star::sdbc">RowSet</type>). Additionally, they provide information about the parameters,
276*b1cdbd2cSJim Jagielski        such as their name (if they have one), their type, and the like.</p>
277*b1cdbd2cSJim Jagielski    */
278*b1cdbd2cSJim Jagielski    [optional] interface XParametersSupplier;
279*b1cdbd2cSJim Jagielski
280*b1cdbd2cSJim Jagielski	/** is the connection generated by a DataSource or by a URL. It could
281*b1cdbd2cSJim Jagielski		also be set from outside. When set from outside the RowSet is not responsible for the closing of the connection.
282*b1cdbd2cSJim Jagielski	 */
283*b1cdbd2cSJim Jagielski	[property] com::sun::star::sdbc::XConnection ActiveConnection;
284*b1cdbd2cSJim Jagielski
285*b1cdbd2cSJim Jagielski
286*b1cdbd2cSJim Jagielski	/** is the name of the datasource to use, this could be a named datasource
287*b1cdbd2cSJim Jagielski		or the URL of a data access component.
288*b1cdbd2cSJim Jagielski	 */
289*b1cdbd2cSJim Jagielski	[property] string DataSourceName;
290*b1cdbd2cSJim Jagielski
291*b1cdbd2cSJim Jagielski
292*b1cdbd2cSJim Jagielski	/** is the command which should be executed, the type of command depends
293*b1cdbd2cSJim Jagielski		on the CommandType.
294*b1cdbd2cSJim Jagielski
295*b1cdbd2cSJim Jagielski        <p>In case of a <member>CommandType</member> of <member>CommandType::COMMAND</member>,
296*b1cdbd2cSJim Jagielski        means in case the <member>Command</member> specifies an SQL statement, the inherited
297*b1cdbd2cSJim Jagielski        <member scope="com::sun::star::sdbc">RowSet::EscapeProcessing</member>
298*b1cdbd2cSJim Jagielski        becomes relevant:<br/>
299*b1cdbd2cSJim Jagielski        It then can be to used to specify whether the SQL statement should be analyzed on the
300*b1cdbd2cSJim Jagielski        client side before sending it to the database server.<br/>
301*b1cdbd2cSJim Jagielski        The default value for <member scope="com::sun::star::sdbc">RowSet::EscapeProcessing</member>
302*b1cdbd2cSJim Jagielski        is <TRUE/>. By switching it to <FALSE/>, you can pass backend-specific SQL statements,
303*b1cdbd2cSJim Jagielski        which are not standard SQL, to your database.</p>
304*b1cdbd2cSJim Jagielski
305*b1cdbd2cSJim Jagielski		@see com::sun::star::sdb::CommandType
306*b1cdbd2cSJim Jagielski		@see com::sun::star::sdbc::RowSet::EscapeProcessing
307*b1cdbd2cSJim Jagielski	 */
308*b1cdbd2cSJim Jagielski	[property] string Command;
309*b1cdbd2cSJim Jagielski
310*b1cdbd2cSJim Jagielski	/** is the type of the command.
311*b1cdbd2cSJim Jagielski		@see com::sun::star::sdb::CommandType
312*b1cdbd2cSJim Jagielski	 */
313*b1cdbd2cSJim Jagielski	[property] long CommandType;
314*b1cdbd2cSJim Jagielski
315*b1cdbd2cSJim Jagielski	/** is the command which is currently used.
316*b1cdbd2cSJim Jagielski		@see com::sun::star::sdb::CommandType
317*b1cdbd2cSJim Jagielski	 */
318*b1cdbd2cSJim Jagielski	[readonly, property] string ActiveCommand;
319*b1cdbd2cSJim Jagielski
320*b1cdbd2cSJim Jagielski
321*b1cdbd2cSJim Jagielski	/** indicates whether all results should be discarded or not.
322*b1cdbd2cSJim Jagielski	 */
323*b1cdbd2cSJim Jagielski	[property] boolean IgnoreResult;
324*b1cdbd2cSJim Jagielski
325*b1cdbd2cSJim Jagielski
326*b1cdbd2cSJim Jagielski	/** additional filter for a rowset.
327*b1cdbd2cSJim Jagielski	 */
328*b1cdbd2cSJim Jagielski	[property] string Filter;
329*b1cdbd2cSJim Jagielski
330*b1cdbd2cSJim Jagielski
331*b1cdbd2cSJim Jagielski	/** indicates whether the filter should be applied or not,
332*b1cdbd2cSJim Jagielski		default is <FALSE/>.
333*b1cdbd2cSJim Jagielski	 */
334*b1cdbd2cSJim Jagielski	[property] boolean ApplyFilter;
335*b1cdbd2cSJim Jagielski
336*b1cdbd2cSJim Jagielski	/** additional having clause for the row set
337*b1cdbd2cSJim Jagielski	 */
338*b1cdbd2cSJim Jagielski	[optional,property] string HavingClause;
339*b1cdbd2cSJim Jagielski
340*b1cdbd2cSJim Jagielski	/** additional group by for the row set
341*b1cdbd2cSJim Jagielski	 */
342*b1cdbd2cSJim Jagielski	[optional,property] string GroupBy;
343*b1cdbd2cSJim Jagielski
344*b1cdbd2cSJim Jagielski	/** is a additional sort order definition for a rowset.
345*b1cdbd2cSJim Jagielski	 */
346*b1cdbd2cSJim Jagielski	[property] string Order;
347*b1cdbd2cSJim Jagielski
348*b1cdbd2cSJim Jagielski
349*b1cdbd2cSJim Jagielski	/** indicates the privileges for insert, update, and delete.
350*b1cdbd2cSJim Jagielski		@see com::sun::star::sdbcx::Privilege
351*b1cdbd2cSJim Jagielski	 */
352*b1cdbd2cSJim Jagielski	[readonly, property] long Privileges;
353*b1cdbd2cSJim Jagielski
354*b1cdbd2cSJim Jagielski
355*b1cdbd2cSJim Jagielski	/** indicates that the current row is modified.
356*b1cdbd2cSJim Jagielski	 */
357*b1cdbd2cSJim Jagielski	[readonly, property] boolean IsModified;
358*b1cdbd2cSJim Jagielski
359*b1cdbd2cSJim Jagielski
360*b1cdbd2cSJim Jagielski	/** indicates that the current row is going to be inserted to the database.
361*b1cdbd2cSJim Jagielski	 */
362*b1cdbd2cSJim Jagielski	[readonly, property] boolean IsNew;
363*b1cdbd2cSJim Jagielski
364*b1cdbd2cSJim Jagielski
365*b1cdbd2cSJim Jagielski	/** contains the number of rows accessed in a the data source.
366*b1cdbd2cSJim Jagielski	 */
367*b1cdbd2cSJim Jagielski	[readonly, property] long RowCount;
368*b1cdbd2cSJim Jagielski
369*b1cdbd2cSJim Jagielski
370*b1cdbd2cSJim Jagielski	/** indicates that all rows of te row set have been counted.
371*b1cdbd2cSJim Jagielski	 */
372*b1cdbd2cSJim Jagielski	[readonly, property] boolean IsRowCountFinal;
373*b1cdbd2cSJim Jagielski
374*b1cdbd2cSJim Jagielski
375*b1cdbd2cSJim Jagielski	/** is the name of the table which should be updated, this is usually used
376*b1cdbd2cSJim Jagielski		for queries which relate to more than one table.
377*b1cdbd2cSJim Jagielski	 */
378*b1cdbd2cSJim Jagielski	[optional, property] string UpdateTableName;
379*b1cdbd2cSJim Jagielski
380*b1cdbd2cSJim Jagielski	/** is the name of the table catalog
381*b1cdbd2cSJim Jagielski	 */
382*b1cdbd2cSJim Jagielski	[optional, property] string UpdateCatalogName;
383*b1cdbd2cSJim Jagielski
384*b1cdbd2cSJim Jagielski
385*b1cdbd2cSJim Jagielski	/** is the name of the table schema.
386*b1cdbd2cSJim Jagielski	 */
387*b1cdbd2cSJim Jagielski	[optional, property] string UpdateSchemaName;
388*b1cdbd2cSJim Jagielski};
389*b1cdbd2cSJim Jagielski
390*b1cdbd2cSJim Jagielski//=============================================================================
391*b1cdbd2cSJim Jagielski
392*b1cdbd2cSJim Jagielski}; }; }; };
393*b1cdbd2cSJim Jagielski
394*b1cdbd2cSJim Jagielski/*===========================================================================
395*b1cdbd2cSJim Jagielski===========================================================================*/
396*b1cdbd2cSJim Jagielski#endif
397