use of org.eclipse.vorto.repository.api.ModelInfo in project vorto by eclipse.
the class GenerationDelegateProxyService method generate.
@Override
public GeneratedOutput generate(ModelId modelId, String serviceKey, Map<String, String> requestParams) {
ModelInfo modelResource = modelRepositoryService.getById(modelId);
if (modelResource == null) {
throw new ModelNotFoundException("Model with the given ID does not exist", null);
}
if (modelResource.getType() == ModelType.Datatype || modelResource.getType() == ModelType.Mapping) {
throw new GenerationException("Provided model is neither an information model nor a function block model!");
}
restTemplate.getMessageConverters().add(new ByteArrayHttpMessageConverter());
Generator generatorEntity = getGenerator(serviceKey);
if (generatorEntity == null) {
throw new GenerationException("Generator with key " + serviceKey + " is not a registered generator");
}
generatorEntity.increaseInvocationCount();
this.registeredGeneratorsRepository.save(generatorEntity);
ResponseEntity<byte[]> entity = restTemplate.getForEntity(generatorEntity.getGenerationEndpointUrl() + attachRequestParams(requestParams), byte[].class, modelId.getNamespace(), modelId.getName(), modelId.getVersion());
return new GeneratedOutput(entity.getBody(), extractFileNameFromHeader(entity), entity.getHeaders().getContentLength());
}
use of org.eclipse.vorto.repository.api.ModelInfo in project vorto by eclipse.
the class DefaultResolver method doResolve.
@Override
protected ModelId doResolve(ModelInfo mappingModelResource, ResolveQuery query) {
IModelContent content = this.repository.getModelContent(mappingModelResource.getId(), ContentType.DSL);
MappingModel mappingModel = (MappingModel) content.getModel();
Optional<MappingRule> objectRule = mappingModel.getRules().stream().filter(rule -> rule.getTarget() instanceof StereoTypeTarget && ((StereoTypeTarget) rule.getTarget()).getName().equals(query.getStereoType())).findFirst();
if (objectRule.isPresent()) {
Optional<Attribute> objectIdAttribute = ((StereoTypeTarget) objectRule.get().getTarget()).getAttributes().stream().filter(attribute -> attribute.getName().equals(query.getAttributeId())).findFirst();
if (objectIdAttribute.isPresent() && objectIdAttribute.get().getValue().equals(query.getAttributeValue())) {
return ModelId.fromReference(mappingModel.getReferences().get(0).getImportedNamespace(), mappingModel.getReferences().get(0).getVersion());
}
}
return null;
}
use of org.eclipse.vorto.repository.api.ModelInfo in project vorto by eclipse.
the class DefaultUserAccountService method makeModelsAnonymous.
private void makeModelsAnonymous(String username) {
List<ModelInfo> userModels = this.modelRepository.search("author:" + username);
for (ModelInfo model : userModels) {
model.setAuthor(USER_ANONYMOUS);
this.modelRepository.updateMeta(model);
}
}
use of org.eclipse.vorto.repository.api.ModelInfo in project vorto by eclipse.
the class ModelRepositoryController method getModelContentForTargetPlatform.
@ApiOperation(value = "Returns the model content including target platform specific attributes")
@ApiResponses(value = { @ApiResponse(code = 400, message = "Wrong input"), @ApiResponse(code = 404, message = "Model not found") })
@RequestMapping(value = "/content/{namespace}/{name}/{version:.+}/mapping/{targetplatformKey}", method = RequestMethod.GET)
public AbstractModel getModelContentForTargetPlatform(@ApiParam(value = "The namespace of vorto model, e.g. com.mycompany", required = true) @PathVariable final String namespace, @ApiParam(value = "The name of vorto model, e.g. NewInfomodel", required = true) @PathVariable final String name, @ApiParam(value = "The version of vorto model, e.g. 1.0.0", required = true) @PathVariable final String version, @ApiParam(value = "The key of the targetplatform, e.g. lwm2m", required = true) @PathVariable final String targetplatformKey) {
List<ModelInfo> mappingResource = modelRepository.getMappingModelsForTargetPlatform(new ModelId(name, namespace, version), targetplatformKey);
if (!mappingResource.isEmpty()) {
byte[] mappingContentZip = createZipWithAllDependencies(mappingResource.get(0).getId(), ContentType.DSL);
IModelWorkspace workspace = IModelWorkspace.newReader().addZip(new ZipInputStream(new ByteArrayInputStream(mappingContentZip))).read();
MappingModel mappingModel = (MappingModel) workspace.get().stream().filter(p -> p instanceof MappingModel).findFirst().get();
byte[] modelContent = createZipWithAllDependencies(new ModelId(name, namespace, version), ContentType.DSL);
workspace = IModelWorkspace.newReader().addZip(new ZipInputStream(new ByteArrayInputStream(modelContent))).read();
return ModelDtoFactory.createResource(workspace.get().stream().filter(p -> p.getName().equals(name)).findFirst().get(), Optional.of(mappingModel));
} else {
return getModelContent(namespace, name, version);
}
}
use of org.eclipse.vorto.repository.api.ModelInfo in project vorto by eclipse.
the class ModelRepositoryController method createSingleModelContent.
private void createSingleModelContent(ModelId modelId, ContentType contentType, HttpServletResponse response) {
byte[] modelContent = modelRepository.getModelContent(modelId, contentType).getContent();
if (modelContent != null && modelContent.length > 0) {
final ModelInfo modelResource = modelRepository.getById(modelId);
response.setHeader(CONTENT_DISPOSITION, ATTACHMENT_FILENAME + getFileName(modelResource, contentType));
response.setContentType(APPLICATION_OCTET_STREAM);
try {
IOUtils.copy(new ByteArrayInputStream(modelContent), response.getOutputStream());
response.flushBuffer();
} catch (IOException e) {
throw new RuntimeException("Error copying file.", e);
}
} else {
throw new RuntimeException("File not found.");
}
}
Aggregations