OMK::Iii::IAccessRule Class Reference

Access rule interface. More...

#include <OMKIAccessRule.h>

Inheritance diagram for OMK::Iii::IAccessRule:

Inheritance graph
[legend]
Collaboration diagram for OMK::Iii::IAccessRule:

Collaboration graph
[legend]
List of all members.

Public Types

enum  FreezableType {
  UNFREEZABLE,
  FREEZABLE_AT_TOOL_LEVEL,
  FREEZABLE_AT_ANY_LEVEL
}

Public Member Functions

virtual ~IAccessRule ()
virtual Type::AccessLevel getAccessLevel (const Name &groupName) const
virtual const Type::AccessGroupLevelgetCurrentAccessLevel () const
virtual const Type::AccessGroupLevelgetDefaultAccessLevel () const
virtual void setCurrentLevel (const Type::AccessGroupLevel &level, Type::AccessLevel toolLevel)=0
virtual void resetCurrentLevel ()
virtual bool isAccessGranted (Type::AccessLevel level, const Name &group) const

Protected Member Functions

 IAccessRule (const ConfigurationParameterDescriptor *node)

Protected Attributes

Type::AccessGroupLevel _defaultLevel
Type::AccessGroupLevel _currentLevel
Type::AccessLevel _freezableLevel
FreezableType _freezableType

Detailed Description

Access rule interface.

The access rules objects are used to define if a tool can access to the attribute of an interactive object. The behavior is defined in various implementations of the interface (see for example AccessRule). The user can choose the implementation by configuration.

Definition at line 67 of file OMKIAccessRule.h.


Member Enumeration Documentation

enum OMK::Iii::IAccessRule::FreezableType

Enumerator:
UNFREEZABLE 
FREEZABLE_AT_TOOL_LEVEL 
FREEZABLE_AT_ANY_LEVEL 

Definition at line 70 of file OMKIAccessRule.h.

00070       :
00071   enum FreezableType
00072   {
00073     UNFREEZABLE,
00074     FREEZABLE_AT_TOOL_LEVEL,
00075     FREEZABLE_AT_ANY_LEVEL
  } ;


Constructor & Destructor Documentation

IAccessRule::IAccessRule ( const ConfigurationParameterDescriptor node  )  [protected]

Definition at line 30 of file OMKIAccessRule.cpp.

References _currentLevel, _defaultLevel, _freezableLevel, _freezableType, FREEZABLE_AT_ANY_LEVEL, FREEZABLE_AT_TOOL_LEVEL, OMK::ParametersAccessor::get(), and UNFREEZABLE.

00031 : _defaultLevel(),
00032   _currentLevel(),
00033   _freezableLevel( -1 ),
00034   _freezableType( UNFREEZABLE )
00035 {
00036   // read the acces type
00037   std::map< std::string, FreezableType > mapping ;
00038   mapping[ "unfreezable"             ] = UNFREEZABLE ;
00039   mapping[ "freezable at tool level" ] = FREEZABLE_AT_TOOL_LEVEL ;
00040   mapping[ "freezable at any level"  ] = FREEZABLE_AT_ANY_LEVEL ;
00041   ParametersAccessor::get( node, "FreezableType", _freezableType, mapping ) ;
00042 
00043   // if necessary read the max level
00044   if( FREEZABLE_AT_ANY_LEVEL == _freezableType ) 
00045     ParametersAccessor::get( node, "FreezableLevel", _freezableLevel ) ;
00046 
00047   // acces level for default group
00048   _defaultLevel[ "*" ] = -1 ;
00049   // try to find one in the parameters
00050   ParametersAccessor::get( node, "AccessLevels", _defaultLevel ) ;
00051   // copy the default in the current to start
00052   _currentLevel = _defaultLevel ;
00053 }

IAccessRule::~IAccessRule (  )  [virtual]

Definition at line 56 of file OMKIAccessRule.cpp.

00057 {
00058 }


Member Function Documentation

AccessLevel IAccessRule::getAccessLevel ( const Name groupName  )  const [virtual]

Definition at line 61 of file OMKIAccessRule.cpp.

References _currentLevel.

Referenced by isAccessGranted().

00062 {
00063   AccessGroupLevel::const_iterator item = _currentLevel.find( name ) ;
00064   if( item == _currentLevel.end() )
00065   {
00066     item = _currentLevel.find( "*" ) ;
00067   }
00068   return ( item != _currentLevel.end() ) ? item->second : -1  ;
00069 }

virtual const Type::AccessGroupLevel& OMK::Iii::IAccessRule::getCurrentAccessLevel (  )  const [inline, virtual]

Definition at line 81 of file OMKIAccessRule.h.

virtual const Type::AccessGroupLevel& OMK::Iii::IAccessRule::getDefaultAccessLevel (  )  const [inline, virtual]

Definition at line 82 of file OMKIAccessRule.h.

References _currentLevel.

00082 { return _currentLevel ; }

virtual void OMK::Iii::IAccessRule::setCurrentLevel ( const Type::AccessGroupLevel level,
Type::AccessLevel  toolLevel 
) [pure virtual]

Implemented in OMK::Iii::AccessRule.

void IAccessRule::resetCurrentLevel (  )  [virtual]

Definition at line 78 of file OMKIAccessRule.cpp.

References _currentLevel, and _defaultLevel.

Referenced by OMK::Iii::SharedConnectorT< Type >::disconnect(), and OMK::Iii::SimpleConnectorT< Type >::disconnect().

00079 {
00080   _currentLevel = _defaultLevel ;
00081 }

bool IAccessRule::isAccessGranted ( Type::AccessLevel  level,
const Name group 
) const [virtual]

Definition at line 72 of file OMKIAccessRule.cpp.

References getAccessLevel().

00073 { 
00074   return getAccessLevel( group ) <= level ; 
00075 }


Member Data Documentation

Type::AccessGroupLevel OMK::Iii::IAccessRule::_defaultLevel [protected]

Definition at line 87 of file OMKIAccessRule.h.

Referenced by IAccessRule(), and resetCurrentLevel().

Type::AccessGroupLevel OMK::Iii::IAccessRule::_currentLevel [protected]

Definition at line 88 of file OMKIAccessRule.h.

Referenced by getAccessLevel(), getDefaultAccessLevel(), IAccessRule(), resetCurrentLevel(), and OMK::Iii::AccessRule::setCurrentLevel().

Type::AccessLevel OMK::Iii::IAccessRule::_freezableLevel [protected]

Definition at line 89 of file OMKIAccessRule.h.

Referenced by IAccessRule().

FreezableType OMK::Iii::IAccessRule::_freezableType [protected]

Definition at line 90 of file OMKIAccessRule.h.

Referenced by IAccessRule(), and OMK::Iii::AccessRule::setCurrentLevel().


logo OpenMask

Documentation generated on Mon Jun 9 11:46:04 2008

Generated with doxygen by Dimitri van Heesch ,   1997-2007