public DataSet PerformDataSearch(ItemSearchCriteria SrchCriteria) { String mCmd =""; mCmd = SrchCriteria.SelectorCommand; String classStr = ""; String InvTypeStr = ""; String subclassStr = ""; if (SrchCriteria.ICLASS != -1) classStr = "class = " + SrchCriteria.ICLASS; if (SrchCriteria.INVENTORY_TYPE != -1) InvTypeStr = "InventoryType = " + SrchCriteria.INVENTORY_TYPE; if (SrchCriteria.SUBCLASS != -1) subclassStr = "subclass = " + SrchCriteria.SUBCLASS; if (classStr != "" || InvTypeStr != "" || subclassStr != "") { mCmd += " WHERE "; if (classStr != "") { mCmd += classStr; } if (classStr != "" && InvTypeStr != "") mCmd += " AND " + InvTypeStr; else if (InvTypeStr != "") mCmd += InvTypeStr; if (classStr != "" && InvTypeStr != "" && subclassStr != "") mCmd += " AND " + subclassStr; else if (InvTypeStr != "" && subclassStr != "") mCmd += " AND " + subclassStr; else if (classStr != "" && subclassStr != "") mCmd += " AND " + subclassStr; else if (subclassStr != "") mCmd += subclassStr; if (SrchCriteria.ExtraSQL != "") { mCmd += " AND " + SrchCriteria.ExtraSQL; } if (SrchCriteria.LIMIT_RESULTS == 0) { mCmd += " LIMIT 500"; } else { mCmd += " LIMIT " + SrchCriteria.LIMIT_RESULTS; } } else { /* search everything */ if (SrchCriteria.ExtraSQL != "") { mCmd += " WHERE " + SrchCriteria.ExtraSQL; } if (SrchCriteria.LIMIT_RESULTS == 0) { mCmd += " LIMIT 500"; } else { mCmd += " LIMIT " + SrchCriteria.LIMIT_RESULTS; } } if (this.mConnection.State != System.Data.ConnectionState.Open) this.mConnection.Open(); MySqlDataAdapter dAdapter = new MySqlDataAdapter(mCmd, this.mConnection); DataSet dSet = new DataSet(); dAdapter.Fill(dSet); this.LastSQLQuery = mCmd; return dSet; }
public void LoadSearchConfig(String SearchConfigFile) { this.ConfigFile = SearchConfigFile; if (!File.Exists(this.ConfigFile)) return; using (StreamReader sr = new StreamReader(this.ConfigFile)) { String line; int cLine = 0; // Read and display lines from the file until the end of // the file is reached. while ((line = sr.ReadLine()) != null) { cLine++; if ((cLine == 1) && (line != "search.config.begin")) return; /* invalid or corrupt config file */ string[] cfgLine = line.Split('^'); if (cfgLine[0] == "set.search.title") { this.SearchTitle = cfgLine[1]; } if (cfgLine[0] == "set.primary.table") { this.PrimaryTable = cfgLine[1]; } if (cfgLine[0] == "set.primary.fields") { this.PrimaryFields = cfgLine[1]; } //set.display.fields^entry:Entry ID!name:Name!ItemLevel:Item Level!RequiredLevel:Req Level if (cfgLine[0] == "set.display.fields") { String[] ConfigOptions = cfgLine[1].Split('!'); foreach (String cfgCriteriaType in ConfigOptions) { String[] ival = cfgCriteriaType.Split(':'); ColumnHeader cHeader = new ColumnHeader(); cHeader.Name = ival[0]; cHeader.Text = ival[1]; cHeader.Width = int.Parse(ival[2]); this.DisplayColumns.Add(cHeader); } } if (cfgLine[0] == "result.format.rule") { if (cfgLine[1] == "colour") { SearchResultFormatRule srFormatRule = new SearchResultFormatRule(); srFormatRule.Type = SearchResultFormatRule.RuleType.Colour; srFormatRule.MatchField = cfgLine[2]; srFormatRule.MatchValue = this.tController.dbRef.GetIntVal(cfgLine[3]).ToString(); //cfgLine[3]; srFormatRule.Colour = cfgLine[4]; this.ResultFormatRules.Add(srFormatRule); } } if (cfgLine[0] == "criteria.add") { //criteria.add^entry^Entry ID^text CriteriaRequester cReq; if (cfgLine[3] == "text") { cReq = new CriteriaRequester(CriteriaRequester.CriteriaType.Text, cfgLine[1]); this.SearchCriterias.Add(cfgLine[1], cReq); } else if (cfgLine[3] == "dropdown") { cReq = new CriteriaRequester(CriteriaRequester.CriteriaType.DropDown, cfgLine[1]); this.SearchCriterias.Add(cfgLine[1], cReq); } else if (cfgLine[3] == "checkbox") { cReq = new CriteriaRequester(CriteriaRequester.CriteriaType.CheckBox, cfgLine[1]); this.SearchCriterias.Add(cfgLine[1], cReq); } } if (cfgLine[0] == "criteria.dropdown.additem") { //criteria.dropdown.additem^Quality^0 : Poor CriteriaRequester cReq = (CriteriaRequester)this.SearchCriterias[cfgLine[1]]; if (cReq == null) return; cReq.DropDownContent.Add(cfgLine[2]); } if (cfgLine[0] == "define.var") { this.Variables.Add(cfgLine[1], cfgLine[2]); } if (cfgLine[0] == "categories.add") { //categories.add^rootid^id^name //this.PrimaryFields = cfgLine[1]; //category.configure^id^class:1,subclass:2,InventoryType:3 TreeNode tnCat; if (cfgLine[2] != "root") { /* find root node requested (as cfgLine[1]) */ TreeNode tnRoot = (TreeNode)this.SearchCategories[cfgLine[1]]; if (tnRoot == null) throw new Exception("Root node does not exist - check your configuration and try again"); tnCat = tnRoot.Nodes.Add(cfgLine[3]); tnCat.Name = cfgLine[2]; } else { tnCat = new TreeNode(cfgLine[3]); tnCat.Name = cfgLine[2]; } this.SearchCategories.Add(cfgLine[2], tnCat); } if (cfgLine[0] == "category.configure") { TreeNode tnFind = (TreeNode)this.SearchCategories[cfgLine[1]]; if (tnFind == null) throw new Exception("Could not find node to configure - please check your configuration and try again"); //class:wildcard!subclass:wildcard String [] ConfigOptions = cfgLine[2].Split('!'); ItemSearchCriteria iSrchCriteria = new ItemSearchCriteria(); foreach (String cfgCriteriaType in ConfigOptions) { String [] ival = cfgCriteriaType.Split(':'); if (ival[0] == "subclass") iSrchCriteria.SUBCLASS = this.tController.dbRef.GetIntVal(ival[1]); if (ival[0] == "class") iSrchCriteria.ICLASS = this.tController.dbRef.GetIntVal(ival[1]); if (ival[0] == "inventorytype") iSrchCriteria.INVENTORY_TYPE = this.tController.dbRef.GetIntVal(ival[1]); } tnFind.Tag = iSrchCriteria; } if (cfgLine[0] == "search.config.end") { sr.Close(); return; } } sr.Close(); } }
public ArrayList GetGameItemList(ItemSearchCriteria SrchCriteria) { MySqlCommand mCmd = this.mConnection.CreateCommand(); MySqlDataReader mReader; mCmd.CommandText = "SELECT entry,class,subclass,name,quality,InventoryType,ItemLevel,RequiredLevel from item_template"; String classStr = ""; String InvTypeStr = ""; String subclassStr = ""; if (SrchCriteria.ICLASS != -1) classStr = "class = " + SrchCriteria.ICLASS; if (SrchCriteria.INVENTORY_TYPE != -1) InvTypeStr = "InventoryType = " + SrchCriteria.INVENTORY_TYPE; if (SrchCriteria.SUBCLASS != -1) subclassStr = "subclass = " + SrchCriteria.SUBCLASS; if (classStr != "" || InvTypeStr != "" || subclassStr != "") { mCmd.CommandText += " WHERE "; if (classStr != "") { mCmd.CommandText += classStr; } if (classStr != "" && InvTypeStr != "") mCmd.CommandText += " AND " + InvTypeStr; else if (InvTypeStr != "") mCmd.CommandText += InvTypeStr; if (classStr != "" && InvTypeStr != "" && subclassStr != "") mCmd.CommandText += " AND " + subclassStr; else if (InvTypeStr != "" && subclassStr != "") mCmd.CommandText += " AND " + subclassStr; else if (classStr != "" && subclassStr != "") mCmd.CommandText += " AND " + subclassStr; else if (subclassStr != "") mCmd.CommandText += subclassStr; if (SrchCriteria.ExtraSQL != "") { mCmd.CommandText += " AND " + SrchCriteria.ExtraSQL; } if (SrchCriteria.LIMIT_RESULTS == 0) { mCmd.CommandText += " LIMIT 500"; } else { mCmd.CommandText += " LIMIT " + SrchCriteria.LIMIT_RESULTS; } } else { /* search everything */ if (SrchCriteria.ExtraSQL != "") { mCmd.CommandText += " WHERE " + SrchCriteria.ExtraSQL; } if (SrchCriteria.LIMIT_RESULTS == 0) { mCmd.CommandText += " LIMIT 500"; } else { mCmd.CommandText += " LIMIT " + SrchCriteria.LIMIT_RESULTS; } } if (this.mConnection.State != System.Data.ConnectionState.Open) this.mConnection.Open(); mReader = mCmd.ExecuteReader(); this.LastSQLQuery = mCmd.CommandText; ArrayList nResults = new ArrayList(); while (mReader.Read()) { GameItem gItem = new GameItem(); gItem.EntryID = int.Parse(mReader.GetValue(0).ToString()); gItem.Class = int.Parse(mReader.GetValue(1).ToString()); gItem.Subclass = int.Parse(mReader.GetValue(2).ToString()); gItem.Name = mReader.GetValue(3).ToString(); gItem.Quality = int.Parse(mReader.GetValue(4).ToString()); gItem.InventoryType = int.Parse(mReader.GetValue(5).ToString()); gItem.ItemLevel = int.Parse(mReader.GetValue(6).ToString()); gItem.RequiredLevel = int.Parse(mReader.GetValue(7).ToString()); nResults.Add(gItem); } mReader.Close(); return nResults; }