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 _SUBMISSION_HXX 25*b1cdbd2cSJim Jagielski #define _SUBMISSION_HXX 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski 28*b1cdbd2cSJim Jagielski // includes for parent classes 29*b1cdbd2cSJim Jagielski #include <cppuhelper/implbase2.hxx> 30*b1cdbd2cSJim Jagielski #include <propertysetbase.hxx> 31*b1cdbd2cSJim Jagielski #include <com/sun/star/util/XModifyBroadcaster.hpp> 32*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNamed.hpp> 33*b1cdbd2cSJim Jagielski #include <com/sun/star/xml/dom/events/XEventListener.hpp> 34*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XUnoTunnel.hpp> 35*b1cdbd2cSJim Jagielski #include <com/sun/star/xml/dom/XNode.hpp> 36*b1cdbd2cSJim Jagielski #include <com/sun/star/xml/dom/XDocument.hpp> 37*b1cdbd2cSJim Jagielski #include <com/sun/star/xml/dom/XDocumentFragment.hpp> 38*b1cdbd2cSJim Jagielski #include <com/sun/star/xml/xpath/XXPathObject.hpp> 39*b1cdbd2cSJim Jagielski #include <com/sun/star/xforms/XSubmission.hpp> 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski // includes for member variables 42*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/Reference.hxx> 43*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/Sequence.hxx> 44*b1cdbd2cSJim Jagielski #include <computedexpression.hxx> 45*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XMultiServiceFactory.hpp> 46*b1cdbd2cSJim Jagielski 47*b1cdbd2cSJim Jagielski // forward declaractions 48*b1cdbd2cSJim Jagielski namespace com { namespace sun { namespace star { 49*b1cdbd2cSJim Jagielski namespace xforms { class XModel; } 50*b1cdbd2cSJim Jagielski namespace uno { class Any; } 51*b1cdbd2cSJim Jagielski namespace beans { class UnknownPropertyException; 52*b1cdbd2cSJim Jagielski class PropertyVetoException; } 53*b1cdbd2cSJim Jagielski namespace lang { class IllegalArgumentException; 54*b1cdbd2cSJim Jagielski class WrappedTargetException; } 55*b1cdbd2cSJim Jagielski } } } 56*b1cdbd2cSJim Jagielski namespace xforms { class Model; } 57*b1cdbd2cSJim Jagielski 58*b1cdbd2cSJim Jagielski 59*b1cdbd2cSJim Jagielski namespace xforms 60*b1cdbd2cSJim Jagielski { 61*b1cdbd2cSJim Jagielski 62*b1cdbd2cSJim Jagielski /** An XForms submission. 63*b1cdbd2cSJim Jagielski * 64*b1cdbd2cSJim Jagielski * See http://www.w3.org/TR/xforms/ for more information. 65*b1cdbd2cSJim Jagielski */ 66*b1cdbd2cSJim Jagielski typedef cppu::ImplInheritanceHelper2< 67*b1cdbd2cSJim Jagielski PropertySetBase, 68*b1cdbd2cSJim Jagielski com::sun::star::lang::XUnoTunnel, 69*b1cdbd2cSJim Jagielski com::sun::star::xforms::XSubmission 70*b1cdbd2cSJim Jagielski > Submission_t; 71*b1cdbd2cSJim Jagielski 72*b1cdbd2cSJim Jagielski class Submission : public Submission_t 73*b1cdbd2cSJim Jagielski { 74*b1cdbd2cSJim Jagielski // submission properties 75*b1cdbd2cSJim Jagielski rtl::OUString msID; 76*b1cdbd2cSJim Jagielski rtl::OUString msBind; 77*b1cdbd2cSJim Jagielski ComputedExpression maRef; 78*b1cdbd2cSJim Jagielski rtl::OUString msAction; 79*b1cdbd2cSJim Jagielski rtl::OUString msMethod; 80*b1cdbd2cSJim Jagielski rtl::OUString msVersion; 81*b1cdbd2cSJim Jagielski bool mbIndent; 82*b1cdbd2cSJim Jagielski rtl::OUString msMediaType; 83*b1cdbd2cSJim Jagielski rtl::OUString msEncoding; 84*b1cdbd2cSJim Jagielski bool mbOmitXmlDeclaration; 85*b1cdbd2cSJim Jagielski bool mbStandalone; 86*b1cdbd2cSJim Jagielski rtl::OUString msCDataSectionElement; 87*b1cdbd2cSJim Jagielski rtl::OUString msReplace; 88*b1cdbd2cSJim Jagielski rtl::OUString msSeparator; 89*b1cdbd2cSJim Jagielski com::sun::star::uno::Sequence< rtl::OUString > msIncludeNamespacePrefixes; 90*b1cdbd2cSJim Jagielski 91*b1cdbd2cSJim Jagielski private: 92*b1cdbd2cSJim Jagielski 93*b1cdbd2cSJim Jagielski /// the Model to which this Submission belongs; may be NULL 94*b1cdbd2cSJim Jagielski com::sun::star::uno::Reference<com::sun::star::xforms::XModel> mxModel; 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski // this will extract the document from the model that will be submitted 97*b1cdbd2cSJim Jagielski com::sun::star::uno::Reference< com::sun::star::xml::dom::XDocumentFragment > 98*b1cdbd2cSJim Jagielski createSubmissionDocument(const com::sun::star::uno::Reference< com::sun::star::xml::xpath::XXPathObject >& aObject, 99*b1cdbd2cSJim Jagielski sal_Bool bRemoveWSNodes = sal_False); 100*b1cdbd2cSJim Jagielski com::sun::star::uno::Reference< com::sun::star::xml::dom::XDocument > 101*b1cdbd2cSJim Jagielski getInstanceDocument(const com::sun::star::uno::Reference< com::sun::star::xml::xpath::XXPathObject >& aObject); 102*b1cdbd2cSJim Jagielski 103*b1cdbd2cSJim Jagielski com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory > m_aFactory; 104*b1cdbd2cSJim Jagielski public: 105*b1cdbd2cSJim Jagielski Submission(); 106*b1cdbd2cSJim Jagielski virtual ~Submission() throw(); 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielski // 109*b1cdbd2cSJim Jagielski // property methods: get/set value 110*b1cdbd2cSJim Jagielski // 111*b1cdbd2cSJim Jagielski 112*b1cdbd2cSJim Jagielski /// get XForms model 113*b1cdbd2cSJim Jagielski com::sun::star::uno::Reference<com::sun::star::xforms::XModel> 114*b1cdbd2cSJim Jagielski getModel() const; 115*b1cdbd2cSJim Jagielski 116*b1cdbd2cSJim Jagielski /// set XForms model 117*b1cdbd2cSJim Jagielski void setModel( 118*b1cdbd2cSJim Jagielski const com::sun::star::uno::Reference<com::sun::star::xforms::XModel>& ); 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielski rtl::OUString getID() const; /// get ID for this submission 121*b1cdbd2cSJim Jagielski void setID( const rtl::OUString& ); /// set ID for this submission 122*b1cdbd2cSJim Jagielski 123*b1cdbd2cSJim Jagielski rtl::OUString getBind() const; 124*b1cdbd2cSJim Jagielski void setBind( const rtl::OUString& ); 125*b1cdbd2cSJim Jagielski 126*b1cdbd2cSJim Jagielski rtl::OUString getRef() const; 127*b1cdbd2cSJim Jagielski void setRef( const rtl::OUString& ); 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski rtl::OUString getAction() const; 130*b1cdbd2cSJim Jagielski void setAction( const rtl::OUString& ); 131*b1cdbd2cSJim Jagielski 132*b1cdbd2cSJim Jagielski rtl::OUString getMethod() const; 133*b1cdbd2cSJim Jagielski void setMethod( const rtl::OUString& ); 134*b1cdbd2cSJim Jagielski 135*b1cdbd2cSJim Jagielski rtl::OUString getVersion() const; 136*b1cdbd2cSJim Jagielski void setVersion( const rtl::OUString& ); 137*b1cdbd2cSJim Jagielski 138*b1cdbd2cSJim Jagielski bool getIndent() const; 139*b1cdbd2cSJim Jagielski void setIndent( bool ); 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski rtl::OUString getMediaType() const; 142*b1cdbd2cSJim Jagielski void setMediaType( const rtl::OUString& ); 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski rtl::OUString getEncoding() const; 145*b1cdbd2cSJim Jagielski void setEncoding( const rtl::OUString& ); 146*b1cdbd2cSJim Jagielski 147*b1cdbd2cSJim Jagielski bool getOmitXmlDeclaration() const; 148*b1cdbd2cSJim Jagielski void setOmitXmlDeclaration( bool ); 149*b1cdbd2cSJim Jagielski 150*b1cdbd2cSJim Jagielski bool getStandalone() const; 151*b1cdbd2cSJim Jagielski void setStandalone( bool ); 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski rtl::OUString getCDataSectionElement() const; 154*b1cdbd2cSJim Jagielski void setCDataSectionElement( const rtl::OUString& ); 155*b1cdbd2cSJim Jagielski 156*b1cdbd2cSJim Jagielski rtl::OUString getReplace() const; 157*b1cdbd2cSJim Jagielski void setReplace( const rtl::OUString& ); 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski rtl::OUString getSeparator() const; 160*b1cdbd2cSJim Jagielski void setSeparator( const rtl::OUString& ); 161*b1cdbd2cSJim Jagielski 162*b1cdbd2cSJim Jagielski com::sun::star::uno::Sequence< rtl::OUString > getIncludeNamespacePrefixes() const; 163*b1cdbd2cSJim Jagielski void setIncludeNamespacePrefixes( const com::sun::star::uno::Sequence< rtl::OUString >& ); 164*b1cdbd2cSJim Jagielski 165*b1cdbd2cSJim Jagielski 166*b1cdbd2cSJim Jagielski /** perform the submission 167*b1cdbd2cSJim Jagielski * @returns if submission was successful */ 168*b1cdbd2cSJim Jagielski bool doSubmit( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& aHandler ); 169*b1cdbd2cSJim Jagielski 170*b1cdbd2cSJim Jagielski 171*b1cdbd2cSJim Jagielski /// release the model (note: Binding is unusable without model) 172*b1cdbd2cSJim Jagielski void releaseModel(); 173*b1cdbd2cSJim Jagielski 174*b1cdbd2cSJim Jagielski 175*b1cdbd2cSJim Jagielski // helpers for UNO tunnel 176*b1cdbd2cSJim Jagielski static com::sun::star::uno::Sequence<sal_Int8> getUnoTunnelID(); 177*b1cdbd2cSJim Jagielski static Submission* getSubmission( const com::sun::star::uno::Reference<com::sun::star::beans::XPropertySet>& ); 178*b1cdbd2cSJim Jagielski 179*b1cdbd2cSJim Jagielski 180*b1cdbd2cSJim Jagielski 181*b1cdbd2cSJim Jagielski private: 182*b1cdbd2cSJim Jagielski 183*b1cdbd2cSJim Jagielski /// check whether object is live, and throw suitable exception if not 184*b1cdbd2cSJim Jagielski /// (to be used be API methods before acting on the object) 185*b1cdbd2cSJim Jagielski void liveCheck() 186*b1cdbd2cSJim Jagielski throw( com::sun::star::uno::RuntimeException ); 187*b1cdbd2cSJim Jagielski 188*b1cdbd2cSJim Jagielski /// get the model implementation 189*b1cdbd2cSJim Jagielski xforms::Model* getModelImpl() const; 190*b1cdbd2cSJim Jagielski xforms::Model* getModelImpl( const com::sun::star::uno::Reference<com::sun::star::xforms::XModel>& xModel ) const; 191*b1cdbd2cSJim Jagielski 192*b1cdbd2cSJim Jagielski 193*b1cdbd2cSJim Jagielski 194*b1cdbd2cSJim Jagielski protected: 195*b1cdbd2cSJim Jagielski 196*b1cdbd2cSJim Jagielski // 197*b1cdbd2cSJim Jagielski // XPropertySet & friends: 198*b1cdbd2cSJim Jagielski // implement abstract methods from PropertySetHelper 199*b1cdbd2cSJim Jagielski // 200*b1cdbd2cSJim Jagielski 201*b1cdbd2cSJim Jagielski virtual sal_Bool SAL_CALL convertFastPropertyValue( 202*b1cdbd2cSJim Jagielski com::sun::star::uno::Any& rConvertedValue, 203*b1cdbd2cSJim Jagielski com::sun::star::uno::Any& rOldValue, 204*b1cdbd2cSJim Jagielski sal_Int32 nHandle, 205*b1cdbd2cSJim Jagielski const com::sun::star::uno::Any& rValue ) 206*b1cdbd2cSJim Jagielski throw ( com::sun::star::lang::IllegalArgumentException ); 207*b1cdbd2cSJim Jagielski 208*b1cdbd2cSJim Jagielski private: 209*b1cdbd2cSJim Jagielski void initializePropertySet(); 210*b1cdbd2cSJim Jagielski 211*b1cdbd2cSJim Jagielski 212*b1cdbd2cSJim Jagielski public: 213*b1cdbd2cSJim Jagielski 214*b1cdbd2cSJim Jagielski // 215*b1cdbd2cSJim Jagielski // XNamed: 216*b1cdbd2cSJim Jagielski // get/set name 217*b1cdbd2cSJim Jagielski // 218*b1cdbd2cSJim Jagielski 219*b1cdbd2cSJim Jagielski virtual rtl::OUString SAL_CALL getName() 220*b1cdbd2cSJim Jagielski throw( com::sun::star::uno::RuntimeException ); 221*b1cdbd2cSJim Jagielski 222*b1cdbd2cSJim Jagielski virtual void SAL_CALL setName( const rtl::OUString& ) 223*b1cdbd2cSJim Jagielski throw( com::sun::star::uno::RuntimeException ); 224*b1cdbd2cSJim Jagielski 225*b1cdbd2cSJim Jagielski 226*b1cdbd2cSJim Jagielski 227*b1cdbd2cSJim Jagielski // 228*b1cdbd2cSJim Jagielski // XUnoTunnel 229*b1cdbd2cSJim Jagielski // 230*b1cdbd2cSJim Jagielski 231*b1cdbd2cSJim Jagielski virtual sal_Int64 SAL_CALL getSomething( 232*b1cdbd2cSJim Jagielski const com::sun::star::uno::Sequence<sal_Int8>& ) 233*b1cdbd2cSJim Jagielski throw( com::sun::star::uno::RuntimeException ); 234*b1cdbd2cSJim Jagielski 235*b1cdbd2cSJim Jagielski 236*b1cdbd2cSJim Jagielski // 237*b1cdbd2cSJim Jagielski // XSubmission 238*b1cdbd2cSJim Jagielski // 239*b1cdbd2cSJim Jagielski 240*b1cdbd2cSJim Jagielski virtual void SAL_CALL submit( ) 241*b1cdbd2cSJim Jagielski throw ( com::sun::star::util::VetoException, 242*b1cdbd2cSJim Jagielski com::sun::star::lang::WrappedTargetException, 243*b1cdbd2cSJim Jagielski com::sun::star::uno::RuntimeException ); 244*b1cdbd2cSJim Jagielski virtual void SAL_CALL submitWithInteraction( 245*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& aHandler ) 246*b1cdbd2cSJim Jagielski throw ( com::sun::star::util::VetoException, 247*b1cdbd2cSJim Jagielski com::sun::star::lang::WrappedTargetException, 248*b1cdbd2cSJim Jagielski com::sun::star::uno::RuntimeException ); 249*b1cdbd2cSJim Jagielski virtual void SAL_CALL addSubmissionVetoListener( 250*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::form::submission::XSubmissionVetoListener >& listener ) 251*b1cdbd2cSJim Jagielski throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); 252*b1cdbd2cSJim Jagielski virtual void SAL_CALL removeSubmissionVetoListener( 253*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::form::submission::XSubmissionVetoListener >& listener ) 254*b1cdbd2cSJim Jagielski throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); 255*b1cdbd2cSJim Jagielski 256*b1cdbd2cSJim Jagielski // 257*b1cdbd2cSJim Jagielski // XPropertySet 258*b1cdbd2cSJim Jagielski // (need to disambiguate this) 259*b1cdbd2cSJim Jagielski 260*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException); 261*b1cdbd2cSJim Jagielski 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); 262*b1cdbd2cSJim Jagielski 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); 263*b1cdbd2cSJim Jagielski 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); 264*b1cdbd2cSJim Jagielski 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); 265*b1cdbd2cSJim Jagielski 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); 266*b1cdbd2cSJim Jagielski 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); 267*b1cdbd2cSJim Jagielski }; 268*b1cdbd2cSJim Jagielski 269*b1cdbd2cSJim Jagielski 270*b1cdbd2cSJim Jagielski } // namespace xforms 271*b1cdbd2cSJim Jagielski 272*b1cdbd2cSJim Jagielski #endif 273