Example #1
0
        public static UpdateCubeArgs CreateUpdateCubeArgs(String connectionString, String cubeName, List <UpdateEntry> entries)
        {
            UpdateCubeArgs args = new UpdateCubeArgs();

            args.ConnectionString = connectionString;
            args.CubeName         = cubeName;
            args.Entries          = entries;
            return(args);
        }
        internal static String UpdateSync(String updeteScript, UpdateCubeArgs args)
        {
            String result = String.Empty;

            string cubeName         = args.CubeName;
            string connectionString = args.ConnectionString;
            string commandText      = string.Empty;

            if (string.IsNullOrEmpty(updeteScript))
            {
                commandText = string.Format(UPDATE_COMMAND_TEMPLATE, args.CubeName);
            }

            List <string> commands = new List <string>();

            for (int i = 0; i < args.Entries.Count; i++)
            {
                UpdateEntry   entry = args.Entries[i];
                StringBuilder sb    = new StringBuilder();
                foreach (ShortMemberInfo mi in entry.Tuple)
                {
                    if (sb.Length > 0)
                    {
                        sb.Append(',');
                    }
                    sb.Append(mi.UniqueName);
                }
                string tuple = sb.ToString();
                sb = null;

                string lexeme = Environment.NewLine;
                if (i > 0)
                {
                    if (string.IsNullOrEmpty(updeteScript))
                    {
                        lexeme += ',';
                    }
                }

                if (string.IsNullOrEmpty(updeteScript))
                {
                    lexeme      += string.Format("({0}) = {1}", tuple, entry.NewValue);
                    commandText += lexeme;
                }
                else
                {
                    string cmd = updeteScript;
                    ParseHierarchies(ref cmd, entry.Tuple, entry.NewValue, entry.OldValue);
                    lexeme += cmd;
                    commands.Add(lexeme);
                }
            }

            if (string.IsNullOrEmpty(updeteScript))
            {
                commands.Add(commandText);
            }

            try
            {
                try
                {
                    //bool error = false;

                    foreach (string cmdText in commands)
                    {
                        try
                        {
                            AdomdConnection conn = AdomdConnectionPool.GetConnection(connectionString);
                            {
                                using (AdomdCommand cmd = new AdomdCommand(cmdText, conn))
                                {
                                    result = cmdText;
                                    cmd.ExecuteNonQuery();
                                }
                            }
                        }
                        catch (Exception exc)
                        {
                            //error = true;
                            throw exc;
                        }
                    }
                }
                finally
                {
                }
            }
            catch (Exception exc)
            {
                throw exc;
            }
            return(result);
        }