1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_connectivity.hxx"
26 #include "connectivity/sdbcx/VView.hxx"
27 #include <com/sun/star/lang/DisposedException.hpp>
28 #include <comphelper/sequence.hxx>
29 #include "connectivity/dbtools.hxx"
30 #include "TConnection.hxx"
31 
32 // -------------------------------------------------------------------------
33 using namespace connectivity;
34 using namespace connectivity::sdbcx;
35 using namespace ::com::sun::star::beans;
36 using namespace ::com::sun::star::uno;
37 using namespace ::com::sun::star::sdbcx;
38 using namespace ::com::sun::star::container;
39 using namespace ::com::sun::star::lang;
40 
41 IMPLEMENT_SERVICE_INFO(OView,"com.sun.star.sdbcx.VView","com.sun.star.sdbcx.View");
42 // -------------------------------------------------------------------------
43 OView::OView(sal_Bool _bCase,
44 			const ::rtl::OUString& _Name,
45 			const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >& _xMetaData,
46 			sal_Int32 _CheckOption,
47 			const ::rtl::OUString& _Command,
48 			const ::rtl::OUString& _SchemaName,
49 			const ::rtl::OUString& _CatalogName) : ODescriptor(::comphelper::OMutexAndBroadcastHelper::m_aBHelper,_bCase)
50 			,m_CatalogName(_CatalogName)
51 			,m_SchemaName(_SchemaName)
52 			,m_Command(_Command)
53 			,m_CheckOption(_CheckOption)
54 			,m_xMetaData(_xMetaData)
55 
56 {
57 	m_Name = _Name;
58 	construct();
59 }
60 // -------------------------------------------------------------------------
61 OView::OView(sal_Bool _bCase,const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >& _xMetaData)
62 	: ODescriptor(::comphelper::OMutexAndBroadcastHelper::m_aBHelper,_bCase,sal_True)
63 	,m_xMetaData(_xMetaData)
64 {
65 	construct();
66 }
67 // -------------------------------------------------------------------------
68 OView::~OView()
69 {
70 }
71 // -------------------------------------------------------------------------
72 void OView::construct()
73 {
74 	ODescriptor::construct();
75 
76 	sal_Int32 nAttrib = isNew() ? 0 : PropertyAttribute::READONLY;
77 
78 	registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_CATALOGNAME),		PROPERTY_ID_CATALOGNAME,nAttrib,&m_CatalogName,	::getCppuType(static_cast< ::rtl::OUString*>(NULL)));
79 	registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCHEMANAME),		PROPERTY_ID_SCHEMANAME,	nAttrib,&m_SchemaName,	::getCppuType(static_cast< ::rtl::OUString*>(NULL)));
80 	registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_COMMAND),			PROPERTY_ID_COMMAND,	nAttrib,&m_Command,		::getCppuType(static_cast< ::rtl::OUString*>(NULL)));
81 	registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_CHECKOPTION),		PROPERTY_ID_CHECKOPTION,nAttrib,&m_CheckOption,	::getCppuType(static_cast< sal_Int32*>(NULL)));
82 }
83 // -------------------------------------------------------------------------
84 void OView::disposing(void)
85 {
86 	OPropertySetHelper::disposing();
87 
88 	::osl::MutexGuard aGuard(m_aMutex);
89 }
90 // -------------------------------------------------------------------------
91 Sequence< Type > SAL_CALL OView::getTypes(  ) throw(RuntimeException)
92 {
93     return ::comphelper::concatSequences(ODescriptor::getTypes(),OView_BASE::getTypes());
94 }
95 // -------------------------------------------------------------------------
96 Any SAL_CALL OView::queryInterface( const Type & rType ) throw(RuntimeException)
97 {
98     Any aRet = OView_BASE::queryInterface( rType);
99 	return aRet.hasValue() ? aRet : ODescriptor::queryInterface( rType);
100 }
101 // -------------------------------------------------------------------------
102 ::cppu::IPropertyArrayHelper* OView::createArrayHelper( sal_Int32 /*_nId*/ ) const
103 {
104     return doCreateArrayHelper();
105 }
106 // -------------------------------------------------------------------------
107 ::cppu::IPropertyArrayHelper & OView::getInfoHelper()
108 {
109 	return *const_cast<OView*>(this)->getArrayHelper(isNew() ? 1 : 0);
110 }
111 // -----------------------------------------------------------------------------
112 ::rtl::OUString SAL_CALL OView::getName() throw(::com::sun::star::uno::RuntimeException)
113 {
114 	::rtl::OUString sComposedName;
115 	if(m_xMetaData.is())
116 		sComposedName = ::dbtools::composeTableName( m_xMetaData, m_CatalogName, m_SchemaName, m_Name, sal_False, ::dbtools::eInDataManipulation );
117 	else
118 	{
119 		Any aValue;
120 		getFastPropertyValue(aValue,PROPERTY_ID_NAME);
121 		aValue >>= sComposedName;
122 	}
123 	return sComposedName;
124 }
125 // -----------------------------------------------------------------------------
126 ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL OView::getPropertySetInfo(  ) throw(::com::sun::star::uno::RuntimeException)
127 {
128 	return ::cppu::OPropertySetHelper::createPropertySetInfo(getInfoHelper());
129 }
130 // -----------------------------------------------------------------------------
131 void SAL_CALL OView::setName( const ::rtl::OUString& ) throw(::com::sun::star::uno::RuntimeException)
132 {
133 }
134 // -----------------------------------------------------------------------------
135 void SAL_CALL OView::acquire() throw()
136 {
137 	OView_BASE::acquire();
138 }
139 // -----------------------------------------------------------------------------
140 void SAL_CALL OView::release() throw()
141 {
142 	OView_BASE::release();
143 }
144 // -----------------------------------------------------------------------------
145 
146 
147