VR-Forces Development_Version 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 
35 
36 class DtEnvList;
43 class QTranslator;
45 
46 namespace makVrf
47 {
48  class DtEntityMapperKey;
49 }
50 
51 namespace makVrv
52 {
53  class DtForceManager;
54 }
55 
56 class DtObjectType;
57 class DtModelSet;
59 class QComboBox;
61 class DtEnvironment;
62 class DtVariableBindingList;
63 
64 static const int DtTemplateKindBase = 400;
65 
67 {
68 public:
69  enum LoadFlags
70  {
71  LoadDataFiles = 0x00000001,
72  LoadParameterFiles = 0x00000002,
73  LoadSystemFiles = 0x00000004,
74  LoadSupportingFiles = 0x00000008,
75  LoadStandardSensorObjects = 0x00000010,
76  LoadTranslationFiles = 0x00000020,
77  LoadAll = LoadDataFiles | LoadParameterFiles | LoadSystemFiles | LoadSupportingFiles | LoadStandardSensorObjects | LoadTranslationFiles
78  };
79 
80  typedef std::map<DtString, DtVrfObjectParameters*> ParametersMap;
81 
83  {
84  public:
87 
88  virtual ~EnvironmentContainer();
89 
90  void seedFrom(DtEnvironmentSP env, DtEnvValueSP root);
91 
92  DtEnvironmentSP copyEnvironment(DtEnvironmentSP) const;
93  void reparentEnvironmentChildren(DtEnvList*, DtEnvValueSP root) const;
94 
95  DtEnvValueSP backup();
96  DtEnvValueSP update();
97 
98  void remove(DtEnvValueSP originalNode, DtEnvValueSP modifiedNode);
99  bool isEmpty() const;
100 
101  DtEnvValueSP replace(DtEnvironmentSP env, DtEnvValueSP node, DtEnvValueSP replaceWith);
102  void reparentRoots(DtEnvValueSP templateRoot, DtEnvValueSP newRoot) const;
103 
106  };
107 
108  typedef boost::shared_ptr<EnvironmentContainer> EnvironmentContainerSP;
109 
110  class EntityData : public DtObjectType
111  {
112  public:
113  EntityData();
114  virtual ~EntityData();
115  EntityData(const DtObjectType& objectType, const DtObjectType& matchType = DtObjectType::nullType());
116  EntityData(const EntityData& t);
117 
118  //sets the object type
119  EntityData& operator=(const DtObjectType&);
120 
121  EntityData& operator=(const EntityData&);
122 
123  virtual EntityData* clone() const;
124 
125  //compares to the object type
126  bool operator>(const DtObjectType& rhs) const
127  {
128  if (*this < rhs)
129  {
130  return false;
131  }
132  else
133  {
134  return true;
135  }
136  }
137 
138  //compares to the object type
139  bool operator>(const EntityData& rhs) const
140  {
141  if (*this < rhs)
142  {
143  return false;
144  }
145  else
146  {
147  return true;
148  }
149  }
150 
152  std::string myDataFile;
153 
157 
160 
161  std::list<DtObjectType> myAdditionalMatchTypes;
162  std::list<DtObjectType> myOriginalAdditionalMatchTypes;
163 
165  DtEnvValueSP myOriginalObjectNode;
174 
176  DtEnvValueSP myModifiedObjectNode;
183 
184  bool myIsNew;
186 
189  };
190 
191  typedef std::map<std::string, EntityData*> ParametersData;
192 
195 
196  virtual ~DtSimulationModelSetLoader();
197 
198  virtual bool load(const DtSimulationModelSet&, LoadFlags flags = LoadAll);
199  virtual bool save(const DtFilename&);
200 
201  static DtSimulationModelSetLoader& instance(makVrv::DtDe&);
202  static void registerInstance(makVrv::DtDe&, DtSimulationModelSetLoader*);
203 
204  virtual void setDisplayDe(makVrv::DtDe*);
205  virtual makVrv::DtDe& displayDe();
206 
207 private:
210 
211 public:
213  virtual bool hasFileNamed(const std::string& s) const;
214 
217  virtual bool addNewDataFile(const std::string&);
218 
220  virtual bool addNewSimulationObjectGroup(const std::string&);
221 
223  virtual bool simulationObjectGroupExists(const std::string&) const;
224 
227  virtual bool createNewSimulationObjectGroupFromExisting(const DtObjectType& base, const std::string& newName,
228  const DtRwNLengthStringVector& categories = DtRwNLengthStringVector("categories"));
229 
231  virtual std::string platform(const makVrf::DtEntityMapperKey& k) const;
232 
234  virtual std::string uiFilename(const makVrf::DtEntityMapperKey& k) const;
235 
237  virtual DtSimulationModelSet* simulationModelSet(const makVrf::DtEntityMapperKey& k) const;
238 
240  virtual std::string platformFileType(const makVrf::DtEntityMapperKey& k) const;
241 
243  virtual std::string platformKey(const makVrf::DtEntityMapperKey& k) const;
244 
246  virtual DtString platformDisplayName(const makVrf::DtEntityMapperKey& k) const;
247 
249  virtual DtString platformDisplayDescription(const makVrf::DtEntityMapperKey& k) const;
250 
251  DtFilename getSystemDirectory() const;
252  DtFilename getNavDataDirectory() const;
253  DtFilename getFormationDirectory() const;
254  DtFilename getGuiDirectory() const;
255  DtFilename path() const;
256 
258  DtFilename simulationModelSetFilename() const;
259 
260  virtual bool openSystemFiles(DtSimulationModelSet* set, const DtFilename& directory);
261 
262  virtual bool loadForceHostilityFile(const DtFilename& f);
263 
266  virtual bool loadDataFiles(const DtString&, DtSimulationModelSet*, bool fromMasterSMS);
267 
269  virtual void loadSimulationObjectGroupFiles(const DtString&, DtSimulationModelSet*, bool fromMasterSMS);
270 
272  virtual DtModelSetEntry* reloadSimulationObjectGroup(const DtString&);
273 
275  virtual void loadTemplates(const DtString&, DtSimulationModelSet*);
276 
278  virtual void makeTemplate(EntityData*);
279  virtual void makeTemplate(const DtObjectType&);
280 
282  virtual bool loadParameterFiles(DtSimulationModelSet* sms);
283 
285  virtual bool loadModelSet();
286 
289  virtual DtModelSetEntry* modelEntry(const DtObjectType&, bool matchPattern = false) const;
290 
292  virtual DtString simulationModelSetFor(const DtEntityType&) const;
293 
295  virtual DtModelSetEntry createModelSetEntryFrom(DtEnvironmentSP env, DtEnvValueSP objectNode) const;
296  virtual DtModelSetEntry createModelSetEntryFrom(const DtObjectType&) const;
297 
299  virtual bool hasGuiKeyword(const makVrf::DtEntityMapperKey&, const std::string&) const;
300 
302  virtual void revertData(const makVrf::DtEntityMapperKey& key);
303 
305  virtual EntityData* dataFor(const DtObjectType&) const;
306 
308  virtual EntityData* dataFor(DtModelSetEntry*) const;
309 
312  virtual bool containsObjectType(const DtObjectType&, bool onlyFromMasterSMS = false, DtString* name = 0) const;
313 
315  virtual bool isSimulationObjectGroup(const DtObjectType&) const;
316 
319  virtual bool hasModelNamed(const DtString&);
320 
321  virtual DtReaderWriter::SearchPaths searchPaths() const;
322  virtual std::vector<DtSimulationModelSet*> modelSets() const;
323 
324  virtual const ParametersMap& availableParameters() const
325  {
326  return myAvailableParameters;
327  }
328 
331  virtual bool createRwVariable(const DtObjectType&, const std::string& rwType, const std::string& rwName, DtReaderWriter*& source,
332  DtReaderWriter*& backup);
333 
334  virtual void replaceSystem(const DtFilename&);
335 
336  virtual bool canAddSubordinatesTo(const DtObjectType&) const;
337 
338  virtual bool isModified(const DtObjectType&) const;
339  virtual bool isModified(EntityData*) const;
340  virtual bool isModified() const;
341 
342  virtual bool isNew(const DtObjectType&) const;
343  virtual bool isNew(EntityData*) const;
344 
345  virtual bool isDeleted(const DtObjectType&) const;
346  virtual bool isDeleted(EntityData*) const;
347 
349  virtual void deleteModel(DtModelSetEntry*);
350  virtual void deleteModel(const DtObjectType&);
351  virtual void deleteModel(EntityData*);
352 
354  virtual bool changeObjectType(const DtObjectType& oldType, const DtObjectType& newType);
355 
357  virtual bool changeMatchType(const DtObjectType& oldType, const DtObjectType& newType);
358 
359  virtual bool setAdditionalMatchTypes(const DtObjectType& key, const std::list<DtObjectType> additionalMatchTypes);
360 
363  virtual void updateGuiInformation(EntityData*);
364 
366  virtual void updateSystemData(EntityData*);
367 
369  virtual void sharedSystems(const DtFilename& systemFile, std::vector<DtModelSetEntry*>& result) const;
370 
372  virtual void loadSystemFile(const DtFilename&);
373 
375  virtual void updateDataInformation(EntityData*);
376 
378  virtual void convertRegistryToEnvironment(const DtReaderWriterRegistry& data, DtEnvironmentSP env, DtEnvValueSP objectNode) const;
379 
381  virtual void removeSystem(DtEnvironmentSP env, const DtString& system, DtEnvValueSP objectNode);
382 
384  virtual void addSystem(DtEnvironmentSP env, const DtRwVariableBindings*, DtEnvValueSP objectNode);
385 
386  virtual void changeDefaultCategory(const QString& old, const QString& newCat);
387  virtual void addDefaultCategories(QComboBox*);
388 
389  void setDefaultCategories(const QStringList&);
390  void addDefaultCategory(const QString&);
391  const QStringList& defaultCategories() const;
392  virtual void revertCategories();
393  virtual bool hasModifiedCategories() const;
394 
395  void setDefaultOverlayLayers(const QStringList&);
396  const QStringList& defaultOverlayLayers() const;
397  virtual void revertOverlayLayers();
398  virtual bool hasModifiedOverlayLayers() const;
399  virtual void changeDefaultOverlayLayer(const QString& old, const QString& newCat);
400  virtual void addDefaultOverlayLayers(QComboBox*);
401  void addDefaultOverlayLayer(const QString&);
402 
403  virtual DtRwForces favoritesFor(const DtModelSetEntry*) const;
404  virtual DtRwForces backupFavoritesFor(const DtModelSetEntry*) const;
405  virtual void setFavoritesFor(DtModelSetEntry*, const DtRwForces&);
406 
407  virtual void changeDefaultDeployedCountry(const QString& old, const QString& newCat);
408  virtual void addDefaultDeployedCountries(QComboBox*);
409  void setDefaultDeployedCountries(const QStringList&);
410  void addDefaultDeployedCountry(const QString&);
411  const QStringList& defaultDeployedCountries() const;
412  virtual void revertDeployedCountries();
413  virtual bool hasModifiedDeployedCountries() const;
414 
416  virtual DtRwVariableBindings* createVariableBindingsForSystem(const DtFilename&, const DtString& newSystemName);
417 
419  virtual std::map<std::string, DtEntityType> templatesForKind(int) const;
420 
423  virtual DtModelSetEntry* addNewEntity(const DtObjectType& base, const DtObjectType& newType, const DtString& name,
424  const DtRwNLengthStringVector& categories, const DtString& uniqueID);
425 
428  virtual DtModelSetEntry* addNewEntity(const std::string& platformType, const DtObjectType& newType, const DtString& name,
429  const DtRwNLengthStringVector& categories, const DtString& uniqueID);
430 
432  DtModelSetEntry* addNewEntity(EntityData* baseData, const DtObjectType& newType, const DtString& name,
433  const DtRwNLengthStringVector& categories, const DtString& uniqueID);
434 
436  virtual void removeSystem(const DtFilename&);
437 
438  virtual const DtRwVariableBindings* variableBindings() const;
439 
440  virtual QPixmap getIcon(const makVrf::DtEntityMapperKey& key, int pointSize = 48,
441  bool sizeToFont = false);
442 
443  virtual void clearIcons(const makVrf::DtEntityMapperKey& key);
444 
445  static DtSimulationModelSetLoader* create(makVrv::DtDe*);
446 
448  virtual void changeSubordinateTypes(const DtObjectType& oldType, const DtObjectType& newType);
449 
451  virtual DtVrfSubObjectParameterList subordinateObjectsFor(const DtObjectType&) const;
452  virtual DtVrfSubObjectParameterList subordinateObjectsFor(DtEnvironmentSP, DtEnvValueSP objectNode) const;
453 
455  virtual void updateSubordinateObjects(const DtObjectType&, const DtVrfSubObjectParameterList&);
456  virtual void updateSubordinateObjects(DtEnvironmentSP, DtEnvValueSP objectNode, const DtVrfSubObjectParameterList&);
457 
459  virtual void updateFormationTable(const DtObjectType&, const DtFormationTable&);
460 
462  virtual DtEmbarkationInformation embarkationInformationFor(const DtObjectType&) const;
463  virtual DtEmbarkationInformation embarkationInformationFor(DtEnvironmentSP, DtEnvValueSP objectNode) const;
464 
466  virtual void updateEmbarkationInformation(const DtObjectType&, const DtEmbarkationInformation&);
467  virtual void updateEmbarkationInformation(DtEnvironmentSP, DtEnvValueSP objectNode, const DtEmbarkationInformation&);
468 
470  virtual DtDiGuyInformation diGuyInformationFor(const DtObjectType&) const;
471 
473  virtual void updateDiGuyInformation(const DtObjectType&, const DtDiGuyInformation&);
474 
476  virtual DtSensorSignatureInformation sensorSignatureInformationFor(const DtObjectType&) const;
477  virtual DtSensorSignatureInformation sensorSignatureInformationFor(DtEnvironmentSP, DtEnvValueSP root) const;
478 
480  virtual void updateSensorSignatureInformation(const DtObjectType&, const DtSensorSignatureInformation&);
481  virtual void updateSensorSignatureInformation(DtEnvironmentSP, DtEnvValueSP root, const DtSensorSignatureInformation&);
482 
484  virtual DtFormationTable* formationTableFor(const DtObjectType&);
485  virtual DtFormationTable* originalFormationTableFor(const DtObjectType&);
486 
488  virtual Dt3dBoundingVolume boundingVolumeFor(const DtObjectType&) const;
489 
491  virtual bool isAggregate(const DtObjectType&) const;
492 
493  bool loaded() const
494  {
495  return myLoaded;
496  }
497 
498  const DtOrderedObjectTypeList<EntityData*>& entityData() const
499  {
500  return myEntityData;
501  }
502 
503  virtual bool isTemplate(const DtObjectType&) const;
504 
505  virtual void setForceManagerModified(bool);
506  virtual bool forceManagerModified() const;
507 
509  virtual bool saveData();
510 
512  virtual bool saveFavorites();
513 
515  virtual DtObjectType templateObjectType(const std::string& parameterType) const;
516 
518  virtual void addInternalItem(const std::string&, bool markDataAsWell = true);
519 
522  virtual std::vector<DtReaderWriter*> supportPointsFor(const DtObjectType&) const;
523 
525  virtual DtObjectType uniqueEntityTypeFrom(const DtObjectType&) const;
526 
528  virtual makVrv::DtUnicode systemNameForSystem(const std::string&, DtFilename& fullFilename) const;
529 
530  boost::signal<void ()> signal_preloadSimulationModelSet;
531  boost::signal<void ()> signal_simulationModelSetLoaded;
532  boost::signal<void (std::vector<EntityData*>)> signal_newDataFileAdded;
533  boost::signal<void (EntityData*)> signal_entityEntryAboutToBeRemoved;
534  boost::signal<void (EntityData*)> signal_entityEntryAdded;
535 
536 public:
537  const DtModelSet* modelSet() const;
538  DtModelSet* modelSet();
539 
540  virtual makVrv::DtForceManager* forceManager();
541 
542  const DtSimulationModelSet& simulationModelSet() const;
543  DtSimulationModelSet& simulationModelSet();
544  const DtFilename& parameterFilename() const;
545  const DtComponentSystemDatabase* systemDatabase() const;
546  DtFilename modelSetDirectory() const;
547 
548  virtual void forceRemoved(DtForceType forceType);
549 
550  const DtRwForces& allForces() const;
551 
552  virtual std::vector<const DtComponentSystemDefinition*> systemDefinitionsFor(const DtObjectType& o) const;
553 
554  virtual const DtReaderWriter* findVariable(const DtVariableBindingsList&, const DtString&) const;
555  virtual const DtReaderWriter* findOriginalVariable(const makVrf::DtEntityMapperKey& emk, const DtString&) const;
556  virtual const DtReaderWriter* findModifiedVariable(const makVrf::DtEntityMapperKey& emk, const DtString&) const;
557  virtual DtReaderWriter* findVariable(const DtVariableBindingsList&, const DtString&);
558  virtual DtReaderWriter* findOriginalVariable(const makVrf::DtEntityMapperKey& emk, const DtString&);
559  virtual DtReaderWriter* findModifiedVariable(const makVrf::DtEntityMapperKey& emk, const DtString&);
560  virtual const DtReaderWriter* variableFromAnyPlatform(const DtString& varName) const;
561 
562  virtual DtVrfObjectParameters* platformParameters(const makVrf::DtEntityMapperKey& key) const;
563 
564  virtual const DtStandardSensorObjects& standardSensorObjects() const;
565  virtual DtStandardSensorObjects& standardSensorObjects();
566  virtual bool processModelSet(DtSimulationModelSet*, LoadFlags flags = LoadAll, bool isMasterSMS = false);
567 
568 protected:
572  virtual void markInternalItemsAsReadOnly(DtVariableBindingsList*);
573 
574  virtual const DtReaderWriter* findVariable(const DtString& var, const DtReaderWriter* rw) const;
575 
576  virtual void loadSystemFilesFromDirectory(const QString& directoryName, const DtVariableBindingsList& variableBindings);
577 
578  virtual void addVariableReferences(DtReaderWriter* source, DtRwVariableBindings* toBindings) const;
579 
580  virtual void cleanup();
581 
582  virtual bool saveForceHostility(const DtFilename& filename);
583 
584  virtual bool warned(const DtFilename&);
585  virtual void removeEntityFromSubObjects(const DtObjectType&);
586 
587  virtual void mergeFavoritesIntoModelSet(DtModelSet* favorites, DtModelSet* set);
588 
589  virtual DtVariableBindingsList* copyBindingsList(const DtVariableBindingsList* orig) const;
590 
591  virtual EntityData* createParameterDataFrom(DtVrfObjectParameters*) const;
592 
594  virtual bool updateFromPlatform(const DtReaderWriter* oldRegData, DtEnvironmentSP env, DtEnvValueSP objectNode) const;
595 
597  virtual bool traverseRwObject(const DtReaderWriter* rwObject, DtEnvironmentSP env, DtEnvValueSP objectNode) const;
598  virtual void addElementFromSystemBinding(DtEnvironmentSP env,
599  DtEnvValueSP parentElement, DtSystemParameterData* paramData) const;
600 
601  virtual DtFormationTable* formationTableFor(DtEnvironmentSP, DtEnvValueSP objectNode) const;
602 
604  virtual void updateFormationTable(DtEnvironmentSP, DtEnvValueSP objectNode, const DtFormationTable&);
605 
606  virtual std::vector<EntityData*> addDataFromFile(const DtString& file,
607  DtSimulationModelSet* set, bool isMasterSMS,
608  bool signalAddition = true, bool isTemplate= false);
609 
610  virtual DtModelSetEntry* addModelSetEntryFromEnvironment(DtEnvironmentSP, DtEnvValueSP node);
611  virtual DtModelSetEntry* addModelSetEntryFromSimulationObjectGroup(EntityData*);
612 
613  virtual void addToInternalCategories(DtModelSetEntry* entry);
614 
615  virtual void addEntityDataEntry(EntityData*, bool signal = true);
616  virtual void removeEntityDataEntry(EntityData*, bool signal = true);
617 
619  virtual ParametersMap::const_iterator findAvailablePlatform(DtString platform) const;
620  virtual ParametersData::const_iterator findAvailableParameter(DtString platform) const;
621  virtual ParametersData::const_iterator findAvailableParameterFromFile(const DtFilename& platform) const;
622 
624  virtual void swapCurrentEntry(EntityData*, DtModelSetEntry*);
625 
627  virtual DtString filenameFromEntityName(const DtString& name) const;
628 
629 protected:
630  QStringList myWarned;
636  QStringList myDefaultCategories;
641  bool myLoaded;
643 
645 
647 
650 
651  std::set<std::string> myInternalItems;
654 
655  typedef std::map<DtModelSetEntry*, EntityData*> EntityDataByEntry;
657 
658  std::vector<QTranslator*> myTranslators;
660 };
661 
663 {
665  {
666  return mySimulationModelSet->filename();
667  }
668  else
669  {
670  return "";
671  }
672 }
673 
675 {
676  return *mySimulationModelSet;
677 }
678 
680 {
681  return *mySimulationModelSet;
682 }
683 
685 {
686  return myModelSet;
687 }
688 
690 {
691  return myModelSet;
692 }
693 
694 inline const DtFilename& DtSimulationModelSetLoader::parameterFilename() const
695 {
696  return myParameterFilename;
697 }
698 
700 {
701  return myAllForces;
702 }
703 
704 inline const QStringList& DtSimulationModelSetLoader::defaultCategories() const
705 {
706  return myDefaultCategories;
707 }
708 
709 inline void DtSimulationModelSetLoader::setDefaultCategories(const QStringList& l)
710 {
712 }
713 
715 {
716  myDefaultCategories.push_back(l);
717 }
718 
719 inline const QStringList& DtSimulationModelSetLoader::defaultOverlayLayers() const
720 {
721  return myDefaultOverlayLayers;
722 }
723 
725 {
727 }
728 
730 {
731  myDefaultOverlayLayers.push_back(l);
732 }
733 
735 {
737 }
738 
740 {
742 }
743 
745 {
746  myDefaultDeployedCountries.push_back(l);
748 }
749 
751 
753 {
754  return !(lhs.operator<(rhs));
755 }
756 
758 {
759 public:
761 
763 
764  virtual void loadAllSmsFiles();
765 
766 protected:
767  virtual void processModelSet(DtSimulationModelSet*);
768 
769 protected:
774 };

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)