VR-Forces 4.2 Class Documentation
simulationModelSetLoader.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2013 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
8 
9 #pragma once
10 
15 #include <vrvUtil/signalslib.h>
17 #include <vrfutil/rwForces.h>
18 #include <vrfutil/subObjList.h>
19 #include <vrfutil/subObjEntry.h>
20 #include <vrfutil/formTbl.h>
21 #include <vlutil/vlFilename.h>
22 #include <mtl/envValue.h>
23 #include <matrix/3dBoundingVolume.h>
24 #include <vrvUtil/DtVirtualBaseClass.h>
25 #include <QtCore/QHash>
26 #include <QtGui/QPixmap>
27 #include <QtCore/QObject>
28 
29 #include <vrfExtProtocol/objType.h>
31 
32 class DtEnvList;
37 
38 namespace makVrf
39 {
40  class DtEntityMapperKey;
41 }
42 
43 namespace makVrv
44 {
45  class DtForceManager;
46 }
47 
48 class DtObjectType;
49 class DtModelSet;
50 class DtModelSetEntry;
52 class QComboBox;
54 class DtEnvironment;
55 class DtVariableBindingList;
56 
57 class DT_DLL_entityeditorimpl DtSimulationModelSetLoader : public makVrv::DtVirtualBaseClass
58 {
59 public:
60  enum LoadFlags
61  {
62  LoadDataFiles = 0x00000001,
63  LoadParameterFiles = 0x00000002,
64  LoadSystemFiles = 0x00000004,
65  LoadSupportingFiles = 0x00000008,
66  LoadAll = LoadDataFiles | LoadParameterFiles | LoadSystemFiles | LoadSupportingFiles
67  };
68 
69  typedef std::map<DtString, DtVrfObjectParameters*> ParametersMap;
70 
72  {
73  public:
76 
77  virtual ~EnvironmentContainer();
78 
79  void seedFrom(DtEnvironmentSP env, DtEnvValueSP root);
80 
81  DtEnvironmentSP copyEnvironment(DtEnvironmentSP) const;
82  void reparentEnvironmentChildren(DtEnvList*, DtEnvValueSP root) const;
83 
84  DtEnvValueSP backup();
85  DtEnvValueSP update();
86 
87  void remove(DtEnvValueSP originalNode, DtEnvValueSP modifiedNode);
88  bool isEmpty() const;
89 
90  DtEnvValueSP replace(DtEnvironmentSP env, DtEnvValueSP node, DtEnvValueSP replaceWith);
91  void reparentRoots(DtEnvValueSP templateRoot, DtEnvValueSP newRoot) const;
92 
95  };
96 
97  typedef boost::shared_ptr<EnvironmentContainer> EnvironmentContainerSP;
98 
99  class EntityData : public DtObjectType
100  {
101  public:
102  EntityData();
103  virtual ~EntityData();
104  EntityData(const DtObjectType& objectType, const DtObjectType& matchType = DtObjectType::nullType());
105  EntityData(const EntityData& t);
106 
107  //sets the object type
108  EntityData& operator=(const DtObjectType&);
109 
110  EntityData& operator=(const EntityData&);
111 
112  virtual EntityData* clone() const;
113 
114  //compares to the object type
115  bool operator>(const DtObjectType& rhs) const
116  {
117  if (*this < rhs)
118  {
119  return false;
120  }
121  else
122  {
123  return true;
124  }
125  }
126 
127  //compares to the object type
128  bool operator>(const EntityData& rhs) const
129  {
130  if (*this < rhs)
131  {
132  return false;
133  }
134  else
135  {
136  return true;
137  }
138  }
139 
140  std::string myDataFile;
141 
143 
144  DtObjectType myMatchType;
145  DtObjectType myOriginalMatchType;
146 
148  DtEnvValueSP myOriginalObjectNode;
155 
157  DtEnvValueSP myModifiedObjectNode;
164 
165  bool myIsNew;
167  };
168 
170  DtSimulationModelSetLoader(makVrv::DtDe&);
171 
172  virtual ~DtSimulationModelSetLoader();
173 
174  virtual bool load(const DtSimulationModelSet&, LoadFlags flags = LoadAll);
175  virtual bool save(const DtFilename&);
176 
177  static DtSimulationModelSetLoader& instance(makVrv::DtDe&);
178  static void registerInstance(makVrv::DtDe&, DtSimulationModelSetLoader*);
179 
180  virtual void setDisplayDe(makVrv::DtDe*);
181  virtual makVrv::DtDe& displayDe();
182 
183 private:
186 
187 public:
189  virtual bool hasFileNamed(const std::string& s) const;
190 
193  virtual bool addNewDataFile(const std::string&);
194 
196  virtual std::string platform(const makVrf::DtEntityMapperKey& k) const;
197 
199  virtual std::string platformFileType(const makVrf::DtEntityMapperKey& k) const;
200 
201  DtFilename getSystemDirectory() const;
202  DtFilename getFormationDirectory() const;
203  DtFilename path() const;
204 
206  DtFilename simulationModelSetFilename() const;
207 
208  virtual bool openSystemFiles(const DtFilename& directory);
209 
210  virtual bool loadForceHostilityFile(const DtFilename& f);
211 
213  virtual bool loadDataFiles(const DtString&);
214 
216  virtual bool loadParameterFiles(const DtString&);
217 
219  virtual bool loadModelSet();
220 
223  virtual DtModelSetEntry* modelEntry(const DtObjectType&, bool matchPattern = false) const;
224 
226  virtual DtModelSetEntry createModelSetEntryFrom(DtEnvironmentSP env, DtEnvValueSP objectNode) const;
227  virtual DtModelSetEntry createModelSetEntryFrom(const DtObjectType&) const;
228 
230  virtual void revertData(const makVrf::DtEntityMapperKey& key);
231 
233  virtual EntityData* dataFor(const DtObjectType&) const;
234 
237  virtual bool containsObjectType(const DtObjectType&) const;
238 
241  virtual bool hasModelNamed(const DtString&);
242 
243  virtual const ParametersMap& availableParameters() const
244  {
245  return myAvailableParameters;
246  }
247 
250  virtual bool createRwVariable(const DtObjectType&, const std::string& rwType, const std::string& rwName, DtReaderWriter*& source,
251  DtReaderWriter*& backup);
252 
253  virtual void replaceSystem(const DtFilename&);
254 
255  virtual bool isModified(const DtObjectType&) const;
256  virtual bool isModified(EntityData*) const;
257  virtual bool isModified() const;
258 
259  virtual bool isNew(const DtObjectType&) const;
260  virtual bool isNew(EntityData*) const;
261 
262  virtual bool isDeleted(const DtObjectType&) const;
263  virtual bool isDeleted(EntityData*) const;
264 
266  virtual void deleteModel(DtModelSetEntry*);
267  virtual void deleteModel(const DtObjectType&);
268  virtual void deleteModel(EntityData*);
269 
271  virtual bool changeObjectType(const DtObjectType& oldType, const DtObjectType& newType);
272 
274  virtual bool changeMatchType(const DtObjectType& oldType, const DtObjectType& newType);
275 
278  virtual void updateGuiInformation(EntityData*);
279 
281  virtual void updateSystemData(EntityData*);
282 
284  virtual void sharedSystems(const DtFilename& systemFile, std::vector<DtModelSetEntry*>& result) const;
285 
287  virtual void loadSystemFile(const DtFilename&);
288 
290  virtual void updateDataInformation(EntityData*);
291 
293  virtual void convertRegistryToEnvironment(const DtReaderWriterRegistry& data, DtEnvironmentSP env, DtEnvValueSP objectNode) const;
294 
296  virtual void removeSystem(DtEnvironmentSP env, const DtString& system, DtEnvValueSP objectNode);
297 
299  virtual void addSystem(DtEnvironmentSP env, const DtRwVariableBindings*, DtEnvValueSP objectNode);
300 
301  virtual void changeDefaultCategory(const QString& old, const QString& newCat);
302  virtual void addDefaultCategories(QComboBox*);
303 
304  void setDefaultCategories(const QStringList&);
305  void addDefaultCategory(const QString&);
306  const QStringList& defaultCategories() const;
307  virtual void revertCategories();
308  virtual bool hasModifiedCategories() const;
309 
310  virtual void changeDefaultDeployedCountry(const QString& old, const QString& newCat);
311  virtual void addDefaultDeployedCountries(QComboBox*);
312  void setDefaultDeployedCountries(const QStringList&);
313  void addDefaultDeployedCountry(const QString&);
314  const QStringList& defaultDeployedCountries() const;
315  virtual void revertDeployedCountries();
316  virtual bool hasModifiedDeployedCountries() const;
317 
319  virtual DtRwVariableBindings* createVariableBindingsForSystem(const DtFilename&, const DtString& newSystemName);
320 
323  virtual DtModelSetEntry* addNewEntity(const DtObjectType& base, const DtObjectType& newType, const DtString& name,
324  const DtRwNLengthStringVector& categories, const DtString& uniqueID);
325 
328  virtual DtModelSetEntry* addNewEntity(const std::string& platformType, const DtObjectType& newType, const DtString& name,
329  const DtRwNLengthStringVector& categories, const DtString& uniqueID);
330 
332  DtModelSetEntry* addNewEntity(EntityData* baseData, const DtObjectType& newType, const DtString& name,
333  const DtRwNLengthStringVector& categories, const DtString& uniqueID);
334 
336  virtual void removeSystem(const DtFilename&);
337 
338  virtual const DtRwVariableBindings* variableBindings() const;
339 
340  virtual QPixmap getIcon(const makVrf::DtEntityMapperKey& key, int pointSize = 48,
341  bool sizeToFont = false);
342 
343  virtual void clearIcons(const makVrf::DtEntityMapperKey& key);
344 
345  static DtSimulationModelSetLoader* create(makVrv::DtDe*);
346 
348  virtual void changeSubordinateTypes(const DtObjectType& oldType, const DtObjectType& newType);
349 
351  virtual DtVrfSubObjectParameterList subordinateObjectsFor(const DtObjectType&) const;
352  virtual DtVrfSubObjectParameterList subordinateObjectsFor(DtEnvironmentSP, DtEnvValueSP objectNode) const;
353 
355  virtual void updateSubordinateObjects(const DtObjectType&, const DtVrfSubObjectParameterList&);
356  virtual void updateSubordinateObjects(DtEnvironmentSP, DtEnvValueSP objectNode, const DtVrfSubObjectParameterList&);
357 
359  virtual void updateFormationTable(const DtObjectType&, const DtFormationTable&);
360 
362  virtual DtEmbarkationInformation embarkationInformationFor(const DtObjectType&) const;
363  virtual DtEmbarkationInformation embarkationInformationFor(DtEnvironmentSP, DtEnvValueSP objectNode) const;
364 
366  virtual void updateEmbarkationInformation(const DtObjectType&, const DtEmbarkationInformation&);
367  virtual void updateEmbarkationInformation(DtEnvironmentSP, DtEnvValueSP objectNode, const DtEmbarkationInformation&);
368 
370  virtual DtDIGuyInformation diGuyInformationFor(const DtObjectType&) const;
371 
373  virtual void updateDIGuyInformation(const DtObjectType&, const DtDIGuyInformation&);
374 
376  virtual DtSensorSignatureInformation sensorSignatureInformationFor(const DtObjectType&) const;
377  virtual DtSensorSignatureInformation sensorSignatureInformationFor(DtEnvironmentSP, DtEnvValueSP root) const;
378 
380  virtual void updateSensorSignatureInformation(const DtObjectType&, const DtSensorSignatureInformation&);
381  virtual void updateSensorSignatureInformation(DtEnvironmentSP, DtEnvValueSP root, const DtSensorSignatureInformation&);
382 
384  virtual DtFormationTable* formationTableFor(const DtObjectType&);
385  virtual DtFormationTable* originalFormationTableFor(const DtObjectType&);
386 
388  virtual Dt3dBoundingVolume boundingVolumeFor(const DtObjectType&) const;
389 
391  virtual bool isAggregate(const DtObjectType&) const;
392 
393  bool loaded() const
394  {
395  return myLoaded;
396  }
397 
398  const DtOrderedObjectTypeList<EntityData*>& entityData() const
399  {
400  return myEntityData;
401  }
402 
404  virtual bool saveData();
405 
407  virtual bool saveFavorites();
408 
410  virtual DtObjectType templateObjectType(const std::string& parameterType) const;
411 
413  virtual void addInternalItem(const std::string&, bool markDataAsWell = true);
414 
417  virtual std::vector<DtReaderWriter*> supportPointsFor(const DtObjectType&) const;
418 
420  virtual DtObjectType uniqueEntityTypeFrom(const DtObjectType&) const;
421 
422 public:
423  const DtModelSet* modelSet() const;
424  DtModelSet* modelSet();
425 
426  virtual makVrv::DtForceManager* forceManager();
427 
428  const DtSimulationModelSet& simulationModelSet() const;
429  const DtFilename& parameterFilename() const;
430  const DtComponentSystemDatabase* systemDatabase() const;
431  DtFilename modelSetDirectory() const;
432 
433  virtual void forceRemoved(DtForceType forceType);
434 
435  const DtRwForces& allForces() const;
436 
437  virtual std::vector<const DtComponentSystemDefinition*> systemDefinitionsFor(const DtObjectType& o) const;
438 
439  virtual const DtReaderWriter* findVariable(const DtVariableBindingsList&, const DtString&) const;
440 
441 protected:
445  virtual void markInternalItemsAsReadOnly(DtVariableBindingsList*);
446 
447  virtual void loadSystemFilesFromDirectory(const QString& directoryName, const DtVariableBindingsList& variableBindings);
448 
449  virtual void cleanup();
450 
451  virtual bool saveForceHostility(const DtFilename& filename);
452 
453  virtual bool warned(const DtFilename&);
454  virtual void removeEntityFromSubObjects(const DtObjectType&);
455 
459  virtual DtModelSet* createFavoritesFromModelSet(DtModelSet* s);
460 
461  virtual void mergeFavoritesIntoModelSet(DtModelSet* favorites, DtModelSet* set);
462 
463  virtual DtVariableBindingsList* copyBindingsList(const DtVariableBindingsList* orig) const;
464 
465  virtual EntityData* createParameterDataFrom(DtVrfObjectParameters*) const;
466 
467  virtual DtFormationTable* formationTableFor(DtEnvironmentSP, DtEnvValueSP objectNode) const;
468 
470  virtual void updateFormationTable(DtEnvironmentSP, DtEnvValueSP objectNode, const DtFormationTable&);
471 
472  virtual std::vector<EntityData*> addDataFromFile(const std::string& file);
473 
474  virtual void addModelSetEntriesFromEnvironment(DtEnvironmentSP, DtEnvValueSP node);
475  virtual void addToInternalCategories(DtModelSetEntry* entry);
476 
477 protected:
478  QStringList myWarned;
484  QStringList myDefaultCategories;
486  makVrv::DtDe& myDe;
487  makVrv::DtDe* myDisplayDe;
488  bool myLoaded;
489 
491 
493 
494  typedef std::map<std::string, EntityData*> ParametersData;
496 
497  std::set<std::string> myInternalItems;
499 };
500 
502 {
504 }
505 
507 {
508  return mySimulationModelSet;
509 }
510 
512 {
513  return myModelSet;
514 }
515 
517 {
518  return myModelSet;
519 }
520 
521 inline const DtFilename& DtSimulationModelSetLoader::parameterFilename() const
522 {
523  return myParameterFilename;
524 }
525 
527 {
528  return myAllForces;
529 }
530 
531 inline const QStringList& DtSimulationModelSetLoader::defaultCategories() const
532 {
533  return myDefaultCategories;
534 }
535 
536 inline void DtSimulationModelSetLoader::setDefaultCategories(const QStringList& l)
537 {
539 }
540 
542 {
543  myDefaultCategories.push_back(l);
544 }
545 
547 {
549 }
550 
552 {
554 }
555 
557 {
558  myDefaultDeployedCountries.push_back(l);
560 }
561 
562 extern DT_DLL_entityeditorimpl makVrf::DtEntityMapperKey mapperKeyConversion(const DtObjectType&, int force);
563 
564 inline bool operator>(const DtObjectType& lhs, const DtSimulationModelSetLoader::EntityData& rhs)
565 {
566  return !(lhs.operator<(rhs));
567 }

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)