-// 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.
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+
#include "DDS_DicGroup.h"
#include "DDS_Dictionary.h"
#include <UnitsAPI.hxx>
-#include <TColStd_SequenceOfAsciiString.hxx>
-
#include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx>
/*!
\class DDS_DicGroup
-
- This class to provide set of DDS_DicItem objects from one component.
+ \brief This class provides a set of DDS_DicItem objects from one component.
*/
/*!
- Constructor. Create the group with name \aname.
+ \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 )
{
}
/*!
- Copy constructor.
+ \brief Copy constructor (put in private section to prevent object copying).
*/
DDS_DicGroup::DDS_DicGroup( const DDS_DicGroup& )
{
}
/*!
- Get the name of group (component).
+ \brief Get the name of group (component).
+ \return group name
*/
TCollection_AsciiString DDS_DicGroup::GetName() const
{
}
/*!
- Returns the names list of defined unit systems.
- Parameter \atheSystems will contains the sequence of string names.
+ \brief Get the names of all defined units systems.
+ \param theSystemsSeq returning sequence of names
*/
void DDS_DicGroup::GetUnitSystems( TColStd_SequenceOfAsciiString& theSystemSeq ) const
{
}
/*!
- Returns the label of unit system \aname. If unit system not found then empty string returned.
+ \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
{
}
/*!
- Gets the name of active unit system.
+ \brief Get the name of active units system.
+ \return active units system name
*/
TCollection_AsciiString DDS_DicGroup::GetActiveUnitSystem() const
{
}
/*!
- Sets the name of active unit system.
+ \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 )
{
}
/*!
- Assignment operator.
+ \brief Assignment operator (put in private section to prevent object copying).
*/
void DDS_DicGroup::operator=( const DDS_DicGroup& )
{
}
/*!
- Fill the internal data structures from XML parsed structures. Internal.
+ \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 )
{
if ( !myUnitSystem.IsBound( aName ) )
myUnitSystem.Bind( aName, aLabel );
+
+
}
}
// 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 );
}
}
/*!
- Gets dictionary item with specified identifier \atheID.
- If dictionary item not found then null handle returned.
+ \brief Get the dictionary item with specified identifier \a theID.
+
+ If dictionary item is not found, null handle is returned.
+
+ \param theID item identifier
+ \return dictionary item
*/
-Handle(DDS_DicItem) DDS_DicGroup::GetDicItem( const TCollection_AsciiString& theID ) const
+Handle_DDS_DicItem DDS_DicGroup::GetDicItem( const TCollection_AsciiString& theID ) const
{
Handle(DDS_DicItem) aDicItem;
// get dictionary item by id
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 );
+}