public void GetConfigProblems(List <SiebelProblem> allProblems, ConfigSettings settings,
                               StatusUpdateCallback updateStatusBar)
 {
     // Check for BC specific configuration issues
     if (settings.CheckForceActive)
     {
         GetObjectConfigProblems("Business Component", "Repository Business Component", "Repository Field",
                                 allProblems, settings, updateStatusBar);
     }
 }
        /// <summary>
        /// Search for the specified search term
        /// </summary>
        /// <param name="results"></param>
        /// <param name="searchTerm"></param>
        /// <param name="updateStatusBar"></param>
        /// <param name="ignoreCase"></param>
        public void SearchScript(List <SearchResults> results, string searchTerm, StatusUpdateCallback updateStatusBar, Boolean ignoreCase)
        {
            SearchObjectScript("Application", "Repository Application", "Repository Application Browser Script", "Script", searchTerm, results, updateStatusBar, "Browser", ignoreCase);
            SearchObjectScript("Application", "Repository Application", "Repository Application Server Script", "Script", searchTerm, results, updateStatusBar, "Server", ignoreCase);

            SearchObjectScript("Applet", "Repository Applet", "Repository Applet Browser Script", "Script", searchTerm, results, updateStatusBar, "Browser", ignoreCase);
            SearchObjectScript("Applet", "Repository Applet", "Repository Applet Server Script", "Script", searchTerm, results, updateStatusBar, "Server", ignoreCase);

            SearchObjectScript("Business Component", "Repository Business Component", "Repository BusComp Browser Script", "Script", searchTerm, results, updateStatusBar, "Browser", ignoreCase);
            SearchObjectScript("Business Component", "Repository Business Component", "Repository BusComp Server Script", "Script", searchTerm, results, updateStatusBar, "Server", ignoreCase);

            SearchObjectScript("Business Service", "Repository Business Service", "Repository Business Service Browser Script", "Script", searchTerm, results, updateStatusBar, "Browser", ignoreCase);
            SearchObjectScript("Business Service", "Repository Business Service", "Repository Business Service Server Script", "Script", searchTerm, results, updateStatusBar, "Server", ignoreCase);
        }
        /// <summary>
        ///     Select appropriate Business Objects to process and send for processing
        /// </summary>
        /// <param name="fromDate"></param>
        /// <param name="userName"></param>
        /// <param name="updateStatusBar"></param>
        public List <SiebelReposChange> GetAllChanges(string fromDate, string userName,
                                                      StatusUpdateCallback updateStatusBar)
        {
            // Parent Object (e.g Applet), child Object (i.e. Applet Browser Script) and Object name (e.g. HLS Case List Applet)
            List <SiebelReposChange> reposChanges = new List <SiebelReposChange>();

            try
            {
                // Construct BO context

                // Top level, allowing recovery of all 'Repository' Business Components which reflect all object types in the repository
                SiebelBusObject reposBo = _siebApp.GetBusObject("Repository Business Object");

                // Parent BC of all Repository objects
                SiebelBusComp reposBobc = reposBo.GetBusComp("Repository Business Object");

                // Query the top level BO, getting all objects with the name 'Repository*'
                // We have to exclude a couple of items, as Siebel is not happy creating context with these two
                reposBobc.ClearToQuery();
                reposBobc.SetViewMode(SiebelConstants.AllView);
                reposBobc.SetSearchSpec("Name",
                                        "LIKE 'Repository*' And [Name] <> 'Repository Details' And [Name] <> 'Repository Entity Relationship Diagram' And [Name] Not Like 'Repository IFMgr*'");
                reposBobc.SetSearchSpec("Repository Name", Name);
                reposBobc.SetSortSpec("Name(ASCENDING)");
                reposBobc.ExecuteQuery(SiebelConstants.ForwardOnly);

                // Check we have some records
                bool isRecord = reposBobc.FirstRecord();

                // Loop through the top level object types
                while (isRecord)
                {
                    string objName = reposBobc.GetFieldValue("Name");
                    updateStatusBar("Processing: " + objName);
                    ProcessBo(objName, reposChanges, reposBo, fromDate, userName);

                    // Process the next object type
                    isRecord = reposBobc.NextRecord();
                }
            }
            catch (Exception)
            {
                return(null);
            }
            return(reposChanges);
        }
        /// <summary>
        ///     Returns a list of code problems across the whole repository
        /// </summary>
        /// <param name="allProblems"></param>
        /// <param name="settings"></param>
        /// <param name="updateStatusBar"></param>
        public void GetCodeProblems(List <SiebelProblem> allProblems, ScriptSettings settings,
                                    StatusUpdateCallback updateStatusBar)
        {
            GetObjectCodeProblems("Application", "Repository Application", "Repository Application Browser Script",
                                  "Script", allProblems, settings, updateStatusBar);
            GetObjectCodeProblems("Application", "Repository Application", "Repository Application Server Script",
                                  "Script", allProblems, settings, updateStatusBar);

            GetObjectCodeProblems("Applet", "Repository Applet", "Repository Applet Browser Script", "Script",
                                  allProblems, settings, updateStatusBar);
            GetObjectCodeProblems("Applet", "Repository Applet", "Repository Applet Server Script", "Script",
                                  allProblems, settings, updateStatusBar);

            GetObjectCodeProblems("Business Component", "Repository Business Component",
                                  "Repository BusComp Browser Script", "Script", allProblems, settings, updateStatusBar);
            GetObjectCodeProblems("Business Component", "Repository Business Component",
                                  "Repository BusComp Server Script", "Script", allProblems, settings, updateStatusBar);

            GetObjectCodeProblems("Business Service", "Repository Business Service",
                                  "Repository Business Service Browser Script", "Script", allProblems, settings, updateStatusBar);
            GetObjectCodeProblems("Business Service", "Repository Business Service",
                                  "Repository Business Service Server Script", "Script", allProblems, settings, updateStatusBar);
        }
        public static extern int RunGnollHack(
            [MarshalAs(UnmanagedType.LPStr)] string gnhdir,
            [MarshalAs(UnmanagedType.LPStr)] string cmdlineargs,
            ulong runflags,
            ulong wincaps1,
            ulong wincaps2,
            VoidVoidCallback callback_init_nhwindows,
            IntVoidCallback callback_player_selection,
            CharVoidCallback callback_askname,
            VoidVoidCallback callback_get_nh_event,
            VoidConstCharCallback callback_exit_nhwindows,
            VoidConstCharCallback callback_suspend_nhwindows,
            VoidVoidCallback callback_resume_nhwindows,
            IntIntCallback callback_create_nhwindow,
            VoidIntCallback callback_clear_nhwindow,
            VoidIntBooleanCallback callback_display_nhwindow,
            VoidIntCallback callback_destroy_nhwindow,
            VoidIntIntIntCallback callback_curs,
            PutStrExColorCallback callback_putstr_ex,
            PutStrExColorCallback callback_putmixed_ex,
            VoidConstCharBooleanCallback callback_display_file,
            StartMenuCallback callback_start_menu_ex,
            AddMenuCallback callback_add_menu,
            AddExtendedMenuCallback callback_add_extended_menu,
            EndMenuCallback callback_end_menu_ex,
            IntIntIntOutIntCallback callback_select_menu,
            VoidIntCallback callback_message_menu, /* no need for X-specific handling */
            VoidVoidCallback callback_update_inventory,
            VoidVoidCallback callback_mark_synch,
            VoidVoidCallback callback_wait_synch,
            /* If clipping is on */
            VoidIntIntBooleanCallback callback_cliparound,
            /* If positionbar is on */
            VoidCharCallback callback_update_positionbar,
            PrintGlyphCallback callback_print_glyph,
            VoidIntCallback callback_init_print_glyph,
            VoidConstCharCallback callback_raw_print,
            VoidConstCharCallback callback_raw_print_bold,
            IntVoidCallback callback_nhgetch,
            NhPosKeyCallback callback_nh_poskey,
            VoidVoidCallback callback_nhbell,
            IntVoidCallback callback_doprev_message,
            IntIntIntConstCharPtrConstCharPtrCharPtrCallback callback_yn_function_ex,
            GetLineCallback callback_getlin_ex,
            IntVoidCallback callback_get_ext_cmd,
            VoidIntCallback callback_number_pad,
            VoidVoidCallback callback_delay_output,
            VoidIntCallback callback_delay_output_milliseconds,
            VoidIntCallback callback_delay_output_intervals,

            VoidVoidCallback callback_change_color,
            VoidIntCallback callback_change_background,
            VoidIntCallback callback_set_font_name,
            CharVoidCallback callback_get_color_string,

            VoidVoidCallback callback_start_screen,
            VoidVoidCallback callback_end_screen,
            VoidIntCallback callback_outrip,
            VoidConstCharCallback callback_preference_update,
            CharPtrBooleanCallback callback_getmsghistory,
            VoidConstCharBooleanCallback callback_putmsghistory,
            VoidVoidCallback callback_status_init,
            VoidVoidCallback callback_status_finish,
            VoidIntConstCharPtrConstCharPtrBooleanCallback callback_status_enablefield,
            StatusUpdateCallback callback_status_update,
            BooleanVoidCallback callback_can_suspend_yes,
            VoidVoidCallback callback_stretch_window,
            VoidUlongCallback callback_set_animation_timer_interval,
            VoidIntCallback callback_open_special_view,
            StopAllSoundsCallback callback_stop_all_sounds,
            PlayImmediateSoundCallback callback_play_immediate_ghsound,
            BooleanIntDoubleCallback callback_play_ghsound_occupation_ambient,
            BooleanIntDoubleCallback callback_play_ghsound_effect_ambient,
            BooleanDoubleCallback callback_set_effect_ambient_volume,
            PlayMusicCallback callback_play_ghsound_music,
            BooleanDoubleCallback callback_play_ghsound_level_ambient,
            BooleanDoubleCallback callback_play_ghsound_environment_ambient,
            BooleanDoubleDoubleDoubleDoubleDoubleCallback callback_adjust_ghsound_general_volumes,
            BooleanIntDoubleVoidPtrCallback callback_add_ambient_ghsound,
            BooleanVoidPtrCallback callback_delete_ambient_ghsound,
            BooleanDoubleVoidPtrCallback callback_set_ambient_ghsound_volume,
            VoidVoidCallback callback_clear_context_menu,
            AddContextMenuCallback callback_add_context_menu,
            ToggleAnimationTimerCallback callback_toggle_animation_timer,
            DisplayFloatingTextCallback callback_display_floating_text,
            DisplayScreenTextCallback callback_display_screen_text,
            UpdateCursorCallback callback_update_cursor,
            VoidIntCallback callback_exit_hack,
            CharVoidCallback callback_getcwd,
            IntCharCharUintCallback callback_messagebox,
            VoidIntCallback callback_outrip_begin,
            VoidIntCallback callback_outrip_end,

            FreeMemoryCallback callback_free_memory,
            SendObjectDataCallback callback_send_object_data
            );
