use of org.eclipse.vorto.model.AbstractModel in project vorto by eclipse.
the class ModelIdToModelContentConverter method convert.
@Override
public ModelContent convert(ModelId modelId, Optional<String> platformKey) {
modelId = repositoryFactory.getRepositoryByNamespace(modelId.getNamespace()).getLatestModelVersionIfLatestTagIsSet(modelId);
if (!repositoryFactory.getRepositoryByModel(modelId).exists(modelId)) {
throw new ModelNotFoundException(String.format("Model [%s] does not exist", modelId.getPrettyFormat()), null);
}
ModelWorkspaceReader workspaceReader = getWorkspaceForModel(modelId);
ModelContent result = new ModelContent();
result.setRoot(modelId);
if (platformKey.isPresent()) {
final List<ModelInfo> mappingResources = repositoryFactory.getRepositoryByModel(modelId).getMappingModelsForTargetPlatform(modelId, platformKey.get(), Optional.empty());
if (!mappingResources.isEmpty()) {
// adding to workspace reader in order to resolve cross linking between mapping models correctly
mappingResources.forEach(mapping -> workspaceReader.addFile(new ByteArrayInputStream(repositoryFactory.getRepositoryByModel(mapping.getId()).getFileContent(mapping.getId(), Optional.empty()).get().getContent()), org.eclipse.vorto.model.ModelType.Mapping));
final IModelWorkspace workspace = workspaceReader.read();
workspace.get().forEach(model -> {
Optional<MappingModel> mappingModel = getMappingModelForModel(mappingResources, model);
if (mappingModel.isPresent()) {
AbstractModel createdModel = ModelDtoFactory.createResource(flattenHierarchy(model), mappingModel);
createdModel.setTargetPlatformKey(platformKey.get());
result.getModels().put(new ModelId(model.getName(), model.getNamespace(), model.getVersion()), createdModel);
} else {
result.getModels().put(new ModelId(model.getName(), model.getNamespace(), model.getVersion()), ModelDtoFactory.createResource(flattenHierarchy(model), Optional.empty()));
}
});
} else {
final IModelWorkspace workspace = workspaceReader.read();
workspace.get().forEach(model -> {
AbstractModel createdModel = ModelDtoFactory.createResource(flattenHierarchy(model), Optional.empty());
createdModel.setTargetPlatformKey(platformKey.get());
result.getModels().put(new ModelId(model.getName(), model.getNamespace(), model.getVersion()), createdModel);
});
}
} else {
final IModelWorkspace workspace = workspaceReader.read();
workspace.get().forEach(model -> {
AbstractModel createdModel = ModelDtoFactory.createResource(flattenHierarchy(model), Optional.empty());
result.getModels().put(new ModelId(model.getName(), model.getNamespace(), model.getVersion()), createdModel);
});
}
return result;
}
Aggregations