X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FDDS%2FDDS_DicGroup.cxx;h=cc3d10c1a39d10840a1ec6d56630db2eb15a79df;hb=bb8609caf7881d966fbb88dec0a7822736da93f5;hp=b6a04dac2c20510df15851973e9aba3557aeb778;hpb=aa05f2a1b23a54321ea7248ae9ac3463652c734e;p=modules%2Fgui.git diff --git a/src/DDS/DDS_DicGroup.cxx b/src/DDS/DDS_DicGroup.cxx index b6a04dac2..cc3d10c1a 100644 --- a/src/DDS/DDS_DicGroup.cxx +++ b/src/DDS/DDS_DicGroup.cxx @@ -1,11 +1,14 @@ -// Copyright (C) 2005 CEA/DEN, EDF R&D, OPEN CASCADE, PRINCIPIA R&D +// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License. // -// This library is distributed in the hope that it will be useful +// 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. @@ -14,8 +17,9 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + #include "DDS_DicGroup.h" #include "DDS_Dictionary.h" @@ -25,30 +29,51 @@ #include -#include - #include #include IMPLEMENT_STANDARD_HANDLE(DDS_DicGroup, MMgt_TShared) IMPLEMENT_STANDARD_RTTIEXT(DDS_DicGroup, MMgt_TShared) +/*! + \class DDS_DicGroup + \brief This class provides a set of DDS_DicItem objects from one component. +*/ + +/*! + \brief Constructor. + + Create the group with name \a name. + + \param name group name +*/ DDS_DicGroup::DDS_DicGroup( const TCollection_AsciiString& name ) : MMgt_TShared(), -myName( name ), -myActiveSystem( UNIT_SYSTEM_SI ) + myName( name ), + myActiveSystem( UNIT_SYSTEM_SI ) { } +/*! + \brief Copy constructor (put in private section to prevent object copying). +*/ DDS_DicGroup::DDS_DicGroup( const DDS_DicGroup& ) { } +/*! + \brief Get the name of group (component). + \return group name +*/ TCollection_AsciiString DDS_DicGroup::GetName() const { return myName; } +/*! + \brief Get the names of all defined units systems. + \param theSystemsSeq returning sequence of names +*/ void DDS_DicGroup::GetUnitSystems( TColStd_SequenceOfAsciiString& theSystemSeq ) const { theSystemSeq.Clear(); @@ -61,6 +86,14 @@ void DDS_DicGroup::GetUnitSystems( TColStd_SequenceOfAsciiString& theSystemSeq ) } } +/*! + \brief Get the label of units system \a name. + + If units system is not found, empty string is returned. + + \param make units system name + \return units system label +*/ TCollection_ExtendedString DDS_DicGroup::GetUnitSystemLabel( const TCollection_AsciiString& name ) const { TCollection_ExtendedString aLabel; @@ -69,21 +102,37 @@ TCollection_ExtendedString DDS_DicGroup::GetUnitSystemLabel( const TCollection_A return aLabel; } +/*! + \brief Get the name of active units system. + \return active units system name +*/ TCollection_AsciiString DDS_DicGroup::GetActiveUnitSystem() const { return myActiveSystem; } +/*! + \brief Set the active unit system. + \param theSystem name of the units system to be made active +*/ void DDS_DicGroup::SetActiveUnitSystem( const TCollection_AsciiString& theSystem ) { if ( myUnitSystem.IsBound( theSystem ) ) myActiveSystem = theSystem; } +/*! + \brief Assignment operator (put in private section to prevent object copying). +*/ void DDS_DicGroup::operator=( const DDS_DicGroup& ) { } +/*! + \brief Fill the internal data structures from XML parsed structures. + \param theComponentData component data DOM node + \param theDocElement document element DOM node +*/ void DDS_DicGroup::FillDataMap( const LDOM_Element& theComponentData, const LDOM_Element& theDocElement ) { TCollection_AsciiString aCompName = theComponentData.getAttribute( DDS_Dictionary::KeyWord( "COMPONENT_NAME" ) ); @@ -106,6 +155,8 @@ void DDS_DicGroup::FillDataMap( const LDOM_Element& theComponentData, const LDOM if ( !myUnitSystem.IsBound( aName ) ) myUnitSystem.Bind( aName, aLabel ); + + } } @@ -131,19 +182,33 @@ void DDS_DicGroup::FillDataMap( const LDOM_Element& theComponentData, const LDOM // 1. Attributes (id,label,units?,format?,required?) TCollection_AsciiString anID = aQuantity.getAttribute( DDS_Dictionary::KeyWord( "DATUM_ID" ) ); - Handle(DDS_DicItem) aDicItem = new DDS_DicItem(); + Handle(DDS_DicItem) aDicItem = CreateItem(); aDicItem->myComponent = this; aDicItem->FillDataMap( anID, aQuantity, theComponentData, theDocElement, unitSystems ); myDataMap.Add( anID, aDicItem ); + + bool exist = false; + for( int i=1, n=myKeys.Length(); i<=n && !exist; i++ ) + if( myKeys.Value( i )==anID ) + { + cout << "Doubled key:" << anID << endl; + exist = true; + } + if( !exist ) + myKeys.Append( anID ); } } /*! - Returns DicItem with all attached data -*/ + \brief Get the dictionary item with specified identifier \a theID. + + If dictionary item is not found, null handle is returned. -Handle(DDS_DicItem) DDS_DicGroup::GetDicItem( const TCollection_AsciiString& theID ) const + \param theID item identifier + \return dictionary item +*/ +Handle_DDS_DicItem DDS_DicGroup::GetDicItem( const TCollection_AsciiString& theID ) const { Handle(DDS_DicItem) aDicItem; // get dictionary item by id @@ -152,3 +217,76 @@ Handle(DDS_DicItem) DDS_DicGroup::GetDicItem( const TCollection_AsciiString& the return aDicItem; } + +/*! + \brief Return all keys of the group + \param seq - string container to be filled with keys +*/ +void DDS_DicGroup::GetKeys( TColStd_SequenceOfAsciiString& seq ) const +{ + seq = myKeys; +} + +/*! + \brief Instantiate new dictionary item, used for customization of + data dictionary items. + \return New dictionary item instance. +*/ +Handle(DDS_DicItem) DDS_DicGroup::CreateItem() const +{ + return new DDS_DicItem(); +} + +/*! + \brief Bind dictionary item to ID + \return Standard_True if the item has been succesfully bound. + Standard_False if there is an item with same id. +*/ +Standard_Boolean DDS_DicGroup::AddDicItem( const TCollection_AsciiString& theID, + const Handle(DDS_DicItem)& theDicItem ) +{ + if ( myDataMap.Contains( theID ) ) + return Standard_False; + + myDataMap.Add( theID, theDicItem ); + myKeys.Append( theID ); + + return Standard_True; +} + +/*! + \brief Check if there is item bounded by id. + \return Standard_True if there is an item bound in map with given id. +*/ +Standard_Boolean DDS_DicGroup::HasDicItem( const TCollection_AsciiString& theID ) const +{ + return myDataMap.Contains( theID ); +} + +/*! + \brief Clear dictionary items map +*/ +void DDS_DicGroup::RemoveAllDicItems() +{ + myDataMap.Clear(); + myKeys.Clear(); +} + +/*! + \brief Returns a reference to a map. Can be used to iterate through + dictionary items. +*/ +const DDS_IndexedDataMapOfDicItems& DDS_DicGroup::GetItemMap() const +{ + return myDataMap; +} + +/*! + \brief Add new unit system and bind its label name. + \return Standard_False if there is other system bound by this key. +*/ +Standard_Boolean DDS_DicGroup::AddUnitSystem( const TCollection_AsciiString& theSystemKey, + const TCollection_ExtendedString& theSystemLabel ) +{ + return myUnitSystem.Bind( theSystemKey, theSystemLabel ); +}