Example #6
0
        void sudoku_StatusChanged(string newStatus)
        {
            StatusUpdateCallback callback = new StatusUpdateCallback(this.UpdateStatus);

            Status.Dispatcher.BeginInvoke(callback, new object[] { newStatus });
        }
        private void GetObjectConfigProblems(string objType, string busObjName, string busCompName,
                                             List <SiebelProblem> allProblems,
                                             ConfigSettings settings, StatusUpdateCallback updateStatusBar)
        {
            // Declare Siebel objects

            // Initialise BO and BC objects
            SiebelBusObject busObj  = _siebApp.GetBusObject(busObjName);
            SiebelBusComp   busComp = busObj.GetBusComp(busCompName);

            // Set up query context
            busComp.ClearToQuery();
            busComp.SetViewMode(SiebelConstants.AllView);
            busComp.ActivateField("Name");
            busComp.ActivateField("Updated By");
            busComp.ActivateField("Parent Name");
            busComp.ActivateField("Inactive");
            busComp.ActivateField("Parent Inactive");

            busComp.SetSearchSpec("Repository Name", Name);
            busComp.SetSearchSpec("Force Active", "Y");
            busComp.SetSearchSpec("Join", "<> ''");
            busComp.SetSortSpec("Parent Name(ASC), Name(ASC)");

            string userFilter = settings.UserFilter;
            string objFilter  = settings.NameFilter;

            // Filter by Update Date and Obj Name, if required
            if (userFilter != "" && userFilter != "All" && userFilter != null)
            {
                busComp.SetSearchSpec("Updated By", "'" + GetUserLoginId(userFilter) + "'");
            }

            if (!string.IsNullOrEmpty(objFilter))
            {
                busComp.SetSearchSpec("Parent Name", "'" + objFilter + "'");
            }

            if (settings.IgnoreInactive)
            {
                busComp.SetSearchSpec("Inactive", "N");
                busComp.SetSearchSpec("Parent Inactive", "N");
            }

            busComp.ExecuteQuery(SiebelConstants.ForwardOnly);

            // Check that records are returned
            bool isRecord = busComp.FirstRecord();

            // Update UI status bar
            updateStatusBar("Processing: " + busObjName);

            // Process each record
            while (isRecord)
            {
                // Get the parent name
                string parentName = busComp.GetFieldValue("Parent Name");

                // Get the field name
                string fieldName = busComp.GetFieldValue("Name");

                SiebelProblem problem = new SiebelProblem("Config", "Performance",
                                                          "Review 'Force Active' on Join field",
                                                          parentName, objType, fieldName, 0);
                allProblems.Add(problem);

                // Get the next record
                isRecord = busComp.NextRecord();
            }
        }
        private void SearchObjectScript(string objType, string busObjName, string busCompName, string codeFieldName,
                                        string searchTerm, List <SearchResults> results, StatusUpdateCallback updateStatusBar, string scriptType, Boolean ignoreCase)
        {
            // Declare Siebel objects
            // Initialise BO and BC objects
            SiebelBusObject busObj  = _siebApp.GetBusObject(busObjName);
            SiebelBusComp   busComp = busObj.GetBusComp(busCompName);

            // Set up query context
            busComp.ClearToQuery();
            busComp.SetViewMode(SiebelConstants.AllView);
            busComp.ActivateField(codeFieldName);
            busComp.ActivateField("Parent Name");
            busComp.ActivateField("Inactive");
            busComp.ActivateField("Parent Inactive");
            busComp.SetSearchSpec("Repository Name", Name);
            busComp.SetSortSpec("Parent Name(ASC), Name(ASC)");

            if (ignoreCase)
            {
                busComp.SetSearchSpec("Inactive", "N");
                busComp.SetSearchSpec("Parent Inactive", "N");
            }

            busComp.ExecuteQuery(SiebelConstants.ForwardOnly);

            // Check that records are returned
            bool isRecord = busComp.FirstRecord();

            // Process each record
            while (isRecord)
            {
                // Get the script field from the BC
                string       script       = busComp.GetFieldValue(codeFieldName);
                string       methodName   = busComp.GetFieldValue("Name");
                string       parentName   = busComp.GetFieldValue("Parent Name");
                SiebelScript scriptObject = new SiebelScript(script, parentName, methodName, objType, scriptType);
                updateStatusBar("Searching: " + parentName + "." + methodName);
                // Search the script for problems
                scriptObject.Search(searchTerm, results, ignoreCase);
                // Get the next record
                isRecord = busComp.NextRecord();
            }
        }
        /// <summary>
        ///     Returns a list of code problems for a given object
        /// </summary>
        /// <param name="objType"></param>
        /// <param name="busObjName"></param>
        /// <param name="busCompName"></param>
        /// <param name="codeFieldName"></param>
        /// <param name="allProblems"></param>
        /// <param name="settings"></param>
        /// <param name="updateStatusBar"></param>
        private void GetObjectCodeProblems(string objType, string busObjName, string busCompName, string codeFieldName,
                                           List <SiebelProblem> allProblems, ScriptSettings settings, StatusUpdateCallback updateStatusBar)
        {
            // Declare Siebel objects

            // Initialise BO and BC objects
            SiebelBusObject busObj  = _siebApp.GetBusObject(busObjName);
            SiebelBusComp   busComp = busObj.GetBusComp(busCompName);

            // Set up query context
            busComp.ClearToQuery();
            busComp.SetViewMode(SiebelConstants.AllView);
            busComp.ActivateField(codeFieldName);
            busComp.ActivateField("Name");
            busComp.ActivateField("Updated By");
            busComp.ActivateField("Parent Name");
            busComp.ActivateField("Inactive");
            busComp.ActivateField("Parent Inactive");
            busComp.SetSearchSpec("Repository Name", Name);
            busComp.SetSortSpec("Parent Name(ASC), Name(ASC)");

            string userFilter = settings.UserFilter;
            string objFilter  = settings.ObjNameFilter;

            // Filter by Update Date and Obj Name, if required
            if (userFilter != "" && userFilter != "All" && userFilter != null)
            {
                busComp.SetSearchSpec("Updated By", "'" + GetUserLoginId(userFilter) + "'");
            }

            if (!string.IsNullOrEmpty(objFilter))
            {
                busComp.SetSearchSpec("Parent Name", "'" + objFilter + "'");
            }

            if (settings.IgnoreInactive)
            {
                busComp.SetSearchSpec("Inactive", "'N'");
                busComp.SetSearchSpec("Parent Inactive", "'N'");
            }

            busComp.ExecuteQuery(SiebelConstants.ForwardOnly);

            // Check that records are returned
            bool isRecord = busComp.FirstRecord();

            // Determine if Server or Browser script
            string scriptType = busCompName.IndexOf("Browser Script", StringComparison.Ordinal) > 0 ? "Browser" : "Server";

            // Process each record
            while (isRecord)
            {
                // Get the script field from the BC
                string script     = busComp.GetFieldValue(codeFieldName);
                string methodName = busComp.GetFieldValue("Name");
                string parentName = busComp.GetFieldValue("Parent Name");

                // Update UI status bar
                updateStatusBar("Processing: " + busCompName + " (" + parentName + "." + methodName + ")");

                SiebelScript scriptObject = new SiebelScript(script, parentName, methodName, objType, scriptType);

                // Search the script for problems
                scriptObject.GetScriptProblems(allProblems, settings);
                // Get the next record
                isRecord = busComp.NextRecord();
            }
        }
 // Handles calling back to the Form Class to update the UI
 public void UpdateStatus(string status, StatusUpdateCallback callBack)
 {
     callBack(status);
 }
        /// <summary>
        ///     Gets the number of code lines for a specific object type
        /// </summary>
        /// <param name="busObjName"></param>
        /// <param name="busCompName"></param>
        /// <param name="codeFieldName"></param>
        /// <param name="settings"></param>
        /// <param name="updateStatusBar"></param>
        /// <returns></returns>
        private int GetObjCodeLines(string busObjName, string busCompName, string codeFieldName, ScriptSettings settings, StatusUpdateCallback updateStatusBar)
        {
            // Reset counts
            int numLines = 0;

            // Declare Siebel objects

            // Initialise BO and BC objects
            SiebelBusObject busObj  = _siebApp.GetBusObject(busObjName);
            SiebelBusComp   busComp = busObj.GetBusComp(busCompName);

            // Set up query context
            busComp.SetViewMode(SiebelConstants.AllView);
            busComp.ActivateField(codeFieldName);
            busComp.ActivateField("Inactive");
            busComp.ActivateField("Parent Inactive");
            busComp.ClearToQuery();
            busComp.SetSearchSpec("Repository Name", Name);

            string userFilter = settings.CountUserNameFIlter;
            string objFilter  = settings.CountObjNameFilter;

            // Filter by Update Date and Obj Name, if required
            if (!string.IsNullOrEmpty(userFilter) && userFilter != "All")
            {
                busComp.SetSearchSpec("Updated By", "'" + GetUserLoginId(userFilter) + "'");
            }

            if (!string.IsNullOrEmpty(objFilter))
            {
                busComp.SetSearchSpec("Parent Name", "'" + objFilter + "'");
            }

            if (settings.IgnoreInactive)
            {
                busComp.SetSearchSpec("Inactive", "'N'");
                busComp.SetSearchSpec("Parent Inactive", "'N'");
            }
            busComp.ExecuteQuery(SiebelConstants.ForwardOnly);

            // Check that records are returned
            bool isRecord = busComp.FirstRecord();

            // Process each record
            while (isRecord)
            {
                // Get the script field from the BC
                string script = busComp.GetFieldValue(codeFieldName);

                SiebelScript scriptObject = new SiebelScript(script);
                updateStatusBar("Processing: " + busCompName);

                // Count the lines in the single script object and add to the total
                numLines += scriptObject.NumberOfLines();

                // Get the next record
                isRecord = busComp.NextRecord();
            }

            return(numLines);
        }
        /// <summary>
        /// Return the number of lines of code across the whole repository
        /// </summary>
        /// <param name="scriptLine"></param>
        /// <param name="settings"></param>
        /// <param name="updateStatusBar"></param>
        /// <returns></returns>
        public SiebelScriptLines GetCodeLineCount(SiebelScriptLines scriptLine, ScriptSettings settings, StatusUpdateCallback updateStatusBar)
        {
            scriptLine.ApplicationBsLine = GetObjCodeLines("Repository Application", "Repository Application Browser Script", "Script", settings, updateStatusBar);
            scriptLine.ApplicationSsLine = GetObjCodeLines("Repository Application", "Repository Application Server Script", "Script", settings, updateStatusBar);

            scriptLine.AppletBsLine = GetObjCodeLines("Repository Applet", "Repository Applet Browser Script", "Script", settings, updateStatusBar);
            scriptLine.AppletSsLine = GetObjCodeLines("Repository Applet", "Repository Applet Server Script", "Script", settings, updateStatusBar);

            scriptLine.BcbsLine = GetObjCodeLines("Repository Business Component", "Repository BusComp Browser Script", "Script", settings, updateStatusBar);
            scriptLine.BcssLine = GetObjCodeLines("Repository Business Component", "Repository BusComp Server Script", "Script", settings, updateStatusBar);

            scriptLine.BsbsLine = GetObjCodeLines("Repository Business Service", "Repository Business Service Browser Script", "Script", settings, updateStatusBar);
            scriptLine.BsssLine = GetObjCodeLines("Repository Business Service", "Repository Business Service Server Script", "Script", settings, updateStatusBar);

            scriptLine.TotalLine = scriptLine.ApplicationBsLine + scriptLine.ApplicationSsLine + scriptLine.AppletBsLine +
                                   scriptLine.AppletSsLine +
                                   scriptLine.BcbsLine + scriptLine.BcssLine + scriptLine.BsbsLine + scriptLine.BsssLine;

            return(scriptLine);
        }