src/DDS/DDS_DicItem.h

Go to the documentation of this file.
00001 // Copyright (C) 2005  CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D
00002 //
00003 // This library is free software; you can redistribute it and/or
00004 // modify it under the terms of the GNU Lesser General Public
00005 // License as published by the Free Software Foundation; either
00006 // version 2.1 of the License.
00007 //
00008 // This library is distributed in the hope that it will be useful
00009 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00010 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00011 // Lesser General Public License for more details.
00012 //
00013 // You should have received a copy of the GNU Lesser General Public
00014 // License along with this library; if not, write to the Free Software
00015 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00016 //
00017 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
00018 //
00019 #ifndef DDS_DICITEM_H
00020 #define DDS_DICITEM_H
00021 
00022 #include "DDS.h"
00023 
00024 #include <MMgt_TShared.hxx>
00025 
00026 #include <TCollection_AsciiString.hxx>
00027 
00028 #include <TColStd_HArray1OfInteger.hxx>
00029 #include <TColStd_HArray1OfExtendedString.hxx>
00030 
00031 #include <NCollection_DataMap.hxx>
00032 #include <NCollection_DefineIndexedDataMap.hxx>
00033 
00034 class LDOM_Element;
00035 class DDS_Dictionary;
00036 class TColStd_MapOfReal;
00037 class TColStd_SequenceOfInteger;
00038 class TColStd_SequenceOfAsciiString;
00039 class TColStd_SequenceOfExtendedString;
00040 
00041 //  Class, containing all information about one parameter:
00042 //  unique    : id
00043 //  obligative: label, type, short description, required
00044 //  optional  : format, units,
00045 //              min value, max value, default value.
00046 
00047 class DDS_DicItem : public MMgt_TShared
00048 {
00049 public:
00050   enum Type { String, Float, Integer, List, Unknown };
00051   enum Data { MinValue = 0x01, MaxValue = 0x02, DefaultValue = 0x04 };
00052 
00053   // This struct is intended for map of Format, Units, Precision and Scale
00054   struct UnitData
00055   {
00056     Standard_Real           myZero;
00057     Standard_Real           myScale;
00058     TCollection_AsciiString myUnits;
00059     TCollection_AsciiString myFormat;
00060     Standard_Integer        myPrecision;
00061   };
00062 
00063   typedef TCollection_AsciiString UnitSystem;
00064 
00065 public:
00066   DDS_DicItem();
00067 
00068   Standard_EXPORT TCollection_AsciiString    GetId() const;
00069   // to access Type of the parameter
00070 
00071   Standard_EXPORT DDS_DicItem::Type          GetType() const;
00072   // to access Type of the parameter
00073 
00074   Standard_EXPORT TCollection_ExtendedString GetLabel() const;
00075   // to access Label (name) of the parameter
00076 
00077   Standard_EXPORT TCollection_ExtendedString GetFilter() const;
00078   // to access filter (regexp) for the parameter values
00079 
00080   Standard_EXPORT TCollection_ExtendedString GetRequired() const;
00081   // to access Required of the parameter
00082 
00083   Standard_EXPORT DDS_MsgType                GetWarningLevel() const;
00084   // to access wrong value warning level of the parameter
00085 
00086   Standard_EXPORT TCollection_ExtendedString GetLongDescription() const;
00087   // to access Long Description of the parameter
00088 
00089   Standard_EXPORT TCollection_ExtendedString GetShortDescription() const;
00090   // to access Short Description of the parameter
00091 
00092   Standard_EXPORT TCollection_AsciiString    GetComponent() const;
00093 
00094   Standard_EXPORT TCollection_AsciiString    GetUnits() const;
00095   Standard_EXPORT TCollection_AsciiString    GetUnits( const UnitSystem& ) const;
00096   // returns units for indicated unit systems
00097 
00098   Standard_EXPORT TCollection_ExtendedString GetDefaultValue() const;
00099   Standard_EXPORT TCollection_ExtendedString GetDefaultValue( const UnitSystem& ) const;
00100   // to access Default Value of the parameter
00101 
00102   Standard_EXPORT Standard_Real              GetMinValue() const;
00103   Standard_EXPORT Standard_Real              GetMinValue( const UnitSystem& ) const;
00104   // get Min Value of the parameter, either in specified unit system or in internal units (basic SI)
00105 
00106   Standard_EXPORT Standard_Real              GetMaxValue() const;
00107   Standard_EXPORT Standard_Real              GetMaxValue( const UnitSystem& ) const;
00108   // get Max Value of the parameter, either in specified unit system or in internal units (basic SI)
00109 
00110   Standard_EXPORT Standard_Integer           GetPrecision() const;
00111   Standard_EXPORT Standard_Integer           GetPrecision( const UnitSystem& ) const;
00112   // returns precision for indicated unit systems
00113 
00114   Standard_EXPORT TCollection_AsciiString    GetFormat( const Standard_Boolean = Standard_True ) const;
00115   Standard_EXPORT TCollection_AsciiString    GetFormat( const UnitSystem&,
00116                                                         const Standard_Boolean = Standard_True ) const;
00117   // returns format for indicated unit systems
00118 
00119   Standard_EXPORT TCollection_ExtendedString GetNameOfValues() const;
00120   // to access valueList:name of the parameter.
00121   // This string is void if the list is not defined - then use other properties:
00122   //    Type, DefaultValue, MaxValue, MinValue
00123 
00124   Standard_EXPORT Standard_Boolean           GetListOfValues( Handle(TColStd_HArray1OfExtendedString)&,
00125                                                               Handle(TColStd_HArray1OfInteger)& ) const;
00126   // to access valueList of the parameter
00127   // This sequence is empty if the list not defined - then use other properties:
00128   //    Type, DefaultValue, MaxValue, MinValue
00129 
00130   Standard_EXPORT Standard_Boolean           GetListOfValues( Handle(TColStd_HArray1OfExtendedString)&,
00131                                                               Handle(TColStd_HArray1OfInteger)&,
00132                                                               Handle(TColStd_HArray1OfExtendedString)& ) const;
00133   // to access valueList of the parameter
00134   // This sequence is empty if the list not defined - then use other properties:
00135   //    Type, DefaultValue, MaxValue, MinValue
00136 
00137   Standard_EXPORT Standard_Boolean           GetSpecialValues( TColStd_MapOfReal& ) const;
00138   // get values from specVal
00139 
00140   Standard_EXPORT Standard_Real              GetMinZoom() const;
00141   // get Min Value of lateral zooming
00142 
00143   Standard_EXPORT Standard_Real              GetMaxZoom() const;
00144   // get Max Value of lateral zooming
00145 
00146   Standard_EXPORT Standard_Real              GetZoomOrder() const;
00147   // get Order of lateral zooming
00148 
00149   Standard_EXPORT Standard_Real ToSI( const Standard_Real ) const;
00150   Standard_EXPORT Standard_Real FromSI( const Standard_Real ) const;
00151 
00152   Standard_EXPORT Standard_Real ToSI( const Standard_Real, const UnitSystem& ) const;
00153   Standard_EXPORT Standard_Real FromSI( const Standard_Real, const UnitSystem& ) const;
00154   // convert value to and from default SI units according to current units
00155 
00156   Standard_EXPORT Standard_Boolean           HasData( const Standard_Integer ) const;
00157 
00158 private:
00159   DDS_DicItem( const DDS_DicItem& );
00160   // Copy constructor
00161 
00162   void                                       operator=( const DDS_DicItem& );
00163   // Assignment operator
00164 
00165   void                                       FillDataMap( TCollection_AsciiString, const LDOM_Element&,
00166                                                           const LDOM_Element&, const LDOM_Element&,
00167                                                           const TColStd_SequenceOfAsciiString& );
00168   // prepares formants for each unit systems
00169 
00170 
00171   void                                       PrepareFormats( const TCollection_AsciiString& );
00172   // prepares three formats for each unit systems
00173 
00174   void                                       GetDefaultFormat();
00175   // returns three default formants for each unit systems
00176 
00177   UnitSystem                                 GetActiveUnitSystem() const;
00178 
00179   void                                       GetStringFormat( const TCollection_AsciiString&,
00180                                                               const TCollection_AsciiString&,
00181                                                               const TCollection_AsciiString&,
00182                                                               const TCollection_AsciiString&,
00183                                                               TCollection_AsciiString& );
00184   // returns format for the string
00185 
00186   void                                       GetIntegerFormat( const TCollection_AsciiString&,
00187                                                                const TCollection_AsciiString&,
00188                                                                const TCollection_AsciiString&,
00189                                                                const TCollection_AsciiString&,
00190                                                                const Standard_Character,
00191                                                                TCollection_AsciiString& );
00192   // returns format for the integer
00193 
00194   void                                       GetFloatFormat( const TCollection_AsciiString&,
00195                                                              const TCollection_AsciiString&,
00196                                                              const TCollection_AsciiString&,
00197                                                              const TCollection_AsciiString&,
00198                                                              const Standard_Character,
00199                                                              TCollection_AsciiString& );
00200   // returns format for the float
00201 
00202   void                                       Split( const TCollection_AsciiString&,
00203                                                     Handle(TColStd_HArray1OfExtendedString)& );
00204 
00205   UnitData*                                  GetUnitData( const UnitSystem& ) const;
00206 
00207 private:
00208   TCollection_AsciiString                    myId;
00209   TCollection_ExtendedString                 myLabel;
00210   TCollection_ExtendedString                 myFilter;
00211   TCollection_ExtendedString                 myRequired;
00212 
00213   Standard_Integer                           myType;
00214   Standard_Integer                           myWarnLevel;
00215 
00216   TCollection_ExtendedString                 myLongDescr;
00217   TCollection_ExtendedString                 myShortDescr;
00218 
00219   Standard_Real                              myMax;
00220   Standard_Real                              myMin;
00221   Standard_Real                              myDefValue;
00222   TCollection_ExtendedString                 myDefString;
00223 
00224   Standard_Integer                           myData;
00225 
00226   // valueList
00227   TCollection_ExtendedString                 myListName;
00228 
00229   Handle(TColStd_HArray1OfExtendedString)    myListRef;
00230   Handle(TColStd_HArray1OfInteger)           myListRefID;
00231   Handle(TColStd_HArray1OfExtendedString)    myListRefIcons;
00232 
00233   // presentation
00234   Standard_Real                              myMinZoom;
00235   Standard_Real                              myMaxZoom;
00236   Standard_Real                              myZoomOrder;
00237 
00238   Handle(Standard_Transient)                 myComponent;
00239 
00240   // unitData
00241   NCollection_DataMap<UnitSystem, UnitData>  myUnitData;
00242 
00243   friend class DDS_DicGroup;
00244 
00245 public:
00246   // Declaration of CASCADE RTTI
00247   DEFINE_STANDARD_RTTI(DDS_DicItem)
00248 };
00249 
00250 // Definition of HANDLE object using Standard_DefineHandle.hxx
00251 DEFINE_STANDARD_HANDLE(DDS_DicItem, MMgt_TShared)
00252 
00253 // Container class XMLTools_IndexedDataMapOfDicItems (map of handles)
00254 DEFINE_BASECOLLECTION(DDS_BaseCollectionOfDicItems, Handle(DDS_DicItem))
00255 DEFINE_INDEXEDDATAMAP(DDS_IndexedDataMapOfDicItems, DDS_BaseCollectionOfDicItems,
00256                       TCollection_AsciiString, Handle(DDS_DicItem))
00257 
00258 #endif