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 
24*b1cdbd2cSJim Jagielski #ifndef _CONNECTIVITY_ADABAS_TABLE_HXX_
25*b1cdbd2cSJim Jagielski #define _CONNECTIVITY_ADABAS_TABLE_HXX_
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include "connectivity/sdbcx/VTable.hxx"
28*b1cdbd2cSJim Jagielski #include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
29*b1cdbd2cSJim Jagielski #include "adabas/BConnection.hxx"
30*b1cdbd2cSJim Jagielski #include "connectivity/TTableHelper.hxx"
31*b1cdbd2cSJim Jagielski 
32*b1cdbd2cSJim Jagielski namespace connectivity
33*b1cdbd2cSJim Jagielski {
34*b1cdbd2cSJim Jagielski 	namespace adabas
35*b1cdbd2cSJim Jagielski 	{
36*b1cdbd2cSJim Jagielski 		typedef connectivity::OTableHelper OTable_TYPEDEF;
37*b1cdbd2cSJim Jagielski 
38*b1cdbd2cSJim Jagielski         ::rtl::OUString getTypeString(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xColProp);
39*b1cdbd2cSJim Jagielski 
40*b1cdbd2cSJim Jagielski 		class OAdabasTable : public OTableHelper
41*b1cdbd2cSJim Jagielski 		{
42*b1cdbd2cSJim Jagielski 			OAdabasConnection* m_pConnection;
43*b1cdbd2cSJim Jagielski 		protected:
44*b1cdbd2cSJim Jagielski 			/** creates the column collection for the table
45*b1cdbd2cSJim Jagielski 				@param	_rNames
46*b1cdbd2cSJim Jagielski 					The column names.
47*b1cdbd2cSJim Jagielski 			*/
48*b1cdbd2cSJim Jagielski 			virtual sdbcx::OCollection* createColumns(const TStringVector& _rNames);
49*b1cdbd2cSJim Jagielski 
50*b1cdbd2cSJim Jagielski 			/** creates the key collection for the table
51*b1cdbd2cSJim Jagielski 				@param	_rNames
52*b1cdbd2cSJim Jagielski 					The key names.
53*b1cdbd2cSJim Jagielski 			*/
54*b1cdbd2cSJim Jagielski 			virtual sdbcx::OCollection* createKeys(const TStringVector& _rNames);
55*b1cdbd2cSJim Jagielski 
56*b1cdbd2cSJim Jagielski 			/** creates the index collection for the table
57*b1cdbd2cSJim Jagielski 				@param	_rNames
58*b1cdbd2cSJim Jagielski 					The index names.
59*b1cdbd2cSJim Jagielski 			*/
60*b1cdbd2cSJim Jagielski 			virtual sdbcx::OCollection* createIndexes(const TStringVector& _rNames);
61*b1cdbd2cSJim Jagielski 
62*b1cdbd2cSJim Jagielski 		public:
63*b1cdbd2cSJim Jagielski 			OAdabasTable(	sdbcx::OCollection* _pTables,
64*b1cdbd2cSJim Jagielski 							OAdabasConnection* _pConnection);
65*b1cdbd2cSJim Jagielski 			OAdabasTable(	sdbcx::OCollection* _pTables,
66*b1cdbd2cSJim Jagielski 							OAdabasConnection* _pConnection,
67*b1cdbd2cSJim Jagielski 					const ::rtl::OUString& _Name,
68*b1cdbd2cSJim Jagielski 					const ::rtl::OUString& _Type,
69*b1cdbd2cSJim Jagielski 					const ::rtl::OUString& _Description = ::rtl::OUString(),
70*b1cdbd2cSJim Jagielski 					const ::rtl::OUString& _SchemaName = ::rtl::OUString(),
71*b1cdbd2cSJim Jagielski 					const ::rtl::OUString& _CatalogName = ::rtl::OUString()
72*b1cdbd2cSJim Jagielski 				);
73*b1cdbd2cSJim Jagielski 
getTableName() const74*b1cdbd2cSJim Jagielski 			::rtl::OUString getTableName() const { return m_Name; }
getSchema() const75*b1cdbd2cSJim Jagielski 			::rtl::OUString getSchema() const { return m_SchemaName; }
76*b1cdbd2cSJim Jagielski 
77*b1cdbd2cSJim Jagielski 			// com::sun::star::lang::XUnoTunnel
78*b1cdbd2cSJim Jagielski             virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
79*b1cdbd2cSJim Jagielski             static ::com::sun::star::uno::Sequence< sal_Int8 > getUnoTunnelImplementationId();
80*b1cdbd2cSJim Jagielski 
81*b1cdbd2cSJim Jagielski 			// XAlterTable
82*b1cdbd2cSJim Jagielski             virtual void SAL_CALL alterColumnByName( const ::rtl::OUString& colName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& descriptor ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
83*b1cdbd2cSJim Jagielski 			// XNamed
84*b1cdbd2cSJim Jagielski 			virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
85*b1cdbd2cSJim Jagielski 			/**
86*b1cdbd2cSJim Jagielski 				returns the ALTER TABLE XXX COLUMN statement
87*b1cdbd2cSJim Jagielski 			*/
88*b1cdbd2cSJim Jagielski 			::rtl::OUString getAlterTableColumnPart(const ::rtl::OUString& _rsColumnName );
89*b1cdbd2cSJim Jagielski 
90*b1cdbd2cSJim Jagielski 			// starts a sql transaaction
91*b1cdbd2cSJim Jagielski 			void beginTransAction();
92*b1cdbd2cSJim Jagielski 			// rolls back a sql transaaction
93*b1cdbd2cSJim Jagielski 			void rollbackTransAction();
94*b1cdbd2cSJim Jagielski 			// ends a sql transaaction
95*b1cdbd2cSJim Jagielski 			void endTransAction();
96*b1cdbd2cSJim Jagielski 			// some methods to alter table structures
97*b1cdbd2cSJim Jagielski 			void alterColumnType(const ::rtl::OUString& _rColName,const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _xDescriptor);
98*b1cdbd2cSJim Jagielski 			void alterNotNullValue(sal_Int32 _nNewNullable,const ::rtl::OUString& _rColName);
99*b1cdbd2cSJim Jagielski 			void alterDefaultValue(const ::rtl::OUString& _sNewDefault,const ::rtl::OUString& _rColName);
100*b1cdbd2cSJim Jagielski 			void dropDefaultValue(const ::rtl::OUString& _sNewDefault);
101*b1cdbd2cSJim Jagielski 			void addDefaultValue(const ::rtl::OUString& _sNewDefault,const ::rtl::OUString& _rColName);
102*b1cdbd2cSJim Jagielski 		};
103*b1cdbd2cSJim Jagielski 	}
104*b1cdbd2cSJim Jagielski }
105*b1cdbd2cSJim Jagielski #endif // _CONNECTIVITY_ADABAS_TABLE_HXX_
106*b1cdbd2cSJim Jagielski 
107