Пример #1
0
        public void TestGetObjectDateSetValue()
        {
            DateTime dateTime = new DateTime();
            Date     date     = new Date();

            date.year  = 2012;
            date.month = 12;
            date.day   = 2;
            DateValue dateValue = new DateValue();

            dateValue.value = date;

            SetValue setValue = new SetValue();

            setValue.values = new Value[] { dateValue };
            List <object> value = PqlUtilities.GetValue(setValue) as List <object>;

            Assert.AreEqual(1, value.Count);
            Assert.True(value.Contains(date));
        }
        public void TestGetObjectTextSetValue()
        {
            TextValue textValue1 = new TextValue();
            TextValue textValue2 = new TextValue();

            textValue1.value = "value1";
            textValue2.value = "value2";

            SetValue setValue = new SetValue();

            setValue.values = new Value[]
            {
                textValue1,
                textValue2
            };
            List <object> value = PqlUtilities.GetValue(setValue) as List <object>;

            Assert.AreEqual(2, value.Count);
            Assert.True(value.Contains("value1"));
            Assert.True(value.Contains("value2"));
        }
        public void TestGetObjectNumberSetValue()
        {
            NumberValue numberValue1 = new NumberValue();
            NumberValue numberValue2 = new NumberValue();

            numberValue1.value = "1";
            numberValue2.value = "2";

            SetValue setValue = new SetValue();

            setValue.values = new Value[]
            {
                numberValue1,
                numberValue2
            };
            List <object> value = PqlUtilities.GetValue(setValue) as List <object>;

            Assert.AreEqual(2, value.Count);
            Assert.True(value.Contains("1"));
            Assert.True(value.Contains("2"));
        }
        public void TestGetObjectMixedSetValue()
        {
            TextValue textValue = new TextValue();
            DateValue dateValue = new DateValue();

            textValue.value = "value1";
            Date date = new Date();

            date.year       = 2012;
            date.month      = 12;
            date.day        = 2;
            dateValue.value = date;

            SetValue setValue = new SetValue();

            setValue.values = new Value[]
            {
                textValue,
                dateValue
            };
            Assert.Throws <ArgumentException>(() => PqlUtilities.GetValue(setValue));
        }
Пример #5
0
        /// <summary>
        /// Run the code example.
        /// </summary>
        public void Run(DfpUser user)
        {
            // Get the PublisherQueryLanguageService.
            PublisherQueryLanguageService pqlService =
                (PublisherQueryLanguageService)user.GetService(
                    DfpService.v201702.PublisherQueryLanguageService);

            // Create statement to select recent changes. Change_History only supports ordering by
            // descending ChangeDateTime. Offset is not supported. To page, use the change ID of the
            // earliest change as a pagination token. A date time range is required
            // when querying this table.
            System.DateTime endDateTime   = System.DateTime.Now;
            System.DateTime startDateTime = endDateTime.AddDays(-1);

            StatementBuilder statementBuilder = new StatementBuilder()
                                                .Select("Id, ChangeDateTime, EntityId, EntityType, Operation, UserId")
                                                .From("Change_History")
                                                .Where("ChangeDateTime < :endDateTime AND ChangeDateTime > :startDateTime")
                                                .OrderBy("ChangeDateTime DESC")
                                                .AddValue("startDateTime",
                                                          DateTimeUtilities.FromDateTime(startDateTime, "America/New_York"))
                                                .AddValue("endDateTime",
                                                          DateTimeUtilities.FromDateTime(endDateTime, "America/New_York"))
                                                .Limit(StatementBuilder.SUGGESTED_PAGE_LIMIT);

            int        resultSetSize = 0;
            List <Row> allRows       = new List <Row>();
            ResultSet  resultSet;

            do
            {
                resultSet = pqlService.select(statementBuilder.ToStatement());

                if (resultSet.rows != null && resultSet.rows.Length > 0)
                {
                    // Get the earliest change ID in the result set.
                    Row    lastRow = resultSet.rows[resultSet.rows.Length - 1];
                    string lastId  = (string)PqlUtilities.GetValue(lastRow.values[0]);

                    // Collect all changes from each page.
                    allRows.AddRange(resultSet.rows);

                    // Display results.
                    Console.WriteLine(PqlUtilities.ResultSetToString(resultSet));

                    // Use the earliest change ID in the result set to page.
                    statementBuilder
                    .Where("Id < :id AND ChangeDateTime < :endDateTime AND ChangeDateTime > :startDateTime")
                    .AddValue("id", lastId);
                }
                resultSetSize = resultSet.rows == null ? 0 : resultSet.rows.Length;
            } while (resultSetSize == StatementBuilder.SUGGESTED_PAGE_LIMIT);

            Console.WriteLine("Number of results found: " + allRows.Count);

            // Optionally, save all rows to a CSV.
            // Get a string array representation of the data rows.
            resultSet.rows = allRows.ToArray();
            List <String[]> rows = PqlUtilities.ResultSetToStringArrayList(resultSet);

            // Write the contents to a csv file.
            CsvFile file = new CsvFile();

            file.Headers.AddRange(rows[0]);
            file.Records.AddRange(rows.GetRange(1, rows.Count - 1).ToArray());
            file.Write("recent_changes_" + this.GetTimeStamp() + ".csv");
        }