xref: /trunk/main/dbaccess/source/ui/uno/unosqlmessage.cxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_dbaccess.hxx"
30 
31 #ifndef _DBAUI_SQLMESSAGE_HXX_
32 #include "sqlmessage.hxx"
33 #endif
34 #ifndef _DBAUI_UNOSQLMESSAGE_HXX_
35 #include "unosqlmessage.hxx"
36 #endif
37 #ifndef _DBU_REGHELPER_HXX_
38 #include "dbu_reghelper.hxx"
39 #endif
40 #ifndef DBACCESS_SHARED_DBUSTRINGS_HRC
41 #include "dbustrings.hrc"
42 #endif
43 #ifndef _CPPUHELPER_TYPEPROVIDER_HXX_
44 #include <cppuhelper/typeprovider.hxx>
45 #endif
46 #ifndef _DBHELPER_DBEXCEPTION_HXX_
47 #include <connectivity/dbexception.hxx>
48 #endif
49 
50 using namespace dbaui;
51 using namespace dbtools;
52 
53 using namespace ::com::sun::star::sdbc;
54 using namespace ::com::sun::star::sdb;
55 
56 extern "C" void SAL_CALL createRegistryInfo_OSQLMessageDialog()
57 {
58     static OMultiInstanceAutoRegistration< OSQLMessageDialog > aAutoRegistration;
59 }
60 
61 //.........................................................................
62 namespace dbaui
63 {
64 //.........................................................................
65 
66     using namespace ::com::sun::star::uno;
67     using namespace ::com::sun::star::lang;
68     using namespace ::com::sun::star::beans;
69 
70 //=========================================================================
71 //-------------------------------------------------------------------------
72 OSQLMessageDialog::OSQLMessageDialog(const Reference< XMultiServiceFactory >& _rxORB)
73     :OSQLMessageDialogBase(_rxORB)
74 {
75     registerMayBeVoidProperty(PROPERTY_SQLEXCEPTION, PROPERTY_ID_SQLEXCEPTION, PropertyAttribute::TRANSIENT | PropertyAttribute::MAYBEVOID,
76         &m_aException, ::getCppuType(static_cast<SQLException*>(NULL)));
77     registerProperty( PROPERTY_HELP_URL, PROPERTY_ID_HELP_URL, PropertyAttribute::TRANSIENT,
78         &m_sHelpURL, ::getCppuType( &m_sHelpURL ) );
79 }
80 
81 //-------------------------------------------------------------------------
82 Sequence<sal_Int8> SAL_CALL OSQLMessageDialog::getImplementationId(  ) throw(RuntimeException)
83 {
84     static ::cppu::OImplementationId aId;
85     return aId.getImplementationId();
86 }
87 
88 //-------------------------------------------------------------------------
89 Reference< XInterface > SAL_CALL OSQLMessageDialog::Create(const Reference< XMultiServiceFactory >& _rxFactory)
90 {
91     return *(new OSQLMessageDialog(_rxFactory));
92 }
93 
94 //-------------------------------------------------------------------------
95 ::rtl::OUString SAL_CALL OSQLMessageDialog::getImplementationName() throw(RuntimeException)
96 {
97     return getImplementationName_Static();
98 }
99 
100 //-------------------------------------------------------------------------
101 ::rtl::OUString OSQLMessageDialog::getImplementationName_Static() throw(RuntimeException)
102 {
103     return ::rtl::OUString::createFromAscii("org.openoffice.comp.dbu.OSQLMessageDialog");
104 }
105 
106 //-------------------------------------------------------------------------
107 ::comphelper::StringSequence SAL_CALL OSQLMessageDialog::getSupportedServiceNames() throw(RuntimeException)
108 {
109     return getSupportedServiceNames_Static();
110 }
111 
112 //-------------------------------------------------------------------------
113 ::comphelper::StringSequence OSQLMessageDialog::getSupportedServiceNames_Static() throw(RuntimeException)
114 {
115     ::comphelper::StringSequence aSupported(1);
116     aSupported.getArray()[0] = ::rtl::OUString::createFromAscii("com.sun.star.sdb.ErrorMessageDialog");
117     return aSupported;
118 }
119 
120 //-------------------------------------------------------------------------
121 sal_Bool SAL_CALL OSQLMessageDialog::convertFastPropertyValue( Any& _rConvertedValue, Any& _rOldValue, sal_Int32 _nHandle, const Any& _rValue) throw(IllegalArgumentException)
122 {
123     switch (_nHandle)
124     {
125         case PROPERTY_ID_SQLEXCEPTION:
126         {
127             SQLExceptionInfo aInfo(_rValue);
128             if (!aInfo.isValid())
129                 throw IllegalArgumentException();
130 
131             _rOldValue = m_aException;
132             _rConvertedValue = aInfo.get();
133 
134             return sal_True;
135                 // always assume "modified", don't bother with with comparing the two values
136         }
137         default:
138             return OSQLMessageDialogBase::convertFastPropertyValue(_rConvertedValue, _rOldValue, _nHandle, _rValue);
139     }
140 }
141 
142 //-------------------------------------------------------------------------
143 Reference<XPropertySetInfo>  SAL_CALL OSQLMessageDialog::getPropertySetInfo() throw(RuntimeException)
144 {
145     Reference<XPropertySetInfo>  xInfo( createPropertySetInfo( getInfoHelper() ) );
146     return xInfo;
147 }
148 
149 //-------------------------------------------------------------------------
150 ::cppu::IPropertyArrayHelper& OSQLMessageDialog::getInfoHelper()
151 {
152     return *const_cast<OSQLMessageDialog*>(this)->getArrayHelper();
153 }
154 
155 //------------------------------------------------------------------------------
156 ::cppu::IPropertyArrayHelper* OSQLMessageDialog::createArrayHelper( ) const
157 {
158     Sequence< Property > aProps;
159     describeProperties(aProps);
160     return new ::cppu::OPropertyArrayHelper(aProps);
161 }
162 
163 //------------------------------------------------------------------------------
164 Dialog* OSQLMessageDialog::createDialog(Window* _pParent)
165 {
166     if ( m_aException.hasValue() )
167         return new OSQLMessageBox( _pParent, SQLExceptionInfo( m_aException ), WB_OK | WB_DEF_OK, m_sHelpURL );
168 
169     OSL_ENSURE(sal_False, "OSQLMessageDialog::createDialog : You should use the SQLException property to specify the error to display!");
170     return new OSQLMessageBox(_pParent, SQLException());
171 }
172 
173 //.........................................................................
174 }   // namespace dbaui
175 //.........................................................................
176 
177