예제 #1
0
        public void ReleaseByTaskId(string taskId)
        {
            if (taskId == null || taskId == "")
            {
                throw new ArgumentException("Invalid TaskId");
            }

            if (!_canceledTasks.Contains(taskId))
            {
                _canceledTasks.Add(taskId);
            }

            // check if not resetting
            WaitForAvalability();

            lock (this)
            {
                for (int i = 0; i < _pool.Count; i++)
                {
                    QueryProcessor proc = (QueryProcessor)_pool[i];
                    if (proc.TaskId == taskId)
                    {
                        proc.Release(taskId, true);
                    }
                }
            }
        }
예제 #2
0
        public DateTime GetCubeLastProcessed(string Server, string Database, string Cube, bool throwExc)
        {
            string taskId = Guid.NewGuid().ToString();

            OlapServices.QueryProcessor processor = OlapServices.ProcessorPool.Instance.GetAvailableFromPool(Server, Database, taskId);
            DateTime ret = DateTime.MinValue;

            try
            {
                // get cube processing time
                if (Cube != null && Cube != "")
                {
                    ret = processor.GetCubeLastProcessed(Cube);
                }
            }
            catch (Exception exc)
            {
                if (throwExc)
                {
                    throw exc;
                }
            }
            finally
            {
                processor.Release(taskId, false);
            }
            return(ret);
        }
예제 #3
0
        public string GetMemberParent(string Server, string Database, string Cube, string HierUniqueName, string MemUniqueName)
        {
            string taskId = Guid.NewGuid().ToString();

            OlapServices.QueryProcessor processor = OlapServices.ProcessorPool.Instance.GetAvailableFromPool(Server, Database, taskId);
            try
            {
                string ret = processor.GetMemberParent(Cube, HierUniqueName, MemUniqueName);
                return(ret);
            }
            finally
            {
                processor.Release(taskId, false);
            }
        }
예제 #4
0
        public string GetReportSchemaXml(string Server, string Database, string Cube, string OpenNodesXml)
        {
            string taskId = Guid.NewGuid().ToString();

            OlapServices.QueryProcessor processor = OlapServices.ProcessorPool.Instance.GetAvailableFromPool(Server, Database, taskId);
            try
            {
                string ret = processor.GetReportSchemaXml(Cube, OpenNodesXml);
                return(ret);
            }
            finally
            {
                processor.Release(taskId, false);
            }
        }
예제 #5
0
        public string BuildCellset(string Server, string Database, string Mdx, string TaskId, string TaskTag)
        {
            if (Mdx == null || Mdx.Trim() == "")
            {
                throw new Exception("Mdx is empty");
            }

            OlapServices.QueryProcessor processor = OlapServices.ProcessorPool.Instance.GetAvailableFromPool(Server, Database, TaskId);
            try
            {
                processor.TaskTag = TaskTag;
                string ret = processor.BuildCellset(Mdx);
                return(ret);
            }
            finally
            {
                processor.Release(TaskId, false);
            }
        }
예제 #6
0
        public string BuildCellset(string Server, string Database, string Cube, string Mdx, string TaskId, string TaskDescrition, string ReportType, decimal ReportId)
        {
            if (Mdx == null || Mdx.Trim() == "")
            {
                throw new Exception("Mdx is empty");
            }

            OlapServices.QueryProcessor processor = OlapServices.ProcessorPool.Instance.GetAvailableFromPool(Server, Database, TaskId);
            try
            {
                // execute
                processor.TaskDescription = TaskDescrition;
                string ret = processor.BuildCellset(Mdx);

                // save as report
                if (ReportId >= 0)
                {
                    if (string.Compare(ReportType, "Olap", true) == 0)
                    {
                        // get cube processing time
                        DateTime cubeProcessedOn = DateTime.MinValue;
                        if (Cube != null && Cube != "")
                        {
                            cubeProcessedOn = processor.GetCubeLastProcessed(Cube);
                        }

                        OlapReports rpt = new OlapReports();
                        rpt.UpdateReportCache(ReportId, Server, Database, Cube, Mdx, TaskId, ret, cubeProcessedOn);
                    }
                }

                // return
                return(ret);
            }
            finally
            {
                processor.Release(TaskId, false);
            }
        }