/// <summary>
        ///    Converts the specified options to an XML document with
        ///    filter options as embedded JSON.
        /// </summary>
        /// <param name="options">The options.</param>
        public string Convert(ScannerOptions options)
        {
            var xml = new XElement(_scannerName);

            if (!string.IsNullOrEmpty(options.StartRow))
            {
                xml.Add(new XAttribute(_startRowName, _codec.Encode(options.StartRow)));
            }

            if (!string.IsNullOrEmpty(options.StopRow))
            {
                xml.Add(new XAttribute(_stopRowName, _codec.Encode(options.StopRow)));
            }

            if (options.BatchSize.HasValue)
            {
                xml.Add(new XAttribute(_batchSizeName, options.BatchSize));
            }

            if (options.Filter != null)
            {
                xml.Add(new XElement(_filterName)
                {
                    Value = options.Filter.ConvertToJson(_codec).ToString()
                });
            }

            return xml.ToString();
        }
        /// <summary>
        /// Builds a scanner creation URI.
        /// </summary>
        /// <param name="scannerOptions">Name of the table.</param>
        public string BuildScannerCreate(ScannerOptions scannerOptions)
        {
            if (scannerOptions == null || string.IsNullOrEmpty(scannerOptions.TableName))
            {
                throw new ArgumentException(Resources.ResourceBuilder_MinimumForScannerNotMet);
            }

            return(new StringBuilder(scannerOptions.TableName).AppendFormat(_appendSegmentFormat, _scanner).ToString());
        }
Exemple #3
0
        IScanner ProcessCreateScannerResponse(IRestResponse response, ScannerOptions options)
        {
            string scannerLocation =
                response.Headers.Where(header => header.Type == ParameterType.HttpHeader && header.Name == RestConstants.LocationHeader)
                .Select(header => header.Value.ToString())
                .FirstOrDefault();

            return(string.IsNullOrEmpty(scannerLocation) ? null : new Scanner(options.TableName, new Uri(scannerLocation).PathAndQuery.Trim('/'), this));
        }
Exemple #4
0
        /// <summary>
        ///   Creates the scanner.
        /// </summary>
        /// <param name="options">The options.</param>
        public virtual IScanner CreateScanner(ScannerOptions options)
        {
            string        resource = ResourceBuilder.BuildScannerCreate(options);
            IRestResponse response = SendRequest(Method.PUT, resource, HBaseMimeTypes.Xml, content: ScannerConverter.Convert(options));

            ErrorProvider.ThrowIfStatusMismatch(response, HttpStatusCode.Created);
            string scannerLocation =
                response.Headers.Where(header => header.Type == ParameterType.HttpHeader && header.Name == RestConstants.LocationHeader)
                .Select(header => header.Value.ToString())
                .FirstOrDefault();

            return(string.IsNullOrEmpty(scannerLocation) ? null : new Scanner(options.TableName, new Uri(scannerLocation).PathAndQuery.Trim('/'), this));
        }
Exemple #5
0
        private static void DemonstrateScanning(IStargate stargate)
        {
            // scanning rows:
            var options = new ScannerOptions
            {
                TableName = "access-logs",
                StartRow = "elton|jericho|201510",
                StopRow = "elton|jericho|x",
            };
            var scanner = stargate.CreateScanner(options);
            var totalUsage = 0;
            while (scanner.MoveNext())
            {
                var cells = scanner.Current;
                foreach (var cell in cells)
                {
                    totalUsage += int.Parse(cell.Value);
                }
            }
            Console.WriteLine("Sum from row scan: " + totalUsage);

            // scanning with a filter:
            options = new ScannerOptions
            {
                TableName = "access-logs",
                StartRow = "elton|jericho|201510",
                StopRow = "elton|jericho|x",
                Filter = new ColumnPrefixFilter("11")
            };
            scanner = stargate.CreateScanner(options);
            totalUsage = 0;
            while (scanner.MoveNext())
            {
                var cells = scanner.Current;
                foreach (var cell in cells)
                {
                    totalUsage += int.Parse(cell.Value);
                }
            }
            Console.WriteLine("Sum from filtered row scan: " + totalUsage);
        }
        /// <summary>
        /// Builds a scanner creation URI.
        /// </summary>
        /// <param name="scannerOptions">Name of the table.</param>
        public string BuildScannerCreate(ScannerOptions scannerOptions)
        {
            if (scannerOptions == null || string.IsNullOrEmpty(scannerOptions.TableName))
            {
                throw new ArgumentException(Resources.ResourceBuilder_MinimumForScannerNotMet);
            }

            return new StringBuilder(scannerOptions.TableName).AppendFormat(_appendSegmentFormat, _scanner).ToString();
        }
Exemple #7
0
 public virtual Task <IScanner> CreateScannerAsync(ScannerOptions options)
 {
     return(Task.Run(() => CreateScanner(options)));
 }
Exemple #8
0
		/// <summary>
		/// Creates the scanner.
		/// </summary>
		/// <param name="options">The options.</param>
		public IScanner CreateScanner(ScannerOptions options)
		{
			string resource = _resourceBuilder.BuildScannerCreate(options);
			IRestResponse response = SendRequest(Method.PUT, resource, HBaseMimeTypes.Xml, content: _scannerConverter.Convert(options));
			_errorProvider.ThrowIfStatusMismatch(response, HttpStatusCode.Created);
			string scannerLocation = response.Headers.Where(header => header.Type == ParameterType.HttpHeader && header.Name == RestConstants.LocationHeader)
				.Select(header => header.Value.ToString())
				.FirstOrDefault();

			return string.IsNullOrEmpty(scannerLocation) ? null : new Scanner(options.TableName, new Uri(scannerLocation).PathAndQuery.Trim('/'), this);
		}
Exemple #9
0
        T CreateScannerInternal <T>(ScannerOptions options, Func <Method, string, string, string, string, HttpStatusCode[], T> action)
        {
            string resource = ResourceBuilder.BuildScannerCreate(options);

            return(action(Method.PUT, resource, HBaseMimeTypes.Xml, null, ScannerConverter.Convert(options), new[] { HttpStatusCode.Created }));
        }
Exemple #10
0
 /// <summary>
 ///   Creates the scanner.
 /// </summary>
 /// <param name="options">The options.</param>
 public virtual IScanner CreateScanner(ScannerOptions options)
 {
     return(ProcessCreateScannerResponse(CreateScannerInternal(options, SendRequest), options));
 }
Exemple #11
0
 /// <summary>
 ///   Creates the scanner.
 /// </summary>
 /// <param name="options">The options.</param>
 public virtual async Task <IScanner> CreateScannerAsync(ScannerOptions options)
 {
     return(ProcessCreateScannerResponse(await CreateScannerInternal(options, SendRequestAsync), options));
 }