コード例 #1
0
        public void Populate()
        {
            RootCollection.Clear();

            ToolStripItem[] styledItems = StyleMenuItems(_menuRegistry.Root.GetMenuItems(_imageFactory));

            RootCollection.AddRange(styledItems);
        }
コード例 #2
0
        //s
        // GET: /collections/

        public ActionResult Index()
        {
            RootCollection root = LoadXml();

            //root.Row.Shuffle();
            ViewData["data"] = root;
            return(View());
        }
コード例 #3
0
        public async Task CanMigrateLinkOnParent(MigrationProvider provider)
        {
            using (WithSqlDatabase(provider, out var connectionString, out string schemaName, "basic"))
            {
                var driver = DatabaseDriverDispatcher.CreateDriver(provider, connectionString);
                using (var store = GetDocumentStore())
                {
                    var ordersCollection = new RootCollection(schemaName, "order", "Orders")
                    {
                        LinkedCollections = new List <LinkedCollection>
                        {
                            new LinkedCollection(schemaName, "order_item", RelationType.OneToMany, new List <string> {
                                "order_id"
                            }, "Items")
                        }
                    };

                    var orderItemsCollection = new RootCollection(schemaName, "order_item", "OrderItems");

                    var db = await GetDocumentDatabaseInstanceFor(store);

                    var settings = new MigrationSettings
                    {
                        Collections = new List <RootCollection>
                        {
                            ordersCollection,
                            orderItemsCollection
                        }
                    };

                    using (var cts = new CancellationTokenSource(TimeSpan.FromMinutes(1)))
                        using (db.DocumentsStorage.ContextPool.AllocateOperationContext(out DocumentsOperationContext context))
                        {
                            var schema = driver.FindSchema();
                            ApplyDefaultColumnNamesMapping(schema, settings);
                            await driver.Migrate(settings, schema, db, context, token : cts.Token);
                        }

                    using (var session = store.OpenSession())
                    {
                        var order = session.Load <JObject>("Orders/1");

                        Assert.NotNull(order);
                        // total and metadata, Id (Orders/1), Items
                        Assert.Equal(4, order.Properties().Count());

                        Assert.Equal("Orders", order["@metadata"]["@collection"]);
                        Assert.Equal(440, order["Total"]);
                        Assert.Equal("Orders/1", order["Id"]);
                        Assert.Equal("OrderItems/10", order["Items"][0]);
                        Assert.Equal("OrderItems/11", order["Items"][1]);
                    }

                    var collectionStatistics = store.Maintenance.Send(new GetCollectionStatisticsOperation());
                    Assert.Equal(3, collectionStatistics.CountOfDocuments);
                }
            }
        }
コード例 #4
0
        /// <summary>
        /// Resets the parser to its initial state.
        /// </summary>
        public void Clear()
        {
            CurrentCollection = RootCollection;
            RootCollection.Clear();

            GlobalItemStateStack.Clear();
            GlobalItemStateStack.Add(new Dictionary <GlobalItemTag, EncodedItem> ());
            LocalItemState.Clear();
            Reports.Clear();
            ReportsUseID = false;
        }
コード例 #5
0
        public async Task CanHandleMissingParentLink(MigrationProvider provider)
        {
            using (WithSqlDatabase(provider, out var connectionString, out string schemaName, "basic"))
            {
                var driver = DatabaseDriverDispatcher.CreateDriver(provider, connectionString);
                var query  = provider.Equals(MigrationProvider.Oracle) == false ? "update order_item set order_id = null" : "update \"order_item\" set \"order_id\" = null";

                ExecuteSqlQuery(provider, connectionString, query);


                using (var store = GetDocumentStore())
                {
                    var orderItemCollection = new RootCollection(schemaName, "order_item", "OrderItems")
                    {
                        LinkedCollections = new List <LinkedCollection>
                        {
                            new LinkedCollection(schemaName, "order", RelationType.ManyToOne, new List <string> {
                                "order_id"
                            }, "ParentOrder")
                        }
                    };

                    var orderCollection = new RootCollection(schemaName, "order", "Orders");

                    var db = await GetDocumentDatabaseInstanceFor(store);

                    var settings = new MigrationSettings
                    {
                        Collections = new List <RootCollection>
                        {
                            orderItemCollection,
                            orderCollection
                        }
                    };

                    using (db.DocumentsStorage.ContextPool.AllocateOperationContext(out DocumentsOperationContext context))
                    {
                        var schema = driver.FindSchema();
                        ApplyDefaultColumnNamesMapping(schema, settings);
                        await driver.Migrate(settings, schema, db, context);
                    }

                    using (var session = store.OpenSession())
                    {
                        var orderItem = session.Load <JObject>("OrderItems/10");

                        Assert.NotNull(orderItem);
                        Assert.True(orderItem.ContainsKey("ParentOrder"));
                        Assert.Equal(JTokenType.Null, orderItem["ParentOrder"].Type);
                    }
                }
            }
        }
