| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #ifndef EXTENSIONS_SOURCE_PROPCTRLR_XSDVALIDATIONHELPER_HXX |
| #define EXTENSIONS_SOURCE_PROPCTRLR_XSDVALIDATIONHELPER_HXX |
| |
| #include "eformshelper.hxx" |
| #include "xsddatatypes.hxx" |
| |
| /** === begin UNO includes === **/ |
| #include <com/sun/star/xsd/XDataType.hpp> |
| #include <com/sun/star/beans/XPropertySet.hpp> |
| /** === end UNO includes === **/ |
| #include <rtl/ref.hxx> |
| |
| //........................................................................ |
| namespace pcr |
| { |
| //........................................................................ |
| |
| class XSDDataType; |
| //==================================================================== |
| //= XSDValidationHelper |
| //==================================================================== |
| class XSDValidationHelper : public EFormsHelper |
| { |
| private: |
| bool m_bInspectingFormattedField; |
| public: |
| bool isInspectingFormattedField() const { return m_bInspectingFormattedField; } |
| |
| public: |
| XSDValidationHelper( |
| ::osl::Mutex& _rMutex, |
| const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxIntrospectee, |
| const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& _rxContextDocument |
| ); |
| |
| /** retrieves the names of all XForms models in the document the control lives in |
| */ |
| void getAvailableDataTypeNames( ::std::vector< ::rtl::OUString >& /* [out] */ _rNames ) const SAL_THROW(()); |
| |
| /** retrieves a particular data type given by name |
| */ |
| ::rtl::Reference< XSDDataType > |
| getDataTypeByName( const ::rtl::OUString& _rName ) const SAL_THROW(()); |
| |
| /** retrieves the DataType instance which the control model is currently validated against |
| |
| If there is a binding set at our control model, which at the same time acts as validator, |
| and if this validator is bound to an XDataType, then this data type is retrieved here. |
| */ |
| ::rtl::Reference< XSDDataType > |
| getValidatingDataType( ) const SAL_THROW(()); |
| |
| /** retrieves the name of the data type which the control model is currently validated against |
| |
| @seealso getValidatingDataType |
| */ |
| ::rtl::OUString |
| getValidatingDataTypeName( ) const SAL_THROW(()); |
| |
| /** binds the validator to a new data type |
| |
| To be called with an active binding only. |
| */ |
| void setValidatingDataTypeByName( const ::rtl::OUString& _rName ) const SAL_THROW(()); |
| |
| /** removes the data type given by name from the data type repository |
| */ |
| bool removeDataTypeFromRepository( const ::rtl::OUString& _rName ) const SAL_THROW(()); |
| |
| /** creates a new data type, which is a clone of an existing data type |
| */ |
| bool cloneDataType( const ::rtl::Reference< XSDDataType >& _pDataType, const ::rtl::OUString& _rNewName ) const SAL_THROW(()); |
| |
| /** retrieves the name of the basic data type which has the given class |
| */ |
| ::rtl::OUString |
| getBasicTypeNameForClass( sal_Int16 _eClass ) const SAL_THROW(()); |
| |
| /** copy a data type from one model to another |
| |
| If a data type with the given name already exists in the target model, then nothing |
| happens. In particular, the facets of the data type are not copied. |
| */ |
| void copyDataType( const ::rtl::OUString& _rFromModel, const ::rtl::OUString& _rToModel, |
| const ::rtl::OUString& _rDataTypeName ) const SAL_THROW(()); |
| |
| /** finds (and sets) a default format for the formatted field we're inspecting, |
| according to the current data type the control value is evaluated against |
| */ |
| void findDefaultFormatForIntrospectee() SAL_THROW(()); |
| |
| private: |
| /** retrieves the data type repository associated with the current model |
| */ |
| ::com::sun::star::uno::Reference< ::com::sun::star::xforms::XDataTypeRepository > |
| getDataTypeRepository() const SAL_THROW((::com::sun::star::uno::Exception)); |
| |
| /** retrieves the data type repository associated with any model |
| */ |
| ::com::sun::star::uno::Reference< ::com::sun::star::xforms::XDataTypeRepository > |
| getDataTypeRepository( const ::rtl::OUString& _rModelName ) const SAL_THROW((::com::sun::star::uno::Exception)); |
| |
| /** retrieves the data type object for the given name |
| */ |
| ::com::sun::star::uno::Reference< ::com::sun::star::xsd::XDataType > |
| getDataType( const ::rtl::OUString& _rName ) const |
| SAL_THROW((::com::sun::star::uno::Exception)); |
| |
| /** retrieves the name of the basic data type which has the given class, in the given repository |
| */ |
| ::rtl::OUString |
| getBasicTypeNameForClass( |
| sal_Int16 _nClass, |
| ::com::sun::star::uno::Reference< ::com::sun::star::xforms::XDataTypeRepository > _rxRepository |
| ) const SAL_THROW(()); |
| }; |
| |
| //........................................................................ |
| } // namespace pcr |
| //........................................................................ |
| |
| #endif // EXTENSIONS_SOURCE_PROPCTRLR_XSDVALIDATIONHELPER_HXX |
| |