Scenario.h
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * Copyright (C) 2011-2016, High Performance Humanoid Technologies (H2T), Karlsruhe Institute of Technology (KIT), all rights reserved.
5  *
6  * ArmarX is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  *
10  * ArmarX is distributed in the hope that it will be useful, but
11  * WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  *
18  * @package ArmarXCore::core
19  * @author Dennis Weigelt
20  * @date 2016
21  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
22  * GNU General Public License
23  */
24 
25 
26 #pragma once
27 
28 #include <memory>
29 #include <memory>
30 #include <vector>
31 #include <string>
32 
34 {
35  class Scenario;
36  using ScenarioPtr = std::shared_ptr<Scenario>;
37  using ScenarioWPtr = std::weak_ptr<Scenario>;
38  using ScenarioVectorPtr = std::shared_ptr<std::vector<ScenarioPtr>>;
39 }
40 
41 #include "ApplicationInstance.h"
42 #include "Package.h"
43 
44 
46 {
47  class Package;
48  using PackagePtr = std::shared_ptr<Package>;
49  typedef std::map<std::string, std::string> IceEnvMap;
50 
52  {
53  Local = 0,
54  Remote = 1
55  };
56 
57  /**
58  * @class Scenario
59  * @ingroup data_structure
60  * @brief Class containing data about a scenario and its applications.
61  * Provides methods to get and set the data contained in the scenario. It is only representative
62  * and doesn't actually manage the scenario.
63  */
64  class Scenario : public std::enable_shared_from_this<Scenario>
65  {
66  private:
67  std::string name;
68  std::string creationTime;
69  std::string lastChangedTime;
70  std::string globalConfigName;
71  std::string subfolder;
72  std::string nodeName;
73  ScenarioDeploymentType deploymentType;
74  std::weak_ptr<Package> package;
75  ApplicationInstanceVectorPtr applications;
76 
77  armarx::PropertyDefinitionsPtr globalConfig;
78  IceEnvMap iceEnviromentVariables;
79 
80  public:
81  /** Constructor that sets some base information about the scenario.
82  * @param name name of the scenario
83  * @param creationTime when this scenario was first created
84  * @param lastChangedTime when this scenario was last changed. Should usually be the same as the time of
85  * creation, except when creating an exact copy of another Scenario.
86  * @param path path to the root of this scenario
87  */
88  Scenario(std::string name, std::string creationTime, std::string lastChangedTime, PackagePtr package, std::string globalConfigName = "./config/global.cfg", std::string subfolder = "", ScenarioDeploymentType deploymentType = ScenarioDeploymentType::Remote, IceEnvMap iceEnvVariables = IceEnvMap());
89 
90  /*
91  * @return name of this scenario
92  */
93  std::string getName();
94 
95  /*
96  * Sets the name of this scenario.
97  * @param name new name
98  */
99  void setName(std::string name);
100 
101  /**SCENARIO_H
102  * @return time this scenario was created.
103  */
104  std::string getCreationTime();
105 
106  /**
107  * @return time this scenario was last changed
108  */
109  std::string getLastChangedTime();
110 
111  std::string getGlobalConfigName();
112  void setGlobalConfigName(std::string name);
113 
114  /**
115  * @return the path to the scx file
116  */
117  std::string getPath();
118  /**
119  * @return path to the root of this scenario
120  */
121  std::string getFolder();
122 
124 
126 
127  /**
128  * @return status of this scenario
129  */
130  std::string getStatus();
131 
132  bool getStatusWriteBlock();
133  void setStatusWriteBlock(bool state);
134 
137 
138  /**
139  * @returns subfolder
140  **/
141  std::string getSubfolder();
142 
143  /**
144  * Sets the last-changed-time to now
145  */
146  void setLastChangedTime(std::string time);
147 
148  /**
149  * @return all applications this scenario contains
150  */
152 
154 
155  /**
156  * Adds an Application to this scenario.
157  * @param application Application to be added to this scenario
158  */
159  void addApplication(ApplicationInstancePtr application);
160 
161  /**
162  * Removes an Application from this scenario
163  * @param application application to be removed
164  */
165  void removeApplication(ApplicationInstancePtr application);
166 
167  void updateApplicationByName(std::string name);
168 
169  void updateApplication(ApplicationInstancePtr application);
170 
171  void save();
172 
173  void makeLocalGlobalConfig();
174 
175  bool isReadOnly();
176 
177  bool allApplicationsFound();
178 
179  void reloadAppInstances();
180  void reloadGlobalConf();
181 
183 
184  std::string getGlobalConfigPath();
185  bool isGlobalConfigWritable();
187 
188  std::vector<std::string> getAllDeploymendNodeNames();
189 
190  void addIceEnviromentVariable(std::string name, std::string variable);
191  void clearIceEnviromentVariable(std::string name);
193  std::string getNodeName() const;
194  void setNodeName(const std::string& value);
195  };
196 }
ScenarioManager::Data_Structure::Scenario::getName
std::string getName()
Definition: Scenario.cpp:57
ScenarioManager::Data_Structure::Scenario::getGlobalConfigPath
std::string getGlobalConfigPath()
Definition: Scenario.cpp:305
ScenarioManager::Data_Structure::Scenario::updateApplication
void updateApplication(ApplicationInstancePtr application)
Definition: Scenario.cpp:248
ScenarioManager::Data_Structure::Scenario::getIceEnviromentVariables
IceEnvMap getIceEnviromentVariables()
Definition: Scenario.cpp:398
ScenarioManager::Data_Structure::ApplicationInstancePtr
std::shared_ptr< ApplicationInstance > ApplicationInstancePtr
Definition: ApplicationInstance.h:33
ScenarioManager::Data_Structure::Scenario::getGlobalConfig
armarx::PropertyDefinitionsPtr getGlobalConfig()
Definition: Scenario.cpp:300
ScenarioManager::Data_Structure::ScenarioPtr
std::shared_ptr< Scenario > ScenarioPtr
Definition: Scenario.h:36
ScenarioManager::Data_Structure::Scenario::setScenarioDeploymentType
void setScenarioDeploymentType(ScenarioDeploymentType type)
Definition: Scenario.cpp:360
ScenarioManager::Data_Structure::ApplicationInstanceVectorPtr
std::shared_ptr< std::vector< ApplicationInstancePtr > > ApplicationInstanceVectorPtr
Definition: ApplicationInstance.h:35
ScenarioManager::Data_Structure::Scenario::setNodeName
void setNodeName(const std::string &value)
Definition: Scenario.cpp:408
ScenarioManager::Data_Structure::Scenario::setName
void setName(std::string name)
Definition: Scenario.cpp:62
ScenarioManager::Data_Structure::Scenario::getScenarioDeploymentType
ScenarioDeploymentType getScenarioDeploymentType()
Definition: Scenario.cpp:355
ScenarioManager::Data_Structure::IceEnvMap
std::map< std::string, std::string > IceEnvMap
Definition: Scenario.h:49
ScenarioManager::Data_Structure::Scenario::setLastChangedTime
void setLastChangedTime(std::string time)
Sets the last-changed-time to now.
Definition: Scenario.cpp:196
ScenarioManager::Data_Structure::Scenario::clearIceEnviromentVariable
void clearIceEnviromentVariable(std::string name)
Definition: Scenario.cpp:393
ScenarioManager::Data_Structure::Scenario::getPath
std::string getPath()
Definition: Scenario.cpp:87
ScenarioManager::Data_Structure::Scenario::makeLocalGlobalConfig
void makeLocalGlobalConfig()
Definition: Scenario.cpp:260
ScenarioManager::Data_Structure::Scenario::reloadGlobalConf
void reloadGlobalConf()
Definition: Scenario.cpp:292
ScenarioManager::Data_Structure::Scenario::getStatus
std::string getStatus()
Definition: Scenario.cpp:133
ScenarioManager::Data_Structure::Scenario::allApplicationsFound
bool allApplicationsFound()
Definition: Scenario.cpp:375
ScenarioManager::Data_Structure::Scenario::getApplications
ApplicationInstanceVectorPtr getApplications()
Definition: Scenario.cpp:206
ScenarioManager::Data_Structure::ScenarioDeploymentType
ScenarioDeploymentType
Definition: Scenario.h:51
Package.h
cxxopts::value
std::shared_ptr< Value > value()
Definition: cxxopts.hpp:926
ScenarioManager::Data_Structure::Scenario::getApplicationByName
ApplicationInstancePtr getApplicationByName(std::string name)
Definition: Scenario.cpp:211
ScenarioManager::Data_Structure::Scenario::addApplication
void addApplication(ApplicationInstancePtr application)
Adds an Application to this scenario.
Definition: Scenario.cpp:224
ScenarioManager::Data_Structure::Scenario::getFolder
std::string getFolder()
Definition: Scenario.cpp:103
ScenarioManager::Data_Structure::Scenario::reloadAppInstances
void reloadAppInstances()
Definition: Scenario.cpp:284
ScenarioManager::Data_Structure::PackagePtr
std::shared_ptr< Package > PackagePtr
Definition: Package.h:121
ScenarioManager::Data_Structure::Scenario::getNodeName
std::string getNodeName() const
Definition: Scenario.cpp:403
ScenarioManager::Data_Structure::Scenario::getSubfolder
std::string getSubfolder()
Definition: Scenario.cpp:82
ScenarioManager::Data_Structure
Definition: Application.cpp:166
ScenarioManager::Data_Structure::Scenario::getCreationTime
std::string getCreationTime()
SCENARIO_H.
Definition: Scenario.cpp:67
ScenarioManager::Data_Structure::Scenario::getGlobalConfigName
std::string getGlobalConfigName()
Definition: Scenario.cpp:77
ScenarioManager::Data_Structure::Local
@ Local
Definition: Scenario.h:53
ScenarioManager::Data_Structure::Scenario::getStatusWriteBlock
bool getStatusWriteBlock()
Definition: Scenario.cpp:335
ScenarioManager::Data_Structure::Scenario::isGlobalConfigFileexistent
bool isGlobalConfigFileexistent()
Definition: Scenario.cpp:330
ApplicationInstance.h
ScenarioManager::Data_Structure::Scenario::getAllDeploymendNodeNames
std::vector< std::string > getAllDeploymendNodeNames()
Definition: Scenario.cpp:365
ScenarioManager::Data_Structure::Scenario::isScenarioFileWriteable
bool isScenarioFileWriteable()
Definition: Scenario.cpp:112
ScenarioManager::Data_Structure::Scenario::isReadOnly
bool isReadOnly()
Definition: Scenario.cpp:279
ScenarioManager::Data_Structure::Scenario::getPackage
PackagePtr getPackage()
Definition: Scenario.cpp:128
ScenarioManager::Data_Structure::ScenarioWPtr
std::weak_ptr< Scenario > ScenarioWPtr
Definition: Scenario.h:37
ScenarioManager::Data_Structure::Remote
@ Remote
Definition: Scenario.h:54
IceUtil::Handle< class PropertyDefinitionContainer >
ScenarioManager::Data_Structure::Scenario::Scenario
Scenario(std::string name, std::string creationTime, std::string lastChangedTime, PackagePtr package, std::string globalConfigName="./config/global.cfg", std::string subfolder="", ScenarioDeploymentType deploymentType=ScenarioDeploymentType::Remote, IceEnvMap iceEnvVariables=IceEnvMap())
Constructor that sets some base information about the scenario.
Definition: Scenario.cpp:37
ScenarioManager::Data_Structure::Scenario::addIceEnviromentVariable
void addIceEnviromentVariable(std::string name, std::string variable)
Definition: Scenario.cpp:388
ScenarioManager::Data_Structure::Scenario::isGlobalConfigWritable
bool isGlobalConfigWritable()
Definition: Scenario.cpp:321
ScenarioManager::Data_Structure::Scenario::getLastChangedTime
std::string getLastChangedTime()
Definition: Scenario.cpp:72
ScenarioManager::Data_Structure::Scenario::updateApplicationByName
void updateApplicationByName(std::string name)
Definition: Scenario.cpp:242
ScenarioManager::Data_Structure::Scenario::setGlobalConfigName
void setGlobalConfigName(std::string name)
Definition: Scenario.cpp:201
ScenarioManager::Data_Structure::Scenario::setStatusWriteBlock
void setStatusWriteBlock(bool state)
Definition: Scenario.cpp:347
ScenarioManager::Data_Structure::Scenario::save
void save()
Definition: Scenario.cpp:254
ScenarioManager::Data_Structure::Scenario::removeApplication
void removeApplication(ApplicationInstancePtr application)
Removes an Application from this scenario.
Definition: Scenario.cpp:229
ScenarioManager::Data_Structure::Scenario
Class containing data about a scenario and its applications. Provides methods to get and set the data...
Definition: Scenario.h:64
ScenarioManager::Data_Structure::ScenarioVectorPtr
std::shared_ptr< std::vector< ScenarioPtr > > ScenarioVectorPtr
Definition: Scenario.h:38