public async Task ExportRtModelAsync(IOspSession session, OspObjectId queryId, string filePath, CancellationToken?cancellationToken) { ArgumentValidation.Validate(nameof(session), session); ArgumentValidation.Validate(nameof(queryId), queryId); ArgumentValidation.ValidateExistingFile(nameof(filePath), filePath); var exporter = new ExportRtModel(this); await exporter.Export(session, queryId, filePath, cancellationToken); }
public async Task <string> ExportRtModel(string tenantId, OspObjectId queryId) { ArgumentValidation.ValidateString(nameof(tenantId), tenantId); ArgumentValidation.Validate(nameof(queryId), queryId); var request = new RestRequest("models/ExportRt", Method.POST); request.AddQueryParameter("tenantId", tenantId); request.AddJsonBody(new ExportModelRequestDto { QueryId = queryId }); IRestResponse <string> response = await Client.ExecuteAsync <string>(request); ValidateResponse(response); return(response.Data); }
public async Task Export(IOspSession session, OspObjectId queryId, string filePath, CancellationToken?cancellationToken) { var query = await _tenantContext.Repository.GetRtEntityAsync(session, new RtEntityId(Constants.SystemQueryCkId, queryId)); if (CheckCancellation(cancellationToken)) { throw new OperationCanceledException(); } if (query == null) { throw new ModelExportException($"Query '{queryId}‘ does not exist."); } DataQueryOperation dataQueryOperation = new DataQueryOperation(); var sortingDtoList = JsonConvert.DeserializeObject <ICollection <SortDto> >(query.GetAttributeStringValueOrDefault("Sorting")); dataQueryOperation.SortOrders = sortingDtoList.Select(dto => new SortOrderItem(dto.AttributeName.ToPascalCase(), (SortOrders)dto.SortOrder)); var fieldFilterDtoList = JsonConvert.DeserializeObject <ICollection <FieldFilterDto> >( query.GetAttributeStringValueOrDefault("FieldFilter")); dataQueryOperation.FieldFilters = fieldFilterDtoList.Select(dto => new FieldFilter(TransformAttributeName(dto.AttributeName), (FieldFilterOperator)dto.Operator, dto.ComparisonValue)); var ckId = query.GetAttributeStringValueOrDefault("QueryCkId"); var resultSet = await _tenantContext.Repository.GetRtEntitiesByTypeAsync(session, ckId, dataQueryOperation); var entityCacheItem = _tenantContext.CkCache.GetEntityCacheItem(ckId); RtModelRoot model = new RtModelRoot(); model.RtEntities.AddRange(resultSet.Result.Select(entity => { var exEntity = new RtEntity { Id = entity.RtId.ToOspObjectId(), WellKnownName = entity.WellKnownName, CkId = entity.CkId, }; exEntity.Attributes.AddRange(entity.Attributes.Select(pair => { var attributeCacheItem = entityCacheItem.Attributes[pair.Key]; return(new RtAttribute { Id = attributeCacheItem.AttributeId, Value = pair.Value }); })); return(exEntity); })); await using StreamWriter streamWriter = new StreamWriter(filePath); RtSerializer.Serialize(streamWriter, model); await session.CommitTransactionAsync(); }
public static ObjectId ToObjectId(this OspObjectId objectId) { return(new ObjectId(objectId.ToString())); }