in code/nxt-integration/src/main/kotlin/org/fbme/integration/nxt/importer/NxtProjectTemplate.kt [40:72]
override fun initModel(project: Project, repository: PlatformRepository, model: SModel): PlatformElement {
val settings = settings as NxtImportSystemConfigSolutionSettings
val nxtImportDirectory = settings.getNxtImportLocation()
val modelId = SModelId.generate()
val modelName = settings.moduleName
val ref = PersistenceFacade.getInstance().createModelReference(null, modelId, modelName)
val header: SModelSimpleHeader = Iec61499ModelHeader(ref, emptyList())
val entries = loadEntries(locateRootDirectory(File(nxtImportDirectory)))
val errorEntries = mutableSetOf<DocumentEntry>()
for (entry in entries) {
try {
loadRootFromFile(header, entry, model)
} catch (e: Exception) {
errorEntries += entry
}
}
if (errorEntries.isNotEmpty()) {
val notification = Notification(
"fbme.integration.nxt",
"Error during import",
"Failed to load ${errorEntries.size} documents: ${errorEntries.joinToString { it.name }}",
NotificationType.ERROR
)
Notifications.Bus.notify(notification, project)
}
val first = model.rootNodes.firstOrNull()
if (first != null) {
return repository.adapter<PlatformElement>(first)
}
val result = repository.iec61499Factory.createBasicFBTypeDeclaration(null)
result.name = "EmptyBasicFB"
return result as PlatformElement
}