コード例 #6
0
        public JsPatcher(RootCollection collection, DocumentsOperationContext context)
        {
            if (string.IsNullOrWhiteSpace(collection.Patch))
            {
                return;
            }

            _context = context;
            var patchRequest = new PatchRequest(collection.Patch, PatchRequestType.None);

            scriptRunner = context.DocumentDatabase.Scripts.GetScriptRunner(patchRequest, true, out _runner);
        }
コード例 #7
0
        public async Task CanMigrateSkipOnChild(MigrationProvider provider)
        {
            using (WithSqlDatabase(provider, out var connectionString, out string schemaName, "basic"))
            {
                var driver = DatabaseDriverDispatcher.CreateDriver(provider, connectionString);
                using (var store = GetDocumentStore())
                {
                    var collection = new RootCollection(schemaName, "order_item", "OrderItems");

                    var db = await GetDocumentDatabaseInstanceFor(store);

                    var settings = new MigrationSettings
                    {
                        Collections = new List <RootCollection>
                        {
                            collection
                        }
                    };

                    using (var cts = new CancellationTokenSource(TimeSpan.FromMinutes(1)))
                        using (db.DocumentsStorage.ContextPool.AllocateOperationContext(out DocumentsOperationContext context))
                        {
                            var schema = driver.FindSchema();
                            ApplyDefaultColumnNamesMapping(schema, settings);
                            await driver.Migrate(settings, schema, db, context, token : cts.Token);
                        }

                    using (var session = store.OpenSession())
                    {
                        var orderItem = session.Load <JObject>("OrderItems/10");

                        Assert.NotNull(orderItem);
                        // price and metadata, Id (OrderItems/1)
                        Assert.Equal(3, orderItem.Properties().Count());

                        Assert.Equal("OrderItems", orderItem["@metadata"]["@collection"]);
                        Assert.Equal(110, orderItem["Price"]);
                        Assert.Equal("OrderItems/10", orderItem["Id"]);
                    }

                    var collectionStatistics = store.Maintenance.Send(new GetCollectionStatisticsOperation());
                    Assert.Equal(2, collectionStatistics.CountOfDocuments);
                }
            }
        }
コード例 #8
0
        public async Task CanMigrateSkipOnParent(MigrationProvider provider)
        {
            using (WithSqlDatabase(provider, out var connectionString, out string schemaName, "basic"))
            {
                var driver = DatabaseDriverDispatcher.CreateDriver(provider, connectionString);
                using (var store = GetDocumentStore())
                {
                    var collection = new RootCollection(schemaName, "order", "Orders");

                    var db = await GetDocumentDatabaseInstanceFor(store);

                    var settings = new MigrationSettings
                    {
                        Collections = new List <RootCollection>
                        {
                            collection
                        }
                    };

                    using (db.DocumentsStorage.ContextPool.AllocateOperationContext(out DocumentsOperationContext context))
                    {
                        var schema = driver.FindSchema();
                        ApplyDefaultColumnNamesMapping(schema, settings);
                        await driver.Migrate(settings, schema, db, context);
                    }

                    using (var session = store.OpenSession())
                    {
                        var order = session.Load <JObject>("Orders/1");

                        Assert.NotNull(order);
                        // total and metadata, Id (Orders/1)
                        Assert.Equal(3, order.Properties().Count());

                        Assert.Equal("Orders", order["@metadata"]["@collection"]);
                        Assert.Equal(440, order["Total"]);
                        Assert.Equal("Orders/1", order["Id"]);
                    }

                    var collectionStatistics = store.Maintenance.Send(new GetCollectionStatisticsOperation());
                    Assert.Equal(1, collectionStatistics.CountOfDocuments);
                }
            }
        }
