Commit b5070daf authored by Bob Obara's avatar Bob Obara

ENH: Renaming attribute::System to attribute::Collection

parent b685feb2
......@@ -9,8 +9,8 @@
//=========================================================================
#include <QTreeWidgetItem>
#include "smtk/attribute/Collection.h"
#include "smtk/attribute/Definition.h"
#include "smtk/attribute/System.h"
#include "AttDefDataModel.h"
......@@ -33,11 +33,11 @@ void AttDefDataModel::initializeRootItem()
}
// -----------------------------------------------------------------------------
void AttDefDataModel::populate(smtk::attribute::SystemPtr system)
void AttDefDataModel::populate(smtk::attribute::CollectionPtr collection)
{
this->System = system;
this->Collection = collection;
DefinitionPtrVec defs;
this->System->findBaseDefinitions(defs);
this->Collection->findBaseDefinitions(defs);
for (auto const& def : defs)
{
......@@ -54,7 +54,7 @@ void AttDefDataModel::appendRecursively(
smtk::attribute::DefinitionPtr parentDef, QTreeWidgetItem* parentItem)
{
DefinitionPtrVec defsConcrete;
this->System->derivedDefinitions(parentDef, defsConcrete);
this->Collection->derivedDefinitions(parentDef, defsConcrete);
for (auto const& def : defsConcrete)
{
......@@ -81,16 +81,16 @@ bool AttDefDataModel::hasDerivedTypes(const QModelIndex& index) const
auto def = this->get(index);
DefinitionPtrVec defVec;
def->system()->derivedDefinitions(def, defVec);
def->collection()->derivedDefinitions(def, defVec);
return defVec.size() > 0;
}
// -----------------------------------------------------------------------------
void AttDefDataModel::insert(const AttDefContainer& props)
{
// Attribute system insert.
// Attribute collection insert.
smtk::attribute::DefinitionPtr newDef =
this->System->createDefinition(props.Type, props.BaseType);
this->Collection->createDefinition(props.Type, props.BaseType);
newDef->setIsUnique(props.IsUnique);
newDef->setIsAbstract(props.IsAbstract);
......@@ -119,10 +119,10 @@ void AttDefDataModel::insert(const AttDefContainer& props)
// -----------------------------------------------------------------------------
void AttDefDataModel::remove(const QModelIndex& attDefIndex)
{
// Attribute system remove.
// Attribute collection remove.
const QModelIndex parentIndex = attDefIndex.parent();
const auto child = static_cast<AttDefElement*>(this->getItem(attDefIndex));
if (!this->System->removeDefinition(child->getReferencedDataConst()))
if (!this->Collection->removeDefinition(child->getReferencedDataConst()))
{
return;
}
......
......@@ -22,8 +22,8 @@
*
* The class was named after the XML element it represents in an attribute
* template file (*.sbt) as a Qt data model. This model serves as an interface
* to the attribute system for insertion and removal of Attribute Definitions
* (through the attribute system instance).
* to the attribute collection for insertion and removal of Attribute Definitions
* (through the attribute collection instance).
*
*/
class AttDefDataModel : public AbstractDataModel
......@@ -40,7 +40,7 @@ public:
/**
* Populates the attribute definition tree.
*/
void populate(smtk::attribute::SystemPtr system);
void populate(smtk::attribute::CollectionPtr collection);
/**
* Query the internal data (DefinitionPtr in this case) of a given index.
......@@ -48,7 +48,7 @@ public:
const smtk::attribute::DefinitionPtr& get(const QModelIndex& index) const;
/**
* Insert an attribute Definition into the system, it inserts as well a data
* Insert an attribute Definition into the collection, it inserts as well a data
* element into the tree defined by this data model. An empty base type will
* insert the Definition into the root node (this is how beginInsertRows()->
* QAbstractItemMdoel::parent() handles a default/invalid QModelIndex()).
......@@ -56,7 +56,7 @@ public:
void insert(const AttDefContainer& props);
/**
* Remove an attribute Definition from the system (and its corresponding data
* Remove an attribute Definition from the collection (and its corresponding data
* element in the tree).
*/
void remove(const QModelIndex& attDefIndex);
......@@ -90,6 +90,6 @@ private:
AttDefDataModel(const AttDefDataModel&) = delete;
void operator=(const AttDefDataModel&) = delete;
smtk::attribute::SystemPtr System;
smtk::attribute::CollectionPtr Collection;
};
#endif //__AttDefDataModel_h
......@@ -7,8 +7,8 @@
// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
// PURPOSE. See the above copyright notice for more information.
//=========================================================================
#include "smtk/attribute/Collection.h"
#include "smtk/attribute/Definition.h"
#include "smtk/attribute/System.h"
#include "AttDefDialog.h"
#include "ui_AttDefDialog.h"
......@@ -60,7 +60,7 @@ bool AttDefDialog::validate_impl()
const QString type = this->Ui->leType->text();
valid &= !type.isEmpty();
auto def = this->BaseDef->system()->findDefinition(type.toStdString());
auto def = this->BaseDef->collection()->findDefinition(type.toStdString());
valid &= !def;
return valid;
......
......@@ -118,7 +118,7 @@ void AttDefInformation::onSaveAttDef()
this->CurrentAttDef->setLabel(this->Ui->leLabel->text().toStdString());
this->CurrentAttDef->setIsUnique(this->Ui->cbUnique->isChecked());
this->CurrentAttDef->setIsAbstract(this->Ui->cbAbstract->isChecked());
emit systemChanged(true);
emit collectionChanged(true);
}
// -----------------------------------------------------------------------------
......@@ -141,7 +141,7 @@ void AttDefInformation::onAddItemDef()
props.ParentIndex = parentIndex;
this->OwnedItemDefModel->insert(props);
emit systemChanged(true);
emit collectionChanged(true);
}
}
......@@ -150,7 +150,7 @@ void AttDefInformation::onRemoveItemDef()
{
QItemSelectionModel* sm = this->Ui->tvOwnedItems->selectionModel();
this->OwnedItemDefModel->remove(sm->currentIndex(), this->CurrentAttDef);
emit systemChanged(true);
emit collectionChanged(true);
}
// -----------------------------------------------------------------------------
......@@ -177,6 +177,6 @@ void AttDefInformation::showOwnedItemDetails(const QModelIndex& index)
if (dialog.exec() == QDialog::Accepted)
{
dialog.getItemDef(); /* updates ItemDef's properties */
emit systemChanged(true);
emit collectionChanged(true);
}
}
......@@ -51,9 +51,9 @@ public slots:
signals:
/**
* Indicates to the parent widget that a change has been made in the attribute
* system (or any of its entities) so that the user is informed about it.
* collection (or any of its entities) so that the user is informed about it.
*/
void systemChanged(bool needsSaving);
void collectionChanged(bool needsSaving);
private slots:
void showInheritedItemDetails(const QModelIndex& index);
......
......@@ -35,9 +35,9 @@ AttributeBrowser::AttributeBrowser(QWidget* parent)
AttributeBrowser::~AttributeBrowser() = default;
//------------------------------------------------------------------------------
void AttributeBrowser::populate(smtk::attribute::SystemPtr system)
void AttributeBrowser::populate(smtk::attribute::CollectionPtr collection)
{
this->populateDefinitions(system);
this->populateDefinitions(collection);
//this->populateAnaylsis();
//this->populateCategories();
//this->populateViews();
......@@ -49,7 +49,7 @@ void AttributeBrowser::clear()
}
//------------------------------------------------------------------------------
void AttributeBrowser::populateDefinitions(smtk::attribute::SystemPtr system)
void AttributeBrowser::populateDefinitions(smtk::attribute::CollectionPtr collection)
{
if (this->AttDefModel)
{
......@@ -57,7 +57,7 @@ void AttributeBrowser::populateDefinitions(smtk::attribute::SystemPtr system)
}
this->AttDefModel = new AttDefDataModel(this);
this->AttDefModel->populate(system);
this->AttDefModel->populate(collection);
this->Ui->viewDefinitions->setModel(this->AttDefModel);
this->Ui->viewDefinitions->expandAll();
......@@ -97,7 +97,7 @@ void AttributeBrowser::onAddDefinition()
if (dialog.exec() == QDialog::Accepted)
{
this->AttDefModel->insert(dialog.getInputValues());
emit systemChanged(true);
emit collectionChanged(true);
}
}
......@@ -108,7 +108,7 @@ void AttributeBrowser::onDeleteDefinition()
auto attDefIndex = sm->currentIndex();
this->AttDefModel->remove(attDefIndex);
emit systemChanged(true);
emit collectionChanged(true);
}
//------------------------------------------------------------------------------
......
......@@ -43,7 +43,7 @@ public:
/**
* Populate the UI with attribute definitions.
*/
void populate(smtk::attribute::SystemPtr system);
void populate(smtk::attribute::CollectionPtr collection);
public slots:
/**
......@@ -55,7 +55,7 @@ public slots:
signals:
void attDefChanged(const QModelIndex& currentIndex, const QModelIndex& previousIndex);
void systemChanged(bool needsSaving);
void collectionChanged(bool needsSaving);
private slots:
/**
......@@ -85,9 +85,9 @@ private:
void clear();
void populateDefinitions(smtk::attribute::SystemPtr system);
void populateDefinitions(smtk::attribute::CollectionPtr collection);
smtk::attribute::SystemPtr System;
smtk::attribute::CollectionPtr Collection;
std::unique_ptr<Ui::AttributeBrowser> Ui;
AttDefDataModel* AttDefModel = nullptr;
};
......
......@@ -5,12 +5,12 @@
/**
* \brief Container for parameters to create an attribute definition.
* SMTK does not currently have an interface to create an AttrDef without
* inserting it into the attribute::system. This container is used to
* inserting it into the attribute::collection. This container is used to
* pass input parameters (from the dialog) to the DataModel given that
* DataModels are the only components in the application inserting/removing
* data into/from the attribute::system.
* data into/from the attribute::collection.
*
* \note If a Definition could be created before insertion into the system,
* \note If a Definition could be created before insertion into the collection,
* that instance itself could be used instead of this container.
*/
struct AttDefContainer
......
......@@ -16,7 +16,7 @@
*
* The class and instances are referred to as 'elements' instead of 'items'
* to avoid any confusion with the term 'item' in the context of the SMTK
* attribute system (ItemDefinition, Item, etc.).
* attribute collection (ItemDefinition, Item, etc.).
*
* ///TODO Implement the rest of the virtual interface of QTreeWidgetItem
* to customize how data is set and queried from.
......
......@@ -58,7 +58,7 @@ private:
////////////////////////////////////////////////////////////////////////////////
/**
* \brief Generates a custom UI for a FileItemDefinition instance.
* TODO Derive from HandlerFileSystem
* TODO Derive from HandlerFileCollection
*/
class HandlerFile : public HandlerItemDef
{
......@@ -78,7 +78,7 @@ private:
////////////////////////////////////////////////////////////////////////////////
/**
* \brief Generates a custom UI for a DirectoryItemDefinition instance.
* TODO Derive from HandlerFileSystem
* TODO Derive from HandlerFileCollection
*/
class HandlerDirectory : public HandlerItemDef
{
......
......@@ -9,10 +9,10 @@
//=========================================================================
#include <QTreeWidgetItem>
#include "smtk/attribute/Collection.h"
#include "smtk/attribute/Definition.h"
#include "smtk/attribute/GroupItemDefinition.h"
#include "smtk/attribute/ItemDefinition.h"
#include "smtk/attribute/System.h"
#include "ItemDefDataModel.h"
......@@ -83,7 +83,7 @@ void ItemDefDataModel::appendRecursively(smtk::attribute::ItemDefinitionPtr pare
// ------------------------------------------------------------------------
void ItemDefDataModel::insert(const Container& props)
{
// Attribute system insert. Inserts into either the parent
// Attribute collection insert. Inserts into either the parent
// GroupItemDefinition or the Definition.
const auto itemDef = props.ItemDefinition;
const auto parentElement = static_cast<ItemDefElement*>(this->getItem(props.ParentIndex));
......@@ -121,7 +121,7 @@ void ItemDefDataModel::insert(const Container& props)
// ------------------------------------------------------------------------
void ItemDefDataModel::remove(const QModelIndex& itemIndex, smtk::attribute::DefinitionPtr def)
{
// Attribute system remove. Removes from either the parent
// Attribute collection remove. Removes from either the parent
// GroupItemDefinition or the Definition.
const QModelIndex parentIndex = itemIndex.parent();
const auto parentElem = static_cast<ItemDefElement*>(this->getItem(parentIndex));
......@@ -149,7 +149,7 @@ void ItemDefDataModel::remove(const QModelIndex& itemIndex, smtk::attribute::Def
void ItemDefDataModel::clearAttributes(smtk::attribute::DefinitionPtr def)
{
std::vector<smtk::attribute::AttributePtr> atts;
auto sys = def->system();
auto sys = def->collection();
sys->findAttributes(def->type(), atts);
for (const auto& att : atts)
{
......
......@@ -23,7 +23,7 @@
*
* The class was named after the XML element it represents in an attribute
* template file (*.sbt) as a Qt data model. This model serves as an interface
* to the attribute system for insertion and removal of Item Definitions
* to the attribute collection for insertion and removal of Item Definitions
* (through a given Attribute Definition).
*
*/
......@@ -88,15 +88,15 @@ protected:
QTreeWidgetItem* parentItem, const QString& attDefType);
/**
* Update the attribute system. This ensures the attribute::system instance is
* Update the attribute collection. This ensures the attribute::collection instance is
* purged from any Attributes affected by a change in this ItemDefinition (currently
* wipes anything related to the Definition). qtUIManager->qtInstancedView generates
* an attribute and items for each (or some) of the ui elements, and stores them in
* attribute::system, which could lead to Attributes with Item Definitions in an
* attribute::collection, which could lead to Attributes with Item Definitions in an
* invalid state.
*
* Call this function whenever an ItemDefinition has be modified in the attribute::
* system instance.
* collection instance.
*
* \note TODO Reproduce the issue by not calling this during insertion and talk to
* Bob, it could be a bug in the UIManager. Bob says PreviewPanel::createView should
......
......@@ -9,10 +9,10 @@
//=========================================================================
#include <QDialogButtonBox>
#include "smtk/attribute/Collection.h"
#include "smtk/attribute/Definition.h"
#include "smtk/attribute/GroupItemDefinition.h"
#include "smtk/attribute/Item.h"
#include "smtk/attribute/System.h"
#include "HandlerItemDef.h"
#include "ItemDefDialog.h"
......
......@@ -11,17 +11,17 @@
#include "ui_PreviewPanel.h"
#include "smtk/attribute/Attribute.h"
#include "smtk/attribute/Collection.h"
#include "smtk/attribute/Definition.h"
#include "smtk/attribute/System.h"
#include "smtk/common/View.h"
#include "smtk/extension/qt/qtUIManager.h"
#include "AttDefDataModel.h"
// -----------------------------------------------------------------------------
PreviewPanel::PreviewPanel(QWidget* parent, smtk::attribute::SystemPtr system)
PreviewPanel::PreviewPanel(QWidget* parent, smtk::attribute::CollectionPtr collection)
: QDockWidget(parent)
, AttributeSystem(system)
, AttributeCollection(collection)
{
this->setWindowTitle("Preview Panel");
}
......@@ -41,7 +41,7 @@ smtk::common::ViewPtr PreviewPanel::createView(const smtk::attribute::Definition
const std::string title = def->type();
const std::string type = "Instanced";
smtk::common::ViewPtr view = smtk::common::View::New(type, title);
this->AttributeSystem->addView(view);
this->AttributeCollection->addView(view);
smtk::common::View::Component& comp =
view->details().addChild("InstancedAttributes").addChild("Att");
......@@ -50,11 +50,11 @@ smtk::common::ViewPtr PreviewPanel::createView(const smtk::attribute::Definition
if (this->CurrentViewAttr)
{
this->AttributeSystem->removeAttribute(this->CurrentViewAttr);
this->AttributeCollection->removeAttribute(this->CurrentViewAttr);
}
this->CurrentViewAttr = nullptr;
smtk::attribute::AttributePtr attr = this->AttributeSystem->createAttribute(title);
smtk::attribute::AttributePtr attr = this->AttributeCollection->createAttribute(title);
const std::string attrName = attr ? attr->name() : std::string();
comp.setContents(attrName);
......@@ -67,7 +67,7 @@ void PreviewPanel::createViewForAllAttributes(smtk::common::ViewPtr& root)
{
root = smtk::common::View::New("Group", "RootView");
root->details().setAttribute("TopLevel", "true");
this->AttributeSystem->addView(root);
this->AttributeCollection->addView(root);
root->details().addChild("Views");
int viewsIndex = root->details().findChild("Views");
......@@ -80,7 +80,7 @@ void PreviewPanel::createViewForAllAttributes(smtk::common::ViewPtr& root)
DefinitionPtrVec defs;
DefinitionPtrVec baseDefs;
this->AttributeSystem->findBaseDefinitions(baseDefs);
this->AttributeCollection->findBaseDefinitions(baseDefs);
for (DefinitionVecIter baseIt = baseDefs.begin(); baseIt != baseDefs.end(); baseIt++)
{
......@@ -91,7 +91,7 @@ void PreviewPanel::createViewForAllAttributes(smtk::common::ViewPtr& root)
}
DefinitionPtrVec derivedDefs;
this->AttributeSystem->findAllDerivedDefinitions(*baseIt, true, derivedDefs);
this->AttributeCollection->findAllDerivedDefinitions(*baseIt, true, derivedDefs);
defs.insert(defs.end(), derivedDefs.begin(), derivedDefs.end());
}
......@@ -99,7 +99,7 @@ void PreviewPanel::createViewForAllAttributes(smtk::common::ViewPtr& root)
for (DefinitionVecIter defIt = defs.begin(); defIt != defs.end(); defIt++)
{
smtk::common::ViewPtr instView = smtk::common::View::New("Instanced", (*defIt)->type());
this->AttributeSystem->addView(instView);
this->AttributeCollection->addView(instView);
smtk::common::View::Component& comp =
instView->details().addChild("InstancedAttributes").addChild("Att");
......@@ -107,7 +107,7 @@ void PreviewPanel::createViewForAllAttributes(smtk::common::ViewPtr& root)
comp.setAttribute("Name", (*defIt)->type());
smtk::attribute::AttributePtr instAttr =
this->AttributeSystem->createAttribute((*defIt)->type());
this->AttributeCollection->createAttribute((*defIt)->type());
comp.setContents(instAttr->name());
viewsComp.addChild("View").setAttribute("Title", (*defIt)->type());
......@@ -146,7 +146,7 @@ void PreviewPanel::createViewWidget(const smtk::common::ViewPtr& view)
// Destroying qtUIManager will cleanup after the older PreviewWidget as it is
// parented by one of its internal widgets (m_ScrollArea).
this->UIManager.reset(new smtk::extension::qtUIManager(this->AttributeSystem));
this->UIManager.reset(new smtk::extension::qtUIManager(this->AttributeCollection));
this->PreviewWidget = new QWidget(this);
this->PreviewWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
......
......@@ -19,7 +19,7 @@ namespace smtk
{
namespace attribute
{
class System;
class Collection;
}
namespace extension
......@@ -47,7 +47,7 @@ class PreviewPanel : public QDockWidget
Q_OBJECT
public:
PreviewPanel(QWidget* parent, smtk::attribute::SystemPtr system);
PreviewPanel(QWidget* parent, smtk::attribute::CollectionPtr collection);
~PreviewPanel();
public slots:
......@@ -84,7 +84,7 @@ private:
std::unique_ptr<Ui::PreviewPanel> Ui;
QWidget* PreviewWidget = nullptr;
smtk::attribute::SystemPtr AttributeSystem;
smtk::attribute::CollectionPtr AttributeCollection;
smtk::attribute::AttributePtr CurrentViewAttr;
std::unique_ptr<smtk::extension::qtUIManager> UIManager;
};
......
......@@ -12,7 +12,7 @@
#include <QFileDialog>
#include <QMessageBox>
#include "smtk/attribute/System.h"
#include "smtk/attribute/Collection.h"
#include "smtk/io/AttributeReader.h"
#include "smtk/io/AttributeWriter.h"
#include "smtk/io/Logger.h"
......@@ -66,20 +66,20 @@ void TemplateEditorMain::initialize()
if (this->AttPreviewPanel == nullptr)
{
this->AttPreviewPanel = new PreviewPanel(this, this->AttributeSystem);
this->AttPreviewPanel = new PreviewPanel(this, this->AttributeCollection);
this->Ui->menuView->addAction(this->AttPreviewPanel->toggleViewAction());
}
connect(this->AttDefInfo, SIGNAL(systemChanged(bool)), this, SLOT(updateTitle(bool)));
connect(
this->AttDefInfo, SIGNAL(systemChanged(bool)), this->AttDefBrowser, SLOT(emitAttDefChanged()));
connect(this->AttDefBrowser, SIGNAL(systemChanged(bool)), this, SLOT(updateTitle(bool)));
connect(this->AttDefInfo, SIGNAL(collectionChanged(bool)), this, SLOT(updateTitle(bool)));
connect(this->AttDefInfo, SIGNAL(collectionChanged(bool)), this->AttDefBrowser,
SLOT(emitAttDefChanged()));
connect(this->AttDefBrowser, SIGNAL(collectionChanged(bool)), this, SLOT(updateTitle(bool)));
connect(this->AttDefBrowser, SIGNAL(attDefChanged(const QModelIndex&, const QModelIndex&)),
this->AttDefInfo, SLOT(onAttDefChanged(const QModelIndex&, const QModelIndex&)));
connect(this->AttDefBrowser, SIGNAL(attDefChanged(const QModelIndex&, const QModelIndex&)),
this->AttPreviewPanel, SLOT(updateCurrentView(const QModelIndex&, const QModelIndex&)));
this->AttDefBrowser->populate(this->AttributeSystem);
this->AttDefBrowser->populate(this->AttributeCollection);
/// TODO centralWidget -> make it a QStackedWidget and use a page per
// Tab (Analysis, Categories, Definitions, Views, etc.)
......@@ -106,7 +106,7 @@ void TemplateEditorMain::reset()
delete this->AttPreviewPanel;
this->AttPreviewPanel = nullptr;
this->AttributeSystem = nullptr;
this->AttributeCollection = nullptr;
this->Ui->actSave->setEnabled(false);
this->Ui->actSaveAs->setEnabled(false);
......@@ -116,7 +116,7 @@ void TemplateEditorMain::reset()
void TemplateEditorMain::onNew()
{
this->reset();
this->AttributeSystem = smtk::attribute::System::create();
this->AttributeCollection = smtk::attribute::Collection::create();
this->initialize();
}
......@@ -138,11 +138,11 @@ void TemplateEditorMain::onLoad()
void TemplateEditorMain::load(char const* fileName)
{
this->reset();
this->AttributeSystem = smtk::attribute::System::create();
this->AttributeCollection = smtk::attribute::Collection::create();
smtk::io::AttributeReader reader;
smtk::io::Logger logger;
const bool err = reader.read(this->AttributeSystem, fileName, true, logger);
const bool err = reader.read(this->AttributeCollection, fileName, true, logger);
if (err)
{
......@@ -195,7 +195,7 @@ void TemplateEditorMain::save(const QString& filePath)
{
smtk::io::AttributeWriter writer;
smtk::io::Logger logger;
const bool err = writer.write(this->AttributeSystem, filePath.toStdString(), logger);
const bool err = writer.write(this->AttributeCollection, filePath.toStdString(), logger);
if (err)
{
......
......@@ -56,7 +56,7 @@ public slots:
void onSave();
/**
* Modify the window title if there has been an Attribute System change.
* Modify the window title if there has been an Attribute Collection change.
*/
void updateTitle(bool needsSaving);
///@}
......@@ -80,11 +80,11 @@ private:
/**
* Save template file to filePath. Currently saves the current
* attribute system to a single file.
* attribute collection to a single file.
*/
void save(const QString& filePath);
smtk::attribute::SystemPtr AttributeSystem;
smtk::attribute::CollectionPtr AttributeCollection;
QString ActiveFilePath;
std::unique_ptr<Ui::TemplateEditorMain> Ui;
......
......@@ -38,7 +38,7 @@ to be `priority:low`.
`component:...`
---------------
SMTK is composed of several different components. These labels are associated with Issues to identify the SMTK component associated with the issue. For example `component:attribute_system refers to SMTK's attribute system while component:gui would refers to SMTK's Qt GUI extensions.
SMTK is composed of several different components. These labels are associated with Issues to identify the SMTK component associated with the issue. For example `component:attribute_collection refers to SMTK's attribute collection while component:gui would refers to SMTK's Qt GUI extensions.
`triage:...`
--------------
......
......@@ -22,7 +22,7 @@ There are two ways to go about storing and maintaining this
bidirectional map between modeling kernel entities and SMTK
UUIDs:
1. If the modeling kernel provides an attribute system,
1. If the modeling kernel provides an attribute collection,
then the UUIDs can be stored as attributes on entities.
Note that it is important to verify that attributes