/************************************************************************* * * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: submission.hxx,v $ * * $Revision: 1.4 $ * * last change: $Author: rt $ $Date: 2005-09-08 23:21:53 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. * * * GNU Lesser General Public License Version 2.1 * ============================================= * Copyright 2005 by Sun Microsystems, Inc. * 901 San Antonio Road, Palo Alto, CA 94303, USA * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License version 2.1, as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * ************************************************************************/ #ifndef _SUBMISSION_HXX #define _SUBMISSION_HXX // includes for parent classes #include #include #include #include #include #include #include #include #include #include #include // includes for member variables #include #include #include #include // forward declaractions namespace com { namespace sun { namespace star { namespace xforms { class XModel; } namespace uno { class Any; } namespace beans { class UnknownPropertyException; class PropertyVetoException; } namespace lang { class IllegalArgumentException; class WrappedTargetException; } } } } namespace xforms { class Model; } namespace xforms { /** An XForms submission. * * See http://www.w3.org/TR/xforms/ for more information. */ typedef cppu::ImplInheritanceHelper2< PropertySetBase, com::sun::star::lang::XUnoTunnel, com::sun::star::xforms::XSubmission > Submission_t; class Submission : public Submission_t { // submission properties rtl::OUString msID; rtl::OUString msBind; ComputedExpression maRef; rtl::OUString msAction; rtl::OUString msMethod; rtl::OUString msVersion; bool mbIndent; rtl::OUString msMediaType; rtl::OUString msEncoding; bool mbOmitXmlDeclaration; bool mbStandalone; rtl::OUString msCDataSectionElement; rtl::OUString msReplace; rtl::OUString msSeparator; com::sun::star::uno::Sequence< rtl::OUString > msIncludeNamespacePrefixes; private: /// the Model to which this Submission belongs; may be NULL com::sun::star::uno::Reference mxModel; // this will extract the document from the model that will be submitted com::sun::star::uno::Reference< com::sun::star::xml::dom::XDocumentFragment > createSubmissionDocument(const com::sun::star::uno::Reference< com::sun::star::xml::xpath::XXPathObject >& aObject, sal_Bool bRemoveWSNodes = sal_False); com::sun::star::uno::Reference< com::sun::star::xml::dom::XDocument > getInstanceDocument(const com::sun::star::uno::Reference< com::sun::star::xml::xpath::XXPathObject >& aObject); com::sun::star::uno::Reference m_aFactory; public: Submission(); virtual ~Submission() throw(); // // property methods: get/set value // /// get XForms model com::sun::star::uno::Reference getModel() const; /// set XForms model void setModel( const com::sun::star::uno::Reference& ); rtl::OUString getID() const; /// get ID for this submission void setID( const rtl::OUString& ); /// set ID for this submission rtl::OUString getBind() const; void setBind( const rtl::OUString& ); rtl::OUString getRef() const; void setRef( const rtl::OUString& ); rtl::OUString getAction() const; void setAction( const rtl::OUString& ); rtl::OUString getMethod() const; void setMethod( const rtl::OUString& ); rtl::OUString getVersion() const; void setVersion( const rtl::OUString& ); bool getIndent() const; void setIndent( bool ); rtl::OUString getMediaType() const; void setMediaType( const rtl::OUString& ); rtl::OUString getEncoding() const; void setEncoding( const rtl::OUString& ); bool getOmitXmlDeclaration() const; void setOmitXmlDeclaration( bool ); bool getStandalone() const; void setStandalone( bool ); rtl::OUString getCDataSectionElement() const; void setCDataSectionElement( const rtl::OUString& ); rtl::OUString getReplace() const; void setReplace( const rtl::OUString& ); rtl::OUString getSeparator() const; void setSeparator( const rtl::OUString& ); com::sun::star::uno::Sequence< rtl::OUString > getIncludeNamespacePrefixes() const; void setIncludeNamespacePrefixes( const com::sun::star::uno::Sequence< rtl::OUString >& ); /** perform the submission * @returns if submission was successful */ bool doSubmit( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& aHandler ); /// release the model (note: Binding is unusable without model) void releaseModel(); // helpers for UNO tunnel static com::sun::star::uno::Sequence getUnoTunnelID(); static Submission* getSubmission( const com::sun::star::uno::Reference& ); private: /// check whether object is live, and throw suitable exception if not /// (to be used be API methods before acting on the object) void liveCheck() throw( com::sun::star::uno::RuntimeException ); /// get the model implementation xforms::Model* getModelImpl() const; xforms::Model* getModelImpl( const com::sun::star::uno::Reference& xModel ) const; protected: // // XPropertySet & friends: // implement abstract methods from PropertySetHelper // virtual sal_Bool SAL_CALL convertFastPropertyValue( com::sun::star::uno::Any& rConvertedValue, com::sun::star::uno::Any& rOldValue, sal_Int32 nHandle, const com::sun::star::uno::Any& rValue ) throw ( com::sun::star::lang::IllegalArgumentException ); private: void initializePropertySet(); public: // // XNamed: // get/set name // virtual rtl::OUString SAL_CALL getName() throw( com::sun::star::uno::RuntimeException ); virtual void SAL_CALL setName( const rtl::OUString& ) throw( com::sun::star::uno::RuntimeException ); // // XUnoTunnel // virtual sal_Int64 SAL_CALL getSomething( const com::sun::star::uno::Sequence& ) throw( com::sun::star::uno::RuntimeException ); // // XSubmission // virtual void SAL_CALL submit( ) throw ( com::sun::star::util::VetoException, com::sun::star::lang::WrappedTargetException, com::sun::star::uno::RuntimeException ); virtual void SAL_CALL submitWithInteraction( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& aHandler ) throw ( com::sun::star::util::VetoException, com::sun::star::lang::WrappedTargetException, com::sun::star::uno::RuntimeException ); virtual void SAL_CALL addSubmissionVetoListener( const ::com::sun::star::uno::Reference< ::com::sun::star::form::submission::XSubmissionVetoListener >& listener ) throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); virtual void SAL_CALL removeSubmissionVetoListener( const ::com::sun::star::uno::Reference< ::com::sun::star::form::submission::XSubmissionVetoListener >& listener ) throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); // // XPropertySet // (need to disambiguate this) virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException); virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); }; } // namespace xforms #endif