public IHttpActionResult GetSituation([FromBody] SourceAndId sai)
        {
            Situation selectedSituation;

            if (sai.sourceType)
            {
                selectedSituation = OwlWorker.GetSituation(sai.id);
                var gw = new GraphWorker();

                selectedSituation = gw.FillCoordinates(selectedSituation, gw.MakeGraph(gw.SituationToGraph(selectedSituation.participants)));
            }
            else
            {
                var noSqlWorker = new NoSqlWorker();
                noSqlWorker.Initialization();
                selectedSituation = noSqlWorker.GetSituation(sai.id);
                if ((selectedSituation.coordinates == null) || (selectedSituation.coordinates.Count == 0))
                {
                    selectedSituation.coordinates = new List <Coordinate>();
                    var gw = new GraphWorker();
                    selectedSituation = gw.FillCoordinates(selectedSituation, gw.MakeGraph(gw.SituationToGraph(selectedSituation.participants)));
                }
            }

            if (selectedSituation == null)
            {
                return(NotFound());
            }
            return(Ok(selectedSituation));
        }
示例#2
0
        public void TestEndlessLoop1()
        {
            var department5Stamp = new Stamp();

            var department4 = new FinishDepartment();
            var department3 = new ConditionalDepartment(
                stampCondition: department5Stamp,
                ifDepartment: new UnconditionalDepartment(department4),
                elseDepartment: new UnconditionalDepartment()
                );
            var department2 = new UnconditionalDepartment(department3);
            var department1 = new UnconditionalDepartment(department2);

            department3.ElseDepartment.SetNextDepartment(department2);

            var graphWorker = new GraphWorker(
                startDepartment: department1,
                finishDepartment: department4,
                targetDepartment: department4
                );

            graphWorker.Start();
            graphWorker.Wait();

            IReadOnlyList <IReadOnlyList <Stamp> > output = new List <List <Stamp> >();

            Assert.True(IsEqual(graphWorker.GetResult(), output));
            Assert.True(graphWorker.IsEndlessLoop());
        }
示例#3
0
        public void Test1()
        {
            var department3 = new FinishDepartment();
            var department2 = new UnconditionalDepartment(department3);
            var department1 = new UnconditionalDepartment(department2)
            {
                NewStamp = new Stamp()
            };

            var graphWorker = new GraphWorker(
                startDepartment: department1,
                finishDepartment: department3,
                targetDepartment: department2
                );

            graphWorker.Start();
            graphWorker.Wait();

            IReadOnlyList <IReadOnlyList <Stamp> > output = new List <List <Stamp> >
            {
                new List <Stamp> {
                    department1.NewStamp
                }
            };

            Assert.True(IsEqual(graphWorker.GetResult(), output));
            Assert.True(!graphWorker.IsEndlessLoop());
        }
示例#4
0
        public void MakeGraphGraphMakeTest()
        {
            GraphWorker gw = new GraphWorker();

            //var i = gw.MakeGraph();
            Assert.Fail();
        }
示例#5
0
        public void ToGraphTest()
        {
            //load situation
            var noSqlWorker = new NoSqlWorker();

            noSqlWorker.Initialization();
            var selectedSituation = noSqlWorker.GetSituation(13500410);
            //graph
            var gw     = new GraphWorker();
            var output = gw.SituationToGraph(selectedSituation.participants);
        }
示例#6
0
        public void ToCoordinateFromStringGraphTest()
        {
            //load situation
            var noSqlWorker = new NoSqlWorker();

            noSqlWorker.Initialization();
            var selectedSituation = noSqlWorker.GetSituation(13500410);
            //graph
            var gw     = new GraphWorker();
            var output = gw.SituationToGraph(selectedSituation.participants);
            var outputWithCoordinates = gw.MakeGraph(output);
            var outputCoordinates     = gw.FillCoordinates(selectedSituation, outputWithCoordinates);
        }
示例#7
0
        public void TestLoop1()
        {
            var department5 = new FinishDepartment();
            var department4 = new UnconditionalDepartment()
            {
                NewStamp = new Stamp()
            };
            var department3 = new ConditionalDepartment(
                stampCondition: department4.NewStamp,
                ifDepartment: new UnconditionalDepartment(department5)
            {
                NewStamp = new Stamp()
            },
                elseDepartment: new UnconditionalDepartment(department4)
            {
                NewStamp = new Stamp()
            }
                );
            var department2 = new UnconditionalDepartment(department3)
            {
                NewStamp = new Stamp()
            };
            var department1 = new UnconditionalDepartment(department2)
            {
                NewStamp = new Stamp()
            };

            department4.SetNextDepartment(department2);

            var graphWorker = new GraphWorker(
                startDepartment: department1,
                finishDepartment: department5,
                targetDepartment: department5
                );

            graphWorker.Start();
            graphWorker.Wait();

            IReadOnlyList <IReadOnlyList <Stamp> > output = new List <List <Stamp> >
            {
                new List <Stamp>
                {
                    department1.NewStamp, department2.NewStamp, department3.ElseDepartment.NewStamp,
                    department4.NewStamp, department3.IfDepartment.NewStamp
                }
            };

            Assert.True(IsEqual(graphWorker.GetResult(), output));
            Assert.True(!graphWorker.IsEndlessLoop());
        }
