Example #1
0
        private void Generate(string sql)
        {
            try
            {
                Cursor = Cursors.WaitCursor;

                var adoHandler = new SqlParser(SelectedConnectionString, sql);
                resultItemBindingSource.DataSource = adoHandler.ResultItems;

                tabResult.TabPages.Clear();
                foreach (var resultItem in adoHandler.ResultItems)
                {
                    var tabPage = new TabPage {
                        Text = resultItem.EntityName, Margin = new Padding(0)
                    };
                    tabResult.TabPages.Add(tabPage);

                    var content = new ResultContent {
                        Dock = DockStyle.Fill
                    };
                    content.Initiate(resultItem);
                    tabPage.Controls.Add(content);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "GenerateClass", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                Cursor = Cursors.Default;
            }
        }
Example #2
0
        private static Task HandleExceptionAsync(HttpContext context, Exception exception)
        {
            Console.WriteLine($"ErrorHandlingMiddleware : {exception.Message}");
            var code = HttpStatusCode.InternalServerError;             // 500 if unexpected

            //TODO: use custom exceptions for this?
            if (exception is ApplicationException)
            {
                code = HttpStatusCode.BadRequest;
            }

            //TODO: determine other possible exception type and how to respond - eg,  HttpStatusCode.Unauthorized;

            ResultContent <object> resultContent = ResultContent <object> .Failure(exception.Message);

            resultContent.Exception  = exception;
            resultContent.StatusCode = code;

            var result = JsonConvert.SerializeObject(resultContent,
                                                     new JsonSerializerSettings {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            });


            context.Response.ContentType = "application/json";
            context.Response.StatusCode  = (int)code;
            return(context.Response.WriteAsync(result));
        }
Example #3
0
 /// <summary>
 /// 加密内容对象
 /// </summary>
 /// <typeparam name="T">数据类型</typeparam>
 /// <param name="content">内容对象</param>
 /// <returns></returns>
 public static ResultContent <string> EncryptContent <T>(ResultContent <T> content)
 {
     return(new ResultContent <string>
     {
         Code = content.Code,
         Message = content.Message,
         Data = UnityConfig.Container.Resolve <ICrypt>().Encrypt(JsonConvert.SerializeObject(content.Data))
     });
 }
Example #4
0
        private void GenerateAllTable(string[] tables)
        {
            tabResult.TabPages.Clear();
            var path = Path.Combine(Application.StartupPath, "Classes");

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            foreach (var table in tables)
            {
                try
                {
                    var sql = AdjustSqlFromText(table);
                    Cursor = Cursors.WaitCursor;

                    var adoHandler = new SqlParser(SelectedConnectionString, sql);
                    resultItemBindingSource.DataSource = adoHandler.ResultItems;

                    foreach (var resultItem in adoHandler.ResultItems)
                    {
                        var tabPage = new TabPage {
                            Text = resultItem.EntityName, Margin = new Padding(0)
                        };
                        tabResult.TabPages.Add(tabPage);

                        var content = new ResultContent {
                            Dock = DockStyle.Fill
                        };
                        content.Initiate(resultItem);
                        tabPage.Controls.Add(content);
                        if (cb_saveAs.Checked)
                        {
                            using (var file = File.CreateText($@"{path}\{table}.cs"))
                            {
                                file.Write(resultItem.Code);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("GenerateClass", ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {
                    Cursor = Cursors.Default;
                }
            }
            if (cb_saveAs.Checked)
            {
                Process.Start("explorer.exe", path);
            }
            //Clipboard.SetText(string.Join("\n", results.ToArray()));
        }
        private void HandleException(ExceptionContext context)
        {
            ResultContent <string> serviceError;

            if (context.Exception is UnauthorizedAccessException)
            {
                serviceError = ResultContent <string> .Failure(HttpStatusCode.Unauthorized, "Unauthorized Access");

                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                _logger.LogError(serviceError.ToString());
            }
            else
            {
                serviceError = ResultContent <string> .Failure(HttpStatusCode.InternalServerError, context.Exception?.Message, "", context.Exception);

                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                _logger.LogError(serviceError.ToString());
            }

            context.Result = new JsonResult(serviceError);
        }
Example #6
0
        public void OnException_Should_Set_Context_Result_As_UnAuthorized()
        {
            var context = new ExceptionContext(_actionContext, Enumerable.Empty <IFilterMetadata>().ToList())
            {
                Exception = new UnauthorizedAccessException()
            };

            var exceptionFilter = new ServiceExceptionFilter(_mockLoggerFactory.Object);

            exceptionFilter.OnException(context);

            JsonResult             jsonResult = context.Result as JsonResult;
            ResultContent <string> result     = jsonResult.Value as ResultContent <string>;

            string errorMessage = result.ErrorMessage;
            bool   isError      = !result.IsSuccess;

            context.Result.Should().BeOfType(typeof(JsonResult));
            context.HttpContext.Response.StatusCode.Should().Be((int)HttpStatusCode.Unauthorized);
            errorMessage.Should().NotBeNullOrEmpty();
            isError.Should().BeTrue();
        }
Example #7
0
        public override Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next)
        {
            if (context.ModelState.IsValid)
            {
                return(base.OnResultExecutionAsync(context, next));
            }

            if (context.ModelState.Keys.Any())
            {
                Dictionary <string, string[]> errors = context
                                                       .ModelState
                                                       .ToDictionary(kvp => kvp.Key, kvp => kvp.Value.Errors.Select(e => e.ErrorMessage).ToArray());

                var resultContent = ResultContent <string> .Failure(HttpStatusCode.BadRequest, "Validation Errors", errors);

                context.Result = new BadRequestObjectResult(resultContent);
            }
            else
            {
                context.Result = new BadRequestObjectResult(context.ModelState);
            }

            return(base.OnResultExecutionAsync(context, next));
        }
Example #8
0
        public void OnExceptionAsync_Should_Set_Context_Result_As_InternalServerError()
        {
            string exceptionMessage = "Some Exception";

            var context = new ExceptionContext(_actionContext, Enumerable.Empty <IFilterMetadata>().ToList())
            {
                Exception = new Exception(exceptionMessage)
            };

            var exceptionFilter = new ServiceExceptionFilter(_mockLoggerFactory.Object);

            exceptionFilter.OnExceptionAsync(context);

            JsonResult             jsonResult = context.Result as JsonResult;
            ResultContent <string> result     = jsonResult.Value as ResultContent <string>;

            string errorMessage = result.ErrorMessage;
            bool   isError      = !result.IsSuccess;

            context.Result.Should().BeOfType(typeof(JsonResult));
            context.HttpContext.Response.StatusCode.Should().Be((int)HttpStatusCode.InternalServerError);
            errorMessage.Should().Contain(exceptionMessage);
            isError.Should().BeTrue();
        }
Example #9
0
        public async Task ArchiveAnalysis(int analysisId, Stream outStream)
        {
            outStream = outStream ?? throw new ArgumentNullException(nameof(outStream));

            if (analysisId <= 0)
            {
                throw new ArgumentException("Analysis id must be greater than zero.", nameof(analysisId));
            }

            var analysis = _ctx.Analyses
                           .Include(a => a.Visualizations)
                           .Include(a => a.Request)
                           .ThenInclude(r => r.DataSet)
                           .Include(a => a.Request)
                           .ThenInclude(r => r.DataSet)
                           .ThenInclude(r => r.Visualizations)
                           .Include(a => a.Result)
                           .FirstOrDefault(a => a.Id == analysisId);

            if (analysis is null)
            {
                throw new AnalysisNotFoundException($"Analysis with id '{analysisId}' doesn't exist.");
            }

            var dataSet = analysis.Request.DataSet;
            var req     = analysis.Request;
            var res     = analysis.Result;

            var dataSetInfo = JsonConvert.SerializeObject(new
            {
                Name       = dataSet.Name,
                FileType   = dataSet.FileType.ToString(),
                NodeCount  = dataSet.NodeCount,
                EdgeCount  = dataSet.EdgeCount,
                LayerCount = dataSet.LayerCount,
                LayerNames = dataSet.LayerNames,
                ActorNames = dataSet.ActorNames,
            });
            var edgeList         = dataSet.EdgeList;
            var originalData     = dataSet.Content;
            var analyzedEdgeList = res.AnalyzedNetworkEdgeList;
            var communityList    = res.CommunityList;
            var actorToCommunity = res.ActorToCommunity;

            var requestContent = new RequestContent
            {
                CreateDate                  = req.CreateDate,
                Approach                    = req.Approach.ToString(),
                AnalysisAlgorithm           = req.AnalysisAlgorithm.ToString(),
                AnalysisAlgorithmParameters = req.AnalysisAlgorithmParameters
            };

            if (req.Approach == AnalysisApproach.SingleLayerFlattening)
            {
                requestContent.FlatteningAlgorithm           = analysis.Request.FlatteningAlgorithm.ToString();
                requestContent.FlatteningAlgorithmParameters = analysis.Request.FlatteningAlgorithmParameters;
            }
            else if (req.Approach == AnalysisApproach.SingleLayerOnly)
            {
                requestContent.SelectedLayer = dataSet.LayerNames[req.SelectedLayer];
            }

            var resultContent = new ResultContent();

            if (req.Approach.IsSingleLayerApproach())
            {
                resultContent.Coverage    = res.Coverage;
                resultContent.Modularity  = res.Modularity;
                resultContent.Performance = res.Performance;
            }
            else
            {
                resultContent.Exclusivities = res.Exclusivities;
                resultContent.Homogenities  = res.Homogenities;
                resultContent.Modularities  = res.Modularities;
                resultContent.Performances  = res.Performances;
                resultContent.Coverages     = res.Coverages;
                resultContent.Varieties     = res.Varieties;
            }

            using (var memoryStream = new MemoryStream())
            {
                using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
                {
                    await WriteContent(archive, "/dataset/dataset-info.json", dataSetInfo);
                    await WriteContent(archive, "/dataset/data" + dataSet.FileType.ToExtension(), dataSet.Content);
                    await WriteContent(archive, "request.json", JsonConvert.SerializeObject(requestContent));
                    await WriteContent(archive, "result.json", JsonConvert.SerializeObject(resultContent));
                    await WriteContent(archive, "analyzed-data.edgelist.txt", analyzedEdgeList);
                    await WriteContent(archive, "community-list.txt", communityList);
                    await WriteContent(archive, "actor-to-community.json", JsonConvert.SerializeObject(actorToCommunity));

                    if (dataSet.FileType != FileType.EdgeList)
                    {
                        await WriteContent(archive, "dataset/data.edgelist.txt", edgeList);
                    }

                    var diagonal = dataSet.Visualizations.FirstOrDefault(v => v.Type == VisualizationType.MultiLayer_Diagonal);
                    if (diagonal != null)
                    {
                        await WriteContent(archive, "dataset/images/diagonal.svg", diagonal.SvgImage);
                    }

                    var slices = dataSet.Visualizations.FirstOrDefault(v => v.Type == VisualizationType.MultiLayer_Slices);
                    if (slices != null)
                    {
                        await WriteContent(archive, "dataset/images/slices.svg", slices.SvgImage);
                    }

                    foreach (var vis in analysis.Visualizations)
                    {
                        if (vis != null)
                        {
                            await WriteContent(archive, $"images/{vis.Title}.svg", vis.SvgImage);
                        }
                    }
                }

                memoryStream.Seek(0, SeekOrigin.Begin);
                await memoryStream.CopyToAsync(outStream);

                outStream.Seek(0, SeekOrigin.Begin);
            }
        }