Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
berryNamedHandleObjectWithState.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
15 
16 #include "berryState.h"
17 
18 namespace berry
19 {
20 
21 void NamedHandleObjectWithState::AddState(const QString& stateId,
22  const State::Pointer& state)
23 {
24  if (!state)
25  {
26  throw Poco::NullPointerException("Cannot add a null state");
27  }
28 
29  states[stateId] = state;
30 }
31 
33 {
34  const QString description(NamedHandleObject::GetDescription()); // Trigger a NDE.
35 
37  descriptionState(this->GetState(INamedHandleStateIds::DESCRIPTION));
38  if (descriptionState.IsNotNull())
39  {
40  const Object::ConstPointer value(descriptionState->GetValue());
41  if (value.IsNotNull())
42  {
43  return value->ToString();
44  }
45  }
46 
47  return description;
48 }
49 
51 {
52  const QString name(NamedHandleObject::GetName()); // Trigger a NDE, if necessary.
53 
55  nameState(this->GetState(INamedHandleStateIds::NAME));
56  if (nameState.IsNotNull())
57  {
58  const Object::ConstPointer value(nameState->GetValue());
59  if (value.IsNotNull())
60  {
61  return value->ToString();
62  }
63  }
64 
65  return name;
66 }
67 
69  const QString& stateId) const
70 {
71  if (states.empty())
72  {
73  return State::Pointer(nullptr);
74  }
75 
76  QHash<QString, State::Pointer>::const_iterator iter = states.find(stateId);
77  return iter.value();
78 }
79 
81 {
82  if (states.empty())
83  {
84  return QList<QString>();
85  }
86 
87  QList<QString> stateIds;
88  for (QHash<QString, State::Pointer>::const_iterator iter = states.begin();
89  iter != states.end(); ++iter)
90  {
91  stateIds.push_back(iter.key());
92  }
93  return stateIds;
94 }
95 
97 {
98  if (id.isEmpty())
99  {
100  throw ctkInvalidArgumentException("Cannot remove an empty id");
101  }
102 
103  states.remove(id);
104 }
105 
107  : NamedHandleObject(id)
108 {
109 }
110 
111 }
void RemoveState(const QString &id) override
virtual QString GetName() const
virtual QString GetDescription() const
void AddState(const QString &stateId, const SmartPointer< State > &state) override
QList< QString > GetStateIds() const override
berry::SmartPointer< Self > Pointer
Definition: berryObject.h:82
SmartPointer< State > GetState(const QString &stateId) const override