Exemplo n.º 1
0
        public void UpdateCompositeEntity()
        {
            UseClientFor(async client =>
            {
                var childEntity = await client.Model.AddPrebuiltAsync(GlobalAppId, GlobalVersionId, new List <string> {
                    "datetimeV2"
                });
                var entity = new CompositeEntityModel(new List <string>()
                {
                    "datetimeV2"
                }, name: "CompositeTest");
                var entityId = await client.Model.AddCompositeEntityAsync(GlobalAppId, GlobalVersionId, entity);
                await client.Model.UpdateCompositeEntityAsync(GlobalAppId, GlobalVersionId, entityId, new CompositeEntityModel(new List <string>()
                {
                    "datetimeV2"
                }, name: "CompositeTestUpdate"));

                var entities = await client.Model.ListCompositeEntitiesAsync(GlobalAppId, GlobalVersionId);
                await client.Model.DeleteCompositeEntityAsync(GlobalAppId, GlobalVersionId, entityId);
                await client.Model.DeletePrebuiltAsync(GlobalAppId, GlobalVersionId, childEntity.Single().Id);


                Assert.Equal("CompositeTestUpdate", entities.Single(e => e.Id == entityId).Name);
            });
        }
Exemplo n.º 2
0
        public void AddCompositeEntity()
        {
            UseClientFor(async client =>
            {
                var entity = new CompositeEntityModel(new List <string>()
                {
                    "datetime"
                }, name: "CompositeTest");
                var result = await client.Model.AddCompositeEntityAsync(appId, "0.1", entity);
                await client.Model.DeleteCompositeEntityAsync(appId, "0.1", result);

                Assert.True(result != Guid.Empty);
            });
        }
Exemplo n.º 3
0
        public void DeleteCompositeEntity()
        {
            UseClientFor(async client =>
            {
                var entity = new CompositeEntityModel(new List <string>()
                {
                    "datetime"
                }, name: "CompositeTest");
                var entityId = await client.Model.AddCompositeEntityAsync(appId, "0.1", entity);
                await client.Model.DeleteCompositeEntityAsync(appId, "0.1", entityId);

                var entities = await client.Model.ListCompositeEntitiesAsync(appId, "0.1");
                Assert.DoesNotContain(entities, e => e.Id == entityId);
            });
        }
Exemplo n.º 4
0
        public void AddCompositeEntity()
        {
            UseClientFor(async client =>
            {
                var childEntity = await client.Model.AddPrebuiltAsync(GlobalAppId, GlobalVersionId, new List <string> {
                    "datetimeV2"
                });
                var compositeEntity = new CompositeEntityModel(new List <string>()
                {
                    "datetimeV2"
                }, name: "CompositeTest");
                var result = await client.Model.AddCompositeEntityAsync(GlobalAppId, GlobalVersionId, compositeEntity);
                await client.Model.DeleteCompositeEntityAsync(GlobalAppId, GlobalVersionId, result);
                await client.Model.DeletePrebuiltAsync(GlobalAppId, GlobalVersionId, childEntity.Single().Id);

                Assert.True(result != Guid.Empty);
            });
        }
Exemplo n.º 5
0
        public void DeleteCompositeEntity()
        {
            UseClientFor(async client =>
            {
                var childEntity = await client.Model.AddPrebuiltAsync(GlobalAppId, GlobalVersionId, new List <string> {
                    "datetimeV2"
                });
                var entity = new CompositeEntityModel(new List <string>()
                {
                    childEntity.Single().Name
                }, name: "CompositeTest");
                var entityId = await client.Model.AddCompositeEntityAsync(GlobalAppId, GlobalVersionId, entity);
                await client.Model.DeleteCompositeEntityAsync(GlobalAppId, GlobalVersionId, entityId);

                var entities = await client.Model.ListCompositeEntitiesAsync(GlobalAppId, GlobalVersionId);
                Assert.DoesNotContain(entities, e => e.Id == entityId);
            });
        }