コード例 #9
0
        protected override string GetQueryByPrimaryKey(RootCollection collection, SqlTableSchema tableSchema, string[] primaryKeyValues, out Dictionary <string, object> queryParameters)
        {
            var primaryKeyColumns = tableSchema.PrimaryKeyColumns;

            if (primaryKeyColumns.Count != primaryKeyValues.Length)
            {
                queryParameters = null;
                throw new InvalidOperationException("Invalid parameters count. Primary key has " + primaryKeyColumns.Count + " columns, but " + primaryKeyValues.Length + " values were provided.");
            }

            var    parameters = new Dictionary <string, object>();
            string query      = $"select * from \"{QuoteTable(collection.SourceTableSchema, collection.SourceTableName)}\" where "
                                + string.Join(" and ", primaryKeyColumns.Select((column, idx) =>
            {
                parameters["p" + idx] = ValueAsObject(tableSchema, column, primaryKeyValues, idx);
                return($"\"{QuoteColumn(column)}\" = :p{idx}");
            }));


            queryParameters = parameters;
            return(query);
        }
コード例 #10
0
        public async Task NestedEmbedding(MigrationProvider provider)
        {
            using (WithSqlDatabase(provider, out var connectionString, out string schemaName, "basic"))
            {
                var driver = DatabaseDriverDispatcher.CreateDriver(provider, connectionString);
                using (var store = GetDocumentStore())
                {
                    var collection = new RootCollection(schemaName, "order", "Orders")
                    {
                        NestedCollections = new List <EmbeddedCollection>
                        {
                            new EmbeddedCollection(schemaName, "order_item", RelationType.OneToMany, new List <string> {
                                "order_id"
                            }, "Items")
                            {
                                NestedCollections = new List <EmbeddedCollection>
                                {
                                    new EmbeddedCollection(schemaName, "product", RelationType.ManyToOne, new List <string> {
                                        "product_id"
                                    }, "Product")
                                }
                            }
                        }
                    };

                    var db = await GetDocumentDatabaseInstanceFor(store);

                    var settings = new MigrationSettings
                    {
                        Collections = new List <RootCollection>
                        {
                            collection
                        }
                    };

                    using (db.DocumentsStorage.ContextPool.AllocateOperationContext(out DocumentsOperationContext context))
                    {
                        var schema = driver.FindSchema();
                        ApplyDefaultColumnNamesMapping(schema, settings);
                        await driver.Migrate(settings, schema, db, context);
                    }

                    using (var session = store.OpenSession())
                    {
                        var order = session.Load <JObject>("Orders/1");

                        Assert.NotNull(order);
                        // total and metadata, Id (Orders/1), Items
                        Assert.Equal(4, order.Properties().Count());

                        Assert.Equal("Orders", order["@metadata"]["@collection"]);
                        Assert.Equal(440, order["Total"]);
                        Assert.Equal("Orders/1", order["Id"]);

                        var firstItem = order["Items"][0];
                        Assert.Equal(110, firstItem["Price"]);
                        Assert.Equal(2, firstItem.Count());

                        var firstItemProduct = firstItem["Product"];
                        Assert.NotNull(firstItemProduct);
                        Assert.Equal(1, firstItemProduct.Count());
                        Assert.Equal("Bread", firstItemProduct["Name"]);

                        var secondItem = order["Items"][1];
                        Assert.Equal(330, secondItem["Price"]);
                        Assert.Equal(2, secondItem.Count());

                        var secondItemProduct = secondItem["Product"];
                        Assert.NotNull(secondItemProduct);
                        Assert.Equal(1, secondItemProduct.Count());
                        Assert.Equal("Milk", secondItemProduct["Name"]);
                    }

                    var collectionStatistics = store.Maintenance.Send(new GetCollectionStatisticsOperation());
                    Assert.Equal(1, collectionStatistics.CountOfDocuments);
                }
            }
        }
