コード例 #1
0
        private QvDataContractResponse GetTables(ConnectorParameter parameter, string appId)
        {
            var tables = new List <QvxTable>();

            try
            {
                var qlikApp = AppInstance.GetQlikInstance(parameter, appId);
                if (qlikApp == null)
                {
                    return new QvDataContractTableListResponse {
                               qTables = tables
                    }
                }
                ;
                var options = new NxGetObjectOptions()
                {
                    Types = new List <string> {
                        "table"
                    }
                };
                var appObjects = qlikApp.FirstSession.CurrentApp.GetObjectsAsync(options).Result;
                foreach (var obj in appObjects)
                {
                    var table = obj.AsObject <Table>();

                    tables.Add(new QvxTable()
                    {
                        TableName = $"{table.Title} [{table.Id}]"
                    });
                }
                var masterObjectList = qlikApp.FirstSession.CurrentApp.GetMasterObjectListAsync().Result;
                var listLayout       = masterObjectList?.GetLayout()?.As <MasterObjectListLayout>();
                if (listLayout != null)
                {
                    foreach (var item in listLayout.AppObjectList.Items)
                    {
                        if (item.Data.Visualization == "table")
                        {
                            tables.Add(new QvxTable()
                            {
                                TableName = $"{item.Data.Title} [{item.Info.Id}]"
                            });
                        }
                    }
                }
                return(new QvDataContractTableListResponse {
                    qTables = tables
                });
            }
            catch (Exception ex)
            {
                logger.Error(ex, $"tables form app {appId} not loaded.");
                return(new QvDataContractTableListResponse {
                    qTables = tables
                });
            }
        }
コード例 #2
0
        private QvDataContractResponse GetTables(UserParameter parameter, string appName)
        {
            var tables = new List <QvxTable>();

            q2gconhypercubemain.Connection connection = null;

            using (MappedDiagnosticsLogicalContext.SetScoped("connectionId", connection?.ConnId))
            {
                try
                {
                    var config  = QlikApp.CreateConfig(parameter, appName);
                    var qlikApp = new QlikApp(parameter);
                    var appId   = qlikApp.GetAllApps(config).FirstOrDefault(a => a.qDocName == appName).qDocId;
                    config     = QlikApp.CreateConfig(parameter, appId);
                    connection = qlikApp.CreateNewConnection(config);

                    var options = new NxGetObjectOptions()
                    {
                        qTypes = new List <string> {
                            "table"
                        }
                    };
                    var tablesObjects = connection.CurrentApp.GetObjectsAsync(options).Result;
                    foreach (var obj in tablesObjects)
                    {
                        var     tableObject = connection.CurrentApp.GetObjectAsync(obj.qInfo.qId).Result;
                        dynamic layout      = tableObject.GetLayoutAsync <JObject>().Result;
                        tables.Add(new QvxTable()
                        {
                            TableName = $"{layout.title} [{obj.qInfo.qId}]"
                        });
                    }

                    options = new NxGetObjectOptions()
                    {
                        qTypes = new List <string> {
                            "masterobject"
                        }
                    };
                    var visualisations = connection.CurrentApp.GetObjectsAsync(options).Result;
                    foreach (var element in visualisations)
                    {
                        var     tableObject = connection.CurrentApp.GetObjectAsync(element.qInfo.qId).Result;
                        dynamic layout      = tableObject.GetLayoutAsync <JObject>().Result;
                        tables.Add(new QvxTable()
                        {
                            TableName = $"{layout.qMeta.title} [{element.qInfo.qId}]"
                        });
                    }

                    return(new QvDataContractTableListResponse {
                        qTables = tables
                    });
                }
                catch (Exception ex)
                {
                    logger.Error(ex, $"tables form app {appName} not loaded.");
                    return(new QvDataContractTableListResponse {
                        qTables = tables
                    });
                }
                finally
                {
                    connection?.Close();
                }
            }
        }