Exemplo n.º 6
0
        public void UpdateCompositeEntity()
        {
            UseClientFor(async client =>
            {
                var entity = new CompositeEntityModel(new List <string>()
                {
                    "datetime"
                }, name: "CompositeTest");
                var entityId = await client.Model.AddCompositeEntityAsync(appId, "0.1", entity);
                await client.Model.UpdateCompositeEntityAsync(appId, "0.1", entityId, new CompositeEntityModel(new List <string>()
                {
                    "datetime"
                }, name: "HierarchicalTestUpdate"));

                var entities = await client.Model.ListCompositeEntitiesAsync(appId, "0.1");
                await client.Model.DeleteCompositeEntityAsync(appId, "0.1", entityId);

                Assert.Equal("HierarchicalTestUpdate", entities.Single(e => e.Id == entityId).Name);
            });
        }
Exemplo n.º 7
0
        public void AddCompositeEntityChild()
        {
            UseClientFor(async client =>
            {
                var childEntityId = await client.Model.AddEntityAsync(appId, "0.1", new ModelCreateObject("ChildTest"));
                var entity        = new CompositeEntityModel(new List <string>()
                {
                    "datetime"
                }, name: "CompositeTest");
                var entityId = await client.Model.AddCompositeEntityAsync(appId, "0.1", entity);

                var child  = new CompositeChildModelCreateObject("ChildTest");
                var result = await client.Model.AddCompositeEntityChildAsync(appId, "0.1", entityId, child);

                await client.Model.DeleteCompositeEntityAsync(appId, "0.1", entityId);
                await client.Model.DeleteEntityAsync(appId, "0.1", childEntityId);

                Assert.True(result != Guid.Empty);
            });
        }
Exemplo n.º 8
0
        public override void Display()
        {
            base.Display();

            Console.WriteLine("We’ll now create the  \"Flight\" composite entity including \"Class\" and \"Destination\".");

            var compositeEntity = new CompositeEntityModel
            {
                Name     = "Flight",
                Children = new[] { "Class", "Destination" }
            };

            var compositeEntityId = AwaitTask(Client.Model.AddCompositeEntityAsync(AppId, VersionId, compositeEntity));

            Console.WriteLine($"{compositeEntity.Name} composite entity created with id {compositeEntityId}");

            NavigateWithInitializer <FindFlightsIntentPage>((page) => {
                page.AppId     = AppId;
                page.VersionId = VersionId;
            });
        }
        internal static IList <EntityModel> PopulateCompositeEntityModel(CompositeEntityModel compositeEntity, IList <EntityModel> entities, JObject entitiesAndMetadata, bool verbose)
        {
            var childrenEntites          = new JObject();
            var childrenEntitiesMetadata = new JObject();

            if (verbose)
            {
                childrenEntites[_metadataKey] = new JObject();
            }

            // This is now implemented as O(n^2) search and can be reduced to O(2n) using a map as an optimization if n grows
            var compositeEntityMetadata = entities.FirstOrDefault(e => e.Type == compositeEntity.ParentType && e.Entity == compositeEntity.Value);

            // This is an error case and should not happen in theory
            if (compositeEntityMetadata == null)
            {
                return(entities);
            }

            if (verbose)
            {
                childrenEntitiesMetadata      = ExtractEntityMetadata(compositeEntityMetadata);
                childrenEntites[_metadataKey] = new JObject();
            }

            var coveredSet = new HashSet <EntityModel>();

            foreach (var child in compositeEntity.Children)
            {
                foreach (var entity in entities)
                {
                    // We already covered this entity
                    if (coveredSet.Contains(entity))
                    {
                        continue;
                    }

                    // This entity doesn't belong to this composite entity
                    if (child.Type != entity.Type || !CompositeContainsEntity(compositeEntityMetadata, entity))
                    {
                        continue;
                    }

                    // Add to the set to ensure that we don't consider the same child entity more than once per composite
                    coveredSet.Add(entity);
                    AddProperty(childrenEntites, ExtractNormalizedEntityName(entity), ExtractEntityValue(entity));

                    if (verbose)
                    {
                        AddProperty((JObject)childrenEntites[_metadataKey], ExtractNormalizedEntityName(entity), ExtractEntityMetadata(entity));
                    }
                }
            }

            AddProperty(entitiesAndMetadata, ExtractNormalizedEntityName(compositeEntityMetadata), childrenEntites);
            if (verbose)
            {
                AddProperty((JObject)entitiesAndMetadata[_metadataKey], ExtractNormalizedEntityName(compositeEntityMetadata), childrenEntitiesMetadata);
            }

            // filter entities that were covered by this composite entity
            return(entities.Except(coveredSet).ToList());
        }