コード例 #11
0
        public async Task CanMigrateLinkOnChild(MigrationProvider provider)
        {
            using (WithSqlDatabase(provider, out var connectionString, out string schemaName, "basic"))
            {
                var driver = DatabaseDriverDispatcher.CreateDriver(provider, connectionString);
                using (var store = GetDocumentStore())
                {
                    var orderItemCollection = new RootCollection(schemaName, "order_item", "OrderItems")
                    {
                        LinkedCollections = new List <LinkedCollection>
                        {
                            new LinkedCollection(schemaName, "order", RelationType.ManyToOne, new List <string> {
                                "order_id"
                            }, "ParentOrder")
                        }
                    };

                    var orderCollection = new RootCollection(schemaName, "order", "Orders");

                    var db = await GetDocumentDatabaseInstanceFor(store);

                    var settings = new MigrationSettings
                    {
                        Collections = new List <RootCollection>
                        {
                            orderItemCollection,
                            orderCollection
                        }
                    };

                    using (db.DocumentsStorage.ContextPool.AllocateOperationContext(out DocumentsOperationContext context))
                    {
                        var schema = driver.FindSchema();
                        ApplyDefaultColumnNamesMapping(schema, settings);
                        await driver.Migrate(settings, schema, db, context);
                    }

                    using (var session = store.OpenSession())
                    {
                        var orderItem = session.Load <JObject>("OrderItems/10");

                        Assert.NotNull(orderItem);
                        // price and metadata, Id (OrderItems/1), Order with link to Orders/1
                        Assert.Equal(4, orderItem.Properties().Count());

                        Assert.Equal("OrderItems", orderItem["@metadata"]["@collection"]);
                        Assert.Equal(110, orderItem["Price"]);
                        Assert.Equal("Orders/1", orderItem["ParentOrder"]);
                        Assert.Equal("OrderItems/10", orderItem["Id"]);


                        var orderItem2 = session.Load <JObject>("OrderItems/11");

                        Assert.NotNull(orderItem2);
                        // price and metadata, Id (OrderItems/2), Order with link to Orders/1
                        Assert.Equal(4, orderItem2.Properties().Count());

                        Assert.Equal("OrderItems", orderItem2["@metadata"]["@collection"]);
                        Assert.Equal(330, orderItem2["Price"]);
                        Assert.Equal("Orders/1", orderItem2["ParentOrder"]);
                        Assert.Equal("OrderItems/11", orderItem2["Id"]);
                    }

                    var collectionStatistics = store.Maintenance.Send(new GetCollectionStatisticsOperation());
                    Assert.Equal(3, collectionStatistics.CountOfDocuments);
                }
            }
        }
コード例 #12
0
        private void Client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            try
            {
                int count = 0;
                switch (type)
                {
                case SearchType.TRACK:
                    Track singleTrack = JsonConvert.DeserializeObject <Track>(e.Result);
                    if (singleTrack.streamable)
                    {
                        AddItem(singleTrack);
                        ++count;
                    }
                    else
                    {
                        lbxErrorLog.Items.Add(singleTrack.title + " -> track is not streamable and cannot be downloaded!");
                    }
                    break;

                case SearchType.PLAYLIST:
                    RootPlaylist playlist = JsonConvert.DeserializeObject <RootPlaylist>(e.Result);
                    title          = playlist.title;
                    lablTitle.Text = title;
                    foreach (var track in playlist.tracks)
                    {
                        //if (track.streamable)
                        //{
                        //    AddItem(track);
                        //    ++count;
                        //}
                        //else
                        //{
                        //    lbxErrorLog.Items.Add(track.title + " -> track is not streamable and cannot be downloaded!");
                        //}
                        AddItem(track);
                        ++count;
                    }
                    break;

                case SearchType.USERALL:
                    RootCollection collection = JsonConvert.DeserializeObject <RootCollection>(e.Result);
                    foreach (var item in collection.collection)
                    {
                        if (item.type == "track" || item.type == "track-repost")     //(item.type != "playlist" || item.type != "playlist-repost")
                        {
                            if (item.track.streamable)
                            {
                                AddItem(item.track);
                                ++count;
                            }
                            else
                            {
                                lbxErrorLog.Items.Add(item.track.title + " -> track is not streamable and cannot be downloaded!");
                            }
                        }
                    }
                    break;

                case SearchType.SEARCH:
                    Track[] tracklist = JsonConvert.DeserializeObject <Track[]>(e.Result);
                    int     i         = 0;
                    foreach (var track in tracklist)
                    {
                        if (track.streamable)
                        {
                            AddItem(track);
                            ++count;
                        }
                        else
                        {
                            lbxErrorLog.Items.Add(track.title + " -> track is not streamable and cannot be downloaded!");
                        }
                        i++;
                    }
                    break;
                }
                lablTitle.Text = title;
                SetEnabled(true);
                SetInfo(String.Format("{0} Tracks Found!", count));
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }