private void ObjectSearch_TextChanged(object sender, EventArgs e)
 {
     if (ObjectSearch.Equals(""))
     {
         listBox2.Items.Clear();
         listBox2.SelectedIndex = -1;
         foreach (var item in shapes)
         {
             listBox2.Items.Add(item);
         }
         listBox2.Items.Add(MapBuilder.parentMap);
     }
     else if (!ObjectSearch.Equals(""))
     {
         listBox2.Items.Clear();
         listBox2.SelectedIndex = -1;
         foreach (var item in shapes)
         {
             if (item.shapeName.Contains(ObjectSearch.Text) || item.shapeID.ToString().Equals(ObjectSearch.Text))
             {
                 listBox2.Items.Add(item);
             }
         }
         listBox2.Items.Add(MapBuilder.parentMap);
     }
 }
Esempio n. 2
0
        private void SearchStartObject_Click(object sender, EventArgs e)
        {
            var objectSearch = new ObjectSearch();

            objectSearch.SelectNpcClicked += (o, args) => { LoadStartNpc(((WorldObject)o).Name, ((WorldObject)o).Region); };
            objectSearch.ShowDialog(this);
        }
Esempio n. 3
0
        private void button2_Click(object sender, EventArgs e)
        {
            var objectsearch = new ObjectSearch();

            objectsearch.SelectNpcClicked += (o, args) => { LoadTargetNPC(((WorldObject)o).Name, ((WorldObject)o).Region); };

            objectsearch.ShowDialog(this);
        }
Esempio n. 4
0
        private IEnumerable <IntPtr> General(ObjectSearch obj, bool caseSensitive = true)
        {
            ProcessHandler.CheckAccess();

            Stopwatch benchmark = null;

            if (SearchResult != null)
            {
                benchmark = Stopwatch.StartNew();
            }

            if (Settings.PauseWhileScanning)
            {
                _access.Process.Pause();
            }

            IEnumerable <IntPtr> addresses = new IntPtr[] { };

            var regions = GetRegions();

            _tasks = new Task <IEnumerable
                               <IntPtr> > [regions.Length];

            for (int i = 0; i < _tasks.Length; i++)
            {
                _tasks[i] = Scan(regions[i], obj, caseSensitive);
            }

            Task.WaitAll(_tasks);

            foreach (var task in _tasks)
            {
                addresses = addresses.Concat(task.Result);
            }

            if (Settings.PauseWhileScanning)
            {
                _access.Process.Resume();
            }

            if (SearchResult != null)
            {
                benchmark.Stop();
                SearchResult.Invoke(this,
                                    new SearchResultEventArgs(addresses.ToArray(),
                                                              benchmark.Elapsed.TotalMilliseconds, _access));
            }

            return(addresses);
        }
        public override void ConstructPanelContent()
        {
            // Tab bar
            var tabGroup = UIFactory.CreateHorizontalGroup(uiContent, "TabBar", true, true, true, true, 2, new Vector4(2, 2, 2, 2));

            UIFactory.SetLayoutElement(tabGroup, minHeight: 25, flexibleHeight: 0);

            // Scene Explorer
            SceneExplorer = new SceneExplorer(this);
            SceneExplorer.ConstructUI(uiContent);
            tabPages.Add(SceneExplorer);

            // Object search
            ObjectSearch = new ObjectSearch(this);
            ObjectSearch.ConstructUI(uiContent);
            tabPages.Add(ObjectSearch);

            // set up tabs
            AddTabButton(tabGroup, "Scene Explorer");
            AddTabButton(tabGroup, "Object Search");

            // default active state: Active
            UIManager.SetPanelActive(PanelType, true);
        }