示例#8
0
        public string GetOneSituationNewCoordinate(string idInJson)
        {
            var noSqlWorker = new NoSqlWorker();

            noSqlWorker.Initialization();

            var id = JsonConvert.DeserializeObject <int>(idInJson);
            var selectedSituation = noSqlWorker.GetSituation(id);
            //graph
            var gw     = new GraphWorker();
            var output = gw.SituationToGraph(selectedSituation.participants);
            var outputWithCoordinates = gw.MakeGraph(output);
            var outputSituation       = gw.FillCoordinates(selectedSituation, outputWithCoordinates);

            return(new JavaScriptSerializer().Serialize(outputSituation));
        }
        public async Task <IHttpActionResult> PostFromConstructor()
        {
            if (!Request.Content.IsMimeMultipartContent())
            {
                return(BadRequest());
            }

            var provider = new MultipartMemoryStreamProvider();
            // путь к папке на сервере
            string root = HttpContext.Current.Server.MapPath("~/App_Data/");
            await Request.Content.ReadAsMultipartAsync(provider);

            Situation newSit = null;

            foreach (var file in provider.Contents)
            {
                var filename              = file.Headers.ContentDisposition.FileName.Trim('\"');
                var owlString             = file.ReadAsStringAsync();
                ImportFromConstructor ifc = new ImportFromConstructor();
                newSit             = ifc.load_pps(owlString.Result);
                newSit.create_date = DateTime.Today;
                newSit.coordinates = new List <Coordinate>();
                var gw = new GraphWorker();
                newSit = gw.FillCoordinates(newSit, gw.MakeGraph(gw.SituationToGraph(newSit.participants)));
                var noSqlWorker = new NoSqlWorker();
                noSqlWorker.Initialization();
                noSqlWorker.Insert(newSit);
                //byte[] fileArray = await file.ReadAsByteArrayAsync();

                //using (System.IO.FileStream fs = new System.IO.FileStream(root + filename, System.IO.FileMode.Create))
                //{
                //    await fs.WriteAsync(fileArray, 0, fileArray.Length);
                //}
            }
            if (newSit == null)
            {
                return(NotFound());
            }
            return(Ok(newSit));
        }
示例#10
0
        public void TestLoop2()
        {
            var d9 = new UnconditionalDepartment()
            {
                NewStamp = new Stamp()
            };
            var d8 = new UnconditionalDepartment()
            {
                NewStamp = new Stamp()
            };
            var d7 = new UnconditionalDepartment()
            {
                NewStamp = new Stamp()
            };

            var d6 = new FinishDepartment();

            var d5 = new ConditionalDepartment(
                stampCondition: d9.NewStamp,
                ifDepartment: new UnconditionalDepartment(d6)
            {
                NewStamp = new Stamp()
            },
                elseDepartment: new UnconditionalDepartment(d9)
            {
                NewStamp = new Stamp()
            }
                );
            var d4 = new ConditionalDepartment(
                stampCondition: d8.NewStamp,
                ifDepartment: new UnconditionalDepartment(d5)
            {
                NewStamp = new Stamp()
            },
                elseDepartment: new UnconditionalDepartment(d8)
            {
                NewStamp = new Stamp()
            }
                );
            var d3 = new ConditionalDepartment(
                stampCondition: d7.NewStamp,
                ifDepartment: new UnconditionalDepartment(d4)
            {
                NewStamp = new Stamp()
            },
                elseDepartment: new UnconditionalDepartment(d7)
            {
                NewStamp = new Stamp()
            }
                );
            var d2 = new UnconditionalDepartment(d3)
            {
                NewStamp = new Stamp()
            };
            var d1 = new UnconditionalDepartment(d2);

            d9.SetNextDepartment(d2);
            d8.SetNextDepartment(d2);
            d7.SetNextDepartment(d2);

            var graphWorker = new GraphWorker(
                startDepartment: d1,
                finishDepartment: d6,
                targetDepartment: d2
                );

            graphWorker.Start();
            graphWorker.Wait();

            IReadOnlyList <IReadOnlyList <Stamp> > output = new List <List <Stamp> >
            {
                new List <Stamp> {
                    d2.NewStamp
                },
                new List <Stamp> {
                    d2.NewStamp, d3.ElseDepartment.NewStamp, d7.NewStamp
                },
                new List <Stamp>
                {
                    d2.NewStamp, d3.ElseDepartment.NewStamp, d7.NewStamp, d3.IfDepartment.NewStamp,
                    d4.ElseDepartment.NewStamp, d8.NewStamp
                },
                new List <Stamp>
                {
                    d2.NewStamp, d3.ElseDepartment.NewStamp, d7.NewStamp, d3.IfDepartment.NewStamp,
                    d4.ElseDepartment.NewStamp, d8.NewStamp, d4.IfDepartment.NewStamp, d5.ElseDepartment.NewStamp,
                    d9.NewStamp
                }
            };

            Assert.True(IsEqual(graphWorker.GetResult(), output));
            Assert.True(!graphWorker.IsEndlessLoop());
        }