Private Const StressSystemsXRecordName = "StressSystems"
Private Const StressWorxDictionaryName = "Stressworx"
Private Const WorxApplicationName = "Worx_Plugins"
Private ReadOnly _database As Database
Private ReadOnly _document As Document
Public Function GetStressSystemIdFromMemory() As ObjectId
Dim id As ObjectId = Nothing
Dim worxApplicationDictionary As DBDictionary
Dim stressWorxDictionary As DBDictionary
Dim worxNodesXRecord As Xrecord
Using transaction = _database.TransactionManager.StartTransaction()
Dim namedObjectDictionary As DBDictionary = transaction.GetObject(_database.NamedObjectsDictionaryId, OpenMode.ForRead)
If namedObjectDictionary.Contains(WorxApplicationName) Then
worxApplicationDictionary = namedObjectDictionary.GetAt(WorxApplicationName).OpenAs (Of DBDictionary)
Else
namedObjectDictionary.UpgradeOpen()
worxApplicationDictionary = New DBDictionary()
namedObjectDictionary.SetAt(WorxApplicationName, worxApplicationDictionary)
transaction.AddNewlyCreatedDBObject(worxApplicationDictionary, True)
End If
If worxApplicationDictionary.Contains(StressWorxDictionaryName) Then
stressWorxDictionary = worxApplicationDictionary.GetAt(StressWorxDictionaryName).OpenAs (Of DBDictionary)
Else
worxApplicationDictionary.UpgradeOpen()
stressWorxDictionary = New DBDictionary()
worxApplicationDictionary.SetAt(StressWorxDictionaryName, stressWorxDictionary)
transaction.AddNewlyCreatedDBObject(stressWorxDictionary, True)
End If
If stressWorxDictionary.Contains(StressSystemsXRecordName) Then
worxNodesXRecord = stressWorxDictionary.GetAt(StressSystemsXRecordName).OpenAs (Of Xrecord)(OpenMode.ForWrite)
Else
stressWorxDictionary.UpgradeOpen()
worxNodesXRecord = New Xrecord()
stressWorxDictionary.SetAt(StressSystemsXRecordName, worxNodesXRecord)
transaction.AddNewlyCreatedDBObject(worxNodesXRecord, True)
End If
id = worxNodesXRecord.ObjectId
transaction.Commit()
End Using
Return Id
End Function