Esempio n. 6
0
        /// <summary>
        /// Executes the query for most kinds of searches (except proximity)
        /// </summary>
        /// <param name="api">The API controller.</param>
        /// <param name="queryType">Type of the query</param>
        /// <param name="positionType">Type of the position.</param>
        /// <param name="Task">The TaskName, that uniquely identifies the search (or web service entry point).</param>
        /// <returns></returns>
        /// <exception cref="System.ArgumentException">Check input parameters properly.\n+e.Message</exception>
        public IHttpActionResult runquery(ApiController api, string queryType, string positionType, string Task)
        {
            //api.Request.Headers.Add("TaskName", Task);
            //api.Request.Headers.Add("EntryPoint", Task);


            DataSet ResultsDataSet = new DataSet();

            HttpResponseMessage resp = new HttpResponseMessage();
            Logger log = (HttpContext.Current.ApplicationInstance as MvcApplication).Log;

/*
 *          try
 *          {
 *              if(dictionary == null)
 *                  dictionary = api.Request.GetQueryNameValuePairs().ToDictionary(kv => kv.Key, kv => kv.Value, StringComparer.OrdinalIgnoreCase);
 *          }
 *          catch (Exception e)
 *          {
 *              throw new ArgumentException("Check input parameters properly.\n"+e.Message);
 *          }
 */
            String format = "";
            String query  = "";

            /*
             * if (string.IsNullOrEmpty(this.ClientIP))
             *  this.ClientIP = rm.GetClientIP(dictionary);//GetClientIP sets the value of IsDirectUserConnection as well.
             * if (string.IsNullOrEmpty(this.TaskName))
             *  this.TaskName = rm.GetTaskName(dictionary, Task);// must be executed right after GetClientIP(ref dictionary);
             * if (string.IsNullOrEmpty(this.server_name))
             *  try { this.server_name = HttpContext.Current.Request.ServerVariables["SERVER_NAME"]; }
             *  catch { }
             * if (string.IsNullOrEmpty(this.windows_name))
             *  try { this.windows_name = System.Environment.MachineName; }
             *  catch { };
             */


            switch (queryType)
            {
            case "UserHistory":
                UserHistory history = new UserHistory(dictionary, ExtraInfo, HttpContext.Current.Request);
                ResultsDataSet = history.ResultDataSet;
                ExtraInfo["QueryForUserDisplay"] = history.query;
                ExtraInfo["query"] = history.query;
                //DataTable dt = new DataTable();
                //dt.Columns.Add("query", typeof(string));
                //dt.Rows.Add(new object[] { history.query });
                //ResultsDataSet.Merge(dt);
                break;

            case "SqlSearch":
                SqlSearch sqlsearch = new SqlSearch(dictionary, ExtraInfo);
                query = sqlsearch.query;     // here the query is wrapped inside SpExecuteSQL, both logging and security checking
                ExtraInfo["syntax"] = sqlsearch.syntax;
                ExtraInfo["QueryForUserDisplay"] = sqlsearch.QueryForUserDisplay;
                ExtraInfo["query"] = query;
                break;

            case "CrossIdSearch":
                CrossIdSearch crossId = new CrossIdSearch(dictionary, ExtraInfo, HttpContext.Current.Request, api.Request.Content);
                query = crossId.query;     // // here the query is wrapped inside SpExecuteSQL, both logging and security checking of the user query part.
                //Format = crossId.Format;
                ExtraInfo["QueryForUserDisplay"] = crossId.QueryForUserDisplay;
                ExtraInfo["query"] = query;
                break;

            case "ObjectSearch":    // here, multiple queries might be run in order to resolve the object. That's why we have to run them here and get the dataset immediately (no routing to RunDBquery but to SendTables);
                ObjectSearch objectSearch = new ObjectSearch(dictionary, ExtraInfo, HttpContext.Current.Request);
                ResultsDataSet = objectSearch.ResultDataSet;
                //Format = objectSearch.Format;
                break;

            case "RectangularSearch":
                RectangularSearch rectangular = new RectangularSearch(dictionary, ExtraInfo);
                query = rectangular.query;
                ExtraInfo["QueryForUserDisplay"] = rectangular.QueryForUserDisplay;
                ExtraInfo["query"] = query;
                break;

            case "RadialSearch":
                RadialSearch radial = new RadialSearch(dictionary, ExtraInfo);
                query           = radial.query;
                ExtraInfo["fp"] = radial.fp;
                ExtraInfo["QueryForUserDisplay"] = radial.QueryForUserDisplay;
                ExtraInfo["query"] = query;
                break;

            case "ConeSearch":
                try
                {
                    format = dictionary["format"].ToLower();
                    if (format.Equals("votable"))
                    {
                        format = "dataset";
                    }
                }
                catch (Exception e)
                {
                    format = "dataset";     // or votable
                }
                ConeSearch.ConeSearch cs = new ConeSearch.ConeSearch(dictionary);
                query = cs.getConeSearchQuery();
                ExtraInfo["QueryForUserDisplay"] = query;
                ExtraInfo["query"] = query;
                break;

            case "SDSSFields":
                try
                {
                    format = dictionary["format"].ToLower();
                    if (format.Equals("votable"))
                    {
                        format = "dataset";
                    }
                }
                catch (Exception e)
                {
                    format = "dataset";
                }
                NewSDSSFields sf = new NewSDSSFields(dictionary, positionType);
                query = sf.sqlQuery;
                ExtraInfo["QueryForUserDisplay"] = query;
                ExtraInfo["query"] = query;
                break;

            case "SIAP":
                ActivityInfo.Message = rm.GetLoggedMessage(ExtraInfo["QueryForUserDisplay"]);                  //request.ToString();
                return(new ReturnSIAPresults(positionType, "VOTable", datarelease, dictionary, ActivityInfo)); // this is tricky code

                break;

            default:    // runs all the Imaging, Spectro and SpectroIR queries in SkyServer
                QueryTools.BuildQuery.buildQueryMaster(queryType, dictionary, positionType);
                query = QueryTools.BuildQuery.query;
                query = query.Replace("'", "''");
                query = "EXEC spExecuteSQL '" + query + "', @webserver='" + this.server_name + "', @winname='" + this.windows_name + "', @clientIP='" + this.ClientIP + "', @access='" + this.TaskName + "', @filter=0, @log=1";
                ExtraInfo["QueryForUserDisplay"] = QueryTools.BuildQuery.QueryForUserDisplay;
                ExtraInfo["query"] = query;
                break;
            }

            query = Regex.Replace(query, @"\/\*(.*\n)*\*\/", "");                                       // remove all multi-line comments
            query = Regex.Replace(query, @"^[ \t\f\v]*--.*\r\n", "", RegexOptions.Multiline);           // remove all isolated single-line comments
            query = Regex.Replace(query, @"--[^\r^\n]*", "");                                           // remove all embedded single-line comments
            query = Regex.Replace(query, @"[ \t\f\v]+", " ");                                           // replace multiple whitespace with single space
            query = Regex.Replace(query, @"^[ \t\f\v]*\r\n", "", RegexOptions.Multiline);               // remove empty lines
            try
            {
                if (format.Equals(""))
                {
                    format = dictionary["format"].ToLower();
                }

                switch (format)
                {
                case "txt":
                case "text/plain":
                case "csv":
                    ExtraInfo.Add("FormatFromUser", format); format = KeyWords.contentCSV; break;

                case "xml":
                case "application/xml":
                    ExtraInfo.Add("FormatFromUser", format); format = KeyWords.contentXML; break;

                case "votable":
                case "application/x-votable+xml":
                    ExtraInfo.Add("FormatFromUser", format); format = KeyWords.contentVOTable; break;

                case "json":
                case "application/json":
                    ExtraInfo.Add("FormatFromUser", format); format = KeyWords.contentJson; break;

                case "fits":
                case "application/fits":
                    ExtraInfo.Add("FormatFromUser", format); format = KeyWords.contentFITS; break;

                case "dataset":
                case "application/x-dataset":
                    ExtraInfo.Add("FormatFromUser", format); format = KeyWords.contentDataset; break;

                case "html":
                    ExtraInfo.Add("FormatFromUser", "html"); format = KeyWords.contentDataset; break;

                case "mydb":
                    ExtraInfo.Add("FormatFromUser", format); format = "mydb"; break;

                default:
                    ExtraInfo.Add("FormatFromUser", format); format = KeyWords.contentJson; break;
                }
            }
            catch (Exception exp)
            {
                if (IsDirectUserConnection)//in case the user did not specify a format
                {
                    format = KeyWords.contentJson;
                    string val;
                    if (!ExtraInfo.TryGetValue("FormatFromUser", out val))
                    {
                        ExtraInfo.Add("FormatFromUser", "json");
                    }
                }
                else
                {
                    format = KeyWords.contentDataset;//which is a dataset
                    string val;
                    if (!ExtraInfo.TryGetValue("FormatFromUser", out val))
                    {
                        ExtraInfo.Add("FormatFromUser", "dataset");
                    }
                }
            }


            //logging -----------------------------------------------------------------------------------------------------------------------
            if (ActivityInfo == null)
            {
                ActivityInfo          = new LoggedInfo();
                ActivityInfo.ClientIP = ClientIP;
                ActivityInfo.TaskName = TaskName;
                ActivityInfo.Headers  = api.ControllerContext.Request.Headers;
            }

            //creating the message that is being logged
            ActivityInfo.Message = rm.GetLoggedMessage(ExtraInfo["QueryForUserDisplay"]);   //request.ToString();

            switch (queryType)
            {
            case "SqlSearch":
                return(new RunDBquery(query, format, TaskName, ExtraInfo, ActivityInfo, queryType, positionType));   // queries are sent through direct database connection.

            case "ObjectSearch":
            case "UserHistory":
                return(new SendTables(ResultsDataSet, format, ActivityInfo, ExtraInfo));

            default:
                return(new RunDBquery(query, format, TaskName, ExtraInfo, ActivityInfo, queryType, positionType));
            }
        }