Example #1
0
 void AnalysisTransactionManager_AfterCommandComplete(object sender, TransactionCommandResultEventArgs e)
 {
     if (e.Connection == this.Connection)
     {
         if (this.Dispatcher.CheckAccess())
         {
             this.IsEnabled = OlapTransactionManager.HasPendingChanges(this.Connection);// !e.Succeess;
         }
         else
         {
             this.Dispatcher.BeginInvoke(() => this.IsEnabled = OlapTransactionManager.HasPendingChanges(this.Connection));
         }
     }
 }
Example #2
0
        void OlapDataLoader_DataLoaded(object sender, DataLoaderEventArgs e)
        {
            // Exception
            if (e.Error != null)
            {
                LogManager.LogError(this, e.Error.ToString());
                return;
            }

            // Exception or Message from Olap-Service
            if (e.Result.ContentType == InvokeContentType.Error)
            {
                LogManager.LogError(this, e.Result.Content);
                return;
            }

            if (e.Result != null)
            {
                String connectionId = String.Empty;
                if (e.Result.Headers.Contains(InvokeResultDescriptor.CONNECTION_ID))
                {
                    Header connection_header = e.Result.Headers[InvokeResultDescriptor.CONNECTION_ID];
                    if (connection_header != null)
                    {
                        connectionId = connection_header.Value;
                    }
                }

                if (connectionId == Connection)
                {
                    // Commit or Rollback Transaction
                    MdxQueryArgs query_args = e.UserState as MdxQueryArgs;
                    if (query_args != null)
                    {
                        if (query_args.Type == QueryTypes.CommitTransaction ||
                            query_args.Type == QueryTypes.RollbackTransaction)
                        {
                            if (e.Result.ContentType == InvokeContentType.UpdateResult)
                            {
                                List <String> results = XmlSerializationUtility.XmlStr2Obj <List <String> >(e.Result.Content);
                                if (results != null)
                                {
                                    var           errors = results.Where(res => !String.IsNullOrEmpty(res));
                                    StringBuilder sb     = new StringBuilder();
                                    //if (errors.Count() == 0)
                                    //    AnalysisTransactionManager.CloseTransaction(Connection);
                                    //else
                                    //{
                                    foreach (var error in errors)
                                    {
                                        sb.AppendLine(error);
                                    }
                                    if (!String.IsNullOrEmpty(sb.ToString()))
                                    {
                                        LogManager.LogError(this, sb.ToString());
                                    }
                                    //}

                                    // В случае ошибки считаем что транзакция закрыта. И кэш чистим.
                                    OlapTransactionManager.CloseTransaction(Connection);
                                }
                            }
                        }
                    }
                }
            }
        }