LCOV - code coverage report
Current view: top level - sw/inc - dbfld.hxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 11 36 30.6 %
Date: 2012-08-25 Functions: 13 37 35.1 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 4 20 20.0 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       5                 :            :  *
       6                 :            :  * Copyright 2000, 2010 Oracle and/or its affiliates.
       7                 :            :  *
       8                 :            :  * OpenOffice.org - a multi-platform office productivity suite
       9                 :            :  *
      10                 :            :  * This file is part of OpenOffice.org.
      11                 :            :  *
      12                 :            :  * OpenOffice.org is free software: you can redistribute it and/or modify
      13                 :            :  * it under the terms of the GNU Lesser General Public License version 3
      14                 :            :  * only, as published by the Free Software Foundation.
      15                 :            :  *
      16                 :            :  * OpenOffice.org is distributed in the hope that it will be useful,
      17                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      18                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      19                 :            :  * GNU Lesser General Public License version 3 for more details
      20                 :            :  * (a copy is included in the LICENSE file that accompanied this code).
      21                 :            :  *
      22                 :            :  * You should have received a copy of the GNU Lesser General Public License
      23                 :            :  * version 3 along with OpenOffice.org.  If not, see
      24                 :            :  * <http://www.openoffice.org/license.html>
      25                 :            :  * for a copy of the LGPLv3 License.
      26                 :            :  *
      27                 :            :  ************************************************************************/
      28                 :            : #ifndef SW_DBFLD_HXX
      29                 :            : #define SW_DBFLD_HXX
      30                 :            : 
      31                 :            : #include "swdllapi.h"
      32                 :            : #include "fldbas.hxx"
      33                 :            : #include "swdbdata.hxx"
      34                 :            : 
      35                 :            : class SwDoc;
      36                 :            : class SwTxtFld;
      37                 :            : class SwFrm;
      38                 :            : 
      39                 :            : /*--------------------------------------------------------------------
      40                 :            :     Database field.
      41                 :            :  --------------------------------------------------------------------*/
      42                 :            : 
      43                 :            : class SW_DLLPUBLIC SwDBFieldType : public SwValueFieldType
      44                 :            : {
      45                 :            :     SwDBData    aDBData;        //
      46                 :            :     rtl::OUString sName;          ///< only used in ::GetName() !
      47                 :            :     String      sColumn;
      48                 :            :     long        nRefCnt;
      49                 :            : 
      50                 :            : public:
      51                 :            : 
      52                 :            :     SwDBFieldType(SwDoc* pDocPtr, const String& rColumnName, const SwDBData& rDBData);
      53                 :            :     ~SwDBFieldType();
      54                 :            : 
      55                 :            :     virtual const rtl::OUString& GetName() const;
      56                 :            :     virtual SwFieldType*  Copy() const;
      57                 :            : 
      58                 :         46 :     inline void     AddRef() { nRefCnt++; }
      59                 :            :     void            ReleaseRef();
      60                 :            : 
      61                 :         62 :     const String&   GetColumnName() const {return sColumn;}
      62                 :          0 :     const SwDBData& GetDBData() const {return aDBData;}
      63                 :            : 
      64                 :            :     virtual bool        QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
      65                 :            :     virtual bool        PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
      66                 :            : };
      67                 :            : 
      68                 :            : /*--------------------------------------------------------------------
      69                 :            :     Classes derived from SwFields. They overlay the expand-function.
      70                 :            :     Content is formated according to the format (if available).
      71                 :            :  --------------------------------------------------------------------*/
      72                 :            : 
      73                 :            : class SW_DLLPUBLIC SwDBField : public SwValueField
      74                 :            : {
      75                 :            :     rtl::OUString aContent;
      76                 :            :     rtl::OUString sFieldCode; ///< contains Word's field code
      77                 :            :     sal_uInt16  nSubType;
      78                 :            :     sal_Bool    bIsInBodyTxt    : 1;
      79                 :            :     sal_Bool    bValidValue     : 1;
      80                 :            :     sal_Bool    bInitialized    : 1;
      81                 :            : 
      82                 :            :     virtual String      Expand() const;
      83                 :            :     virtual SwField*    Copy() const;
      84                 :            : 
      85                 :            : public:
      86                 :            :     SwDBField(SwDBFieldType*, sal_uLong nFmt = 0);
      87                 :            :     virtual ~SwDBField();
      88                 :            : 
      89                 :            :     virtual SwFieldType*    ChgTyp( SwFieldType* );
      90                 :            : 
      91                 :            :     /// Current text.
      92                 :            :     inline  void        SetExpansion(const String& rStr);
      93                 :            : 
      94                 :            :     virtual sal_uInt16      GetSubType() const;
      95                 :            :     virtual void        SetSubType(sal_uInt16 nType);
      96                 :            : 
      97                 :            :     virtual String      GetFieldName() const;
      98                 :            : 
      99                 :            :     /// For calculations in expressions.
     100                 :            :     void                ChgValue( double d, sal_Bool bVal );
     101                 :            : 
     102                 :            :     /// Get the evaluation via DBMgr string.
     103                 :            :     void                Evaluate();
     104                 :            : 
     105                 :            :     /// Evaluation for header and footer.
     106                 :            :     void                ChangeExpansion( const SwFrm*, const SwTxtFld* );
     107                 :            :     void                InitContent();
     108                 :            :     void                InitContent(const String& rExpansion);
     109                 :            : 
     110                 :            :     inline void         ChgBodyTxtFlag( sal_Bool bIsInBody );
     111                 :            : 
     112                 :         44 :     inline sal_Bool         IsInitialized() const   { return bInitialized; }
     113                 :          0 :     inline void         ClearInitialized()      { bInitialized = sal_False; }
     114                 :          0 :     inline void         SetInitialized()        { bInitialized = sal_True; }
     115                 :            : 
     116                 :            :     /// Get name.
     117                 :            :     virtual const rtl::OUString& GetPar1() const;
     118                 :            : 
     119                 :            :     /// access to the command string
     120                 :            :     const rtl::OUString& GetFieldCode() const { return sFieldCode;}
     121                 :          0 :     void                SetFieldCode(const rtl::OUString& rStr) { sFieldCode = rStr; }
     122                 :            : 
     123                 :            :     /// DBName
     124                 :          0 :     inline const SwDBData&  GetDBData() const { return ((SwDBFieldType*)GetTyp())->GetDBData(); }
     125                 :            :     virtual bool        QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
     126                 :            :     virtual bool        PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
     127                 :            : };
     128                 :            : 
     129                 :          6 : inline  void SwDBField::SetExpansion(const String& rStr)
     130                 :          6 :     { aContent = rStr; }
     131                 :            : 
     132                 :            : /// set from UpdateExpFlds (the Node-Position is known there)
     133                 :         11 : inline void SwDBField::ChgBodyTxtFlag( sal_Bool bIsInBody )
     134                 :         11 :     { bIsInBodyTxt = bIsInBody; }
     135                 :            : 
     136                 :            : /*--------------------------------------------------------------------
     137                 :            :     Base class for all other database fields.
     138                 :            :  --------------------------------------------------------------------*/
     139                 :            : 
     140         [ #  # ]:          0 : class SW_DLLPUBLIC SwDBNameInfField : public SwField
     141                 :            : {
     142                 :            :     SwDBData    aDBData;
     143                 :            :     sal_uInt16      nSubType;
     144                 :            : 
     145                 :            : protected:
     146                 :          0 :     const SwDBData& GetDBData() const {return aDBData;}
     147                 :          0 :     SwDBData&       GetDBData() {return aDBData;}
     148                 :            : 
     149                 :            :     SwDBNameInfField(SwFieldType* pTyp, const SwDBData& rDBData, sal_uLong nFmt = 0);
     150                 :            : 
     151                 :            : public:
     152                 :            :     /// DBName
     153                 :          0 :     inline const SwDBData&  GetRealDBData() { return aDBData; }
     154                 :            : 
     155                 :            :     SwDBData                GetDBData(SwDoc* pDoc);
     156                 :            :     void                    SetDBData(const SwDBData& rDBData);
     157                 :            : 
     158                 :            :     virtual String          GetFieldName() const;
     159                 :            : 
     160                 :            :     virtual bool            QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
     161                 :            :     virtual bool            PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
     162                 :            :     virtual sal_uInt16          GetSubType() const;
     163                 :            :     virtual void            SetSubType(sal_uInt16 nType);
     164                 :            : };
     165                 :            : 
     166                 :            : /*--------------------------------------------------------------------
     167                 :            :     Database field next record.
     168                 :            :  --------------------------------------------------------------------*/
     169                 :            : 
     170         [ -  + ]:       2916 : class SW_DLLPUBLIC SwDBNextSetFieldType : public SwFieldType
     171                 :            : {
     172                 :            : public:
     173                 :            :     SwDBNextSetFieldType();
     174                 :            : 
     175                 :            :     virtual SwFieldType*    Copy() const;
     176                 :            : };
     177                 :            : 
     178                 :            : /*--------------------------------------------------------------------
     179                 :            :     Next data record with condition.
     180                 :            :  --------------------------------------------------------------------*/
     181                 :            : 
     182         [ #  # ]:          0 : class SW_DLLPUBLIC SwDBNextSetField : public SwDBNameInfField
     183                 :            : {
     184                 :            :     rtl::OUString  aCond;
     185                 :            :     sal_Bool    bCondValid;
     186                 :            : 
     187                 :            : public:
     188                 :            :     SwDBNextSetField( SwDBNextSetFieldType*,
     189                 :            :                       const String& rCond, const String& rDummy, const SwDBData& rDBData);
     190                 :            : 
     191                 :            :     virtual String          Expand() const;
     192                 :            :     virtual SwField*        Copy() const;
     193                 :            : 
     194                 :            :     void                    Evaluate(SwDoc*);
     195                 :            :     inline void             SetCondValid(sal_Bool bCond);
     196                 :            :     inline sal_Bool             IsCondValid() const;
     197                 :            : 
     198                 :            :     // Condition
     199                 :            :     virtual const rtl::OUString&   GetPar1() const;
     200                 :            :     virtual void        SetPar1(const rtl::OUString& rStr);
     201                 :            :     virtual bool        QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
     202                 :            :     virtual bool        PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
     203                 :            : };
     204                 :            : 
     205                 :          0 : inline sal_Bool SwDBNextSetField::IsCondValid() const
     206                 :          0 :     { return bCondValid; }
     207                 :            : 
     208                 :          0 : inline void SwDBNextSetField::SetCondValid(sal_Bool bCond)
     209                 :          0 :     { bCondValid = bCond; }
     210                 :            : 
     211                 :            : /*--------------------------------------------------------------------
     212                 :            :     Database field next record.
     213                 :            :  --------------------------------------------------------------------*/
     214                 :            : 
     215         [ -  + ]:       2916 : class SwDBNumSetFieldType : public SwFieldType
     216                 :            : {
     217                 :            : public:
     218                 :            :     SwDBNumSetFieldType();
     219                 :            : 
     220                 :            :     virtual SwFieldType*    Copy() const;
     221                 :            : };
     222                 :            : 
     223                 :            : /*--------------------------------------------------------------------
     224                 :            :     Data record with number xxx.
     225                 :            :     Number is in nFormat (bit of a misuse!)
     226                 :            :  --------------------------------------------------------------------*/
     227                 :            : 
     228 [ #  # ][ #  # ]:          0 : class SwDBNumSetField : public SwDBNameInfField
     229                 :            : {
     230                 :            :     rtl::OUString  aCond;
     231                 :            :     String  aPar2;
     232                 :            :     sal_Bool    bCondValid;
     233                 :            : 
     234                 :            : public:
     235                 :            :     SwDBNumSetField(SwDBNumSetFieldType*, const String& rCond, const String& rDBNum, const SwDBData& rDBData);
     236                 :            : 
     237                 :            :     virtual String          Expand() const;
     238                 :            :     virtual SwField*        Copy() const;
     239                 :            : 
     240                 :            :     inline sal_Bool             IsCondValid() const;
     241                 :            :     inline void             SetCondValid(sal_Bool bCond);
     242                 :            :     void                    Evaluate(SwDoc*);
     243                 :            : 
     244                 :            :     // Condition
     245                 :            :     virtual const rtl::OUString&   GetPar1() const;
     246                 :            :     virtual void            SetPar1(const rtl::OUString& rStr);
     247                 :            : 
     248                 :            :     // Number of data record.
     249                 :            :     virtual rtl::OUString   GetPar2()   const;
     250                 :            :     virtual void            SetPar2(const rtl::OUString& rStr);
     251                 :            : 
     252                 :            :     // Number of data record is in nFormat!!
     253                 :            :     virtual bool        QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
     254                 :            :     virtual bool        PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
     255                 :            : };
     256                 :            : 
     257                 :          0 : inline sal_Bool SwDBNumSetField::IsCondValid() const
     258                 :          0 :     { return bCondValid; }
     259                 :            : 
     260                 :          0 : inline void SwDBNumSetField::SetCondValid(sal_Bool bCond)
     261                 :          0 :     { bCondValid = bCond; }
     262                 :            : 
     263                 :            : /*--------------------------------------------------------------------
     264                 :            :     Database name.
     265                 :            :  --------------------------------------------------------------------*/
     266                 :            : 
     267         [ -  + ]:       2916 : class SwDBNameFieldType : public SwFieldType
     268                 :            : {
     269                 :            :         SwDoc *pDoc;
     270                 :            : public:
     271                 :            :     SwDBNameFieldType(SwDoc*);
     272                 :            : 
     273                 :            :     String                  Expand(sal_uLong) const;
     274                 :            :     virtual SwFieldType*    Copy() const;
     275                 :            : };
     276                 :            : 
     277                 :            : /*--------------------------------------------------------------------
     278                 :            :     Database field.
     279                 :            :  --------------------------------------------------------------------*/
     280                 :            : 
     281         [ #  # ]:          0 : class SW_DLLPUBLIC SwDBNameField : public SwDBNameInfField
     282                 :            : {
     283                 :            : public:
     284                 :            :     SwDBNameField(SwDBNameFieldType*, const SwDBData& rDBData, sal_uLong nFmt = 0);
     285                 :            : 
     286                 :            :     virtual String   Expand() const;
     287                 :            :     virtual SwField* Copy() const;
     288                 :            :     virtual bool        QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
     289                 :            :     virtual bool        PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
     290                 :            : };
     291                 :            : 
     292                 :            : /*--------------------------------------------------------------------
     293                 :            :     Number of data record.
     294                 :            :  --------------------------------------------------------------------*/
     295                 :            : 
     296         [ -  + ]:       2916 : class SW_DLLPUBLIC SwDBSetNumberFieldType : public SwFieldType
     297                 :            : {
     298                 :            : public:
     299                 :            :     SwDBSetNumberFieldType();
     300                 :            : 
     301                 :            :     virtual SwFieldType*    Copy() const;
     302                 :            : };
     303                 :            : 
     304                 :            : /*--------------------------------------------------------------------
     305                 :            :     Database field.
     306                 :            :  --------------------------------------------------------------------*/
     307                 :            : 
     308         [ #  # ]:          0 : class SW_DLLPUBLIC SwDBSetNumberField : public SwDBNameInfField
     309                 :            : {
     310                 :            :     long    nNumber;
     311                 :            : 
     312                 :            : public:
     313                 :            :     SwDBSetNumberField(SwDBSetNumberFieldType*, const SwDBData& rDBData, sal_uLong nFmt = 0);
     314                 :            : 
     315                 :            :     virtual String  Expand() const;
     316                 :            :     virtual         SwField* Copy() const;
     317                 :            :     void            Evaluate(SwDoc*);
     318                 :            : 
     319                 :            :     inline long     GetSetNumber() const;
     320                 :            :     inline void     SetSetNumber(long nNum);
     321                 :            :     virtual bool        QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
     322                 :            :     virtual bool        PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
     323                 :            : };
     324                 :            : 
     325                 :          0 : inline long SwDBSetNumberField::GetSetNumber() const
     326                 :          0 :     { return nNumber; }
     327                 :            : 
     328                 :          0 : inline void SwDBSetNumberField::SetSetNumber(long nNum)
     329                 :          0 :     { nNumber = nNum; }
     330                 :            : 
     331                 :            : #endif // SW_DBFLD_HXX
     332                 :            : 
     333                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10