VR-Forces 4.3.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
simulationModelSetLoader.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2015 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
8 
9 #pragma once
10 
15 #include <vrvUtil/signalslib.h>
17 #include <vrfutil/rwForces.h>
22 #include <vrfutil/formationTable.h>
23 #include <vlutil/vlFilename.h>
24 #include <mtl/envValue.h>
25 #include <matrix/3dBoundingVolume.h>
27 #include <vrvUtil/DtUnicode.h>
28 #include <QtCore/QHash>
29 #include <QtGui/QPixmap>
30 #include <QtCore/QObject>
32 
33 #include <vrfExtProtocol/objectType.h>
35 
36 class DtEnvList;
43 class QTranslator;
44 
45 namespace makVrf
46 {
47  class DtEntityMapperKey;
48 }
49 
50 namespace makVrv
51 {
52  class DtForceManager;
53 }
54 
55 class DtObjectType;
56 class DtModelSet;
58 class QComboBox;
60 class DtEnvironment;
61 class DtVariableBindingList;
62 
63 static const int DtTemplateKindBase = 200;
64 
66 {
67 public:
68  enum LoadFlags
69  {
70  LoadDataFiles = 0x00000001,
71  LoadParameterFiles = 0x00000002,
72  LoadSystemFiles = 0x00000004,
73  LoadSupportingFiles = 0x00000008,
74  LoadStandardSensorObjects = 0x00000010,
75  LoadTranslationFiles = 0x00000020,
76  LoadAll = LoadDataFiles | LoadParameterFiles | LoadSystemFiles | LoadSupportingFiles | LoadStandardSensorObjects | LoadTranslationFiles
77  };
78 
79  typedef std::map<DtString, DtVrfObjectParameters*> ParametersMap;
80 
82  {
83  public:
86 
87  virtual ~EnvironmentContainer();
88 
89  void seedFrom(DtEnvironmentSP env, DtEnvValueSP root);
90 
91  DtEnvironmentSP copyEnvironment(DtEnvironmentSP) const;
92  void reparentEnvironmentChildren(DtEnvList*, DtEnvValueSP root) const;
93 
94  DtEnvValueSP backup();
95  DtEnvValueSP update();
96 
97  void remove(DtEnvValueSP originalNode, DtEnvValueSP modifiedNode);
98  bool isEmpty() const;
99 
100  DtEnvValueSP replace(DtEnvironmentSP env, DtEnvValueSP node, DtEnvValueSP replaceWith);
101  void reparentRoots(DtEnvValueSP templateRoot, DtEnvValueSP newRoot) const;
102 
105  };
106 
107  typedef boost::shared_ptr<EnvironmentContainer> EnvironmentContainerSP;
108 
109  class EntityData : public DtObjectType
110  {
111  public:
112  EntityData();
113  virtual ~EntityData();
114  EntityData(const DtObjectType& objectType, const DtObjectType& matchType = DtObjectType::nullType());
115  EntityData(const EntityData& t);
116 
117  //sets the object type
118  EntityData& operator=(const DtObjectType&);
119 
120  EntityData& operator=(const EntityData&);
121 
122  virtual EntityData* clone() const;
123 
124  //compares to the object type
125  bool operator>(const DtObjectType& rhs) const
126  {
127  if (*this < rhs)
128  {
129  return false;
130  }
131  else
132  {
133  return true;
134  }
135  }
136 
137  //compares to the object type
138  bool operator>(const EntityData& rhs) const
139  {
140  if (*this < rhs)
141  {
142  return false;
143  }
144  else
145  {
146  return true;
147  }
148  }
149 
151  std::string myDataFile;
152 
154 
155  DtObjectType myMatchType;
156  DtObjectType myOriginalMatchType;
157 
159  DtEnvValueSP myOriginalObjectNode;
168 
170  DtEnvValueSP myModifiedObjectNode;
177 
178  bool myIsNew;
180 
183  };
184 
185  typedef std::map<std::string, EntityData*> ParametersData;
186 
189 
190  virtual ~DtSimulationModelSetLoader();
191 
192  virtual bool load(const DtSimulationModelSet&, LoadFlags flags = LoadAll);
193  virtual bool save(const DtFilename&);
194 
195  static DtSimulationModelSetLoader& instance(makVrv::DtDe&);
196  static void registerInstance(makVrv::DtDe&, DtSimulationModelSetLoader*);
197 
198  virtual void setDisplayDe(makVrv::DtDe*);
199  virtual makVrv::DtDe& displayDe();
200 
201 private:
204 
205 public:
207  virtual bool hasFileNamed(const std::string& s) const;
208 
211  virtual bool addNewDataFile(const std::string&);
212 
214  virtual std::string platform(const makVrf::DtEntityMapperKey& k) const;
215 
217  virtual std::string uiFilename(const makVrf::DtEntityMapperKey& k) const;
218 
220  virtual DtSimulationModelSet* simulationModelSet(const makVrf::DtEntityMapperKey& k) const;
221 
223  virtual std::string platformFileType(const makVrf::DtEntityMapperKey& k) const;
224 
226  virtual std::string platformKey(const makVrf::DtEntityMapperKey& k) const;
227 
229  virtual DtString platformDisplayName(const makVrf::DtEntityMapperKey& k) const;
230 
232  virtual DtString platformDisplayDescription(const makVrf::DtEntityMapperKey& k) const;
233 
234  DtFilename getSystemDirectory() const;
235  DtFilename getFormationDirectory() const;
236  DtFilename getGuiDirectory() const;
237  DtFilename path() const;
238 
240  DtFilename simulationModelSetFilename() const;
241 
242  virtual bool openSystemFiles(DtSimulationModelSet* set, const DtFilename& directory);
243 
244  virtual bool loadForceHostilityFile(const DtFilename& f);
245 
248  virtual bool loadDataFiles(const DtString&, DtSimulationModelSet*, bool fromMasterSMS);
249 
251  virtual void loadTemplates(const DtString&, DtSimulationModelSet*);
252 
254  virtual void makeTemplate(EntityData*);
255  virtual void makeTemplate(const DtObjectType&);
256 
258  virtual bool loadParameterFiles(DtSimulationModelSet* sms);
259 
261  virtual bool loadModelSet();
262 
265  virtual DtModelSetEntry* modelEntry(const DtObjectType&, bool matchPattern = false) const;
266 
268  virtual DtString simulationModelSetFor(const DtEntityType&) const;
269 
271  virtual DtModelSetEntry createModelSetEntryFrom(DtEnvironmentSP env, DtEnvValueSP objectNode) const;
272  virtual DtModelSetEntry createModelSetEntryFrom(const DtObjectType&) const;
273 
275  virtual void revertData(const makVrf::DtEntityMapperKey& key);
276 
278  virtual EntityData* dataFor(const DtObjectType&) const;
279 
281  virtual EntityData* dataFor(DtModelSetEntry*) const;
282 
285  virtual bool containsObjectType(const DtObjectType&, bool onlyFromMasterSMS = false, DtString* name = 0) const;
286 
289  virtual bool hasModelNamed(const DtString&);
290 
291  virtual DtReaderWriter::SearchPaths searchPaths() const;
292  virtual std::vector<DtSimulationModelSet*> modelSets() const;
293 
294  virtual const ParametersMap& availableParameters() const
295  {
296  return myAvailableParameters;
297  }
298 
301  virtual bool createRwVariable(const DtObjectType&, const std::string& rwType, const std::string& rwName, DtReaderWriter*& source,
302  DtReaderWriter*& backup);
303 
304  virtual void replaceSystem(const DtFilename&);
305 
306  virtual bool canAddSubordinatesTo(const DtObjectType&) const;
307 
308  virtual bool isModified(const DtObjectType&) const;
309  virtual bool isModified(EntityData*) const;
310  virtual bool isModified() const;
311 
312  virtual bool isNew(const DtObjectType&) const;
313  virtual bool isNew(EntityData*) const;
314 
315  virtual bool isDeleted(const DtObjectType&) const;
316  virtual bool isDeleted(EntityData*) const;
317 
319  virtual void deleteModel(DtModelSetEntry*);
320  virtual void deleteModel(const DtObjectType&);
321  virtual void deleteModel(EntityData*);
322 
324  virtual bool changeObjectType(const DtObjectType& oldType, const DtObjectType& newType);
325 
327  virtual bool changeMatchType(const DtObjectType& oldType, const DtObjectType& newType);
328 
331  virtual void updateGuiInformation(EntityData*);
332 
334  virtual void updateSystemData(EntityData*);
335 
337  virtual void sharedSystems(const DtFilename& systemFile, std::vector<DtModelSetEntry*>& result) const;
338 
340  virtual void loadSystemFile(const DtFilename&);
341 
343  virtual void updateDataInformation(EntityData*);
344 
346  virtual void convertRegistryToEnvironment(const DtReaderWriterRegistry& data, DtEnvironmentSP env, DtEnvValueSP objectNode) const;
347 
349  virtual void removeSystem(DtEnvironmentSP env, const DtString& system, DtEnvValueSP objectNode);
350 
352  virtual void addSystem(DtEnvironmentSP env, const DtRwVariableBindings*, DtEnvValueSP objectNode);
353 
354  virtual void changeDefaultCategory(const QString& old, const QString& newCat);
355  virtual void addDefaultCategories(QComboBox*);
356 
357  void setDefaultCategories(const QStringList&);
358  void addDefaultCategory(const QString&);
359  const QStringList& defaultCategories() const;
360  virtual void revertCategories();
361  virtual bool hasModifiedCategories() const;
362 
363  void setDefaultOverlayLayers(const QStringList&);
364  const QStringList& defaultOverlayLayers() const;
365  virtual void revertOverlayLayers();
366  virtual bool hasModifiedOverlayLayers() const;
367  virtual void changeDefaultOverlayLayer(const QString& old, const QString& newCat);
368  virtual void addDefaultOverlayLayers(QComboBox*);
369  void addDefaultOverlayLayer(const QString&);
370 
371  virtual DtRwForces favoritesFor(const DtModelSetEntry*) const;
372  virtual DtRwForces backupFavoritesFor(const DtModelSetEntry*) const;
373  virtual void setFavoritesFor(DtModelSetEntry*, const DtRwForces&);
374 
375  virtual void changeDefaultDeployedCountry(const QString& old, const QString& newCat);
376  virtual void addDefaultDeployedCountries(QComboBox*);
377  void setDefaultDeployedCountries(const QStringList&);
378  void addDefaultDeployedCountry(const QString&);
379  const QStringList& defaultDeployedCountries() const;
380  virtual void revertDeployedCountries();
381  virtual bool hasModifiedDeployedCountries() const;
382 
384  virtual DtRwVariableBindings* createVariableBindingsForSystem(const DtFilename&, const DtString& newSystemName);
385 
387  virtual std::map<std::string, DtEntityType> templatesForKind(int) const;
388 
391  virtual DtModelSetEntry* addNewEntity(const DtObjectType& base, const DtObjectType& newType, const DtString& name,
392  const DtRwNLengthStringVector& categories, const DtString& uniqueID);
393 
396  virtual DtModelSetEntry* addNewEntity(const std::string& platformType, const DtObjectType& newType, const DtString& name,
397  const DtRwNLengthStringVector& categories, const DtString& uniqueID);
398 
400  DtModelSetEntry* addNewEntity(EntityData* baseData, const DtObjectType& newType, const DtString& name,
401  const DtRwNLengthStringVector& categories, const DtString& uniqueID);
402 
404  virtual void removeSystem(const DtFilename&);
405 
406  virtual const DtRwVariableBindings* variableBindings() const;
407 
408  virtual QPixmap getIcon(const makVrf::DtEntityMapperKey& key, int pointSize = 48,
409  bool sizeToFont = false);
410 
411  virtual void clearIcons(const makVrf::DtEntityMapperKey& key);
412 
413  static DtSimulationModelSetLoader* create(makVrv::DtDe*);
414 
416  virtual void changeSubordinateTypes(const DtObjectType& oldType, const DtObjectType& newType);
417 
419  virtual DtVrfSubObjectParameterList subordinateObjectsFor(const DtObjectType&) const;
420  virtual DtVrfSubObjectParameterList subordinateObjectsFor(DtEnvironmentSP, DtEnvValueSP objectNode) const;
421 
423  virtual void updateSubordinateObjects(const DtObjectType&, const DtVrfSubObjectParameterList&);
424  virtual void updateSubordinateObjects(DtEnvironmentSP, DtEnvValueSP objectNode, const DtVrfSubObjectParameterList&);
425 
427  virtual void updateFormationTable(const DtObjectType&, const DtFormationTable&);
428 
430  virtual DtEmbarkationInformation embarkationInformationFor(const DtObjectType&) const;
431  virtual DtEmbarkationInformation embarkationInformationFor(DtEnvironmentSP, DtEnvValueSP objectNode) const;
432 
434  virtual void updateEmbarkationInformation(const DtObjectType&, const DtEmbarkationInformation&);
435  virtual void updateEmbarkationInformation(DtEnvironmentSP, DtEnvValueSP objectNode, const DtEmbarkationInformation&);
436 
438  virtual DtDiGuyInformation diGuyInformationFor(const DtObjectType&) const;
439 
441  virtual void updateDiGuyInformation(const DtObjectType&, const DtDiGuyInformation&);
442 
444  virtual DtSensorSignatureInformation sensorSignatureInformationFor(const DtObjectType&) const;
445  virtual DtSensorSignatureInformation sensorSignatureInformationFor(DtEnvironmentSP, DtEnvValueSP root) const;
446 
448  virtual void updateSensorSignatureInformation(const DtObjectType&, const DtSensorSignatureInformation&);
449  virtual void updateSensorSignatureInformation(DtEnvironmentSP, DtEnvValueSP root, const DtSensorSignatureInformation&);
450 
452  virtual DtFormationTable* formationTableFor(const DtObjectType&);
453  virtual DtFormationTable* originalFormationTableFor(const DtObjectType&);
454 
456  virtual Dt3dBoundingVolume boundingVolumeFor(const DtObjectType&) const;
457 
459  virtual bool isAggregate(const DtObjectType&) const;
460 
461  bool loaded() const
462  {
463  return myLoaded;
464  }
465 
466  const DtOrderedObjectTypeList<EntityData*>& entityData() const
467  {
468  return myEntityData;
469  }
470 
471  virtual bool isTemplate(const DtObjectType&) const;
472 
473  virtual void setForceManagerModified(bool);
474  virtual bool forceManagerModified() const;
475 
477  virtual bool saveData();
478 
480  virtual bool saveFavorites();
481 
483  virtual DtObjectType templateObjectType(const std::string& parameterType) const;
484 
486  virtual void addInternalItem(const std::string&, bool markDataAsWell = true);
487 
490  virtual std::vector<DtReaderWriter*> supportPointsFor(const DtObjectType&) const;
491 
493  virtual DtObjectType uniqueEntityTypeFrom(const DtObjectType&) const;
494 
496  virtual makVrv::DtUnicode systemNameForSystem(const std::string&, DtFilename& fullFilename) const;
497 
498  boost::signal<void ()> signal_preloadSimulationModelSet;
499  boost::signal<void ()> signal_simulationModelSetLoaded;
500  boost::signal<void (std::vector<EntityData*>)> signal_newDataFileAdded;
501  boost::signal<void (EntityData*)> signal_entityEntryAboutToBeRemoved;
502  boost::signal<void (EntityData*)> signal_entityEntryAdded;
503 
504 public:
505  const DtModelSet* modelSet() const;
506  DtModelSet* modelSet();
507 
508  virtual makVrv::DtForceManager* forceManager();
509 
510  const DtSimulationModelSet& simulationModelSet() const;
511  const DtFilename& parameterFilename() const;
512  const DtComponentSystemDatabase* systemDatabase() const;
513  DtFilename modelSetDirectory() const;
514 
515  virtual void forceRemoved(DtForceType forceType);
516 
517  const DtRwForces& allForces() const;
518 
519  virtual std::vector<const DtComponentSystemDefinition*> systemDefinitionsFor(const DtObjectType& o) const;
520 
521  virtual const DtReaderWriter* findVariable(const DtVariableBindingsList&, const DtString&) const;
522  virtual const DtReaderWriter* findOriginalVariable(const makVrf::DtEntityMapperKey& emk, const DtString&) const;
523  virtual const DtReaderWriter* findModifiedVariable(const makVrf::DtEntityMapperKey& emk, const DtString&) const;
524  virtual DtReaderWriter* findVariable(const DtVariableBindingsList&, const DtString&);
525  virtual DtReaderWriter* findOriginalVariable(const makVrf::DtEntityMapperKey& emk, const DtString&);
526  virtual DtReaderWriter* findModifiedVariable(const makVrf::DtEntityMapperKey& emk, const DtString&);
527  virtual const DtReaderWriter* variableFromAnyPlatform(const DtString& varName) const;
528 
529  virtual DtVrfObjectParameters* platformParameters(const makVrf::DtEntityMapperKey& key) const;
530 
531  virtual const DtStandardSensorObjects& standardSensorObjects() const;
532  virtual DtStandardSensorObjects& standardSensorObjects();
533  virtual bool processModelSet(DtSimulationModelSet*, LoadFlags flags = LoadAll, bool isMasterSMS = false);
534 
535 protected:
539  virtual void markInternalItemsAsReadOnly(DtVariableBindingsList*);
540 
541  virtual const DtReaderWriter* findVariable(const DtString& var, const DtReaderWriter* rw) const;
542 
543  virtual void loadSystemFilesFromDirectory(const QString& directoryName, const DtVariableBindingsList& variableBindings);
544 
545  virtual void addVariableReferences(DtReaderWriter* source, DtRwVariableBindings* toBindings) const;
546 
547  virtual void cleanup();
548 
549  virtual bool saveForceHostility(const DtFilename& filename);
550 
551  virtual bool warned(const DtFilename&);
552  virtual void removeEntityFromSubObjects(const DtObjectType&);
553 
554  virtual void mergeFavoritesIntoModelSet(DtModelSet* favorites, DtModelSet* set);
555 
556  virtual DtVariableBindingsList* copyBindingsList(const DtVariableBindingsList* orig) const;
557 
558  virtual EntityData* createParameterDataFrom(DtVrfObjectParameters*) const;
559 
561  virtual bool updateFromPlatform(const DtReaderWriter* oldRegData, DtEnvironmentSP env, DtEnvValueSP objectNode) const;
562 
564  virtual bool traverseRwObject(const DtReaderWriter* rwObject, DtEnvironmentSP env, DtEnvValueSP objectNode) const;
565  virtual void addElementFromSystemBinding(DtEnvironmentSP env,
566  DtEnvValueSP parentElement, DtSystemParameterData* paramData) const;
567 
568  virtual DtFormationTable* formationTableFor(DtEnvironmentSP, DtEnvValueSP objectNode) const;
569 
571  virtual void updateFormationTable(DtEnvironmentSP, DtEnvValueSP objectNode, const DtFormationTable&);
572 
573  virtual std::vector<EntityData*> addDataFromFile(const DtString& file,
574  DtSimulationModelSet* set, bool isMasterSMS,
575  bool signalAddition = true, bool isTemplate= false);
576 
577  virtual DtModelSetEntry* addModelSetEntryFromEnvironment(DtEnvironmentSP, DtEnvValueSP node);
578  virtual void addToInternalCategories(DtModelSetEntry* entry);
579 
580  virtual void addEntityDataEntry(EntityData*, bool signal = true);
581  virtual void removeEntityDataEntry(EntityData*, bool signal = true);
582 
584  virtual ParametersMap::const_iterator findAvailablePlatform(DtString platform) const;
585  virtual ParametersData::const_iterator findAvailableParameter(DtString platform) const;
586  virtual ParametersData::const_iterator findAvailableParameterFromFile(const DtFilename& platform) const;
587 
589  virtual void swapCurrentEntry(EntityData*, DtModelSetEntry*);
590 
592  virtual DtString filenameFromEntityName(const DtString& name) const;
593 
594 protected:
595  QStringList myWarned;
601  QStringList myDefaultCategories;
606  bool myLoaded;
608 
610 
612 
615 
616  std::set<std::string> myInternalItems;
619 
620  typedef std::map<DtModelSetEntry*, EntityData*> EntityDataByEntry;
622 
623  std::vector<QTranslator*> myTranslators;
625 };
626 
628 {
630  {
631  return mySimulationModelSet->filename();
632  }
633  else
634  {
635  return "";
636  }
637 }
638 
640 {
641  return *mySimulationModelSet;
642 }
643 
645 {
646  return myModelSet;
647 }
648 
650 {
651  return myModelSet;
652 }
653 
654 inline const DtFilename& DtSimulationModelSetLoader::parameterFilename() const
655 {
656  return myParameterFilename;
657 }
658 
660 {
661  return myAllForces;
662 }
663 
664 inline const QStringList& DtSimulationModelSetLoader::defaultCategories() const
665 {
666  return myDefaultCategories;
667 }
668 
669 inline void DtSimulationModelSetLoader::setDefaultCategories(const QStringList& l)
670 {
672 }
673 
675 {
676  myDefaultCategories.push_back(l);
677 }
678 
679 inline const QStringList& DtSimulationModelSetLoader::defaultOverlayLayers() const
680 {
681  return myDefaultOverlayLayers;
682 }
683 
685 {
687 }
688 
690 {
691  myDefaultOverlayLayers.push_back(l);
692 }
693 
695 {
697 }
698 
700 {
702 }
703 
705 {
706  myDefaultDeployedCountries.push_back(l);
708 }
709 
710 extern DT_DLL_entityeditorimpl makVrf::DtEntityMapperKey mapperKeyConversion(const DtObjectType&, int force);
711 
712 inline bool operator>(const DtObjectType& lhs, const DtSimulationModelSetLoader::EntityData& rhs)
713 {
714  return !(lhs.operator<(rhs));
715 }
716 
718 {
719 public:
721 
723 
724  virtual void loadAllSmsFiles();
725 
726 protected:
727  virtual void processModelSet(DtSimulationModelSet*);
728 
729 protected:
734 };

Document ID: Generated on Wed Jul 29 00:55:00 EDT 2015 from SVN revision 155257
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)