private QvxDataRow InsertRow(dynamic sourceRow, QvxTable tableDef, dynamic parentData) { QvxDataRow destRow = new QvxDataRow(); foreach (QvxField fieldDef in tableDef.Fields) { dynamic originalDef = helper.ActiveFields[fieldDef.FieldName]; dynamic sourceField; if (originalDef.path.ToString().IndexOf("{parent}") == -1) { sourceField = GetSourceValue(sourceRow, originalDef.path.ToString(), originalDef.type.ToString()); } else { String parentPath = originalDef.path.ToString(); parentPath = parentPath.Replace("{parent}.", ""); sourceField = GetSourceValue(parentData, parentPath, originalDef.type.ToString()); } if (sourceField != null) { destRow[fieldDef] = sourceField.ToString(); } } recordsLoaded++; return(destRow); }
public static QvxTable ConvertTable(ResultTable table) { var resultTable = new QvxTable() { TableName = table.Name }; var fields = new List <QvxField>(); foreach (var header in table.Headers) { fields.Add(new QvxField(header.Name, QvxFieldType.QVX_TEXT, QvxNullRepresentation.QVX_NULL_FLAG_SUPPRESS_DATA, FieldAttrType.ASCII)); } var rows = new List <QvxDataRow>(); QvxDataRow newRow = null; foreach (var row in table.Rows) { if (row.IsFirstRow) { newRow = new QvxDataRow(); } var field = fields.FirstOrDefault(f => f.FieldName == row.Header); newRow[field] = row.Value; if (row.IsLastRow) { rows.Add(newRow); } } resultTable.Fields = fields.ToArray(); resultTable.GetRows = () => { return(rows); }; return(resultTable); }
private QvxDataRow MakeEntry(int i, QvxTable table) { var row = new QvxDataRow(); row[table.Fields[0]] = $"f1 {i}"; row[table.Fields[1]] = i; return(row); }
private QvxDataRow MakeEntry(DataRow dr, QvxTable table) { var row = new QvxDataRow(); foreach (DataColumn dc in dr.Table.Columns) { row[table[dc.ColumnName]] = dr[dc].ToString(); } return(row); }
/// <summary> /// Return all rows in the QvxTable. /// </summary> /// <returns>IEnumerable with all QvxDataRow elements of m_Table member.</returns> private IEnumerable <QvxDataRow> GetRows() { var connectionString = new StringBuilder(); // The default return fields for a friend is id and name. We need more information for the QlikView example application. connectionString.Append("fields="); var supportedFields = Enum.GetNames(typeof(EntertainmentFields)); foreach (var field in supportedFields) { connectionString.Append(field); if (field != supportedFields.Last()) { connectionString.Append(","); } } var connectionData = _facebookConnection.LoadConnectionData(_tableName, connectionString.ToString()); var rows = new List <QvxDataRow>(); try { foreach (var item in connectionData["data"]) { var row = new QvxDataRow(); for (var i = 0; i < supportedFields.Length; i++) { var field = supportedFields[i]; var tableIndex = _facebookConnection.IndexOfTable(_tableName); try { row[_facebookConnection.MTables[tableIndex].Fields[i]] = item[field]; } catch (KeyNotFoundException) { // If the field does not exist set it to empty (the person has not specified the information) row[_facebookConnection.MTables[tableIndex].Fields[i]] = ""; } } rows.Add(row); } } catch (Exception ex) { QvxLog.Log(QvxLogFacility.Application, QvxLogSeverity.Error, String.Format("EntertainmentTable GetRows for {0} :{1}", _tableName, ex.Message)); // Forward the error message to QlikView throw; } return(rows); }
public static QvxTable.GetRowsHandler ListBucketsRows(QvxTable table, IDictionary <string, string> MParameters) { RegionEndpoint region = null; AmazonS3Client s3Client = null; string GCPProjectId = ""; List <QvxDataRow> rows = new List <QvxDataRow>(); MParameters.TryGetValue("access-key", out string accessKey); MParameters.TryGetValue("secret-key-encrypted", out string secretKeyEncrypted); MParameters.TryGetValue("aws-region", out string awsRegion); string secretKey = EncryptDecrypt.DecryptString(secretKeyEncrypted); return(() => { try { region = RegionEndpoint.GetBySystemName("eu-west-2"); s3Client = new AmazonS3Client(accessKey, secretKey, region); } catch (Exception ex) { QvxLog.Log(QvxLogFacility.Application, QvxLogSeverity.Error, ex.Message); throw new QvxPleaseSendReplyException(QvxResult.QVX_UNKNOWN_COMMAND, "Error getting the data from Google Storage"); } ListBucketsResponse response = s3Client.ListBuckets(); int length = 0; foreach (S3Bucket bucket in response.Buckets) { length++; } if (length == 0) { throw new QvxPleaseSendReplyException(QvxResult.QVX_UNKNOWN_COMMAND, String.Format("No buckets found for project {0}", GCPProjectId)); } else { foreach (S3Bucket bucket in response.Buckets) { var row = new QvxDataRow(); row[table.Fields[0]] = bucket.BucketName.ToString(); row[table.Fields[1]] = bucket.CreationDate.ToString(); rows.Add(row); } } return rows; }); }
public static QvxTable.GetRowsHandler ListBucketObjectsRows(IDictionary <string, string> fields, QvxTable table, IDictionary <string, string> MParameters) { return(() => { List <QvxDataRow> rows = new List <QvxDataRow>(); RegionEndpoint region = null; AmazonS3Client s3Client = null; ListObjectsResponse response = null; MParameters.TryGetValue("access-key", out string accessKey); MParameters.TryGetValue("secret-key-encrypted", out string secretKeyEncrypted); MParameters.TryGetValue("aws-region", out string awsRegion); string secretKey = EncryptDecrypt.DecryptString(secretKeyEncrypted); fields.TryGetValue("bucketname", out string bucketName); try { region = RegionEndpoint.GetBySystemName(awsRegion); s3Client = new AmazonS3Client(accessKey, secretKey, region); ListObjectsRequest request = new ListObjectsRequest { BucketName = bucketName }; response = s3Client.ListObjects(request); foreach (S3Object bucketObject in response.S3Objects) { var row = new QvxDataRow(); row[table.Fields[0]] = bucketObject.BucketName?.ToString() ?? ""; row[table.Fields[1]] = bucketObject.ETag?.ToString() ?? ""; row[table.Fields[2]] = bucketObject.Key?.ToString() ?? ""; row[table.Fields[3]] = bucketObject.LastModified.ToString(); row[table.Fields[4]] = bucketObject.Owner.DisplayName?.ToString() ?? ""; row[table.Fields[5]] = bucketObject.Owner.Id?.ToString() ?? ""; row[table.Fields[6]] = bucketObject.Size; row[table.Fields[7]] = bucketObject.StorageClass.Value.ToString() ?? ""; rows.Add(row); } } catch (Exception ex) { QvxLog.Log(QvxLogFacility.Application, QvxLogSeverity.Error, ex.Message); throw new QvxPleaseSendReplyException(QvxResult.QVX_UNKNOWN_COMMAND, "Error getting the data from AWS S3"); } QvxLog.Log(QvxLogFacility.Application, QvxLogSeverity.Error, rows.Count.ToString()); return rows; }); }
private QvxDataRow MakeEntryW(Wallet wallet, QvxTable table) { var row = new QvxDataRow(); row[table.Fields[0]] = wallet.id; row[table.Fields[1]] = wallet.name; row[table.Fields[2]] = wallet.provider.id; row[table.Fields[3]] = wallet.provider.name; row[table.Fields[4]] = wallet.asset; row[table.Fields[5]] = wallet.balance; return(row); }
private QvxDataRow MakeEntryA(Address address, QvxTable table) { var row = new QvxDataRow(); row[table.Fields[0]] = address.id; row[table.Fields[1]] = address.name; row[table.Fields[2]] = address.address; row[table.Fields[3]] = address.asset; row[table.Fields[4]] = address.balance; row[table.Fields[5]] = address.updated_at; row[table.Fields[6]] = address.active; return(row); }
public static QvxTable.GetRowsHandler DownloadObjectRows(QvxTable table) { return(() => { List <QvxDataRow> rows = new List <QvxDataRow>(); var row = new QvxDataRow(); row[table.Fields[0]] = "Dummy Value. This table can be dropped from the data model."; rows.Add(row); return rows; }); }
private QvxDataRow MakeEntry(EventLogEntry evl, QvxTable table) { var row = new QvxDataRow(); row[table.Fields[0]] = evl.Category; row[table.Fields[1]] = evl.EntryType.ToString(); row[table.Fields[2]] = evl.Message; row[table.Fields[3]] = evl.CategoryNumber.ToString(); row[table.Fields[4]] = evl.Index.ToString(); row[table.Fields[5]] = evl.MachineName; row[table.Fields[6]] = evl.Source; row[table.Fields[7]] = evl.TimeGenerated.ToString(); return row; }
private QvxDataRow MakeEntry(DataRow dr, QvxTable table) { QvxLog.Log(QvxLogFacility.Application, QvxLogSeverity.Notice, "MakeEntry()"); var row = new QvxDataRow(); foreach (DataColumn dc in dr.Table.Columns) { row[table[dc.ColumnName]] = dr[dc].ToString(); } return(row); }
private IEnumerable <QvxDataRow> GetData() { QvxLog.Log(QvxLogFacility.Application, QvxLogSeverity.Notice, "GetData() avg"); QvxTable table = FindTable(go_qvTableName, MTables); if (table == null) { yield return(null); } Type oType = Type.GetTypeFromProgID("V83.COMConnector"); using (Object1C lo_v8 = (oType == null) ? null : new Object1C(Activator.CreateInstance(oType))) { if (lo_v8 == null) { Debug.WriteLine("Невозможно создать объект типа V83.COMConnector"); QvxLog.Log(QvxLogFacility.Application, QvxLogSeverity.Error, "Невозможно создать объект типа V83.COMConnector"); yield return(new QvxDataRow()); } /*соединяемся с базой данных*/ using (Object1C lo_connection = lo_v8.ExecuteFunction("Connect", new object[] { go_connString })) { if (lo_connection == null) { Debug.WriteLine("Невозможно подключиться к системе: " + go_connString); QvxLog.Log(QvxLogFacility.Application, QvxLogSeverity.Error, "Невозможно подключиться к системе: " + go_connString); yield return(new QvxDataRow()); } /*получаем результат запроса, возвращаем построчно*/ using (Object1C lo_query = lo_connection.ExecuteFunctionEx("NewObject", new object[] { "Query" })) { lo_query.SetProperty("Текст", new object[] { go_query }); using (Object1C lo_queryResult = lo_query.ExecuteFunctionEx("Выполнить")) { using (Object1C lo_queryResSelection = lo_queryResult.ExecuteFunctionEx("Выбрать")) { while ((bool)lo_queryResSelection.ExecuteFunctionEx("Следующий").CurrentObject) { QvxDataRow lo_row = new QvxDataRow(); foreach (var tField in table.Fields) { lo_row[tField] = lo_queryResSelection.GetPropertyEx(tField.FieldName).ToString(); } yield return(lo_row); } } } } } } }
private QvxDataRow MakeEntry(EventLogEntry evl, QvxTable table) { var row = new QvxDataRow(); row[table.Fields[0]] = evl.Category; row[table.Fields[1]] = evl.EntryType.ToString(); row[table.Fields[2]] = evl.Message; row[table.Fields[3]] = evl.CategoryNumber.ToString(); row[table.Fields[4]] = evl.Index.ToString(); row[table.Fields[5]] = evl.MachineName; row[table.Fields[6]] = evl.Source; row[table.Fields[7]] = evl.TimeGenerated.ToString(); return(row); }
private QvxDataRow MakeEntryC(RootObjectC cal, QvxTable table) { var row = new QvxDataRow(); row[table.Fields[0]] = cal.method; row[table.Fields[1]] = cal.asset; row[table.Fields[2]] = cal.period; row[table.Fields[3]] = cal.status.ready; row[table.Fields[4]] = cal.total_gains.long_term; row[table.Fields[5]] = cal.total_gains.total; row[table.Fields[6]] = cal.total_gains.unrealized; row[table.Fields[7]] = cal.taggable_totals.drinks; //row[table.Fields[8]] = cal.categories_totals.accounts_payable; //row[table.Fields[9]] = cal.categories_totals.accounts_receivable; return(row); }
private IEnumerable <QvxDataRow> GetKills() { string directory; this.MParameters.TryGetValue("directory", out directory); var files = Directory.GetFiles(directory, "*.dem", SearchOption.AllDirectories); foreach (var file in files) { var proc = new Process() { StartInfo = new ProcessStartInfo() { FileName = "parser.exe", Arguments = "-demoPath \"" + file + "\"", UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true } }; proc.Start(); QvxLog.Log(QvxLogFacility.Application, QvxLogSeverity.Notice, "Parsing demo " + file); while (!proc.StandardOutput.EndOfStream) { var rawLine = proc.StandardOutput.ReadLine(); var line = rawLine.Split('\t'); var row = new QvxDataRow(); var table = FindTable("Kills", MTables); row[table.Fields[0]] = line[0]; row[table.Fields[1]] = line[1]; row[table.Fields[2]] = line[2]; row[table.Fields[3]] = line[3]; row[table.Fields[4]] = line[4]; row[table.Fields[5]] = line[5]; QvxLog.Log(QvxLogFacility.Application, QvxLogSeverity.Notice, "Line info: " + rawLine); yield return(row); } } /*foreach (var ev1 in ev.Entries) { * yield return MakeEntry(ev1 as EventLogEntry, FindTable("Kills", MTables)); * }*/ }
private QvxDataRow MakeEntry(XmlNode rowNode, QvxTable table) { var row = new QvxDataRow(); foreach (XmlNode field_node in rowNode.ChildNodes) { switch (field_node.Name.ToLower()) { case "billtocode": row[table.Fields[0]] = field_node.InnerText; break; case "billtodesc": row[table.Fields[1]] = field_node.InnerText; break; case "billtoeffdt": row[table.Fields[2]] = field_node.InnerText; break; case "billtoexpdt": row[table.Fields[3]] = field_node.InnerText; break; } } //row[table.Fields[0]] = "CODE VALUE 1"; //row[table.Fields[1]] = "CODE DESCRIPTION 1"; //row[table.Fields[2]] = DateTime.Now.ToString(); //row[table.Fields[3]] = DateTime.Now.ToString(); //row[table.Fields[0]] = evl.Category; //row[table.Fields[1]] = evl.EntryType.ToString(); //row[table.Fields[2]] = evl.Message; //row[table.Fields[3]] = evl.CategoryNumber.ToString(); //row[table.Fields[4]] = evl.Index.ToString(); //row[table.Fields[5]] = evl.MachineName; //row[table.Fields[6]] = evl.Source; //row[table.Fields[7]] = evl.TimeGenerated.ToString(); return(row); }
private QvxDataRow MakeEntryT(Transaction transaction, QvxTable table) { var row = new QvxDataRow(); row[table.Fields[0]] = transaction.id; row[table.Fields[1]] = transaction.asset; row[table.Fields[2]] = transaction.amount; row[table.Fields[3]] = transaction.fair_value; row[table.Fields[4]] = transaction.spot_value; row[table.Fields[5]] = transaction.total_value; row[table.Fields[6]] = transaction.note; row[table.Fields[7]] = transaction.destination; row[table.Fields[8]] = transaction.date; row[table.Fields[9]] = transaction.created_at; row[table.Fields[10]] = transaction.address_id; row[table.Fields[11]] = transaction.wallet_id; row[table.Fields[12]] = transaction.tax_type; return(row); }
private QvxDataRow MakeEntryD(Trade trade, QvxTable table) { var row = new QvxDataRow(); row[table.Fields[0]] = trade.id; row[table.Fields[1]] = trade.asset1; row[table.Fields[2]] = trade.amount1; row[table.Fields[3]] = trade.asset2; row[table.Fields[4]] = trade.amount2; row[table.Fields[5]] = trade.rate; row[table.Fields[6]] = trade.total_value; row[table.Fields[7]] = trade.note; row[table.Fields[8]] = trade.direction; row[table.Fields[9]] = trade.datetime; row[table.Fields[10]] = trade.created_at; row[table.Fields[11]] = trade.provider; row[table.Fields[12]] = trade.provider_id; return(row); }
private IEnumerable <QvxDataRow> GetPowerShellResult() { var result = new List <QvxDataRow>(); try { foreach (DataRow dataRow in internalData.Rows) { var row = new QvxDataRow(); for (int i = 0; i < dataRow.ItemArray.Length; i++) { row[fields[i]] = dataRow[i].ToString(); } result.Add(row); } } catch { } return(result); }
private QvxDataRow MakeEntryL(Matched match, QvxTable table) { var row = new QvxDataRow(); row[table.Fields[0]] = match.id; row[table.Fields[1]] = match.calculation_method; row[table.Fields[2]] = match.asset; row[table.Fields[3]] = match.user_id; row[table.Fields[4]] = match.created_at; row[table.Fields[5]] = match.updated_at; row[table.Fields[6]] = match.calculation_started_at; //row[table.Fields[7]] = match.unsold_lots; //row[table.Fields[8]] = match.invalidated_at; //row[table.Fields[0]] = lot.date; //row[table.Fields[1]] = lot.lot_remaining; //row[table.Fields[2]] = lot.total_value; //row[table.Fields[3]] = lot.fee; //row[table.Fields[4]] = lot.fair_value; //row[table.Fields[5]] = lot.id; //row[table.Fields[6]] = lot.gain_type; //row[table.Fields[7]] = lot.amount; //row[table.Fields[8]] = lot.total_sale_value; //row[table.Fields[9]] = lot.value_per_coin; //row[table.Fields[10]] = lot.amount_remaining; //row[table.Fields[11]] = lot.tax_type; //row[table.Fields[12]] = lot.net_gain; //row[table.Fields[13]] = lot.amount_sold; //row[table.Fields[14]] = lot.spot_value; //row[table.Fields[15]] = lot.cost_basis_per_coin; //row[table.Fields[16]] = lot.asset; //row[table.Fields[17]] = lot.date_sold; //row[table.Fields[18]] = lot.sale_value_per_coin; //row[table.Fields[19]] = lot.sale_id; //row[table.Fields[20]] = lot.total_cost_basis; return(row); }
private async Task <QvxDataRow> MakeEntry(string id, EntityModel model, QvxTable table) { var row = new QvxDataRow(); var doc = await _bucket.GetAsync <string>(id); Dictionary <string, object> raw = null; try { raw = JsonConvert.DeserializeObject <Dictionary <string, object> >(doc.Value); } catch (Exception) { return(null); } row[table.Fields[0]] = model.Name; for (int i = 1; i < table.Fields.Length; i++) { row[table.Fields[i]] = raw[table.Fields[i].FieldName].ToString(); } return(row); }
private async Task<QvxDataRow> MakeEntry(string id, EntityModel model, QvxTable table) { var row = new QvxDataRow(); var doc = await _bucket.GetAsync<string>(id); Dictionary<string, object> raw = null; try { raw = JsonConvert.DeserializeObject<Dictionary<string, object>>(doc.Value); } catch (Exception) { return null; } row[table.Fields[0]] = model.Name; for (int i = 1; i < table.Fields.Length; i++ ) row[table.Fields[i]] = raw[table.Fields[i].FieldName].ToString(); return row; }
private QvxTable GetData(ScriptCode script, string username, string password, string workdir, string remoteName) { var actualWorkDir = Environment.CurrentDirectory; var useRemote = IsRemoteComputer(remoteName); if (String.IsNullOrWhiteSpace(workdir)) { workdir = Path.GetDirectoryName(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)); } if (Directory.Exists(workdir)) { try { Environment.CurrentDirectory = workdir; } catch (Exception ex) { logger.Error(ex, $"The working dir \"{workdir}\" not set."); } } var resultTable = new QvxTable(); resultTable.TableName = script.TableName; try { var Errors = new StringBuilder(); if (String.IsNullOrWhiteSpace(script.Code)) { return(resultTable); } using (var powerShell = PowerShell.Create()) { var scriptBlock = ScriptBlock.Create(script.Code); if (useRemote) { powerShell.AddCommand("Invoke-Command"); } else { powerShell.AddCommand("Start-Job"); } NTAccount accountInfo = null; if (username != "" && password != "") { // if username & password are defined -> add as credentials var secPass = new SecureString(); Array.ForEach(password.ToArray(), secPass.AppendChar); powerShell.AddParameter("Credential", new PSCredential(username, secPass)); accountInfo = new NTAccount(username); if (!useRemote && !UserSystemCheck(accountInfo)) { accountInfo = null; } } else { if (useRemote == true) { logger.Warn("A remote connection without user credentials is not allowed."); return(resultTable); } if (!IsQlikDesktopApp) { // check signature var signature = script.GetSignature(); if (Manager == null) { logger.Warn("No Certificate file found or no access."); return(resultTable); } if (!Manager.IsValidPublicKey(script.Code, signature)) { logger.Warn("The signature could not be valid."); return(resultTable); } } } powerShell.AddParameter("ScriptBlock", scriptBlock); if (script.Parameters.Count > 0) { powerShell.AddParameter("ArgumentList", script.Parameters); } if (useRemote) { powerShell.AddParameter("ComputerName", remoteName); } else { // Wait for the Job to finish powerShell.AddCommand("Wait-Job"); // Give all results and not the jobs back powerShell.AddCommand("Receive-Job"); } using (var windowsGrandAccess = new WindowsGrandAccess(accountInfo, WindowsGrandAccess.WindowStationAllAccess, WindowsGrandAccess.DesktopRightsAllAccess)) { using (var interactiveUser = new InteractiveUser(accountInfo, IsQlikDesktopApp)) { // Run PowerShell var results = powerShell.Invoke(); foreach (var error in powerShell.Streams.Error.ReadAll()) { logger.Error(error.Exception, "PowerShell Error"); } if (Errors.Length > 0) { throw new Exception($"Powershell-Error: {Errors.ToString()}"); } // fill QvxTable var fields = new List <QvxField>(); var rows = new List <QvxDataRow>(); foreach (var psObject in results) { var row = new QvxDataRow(); foreach (var p in psObject.Properties) { if (p.Name != "PSComputerName" && p.Name != "RunspaceId" && p.Name != "PSShowComputerName") { var field = new QvxField(p.Name, QvxFieldType.QVX_TEXT, QvxNullRepresentation.QVX_NULL_FLAG_SUPPRESS_DATA, FieldAttrType.ASCII); if (fields.SingleOrDefault(s => s.FieldName == field.FieldName) == null) { fields.Add(field); } row[field] = (p.Value ?? "").ToString(); } } rows.Add(row); } resultTable.Fields = fields.ToArray(); resultTable.GetRows = () => { return(rows); }; } } } } catch (Exception ex) { logger.Error(ex, "The PowerShell script can not be executed."); return(resultTable); } finally { Environment.CurrentDirectory = actualWorkDir; } return(resultTable); }
public static QvxTable.GetRowsHandler ListBucketsRows(QvxTable table, string jsonCredentials) { string GCPProjectId = ""; try { var JSONObj = new JavaScriptSerializer().Deserialize <Dictionary <string, string> >(jsonCredentials); GCPProjectId = JSONObj["project_id"]; } catch (Exception ex) { QvxLog.Log(QvxLogFacility.Application, QvxLogSeverity.Error, ex.Message); throw new QvxPleaseSendReplyException(QvxResult.QVX_UNKNOWN_COMMAND, "Error parsing the JSON credentials file."); } return(() => { List <QvxDataRow> rows = new List <QvxDataRow>(); GoogleCredential credential = null; StorageClient storage = null; Google.Api.Gax.PagedEnumerable <Buckets, Bucket> buckets = null; try { credential = GoogleCredential.FromJson(jsonCredentials); storage = StorageClient.Create(credential); buckets = storage.ListBuckets(GCPProjectId); } catch (Exception ex) { QvxLog.Log(QvxLogFacility.Application, QvxLogSeverity.Error, ex.Message); throw new QvxPleaseSendReplyException(QvxResult.QVX_UNKNOWN_COMMAND, "Error getting the data from Google Storage"); } int length = 0; foreach (Bucket bucket in buckets) { length++; } if (length == 0) { throw new QvxPleaseSendReplyException(QvxResult.QVX_UNKNOWN_COMMAND, String.Format("No buckets found for project {0}", GCPProjectId)); } else { foreach (Bucket bucket in buckets) { var row = new QvxDataRow(); row[table.Fields[0]] = bucket.Acl?.ToString() ?? ""; row[table.Fields[1]] = bucket.Billing?.ToString() ?? ""; row[table.Fields[2]] = bucket.Cors?.ToString() ?? ""; row[table.Fields[3]] = bucket.ETag?.ToString() ?? ""; row[table.Fields[4]] = bucket.Encryption?.ToString() ?? ""; row[table.Fields[5]] = bucket.Id?.ToString() ?? ""; row[table.Fields[6]] = bucket.Kind?.ToString() ?? ""; row[table.Fields[7]] = bucket.Labels?.ToString() ?? ""; row[table.Fields[8]] = bucket.Lifecycle?.ToString() ?? ""; row[table.Fields[9]] = bucket.Location?.ToString() ?? ""; row[table.Fields[10]] = bucket.Logging?.ToString() ?? ""; row[table.Fields[11]] = bucket.Name?.ToString() ?? ""; row[table.Fields[12]] = bucket.Owner?.ToString() ?? ""; rows.Add(row); } } return rows; }); }
public static QvxTable.GetRowsHandler ListBucketObjectsRows(IDictionary <string, string> fields, QvxTable table, string jsonCredentials) { return(() => { List <QvxDataRow> rows = new List <QvxDataRow>(); GoogleCredential credential = null; StorageClient storage = null; Google.Api.Gax.PagedEnumerable <Objects, Google.Apis.Storage.v1.Data.Object> bucketObjects = null; fields.TryGetValue("bucketname", out string bucketName); if (String.IsNullOrEmpty(bucketName)) { throw new QvxPleaseSendReplyException(QvxResult.QVX_UNKNOWN_COMMAND, String.Format("Missing required param: {0}", "BucketName")); } try { credential = GoogleCredential.FromJson(jsonCredentials); storage = StorageClient.Create(credential); bucketObjects = storage.ListObjects(bucketName, null, null); foreach (Google.Apis.Storage.v1.Data.Object bucketObject in bucketObjects) { var row = new QvxDataRow(); row[table.Fields[0]] = bucketObject.Acl?.ToString() ?? ""; row[table.Fields[1]] = bucketObject.Bucket?.ToString() ?? ""; row[table.Fields[2]] = bucketObject.CacheControl?.ToString() ?? ""; row[table.Fields[3]] = bucketObject.ComponentCount ?? 0; row[table.Fields[4]] = bucketObject.ContentDisposition?.ToString() ?? ""; row[table.Fields[5]] = bucketObject.ContentEncoding?.ToString() ?? ""; row[table.Fields[6]] = bucketObject.ContentLanguage?.ToString() ?? ""; row[table.Fields[7]] = bucketObject.Crc32c.ToString() ?? ""; row[table.Fields[8]] = bucketObject.ETag?.ToString() ?? ""; row[table.Fields[9]] = bucketObject.Generation?.ToString() ?? ""; row[table.Fields[10]] = bucketObject.Id?.ToString() ?? ""; row[table.Fields[11]] = bucketObject.Kind?.ToString() ?? ""; row[table.Fields[12]] = bucketObject.KmsKeyName?.ToString() ?? ""; row[table.Fields[13]] = bucketObject.Md5Hash?.ToString() ?? ""; row[table.Fields[14]] = bucketObject.MediaLink?.ToString() ?? ""; row[table.Fields[15]] = ""; // bucketObject.Metadata?.ToString() ?? ""; row[table.Fields[16]] = bucketObject.Metageneration ?? 0; row[table.Fields[17]] = bucketObject.Name?.ToString() ?? ""; row[table.Fields[18]] = bucketObject.Owner?.ToString() ?? ""; row[table.Fields[19]] = bucketObject.SelfLink?.ToString() ?? ""; row[table.Fields[20]] = bucketObject.Size ?? 0; row[table.Fields[21]] = bucketObject.StorageClass?.ToString() ?? ""; row[table.Fields[22]] = bucketObject.TimeCreatedRaw?.ToString() ?? ""; row[table.Fields[23]] = bucketObject.TimeDeletedRaw?.ToString() ?? ""; row[table.Fields[24]] = bucketObject.TimeStorageClassUpdatedRaw?.ToString() ?? ""; row[table.Fields[25]] = bucketObject.UpdatedRaw?.ToString() ?? ""; rows.Add(row); } } catch (Exception ex) { QvxLog.Log(QvxLogFacility.Application, QvxLogSeverity.Error, ex.Message); throw new QvxPleaseSendReplyException(QvxResult.QVX_UNKNOWN_COMMAND, "Error getting the data from Google Storage"); } return rows; }); }
private QvxDataRow MakeEntry(XmlNode rowNode, QvxTable table) { var row = new QvxDataRow(); foreach (XmlNode field_node in rowNode.ChildNodes) { switch (field_node.Name.ToLower()) { case "billtocode": row[table.Fields[0]] = field_node.InnerText; break; case "billtodesc": row[table.Fields[1]] = field_node.InnerText; break; case "billtoeffdt": row[table.Fields[2]] = field_node.InnerText; break; case "billtoexpdt": row[table.Fields[3]] = field_node.InnerText; break; } } //row[table.Fields[0]] = "CODE VALUE 1"; //row[table.Fields[1]] = "CODE DESCRIPTION 1"; //row[table.Fields[2]] = DateTime.Now.ToString(); //row[table.Fields[3]] = DateTime.Now.ToString(); //row[table.Fields[0]] = evl.Category; //row[table.Fields[1]] = evl.EntryType.ToString(); //row[table.Fields[2]] = evl.Message; //row[table.Fields[3]] = evl.CategoryNumber.ToString(); //row[table.Fields[4]] = evl.Index.ToString(); //row[table.Fields[5]] = evl.MachineName; //row[table.Fields[6]] = evl.Source; //row[table.Fields[7]] = evl.TimeGenerated.ToString(); return row; }
public static IEnumerable <QvxDataRow> GetReportData(QvxConnection connection, QvxFieldsWrapper fields, string reportID) { IDictionary <string, string> connectionParams = GetParamsFromConnection(connection); if (connectionParams == null) { return(new List <QvxDataRow>()); } return(ValidateAccessTokenAndPerformRequest(connection, connectionParams, accessToken => { Uri hostUri = new Uri(connectionParams[QvxSalesforceConnectionInfo.CONNECTION_HOST]); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(hostUri, "/services/data/" + QvxSalesforceConnectionInfo.SALESFORCE_API_VERSION + "/analytics/reports/" + reportID + "?includeDetails=true")); request.Method = "GET"; WebHeaderCollection headers = new WebHeaderCollection(); headers.Add("Authorization", "Bearer " + accessToken); request.Headers = headers; using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { using (Stream stream = response.GetResponseStream()) { StreamReader reader = new StreamReader(stream, Encoding.UTF8); string responseString = reader.ReadToEnd(); JsonReader jsonReader = new JsonTextReader(new StringReader(responseString)); jsonReader.DateParseHandling = DateParseHandling.None; JObject jsonResponse = JObject.Load(jsonReader); IEnumerable <QvxDataRow> rows = jsonResponse["factMap"].First.First["rows"].Values <JObject>().Select( dr => { QvxDataRow row = new QvxDataRow(); for (int i = 0; i < fields.GetLength(); i++) { if (fields.GetFieldType(i) == SalesforceDataType.Double || fields.GetFieldType(i) == SalesforceDataType.Percent) { try { row[fields.GetField(i)] = dr.First.First.ElementAt(i)["value"].Value <double>(); } catch { row[fields.GetField(i)] = null; } } else if (fields.GetFieldType(i) == SalesforceDataType.Integer) { try { row[fields.GetField(i)] = dr.First.First.ElementAt(i)["value"].Value <int>(); } catch { row[fields.GetField(i)] = null; } } else if (fields.GetFieldType(i) == SalesforceDataType.Boolean) { try { row[fields.GetField(i)] = dr.First.First.ElementAt(i)["value"].Value <bool>(); } catch { row[fields.GetField(i)] = null; } } else if (fields.GetFieldType(i) == SalesforceDataType.Currency) { if (dr.First.First.ElementAt(i)["value"].HasValues) { row[fields.GetField(i)] = dr.First.First.ElementAt(i)["value"].Value <double>("amount"); } else { row[fields.GetField(i)] = null; } } else if (fields.GetFieldType(i) == SalesforceDataType.Date || fields.GetFieldType(i) == SalesforceDataType.DateTime) { string dt = dr.First.First.ElementAt(i)["value"].Value <string>(); if (string.IsNullOrWhiteSpace(dt) || dt == "-") { row[fields.GetField(i)] = null; } else { DateTime datetime; if (dt.ToLower(CultureInfo.InvariantCulture).EndsWith("z")) { datetime = DateTime.ParseExact(dt, "yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture); } else { datetime = DateTime.ParseExact(dt, "yyyy-MM-dd", CultureInfo.InvariantCulture); } row[fields.GetField(i)] = datetime.ToOADate(); } } else { row[fields.GetField(i)] = dr.First.First.ElementAt(i)["label"].Value <string>(); } } return row; }); return rows; } } })); }
private QvxDataRow MakeEntry(DataRow dr, QvxTable table) { QvxLog.Log(QvxLogFacility.Application, QvxLogSeverity.Notice, "MakeEntry()"); var row = new QvxDataRow(); foreach (DataColumn dc in dr.Table.Columns) { row[table[dc.ColumnName]] = dr[dc].ToString(); } return row; }
public TableHelper GetTableInfosFromApp(string tableName, ScriptCode script, ConnectorParameter parameter, QlikApp qlikApp = null) { try { var resultTable = new QvxTable() { TableName = tableName, }; HyperCubePager pager = null; IEnumerable <int> columnOrder = null; var fields = new List <QvxField>(); var rows = new List <QvxDataRow>(); var size = new Size(); if (qlikApp == null) { qlikApp = AppInstance.GetQlikInstance(parameter, script.AppId); } if (qlikApp == null) { return(null); } var masterObject = qlikApp.FirstSession.CurrentApp.GetMasterObjectAsync(script.ObjectId).Result; if (masterObject != null) { logger.Debug($"find master object: {script.ObjectId}"); var genericObject = qlikApp.FirstSession.CurrentApp.CreateGenericSessionObjectAsync(masterObject.Properties).Result; pager = genericObject.GetAllHyperCubePagers().FirstOrDefault() ?? null; var tableLayout = genericObject.GetLayout().As <TableLayout>(); var hyperCube = tableLayout.HyperCube; columnOrder = hyperCube.ColumnOrder; size = hyperCube.Size; fields.AddRange(GetHyperCubeFields(hyperCube.DimensionInfo, hyperCube.MeasureInfo, script)); } var table = qlikApp.FirstSession.CurrentApp.GetObjectAsync <Table>(script.ObjectId).Result; if (table != null) { logger.Debug($"table object: {script.ObjectId}"); pager = table.HyperCubePager; columnOrder = table.ColumnOrder; size = table.Size; fields.AddRange(GetHyperCubeFields(table.DimensionInfo, table.MeasureInfo, script)); } var preview = new PreviewResponse() { MaxCount = 15, }; if (script != null) { var initalPage = new NxPage { Top = 0, Left = 0, Width = size.cx, Height = preview.MaxCount }; var allPages = new List <IEnumerable <NxDataPage> >(); allPages.Add(pager.GetData(new List <NxPage>() { initalPage })); if (script.Full) { var pageHeight = Math.Min(size.cy * size.cx, 5000) / size.cx; logger.Debug($"read data - column count: {size.cx}"); initalPage = new NxPage { Top = 0, Left = 0, Width = size.cx, Height = pageHeight }; allPages = pager.IteratePages(new[] { initalPage }, Pager.Next).ToList(); preview.MaxCount = 0; } if (allPages == null) { throw new Exception($"no dimension in table {script.ObjectId} exits."); } logger.Debug($"read pages - count {allPages.Count}"); foreach (var page in allPages) { var allMatrix = page?.SelectMany(p => p.Matrix); foreach (var matrix in allMatrix) { var row = new QvxDataRow(); var hrow = new PreviewRow(); var drow = new PreviewRow(); foreach (var order in columnOrder) { if (order < fields.Count) { var field = fields[order]; row[field] = matrix[order].Text; if (!preview.qPreview.Any(s => s.qValues.Contains(field.FieldName))) { hrow.qValues.Add(field.FieldName); } if (preview.qPreview.Count <= preview.MaxCount) { drow.qValues.Add(matrix[order].Text); } } } rows.Add(row); if (hrow.qValues.Count > 0) { preview.qPreview.Add(hrow); } if (drow.qValues.Count > 0) { preview.qPreview.Add(drow); } } } } resultTable.Fields = fields.ToArray(); resultTable.GetRows = () => { return(rows); }; logger.Debug($"return table {resultTable.TableName}"); return(new TableHelper(resultTable, preview)); } catch (Exception ex) { logger.Error(ex, "can´t read table infos."); return(null); } }
/// <summary> /// This method obtains the data from the GAMS file using the low level API /// </summary> /// <param name="_source"></param> /// <param name="file"></param> /// <param name="table"></param> /// <param name="where"></param> /// <returns></returns> public static IEnumerable <QvxDataRow> GetGamsDataLowLevel(string _source, string file, QvxTable table, List <string> selectedFields, List <QueryExtractor.WhereCondition> where) { const int GMS_VAL_LEVEL = 0; const int GMS_VAL_MARGINAL = 1; const int GMS_VAL_LOWER = 2; const int GMS_VAL_UPPER = 3; const int GMS_VAL_SCALE = 4; //const int GMS_VAL_MAX = 5; string msg = string.Empty, VarName = string.Empty, sText = string.Empty, UelName = string.Empty; int ErrNr = 0, SymNr = 0, SymTyp = 0, ADim = 0, ACount = 0, AUser = 0, NRec = 0, FDim = 0, j = 0, i = 0, IDum = 0; using (gdxcs gdx = new gdxcs(ref msg)) { gdx.gdxOpenRead(_source + "\\" + file, ref ErrNr); gdx.gdxFindSymbol(table.TableName, ref SymNr); gdx.gdxSymbolInfo(SymNr, ref VarName, ref ADim, ref SymTyp); gdx.gdxSymbolInfoX(SymNr, ref ACount, ref AUser, ref sText); gdx.gdxDataReadRawStart(SymNr, ref NRec); Dictionary <int, string>[] dimensionCache = new Dictionary <int, string> [ADim]; if (where.Count == 0) { // No WHERE clause double[] Vals = new double[gamsglobals.val_max]; int[] Keys = new int[gamsglobals.maxdim]; while (gdx.gdxDataReadRaw(ref Keys, ref Vals, ref FDim) != 0) { QvxDataRow row = mapRow(Keys, Vals); if (row != null) { yield return(row); } } } else { // WHERE clause string[] strFilter = Enumerable.Repeat("", table.Fields.Count()).ToArray(); var emptyFilters = new List <QvxField>(); foreach (var whereCondition in where) { int m = Array.FindIndex(table.Fields, element => element.FieldName == whereCondition.Field); if (m >= 0) { if (m > (ADim - 1)) { // Only dimensions can be filtered throw new QvxPleaseSendReplyException(QvxResult.QVX_UNSUPPORTED_COMMAND, String.Format("Field \"{0}\" is not a dimension and can't be filtered", whereCondition.Field)); } else if ("".Equals(whereCondition.Value)) { // GAMS API doesn't allow empty filters, so we have to filter them ourselves emptyFilters.Add(table.Fields[m]); } else { strFilter[m] = whereCondition.Value; } } else { throw new QvxPleaseSendReplyException(QvxResult.QVX_FIELD_NOT_FOUND, String.Format("The field \"{0}\" is not valid", whereCondition.Field)); } } using (BlockingCollection <QvxDataRow> buffer = new BlockingCollection <QvxDataRow>()) { // Start reading thread Exception exception = null; var readTask = Task.Run(() => { try { gdx.gdxDataReadRawFastFilt(SymNr, strFilter, FilterProc); } catch (Exception e) { exception = e; } finally { // Signal the end of the data buffer.CompleteAdding(); } }); int FilterProc(IntPtr IndxPtr, IntPtr ValsPtr, IntPtr Uptr) { double[] managedArrayVals = new double[gamsglobals.val_max]; Marshal.Copy(ValsPtr, managedArrayVals, 0, gamsglobals.val_max); int[] managedArrayIndx = new int[gamsglobals.maxdim]; Marshal.Copy(IndxPtr, managedArrayIndx, 0, gamsglobals.maxdim); QvxDataRow row = mapRow(managedArrayIndx, managedArrayVals, emptyFilters); if (row != null) { buffer.Add(row); } return(1); } // Writing process foreach (QvxDataRow row in buffer.GetConsumingEnumerable()) { yield return(row); } if (exception != null) { throw exception; } } } QvxDataRow mapRow(int[] Keys, double[] Vals, List <QvxField> emptyFilters = null) { i = 0; var row = new QvxDataRow(); // Read the dimensions for (j = 0; j < ADim; j++) { if (dimensionCache[j] == null) { dimensionCache[j] = new Dictionary <int, string>(); } UelName = null; if (dimensionCache[j].ContainsKey(Keys[j])) { UelName = dimensionCache[j][Keys[j]]; } else { gdx.gdxUMUelGet(Keys[j], ref UelName, ref IDum); dimensionCache[j][Keys[j]] = UelName; } if (UelName != null) { QvxField field = table.Fields[i++]; if (selectedFields.Contains(field.FieldName)) { row[field] = UelName; } // we check the empty filters, as GAMS API doesn't do it if (emptyFilters != null && emptyFilters.Contains(field) && !string.IsNullOrEmpty(UelName)) { return(null); } } } switch (SymTyp) { // SET case gamsglobals.dt_set: if (gdx.gdxGetElemText((int)Vals[GMS_VAL_LEVEL], ref msg, ref IDum) != 0) { QvxField field2 = table.Fields[i++]; if (selectedFields.Contains(field2.FieldName)) { row[field2] = msg; } } else { QvxField field2 = table.Fields[i++]; if (selectedFields.Contains(field2.FieldName)) { row[field2] = Y_STRING; } } break; // PARAMETER case gamsglobals.dt_par: // Value readValueField(row, table.Fields[i++], table.Fields[i++], Vals[GMS_VAL_LEVEL]); if (!string.IsNullOrEmpty(sText) && ADim == 0) { QvxField field = table.Fields[i++]; if (selectedFields.Contains(field.FieldName)) { row[field] = sText; } } break; // EQUATION and VARIABLE case gamsglobals.dt_equ: case gamsglobals.dt_var: int[] gms_values = { GMS_VAL_LEVEL, GMS_VAL_MARGINAL, GMS_VAL_LOWER, GMS_VAL_UPPER, GMS_VAL_SCALE }; foreach (int gms_value in gms_values) { // Value readValueField(row, table.Fields[i++], table.Fields[i++], Vals[gms_value]); } break; } return(row); } /// <summary>This method reads a value separated in two fields, the first with the numeric value and the second with the special value description.</summary> void readValueField(QvxDataRow pRow, QvxField numberField, QvxField specialField, double pVal) { Boolean isSpecialValue = false; // Value if (selectedFields.Contains(numberField.FieldName)) { pRow[numberField] = val2str(pVal, msg, out isSpecialValue, true, false); } // Value (Special) if (selectedFields.Contains(specialField.FieldName)) { pRow[specialField] = val2str(pVal, msg, out isSpecialValue, false, true); } else if (isSpecialValue) { // If the value is special, but the "Special value" column is not selected, we throw an error throw new QvxPleaseSendReplyException(QvxResult.QVX_FIELD_NOT_FOUND, String.Format("The field \"{0}\" contains special values, so the field \"{1}\" has to be selected", numberField.FieldName, specialField.FieldName)); } } /// <summary>This method generates the final value of a field, that can be a normal number, an acronym, infinite, ...</summary> /// <param name="returnNumber">If true, the value of a number will be returned as a double</param> /// <param name="returnSpecial">If true, the value of a special value (infinite, epsilon, acronym, ...) will be returned as a string</param> dynamic val2str(double val, string s, out Boolean isSpecial, Boolean returnNumber = true, Boolean returnSpecial = true) { string[] gmsSVText = { "UNdef", "NA", "+Inf", "-Inf", "Eps", "0", "AcroN" }; int sv = 0; if (gdx.gdxAcronymName(val, ref s) != 0) { isSpecial = true; return(returnSpecial ? s : null); } else { gdx.gdxMapValue(val, ref sv); if (gamsglobals.sv_normal != sv) { isSpecial = true; return(returnSpecial ? gmsSVText[sv] : null); } else { isSpecial = false; if (returnNumber) { return(val); } else { return(null); } } } } } }
/// <summary> /// Creates a Qvx data entry from an Svn log entry. /// </summary> /// <param name="item">The Svn log entry to be used as a source</param> /// <param name="table">The destination Qvx table</param> /// <returns>The resulting row</returns> private QvxDataRow MakeEntry(SvnLogEventArgs entry, QvxTable table) { QvxDataRow row = new QvxDataRow(); row[table.Fields[0]] = entry.Author; row[table.Fields[1]] = entry.LogMessage; row[table.Fields[2]] = entry.Revision; row[table.Fields[3]] = entry.Time.ToOADate(); return row; }
/// <summary> /// Return all rows in the QvxTable. /// </summary> /// <returns>IEnumerable with all QvxDataRow elements of m_Table member.</returns> private IEnumerable<QvxDataRow> GetRows() { var connectionString = new StringBuilder(); // The default return fields for a friend is id and name. We need more information for the QlikView example application. connectionString.Append("fields="); var supportedFields = Enum.GetNames(typeof(EntertainmentFields)); foreach (var field in supportedFields) { connectionString.Append(field); if (field != supportedFields.Last()) { connectionString.Append(","); } } var connectionData = _facebookConnection.LoadConnectionData(_tableName, connectionString.ToString()); var rows = new List<QvxDataRow>(); try { foreach (var item in connectionData["data"]) { var row = new QvxDataRow(); for (var i = 0; i < supportedFields.Length; i++) { var field = supportedFields[i]; var tableIndex = _facebookConnection.IndexOfTable(_tableName); try { row[_facebookConnection.MTables[tableIndex].Fields[i]] = item[field]; } catch (KeyNotFoundException) { // If the field does not exist set it to empty (the person has not specified the information) row[_facebookConnection.MTables[tableIndex].Fields[i]] = ""; } } rows.Add(row); } } catch (Exception ex) { QvxLog.Log(QvxLogFacility.Application, QvxLogSeverity.Error, String.Format("EntertainmentTable GetRows for {0} :{1}", _tableName, ex.Message)); // Forward the error message to QlikView throw; } return rows; }
private QvxDataRow InsertRow(dynamic sourceRow, QvxTable tableDef, dynamic parentData) { QvxDataRow destRow = new QvxDataRow(); foreach (QvxField fieldDef in tableDef.Fields) { dynamic originalDef = helper.ActiveFields[fieldDef.FieldName]; dynamic sourceField; if(originalDef.path.ToString().IndexOf("{parent}")==-1){ sourceField = GetSourceValue(sourceRow, originalDef.path.ToString(), originalDef.type.ToString()); } else{ String parentPath = originalDef.path.ToString(); parentPath = parentPath.Replace("{parent}.", ""); sourceField = GetSourceValue(parentData, parentPath, originalDef.type.ToString()); } if (sourceField != null) { destRow[fieldDef] = sourceField.ToString(); } else if (originalDef.path.ToString()=="") { sourceField = GetSourceValue(sourceRow, null, originalDef.type.ToString()); } } //recordsLoaded++; return destRow; }