1*3c5114b8SDamjan Jovanovic /**************************************************************
2*3c5114b8SDamjan Jovanovic  *
3*3c5114b8SDamjan Jovanovic  * Licensed to the Apache Software Foundation (ASF) under one
4*3c5114b8SDamjan Jovanovic  * or more contributor license agreements.  See the NOTICE file
5*3c5114b8SDamjan Jovanovic  * distributed with this work for additional information
6*3c5114b8SDamjan Jovanovic  * regarding copyright ownership.  The ASF licenses this file
7*3c5114b8SDamjan Jovanovic  * to you under the Apache License, Version 2.0 (the
8*3c5114b8SDamjan Jovanovic  * "License"); you may not use this file except in compliance
9*3c5114b8SDamjan Jovanovic  * with the License.  You may obtain a copy of the License at
10*3c5114b8SDamjan Jovanovic  *
11*3c5114b8SDamjan Jovanovic  *   http://www.apache.org/licenses/LICENSE-2.0
12*3c5114b8SDamjan Jovanovic  *
13*3c5114b8SDamjan Jovanovic  * Unless required by applicable law or agreed to in writing,
14*3c5114b8SDamjan Jovanovic  * software distributed under the License is distributed on an
15*3c5114b8SDamjan Jovanovic  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*3c5114b8SDamjan Jovanovic  * KIND, either express or implied.  See the License for the
17*3c5114b8SDamjan Jovanovic  * specific language governing permissions and limitations
18*3c5114b8SDamjan Jovanovic  * under the License.
19*3c5114b8SDamjan Jovanovic  *
20*3c5114b8SDamjan Jovanovic  *************************************************************/
21*3c5114b8SDamjan Jovanovic 
22*3c5114b8SDamjan Jovanovic package com.sun.star.sdbcx.comp.postgresql;
23*3c5114b8SDamjan Jovanovic 
24*3c5114b8SDamjan Jovanovic import com.sun.star.beans.PropertyVetoException;
25*3c5114b8SDamjan Jovanovic import com.sun.star.beans.UnknownPropertyException;
26*3c5114b8SDamjan Jovanovic import com.sun.star.beans.XPropertyChangeListener;
27*3c5114b8SDamjan Jovanovic import com.sun.star.beans.XPropertySet;
28*3c5114b8SDamjan Jovanovic import com.sun.star.beans.XPropertySetInfo;
29*3c5114b8SDamjan Jovanovic import com.sun.star.beans.XVetoableChangeListener;
30*3c5114b8SDamjan Jovanovic import com.sun.star.lang.IllegalArgumentException;
31*3c5114b8SDamjan Jovanovic import com.sun.star.lang.WrappedTargetException;
32*3c5114b8SDamjan Jovanovic import com.sun.star.lib.uno.helper.ComponentBase;
33*3c5114b8SDamjan Jovanovic import com.sun.star.sdbc.SQLException;
34*3c5114b8SDamjan Jovanovic import com.sun.star.sdbc.XCloseable;
35*3c5114b8SDamjan Jovanovic import com.sun.star.sdbc.XConnection;
36*3c5114b8SDamjan Jovanovic import com.sun.star.sdbc.XMultipleResults;
37*3c5114b8SDamjan Jovanovic import com.sun.star.sdbc.XResultSet;
38*3c5114b8SDamjan Jovanovic import com.sun.star.sdbc.XStatement;
39*3c5114b8SDamjan Jovanovic import com.sun.star.sdbc.XWarningsSupplier;
40*3c5114b8SDamjan Jovanovic import com.sun.star.uno.UnoRuntime;
41*3c5114b8SDamjan Jovanovic import com.sun.star.util.XCancellable;
42*3c5114b8SDamjan Jovanovic 
43*3c5114b8SDamjan Jovanovic public class PostgresqlStatement extends ComponentBase
44*3c5114b8SDamjan Jovanovic         implements XCloseable, XPropertySet, XCancellable, XStatement, XWarningsSupplier, XMultipleResults {
45*3c5114b8SDamjan Jovanovic 
46*3c5114b8SDamjan Jovanovic     private XStatement impl;
47*3c5114b8SDamjan Jovanovic     private XCloseable implCloseable;
48*3c5114b8SDamjan Jovanovic     private XPropertySet implPropertySet;
49*3c5114b8SDamjan Jovanovic     private XCancellable implCancellable;
50*3c5114b8SDamjan Jovanovic     private XWarningsSupplier implWarningsSupplier;
51*3c5114b8SDamjan Jovanovic     private XMultipleResults implMultipleResults;
52*3c5114b8SDamjan Jovanovic     private XConnection connection;
53*3c5114b8SDamjan Jovanovic 
PostgresqlStatement(XStatement impl, XConnection connection)54*3c5114b8SDamjan Jovanovic     public PostgresqlStatement(XStatement impl, XConnection connection) {
55*3c5114b8SDamjan Jovanovic         this.impl = impl;
56*3c5114b8SDamjan Jovanovic         this.implCloseable = UnoRuntime.queryInterface(XCloseable.class, impl);
57*3c5114b8SDamjan Jovanovic         this.implPropertySet = UnoRuntime.queryInterface(XPropertySet.class, impl);
58*3c5114b8SDamjan Jovanovic         this.implCancellable = UnoRuntime.queryInterface(XCancellable.class, impl);
59*3c5114b8SDamjan Jovanovic         this.implWarningsSupplier = UnoRuntime.queryInterface(XWarningsSupplier.class, impl);
60*3c5114b8SDamjan Jovanovic         this.implMultipleResults = UnoRuntime.queryInterface(XMultipleResults.class, impl);
61*3c5114b8SDamjan Jovanovic         this.connection = connection;
62*3c5114b8SDamjan Jovanovic     }
63*3c5114b8SDamjan Jovanovic 
64*3c5114b8SDamjan Jovanovic     // XComponentBase:
65*3c5114b8SDamjan Jovanovic 
66*3c5114b8SDamjan Jovanovic     @Override
postDisposing()67*3c5114b8SDamjan Jovanovic     protected void postDisposing() {
68*3c5114b8SDamjan Jovanovic         try {
69*3c5114b8SDamjan Jovanovic             implCloseable.close();
70*3c5114b8SDamjan Jovanovic         } catch (SQLException sqlException) {
71*3c5114b8SDamjan Jovanovic         }
72*3c5114b8SDamjan Jovanovic     }
73*3c5114b8SDamjan Jovanovic 
74*3c5114b8SDamjan Jovanovic     // XStatement:
75*3c5114b8SDamjan Jovanovic 
execute(String arg0)76*3c5114b8SDamjan Jovanovic     public boolean execute(String arg0) throws SQLException {
77*3c5114b8SDamjan Jovanovic         System.out.println(arg0);
78*3c5114b8SDamjan Jovanovic         return impl.execute(arg0);
79*3c5114b8SDamjan Jovanovic     }
80*3c5114b8SDamjan Jovanovic 
executeQuery(String arg0)81*3c5114b8SDamjan Jovanovic     public XResultSet executeQuery(String arg0) throws SQLException {
82*3c5114b8SDamjan Jovanovic         XResultSet results = impl.executeQuery(arg0);
83*3c5114b8SDamjan Jovanovic         return new PostgresqlResultSet(results, this);
84*3c5114b8SDamjan Jovanovic     }
85*3c5114b8SDamjan Jovanovic 
executeUpdate(String arg0)86*3c5114b8SDamjan Jovanovic     public int executeUpdate(String arg0) throws SQLException {
87*3c5114b8SDamjan Jovanovic         return impl.executeUpdate(arg0);
88*3c5114b8SDamjan Jovanovic     }
89*3c5114b8SDamjan Jovanovic 
getConnection()90*3c5114b8SDamjan Jovanovic     public XConnection getConnection() throws SQLException {
91*3c5114b8SDamjan Jovanovic         return connection;
92*3c5114b8SDamjan Jovanovic     }
93*3c5114b8SDamjan Jovanovic 
94*3c5114b8SDamjan Jovanovic     // XCloseable:
95*3c5114b8SDamjan Jovanovic 
close()96*3c5114b8SDamjan Jovanovic     public void close() throws SQLException {
97*3c5114b8SDamjan Jovanovic         dispose();
98*3c5114b8SDamjan Jovanovic     }
99*3c5114b8SDamjan Jovanovic 
100*3c5114b8SDamjan Jovanovic     // XPropertySet:
101*3c5114b8SDamjan Jovanovic 
addPropertyChangeListener(String arg0, XPropertyChangeListener arg1)102*3c5114b8SDamjan Jovanovic     public void addPropertyChangeListener(String arg0, XPropertyChangeListener arg1) throws UnknownPropertyException, WrappedTargetException {
103*3c5114b8SDamjan Jovanovic         implPropertySet.addPropertyChangeListener(arg0, arg1);
104*3c5114b8SDamjan Jovanovic     }
105*3c5114b8SDamjan Jovanovic 
addVetoableChangeListener(String arg0, XVetoableChangeListener arg1)106*3c5114b8SDamjan Jovanovic     public void addVetoableChangeListener(String arg0, XVetoableChangeListener arg1) throws UnknownPropertyException, WrappedTargetException {
107*3c5114b8SDamjan Jovanovic         implPropertySet.addVetoableChangeListener(arg0, arg1);
108*3c5114b8SDamjan Jovanovic     }
109*3c5114b8SDamjan Jovanovic 
getPropertySetInfo()110*3c5114b8SDamjan Jovanovic     public XPropertySetInfo getPropertySetInfo() {
111*3c5114b8SDamjan Jovanovic         return implPropertySet.getPropertySetInfo();
112*3c5114b8SDamjan Jovanovic     }
113*3c5114b8SDamjan Jovanovic 
getPropertyValue(String arg0)114*3c5114b8SDamjan Jovanovic     public Object getPropertyValue(String arg0) throws UnknownPropertyException, WrappedTargetException {
115*3c5114b8SDamjan Jovanovic         return implPropertySet.getPropertyValue(arg0);
116*3c5114b8SDamjan Jovanovic     }
117*3c5114b8SDamjan Jovanovic 
removePropertyChangeListener(String arg0, XPropertyChangeListener arg1)118*3c5114b8SDamjan Jovanovic     public void removePropertyChangeListener(String arg0, XPropertyChangeListener arg1) throws UnknownPropertyException, WrappedTargetException {
119*3c5114b8SDamjan Jovanovic         implPropertySet.removePropertyChangeListener(arg0, arg1);
120*3c5114b8SDamjan Jovanovic     }
121*3c5114b8SDamjan Jovanovic 
removeVetoableChangeListener(String arg0, XVetoableChangeListener arg1)122*3c5114b8SDamjan Jovanovic     public void removeVetoableChangeListener(String arg0, XVetoableChangeListener arg1) throws UnknownPropertyException, WrappedTargetException {
123*3c5114b8SDamjan Jovanovic         implPropertySet.removeVetoableChangeListener(arg0, arg1);
124*3c5114b8SDamjan Jovanovic     }
125*3c5114b8SDamjan Jovanovic 
setPropertyValue(String arg0, Object arg1)126*3c5114b8SDamjan Jovanovic     public void setPropertyValue(String arg0, Object arg1)
127*3c5114b8SDamjan Jovanovic             throws UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException {
128*3c5114b8SDamjan Jovanovic         implPropertySet.setPropertyValue(arg0, arg1);
129*3c5114b8SDamjan Jovanovic     }
130*3c5114b8SDamjan Jovanovic 
131*3c5114b8SDamjan Jovanovic     // XCancellable:
132*3c5114b8SDamjan Jovanovic 
cancel()133*3c5114b8SDamjan Jovanovic     public void cancel() {
134*3c5114b8SDamjan Jovanovic         implCancellable.cancel();
135*3c5114b8SDamjan Jovanovic     }
136*3c5114b8SDamjan Jovanovic 
137*3c5114b8SDamjan Jovanovic     // XWarningsSupplier:
138*3c5114b8SDamjan Jovanovic 
clearWarnings()139*3c5114b8SDamjan Jovanovic     public void clearWarnings() throws SQLException {
140*3c5114b8SDamjan Jovanovic         implWarningsSupplier.clearWarnings();
141*3c5114b8SDamjan Jovanovic     }
142*3c5114b8SDamjan Jovanovic 
getWarnings()143*3c5114b8SDamjan Jovanovic     public Object getWarnings() throws SQLException {
144*3c5114b8SDamjan Jovanovic         return implWarningsSupplier.getWarnings();
145*3c5114b8SDamjan Jovanovic     }
146*3c5114b8SDamjan Jovanovic 
147*3c5114b8SDamjan Jovanovic     // XMultipleResults:
148*3c5114b8SDamjan Jovanovic 
getMoreResults()149*3c5114b8SDamjan Jovanovic     public boolean getMoreResults() throws SQLException {
150*3c5114b8SDamjan Jovanovic         return implMultipleResults.getMoreResults();
151*3c5114b8SDamjan Jovanovic     }
152*3c5114b8SDamjan Jovanovic 
getResultSet()153*3c5114b8SDamjan Jovanovic     public XResultSet getResultSet() throws SQLException {
154*3c5114b8SDamjan Jovanovic         return new PostgresqlResultSet(implMultipleResults.getResultSet(), this);
155*3c5114b8SDamjan Jovanovic     }
156*3c5114b8SDamjan Jovanovic 
getUpdateCount()157*3c5114b8SDamjan Jovanovic     public int getUpdateCount() throws SQLException {
158*3c5114b8SDamjan Jovanovic         return implMultipleResults.getUpdateCount();
159*3c5114b8SDamjan Jovanovic     }
160*3c5114b8SDamjan Jovanovic }
161