From: <nor...@us...> - 2007-07-28 08:35:12
|
Revision: 780 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=780&view=rev Author: northern_sky Date: 2007-07-28 01:35:10 -0700 (Sat, 28 Jul 2007) Log Message: ----------- replaced dbcalls with opensource ado.net System.Data.SQLite + misc other changes It rocks! Modified Paths: -------------- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Database/DatabaseHandler.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppFilesView.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/FileDetailsForm.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/SetupForm.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/GUIPrograms.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/GUIProgramsAlt.csproj trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/GUIProgramsAltFileInfo.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Imports/GamebaseImport.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Imports/MameImport.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Items/ApplicationItem.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Items/ApplicationItemDirectoryCache.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Items/ApplicationItemFactory.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Items/ApplicationItemGameBase.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Items/ApplicationItemGrouper.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Items/ApplicationItemMame.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Items/BaseItem.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Items/FileItem.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Items/FileItemInfo.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Items/FilelinkItem.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Items/FilterItem.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ProgramSort.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ProgramUtils.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/ProgramViewHandler.cs trunk/plugins/myGUIProgramsAlt/README.txt Added Paths: ----------- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/SqlNet/ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/SqlNet/System.Data.SQLite.DLL Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Database/DatabaseHandler.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Database/DatabaseHandler.cs 2007-07-27 18:24:42 UTC (rev 779) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Database/DatabaseHandler.cs 2007-07-28 08:35:10 UTC (rev 780) @@ -27,13 +27,13 @@ using System.Collections; using System.Collections.Generic; using System.IO; +using System.Data; using MediaPortal.GUI.Library; using GUIPrograms; -using SQLite.NET; using MediaPortal.Database; using MediaPortal.Util; using MediaPortal.Configuration; - +using System.Data.SQLite; using GUIPrograms.Items; namespace GUIPrograms.Database @@ -43,7 +43,10 @@ /// </summary> public class DatabaseHandler { - public static SQLiteClient sqlDB = null; + + private static SQLiteConnection sqlLiteConn = null; + + static List<ApplicationItem> globalApplicationItemList = new List<ApplicationItem>(); private const string DATABASEFILE = "myProgramsAltDatabaseV1.db3"; @@ -62,8 +65,11 @@ //check if database exists if (!File.Exists(DatabasePath)) { - sqlDB = new SQLiteClient(Config.GetFile(Config.Dir.Database, DATABASEFILE)); - DatabaseUtility.SetPragmas(sqlDB); + SQLiteConnection.CreateFile(Config.GetFile(Config.Dir.Database, DATABASEFILE)); + string connString = "Data Source=" + Config.GetFile(Config.Dir.Database, DATABASEFILE); + sqlLiteConn = new SQLiteConnection(connString); + + SetPragmas(); // make sure the DB-structure is complete CreateDBTables(); @@ -73,9 +79,9 @@ } else { - sqlDB = new SQLiteClient(Config.GetFile(Config.Dir.Database, DATABASEFILE)); - - } + string connString = "Data Source=" + Config.GetFile(Config.Dir.Database, DATABASEFILE) + ";Version=3"; + sqlLiteConn = new SQLiteConnection(connString); + } //globalApplicationItemList = new ApplicationItemList(sqlDB, new ApplicationItem.FilelinkLaunchEventHandler(LaunchFilelink)); LoadAllApplicationItems(); } @@ -83,10 +89,16 @@ { Log.Info("programdatabase exception err:{0} stack:{1}", ex.Message, ex.StackTrace); } - - } + static private void SetPragmas() + { + ExecuteStmtNonQuery("PRAGMA default_cache_size=3000"); + ExecuteStmtNonQuery("PRAGMA count_changes=1"); + ExecuteStmtNonQuery("PRAGMA short_column_names=1"); + ExecuteStmtNonQuery("PRAGMA auto_vacuum=1"); + } + /*static void LaunchFilelink(FilelinkItem curLink, bool MPGUIMode) { ApplicationItem targetApp = globalApplicationItemList.GetAppByID(curLink.TargetAppID); @@ -96,75 +108,94 @@ } }*/ + // we can always keep an connection open in sqllite.. + //to expensive closing it + public static SQLiteConnection SqlLiteConn + { + get + { + if (sqlLiteConn.State == ConnectionState.Closed) + { + sqlLiteConn.Open(); + } + return sqlLiteConn; + } + } + /// <summary> /// Create db tables etc,if not already exist /// </summary> /// <returns></returns> static bool CreateDBTables() { - if (sqlDB == null) - return false; - - - DatabaseUtility.AddTable(sqlDB, "tblApplicationItem", @"CREATE TABLE + string sqlStmt = @"CREATE TABLE tblApplicationItem ( applicationId INTEGER PRIMARY KEY, - fatherNodeId INTEGER, + fatherNodeId INTEGER, title TEXT, filename TEXT, arguments TEXT, windowstyle TEXT, startupdir TEXT, - useShellExecute TEXT, - useQuotes TEXT, + useShellExecute BOOL, + useQuotes BOOL, applicationItemType TEXT, source TEXT, imagefile TEXT, filedirectory TEXT, imagedirectory TEXT, validExtensions TEXT, - enabled TEXT, - importValidImagesOnly TEXT, - iposition INTEGER, - refreshGUIAllowed TEXT, + enabled BOOL, + importValidImagesOnly BOOL, + iposition INTEGER, + refreshGUIAllowed BOOL, systemdefault TEXT, - waitForExit TEXT, + waitForExit BOOL, preLaunch TEXT, postLaunch TEXT - )"); + )"; - DatabaseUtility.AddTable(sqlDB, "tblFileItem", "CREATE TABLE tblFileItem (fileid INTEGER PRIMARY KEY, applicationId INTEGER, title TEXT, filename TEXT, imagefile TEXT, mainGenreId INTEGER, subGenreId INTEGER, country TEXT, manufacturerId INTEGER, year INTEGER, rating INTEGER, overview TEXT, platformId INTEGER, import_flag INTEGER, lastTimeLaunched TEXT, launchcount INTEGER, isfolder TEXT, uppertitle TEXT,categorydata TEXT, gameInfoUrl TEXT)"); - DatabaseUtility.AddTable(sqlDB, "tblFilterItem", "CREATE TABLE tblFilterItem (applicationId INTEGER, grouperAppID INTEGER, fileID INTEGER, filename TEXT, tag INTEGER)"); - DatabaseUtility.AddTable(sqlDB, "tblSetting", "CREATE TABLE tblSetting (settingid INTEGER PRIMARY KEY, key TEXT, value TEXT)"); + ExecuteStmtNonQuery(sqlStmt); - DatabaseUtility.AddTable(sqlDB, "tblGenre", @"CREATE TABLE + + sqlStmt = @"CREATE TABLE tblFileItem (fileid INTEGER PRIMARY KEY, applicationId INTEGER, title TEXT, filename TEXT, imagefile TEXT, mainGenreId INTEGER, subGenreId INTEGER, country TEXT, manufacturerId INTEGER, year INTEGER, rating INTEGER, overview TEXT, platformId INTEGER, lastTimeLaunched TEXT, launchcount INTEGER, isfolder BOOL, categorydata TEXT, gameInfoUrl TEXT)"; + ExecuteStmtNonQuery(sqlStmt); + sqlStmt = @"CREATE TABLE tblFilterItem (applicationId INTEGER, grouperAppID INTEGER, fileID INTEGER, filename TEXT, tag INTEGER)"; + ExecuteStmtNonQuery(sqlStmt); + sqlStmt = @"CREATE TABLE tblSetting (settingid INTEGER PRIMARY KEY, key TEXT, value TEXT)"; + ExecuteStmtNonQuery(sqlStmt); + + sqlStmt = @"CREATE TABLE tblGenre ( genreId INTEGER PRIMARY KEY, genre TEXT - )"); - - DatabaseUtility.AddTable(sqlDB, "tblPlatform", @"CREATE TABLE + )"; + ExecuteStmtNonQuery(sqlStmt); + sqlStmt = @"CREATE TABLE tblPlatform ( platformId INTEGER PRIMARY KEY, platform TEXT - )"); - - DatabaseUtility.AddTable(sqlDB, "tblManufacturer", @"CREATE TABLE + )"; + ExecuteStmtNonQuery(sqlStmt); + sqlStmt = @"CREATE TABLE tblManufacturer ( manufacturerId INTEGER PRIMARY KEY, manufacturer TEXT - )"); - - - DatabaseUtility.AddIndex(sqlDB, "idxFile1", "CREATE INDEX idxFile1 ON tblFileItem(applicationId)"); - DatabaseUtility.AddIndex(sqlDB, "idxApp1", "CREATE INDEX idxApp1 ON tblApplicationItem(fatherNodeId)"); - DatabaseUtility.AddIndex(sqlDB, "idxFilterItem1", "CREATE UNIQUE INDEX idxFilterItem1 ON tblFilterItem(applicationId, fileID, grouperAppID)"); + )"; + ExecuteStmtNonQuery(sqlStmt); + sqlStmt = @"CREATE INDEX idxFile1 ON tblFileItem(applicationId)"; + ExecuteStmtNonQuery(sqlStmt); + sqlStmt = @"CREATE INDEX idxApp1 ON tblApplicationItem(fatherNodeId)"; + ExecuteStmtNonQuery(sqlStmt); + sqlStmt = @"CREATE UNIQUE INDEX idxFilterItem1 ON tblFilterItem(applicationId, fileID, grouperAppID)"; + ExecuteStmtNonQuery(sqlStmt); + return true; } @@ -174,9 +205,8 @@ /// </summary> private static void InsertDefaultDBValues() { - //Insert these - - sqlDB.Execute(@"INSERT INTO + + string sqlStmt = @"INSERT INTO tblGenre ( genre @@ -184,9 +214,11 @@ VALUES ( 'Unknown' - )"); + )"; - sqlDB.Execute(@"INSERT INTO + ExecuteStmtNonQuery(sqlStmt); + + sqlStmt = @"INSERT INTO tblManufacturer ( manufacturer @@ -194,10 +226,12 @@ VALUES ( 'Unknown' - )"); + )"; - sqlDB.Execute(@"INSERT INTO + ExecuteStmtNonQuery(sqlStmt); + + sqlStmt = @"INSERT INTO tblPlatform ( platform @@ -205,20 +239,23 @@ VALUES ( 'Unknown' - )"); + )"; - FillDefaultDBLexiconHelper("tblPlatform","platform",CreateSystemLexiconList()); - FillDefaultDBLexiconHelper("tblManufacturer","manufacturer",CreateManufacturerLexiconList()); + ExecuteStmtNonQuery(sqlStmt); + + FillDefaultDBLexiconHelper("tblPlatform", "platform", CreateSystemLexiconList()); + FillDefaultDBLexiconHelper("tblManufacturer", "manufacturer", CreateManufacturerLexiconList()); FillDefaultDBLexiconHelper("tblGenre", "genre", CreateGenreLexiconList()); } - private static void FillDefaultDBLexiconHelper(string tableName,string columnName,List<string> itemList) + private static void FillDefaultDBLexiconHelper(string tableName, string columnName, List<string> itemList) {// dont support parameters..... yet at least //AND mediaportals sqlite support dont support multiple inserst with ; bettween... gaaa //change to to net provider as soon as we can - string sqlStmt = ""; + string sqlStmt = string.Empty; + foreach (string insertValue in itemList) { sqlStmt = @" @@ -232,18 +269,17 @@ '" + insertValue + @"' );"; - sqlDB.Execute(sqlStmt); + ExecuteStmtNonQuery(sqlStmt); } - - } #region dbsettings static public string ReadSetting(string Key) { - SQLiteResultSet results; - string res = null; - string SQL = @" + string sqlStmt = string.Empty; + + string keyValue = string.Empty; + sqlStmt = @" SELECT value @@ -253,36 +289,30 @@ WHERE key ='" + Key + "'"; - results = sqlDB.Execute(SQL); - if (results != null && results.Rows.Count > 0) + object o = ExecuteStmtScalar(sqlStmt); + if (o != null) { - SQLiteResultSet.Row arr = results.Rows[0]; - res = arr.fields[0]; + keyValue = o.ToString(); } - //Log.Info("dw read setting key:{0}\nvalue:{1}", Key, applicationItem); - return res; + return keyValue; } static int CountKey(string Key) { - SQLiteResultSet results; - int res = 0; - results = sqlDB.Execute(@" + string sqlStmt = string.Empty; + int keyValue = 0; + sqlStmt = @" SELECT COUNT(*) FROM tblSetting - WHERE key ='" + Key + "'"); + WHERE key ='" + Key + "'"; - if (results != null && results.Rows.Count > 0) - { - SQLiteResultSet.Row arr = results.Rows[0]; - res = Int32.Parse(arr.fields[0]); - } - return res; + keyValue = Convert.ToInt32(ExecuteStmtScalar(sqlStmt)); + return keyValue; } static public bool KeyExists(string Key) @@ -292,9 +322,11 @@ static public void WriteSetting(string Key, string Value) { + string sqlStmt = string.Empty; + if (KeyExists(Key)) { - sqlDB.Execute(@" + sqlStmt = @" UPDATE tblSetting @@ -302,31 +334,34 @@ value = '" + Value + @"' WHERE - key = '" + Key + "'"); + key = '" + Key + "'"; + } else { - sqlDB.Execute(@" + sqlStmt = @" INSERT INTO tblSetting (key, value) - VALUES('" + Key + "', '" + Value + "')"); + VALUES('" + Key + "', '" + Value + "')"; } + ExecuteStmtNonQuery(sqlStmt); } static public void DeleteSetting(string Key) { - sqlDB.Execute("DELETE FROM tblSetting WHERE key = '" + Key + "'"); + + string sqlStmt = "DELETE FROM tblSetting WHERE key = '" + Key + "'"; + ExecuteStmtNonQuery(sqlStmt); } #endregion dbsettings public static int LexiconDataExists(string tableName, string columnName, string fieldValue) { - SQLiteResultSet result = null; string sqlStmt = @" SELECT - * + " + columnName + @"id FROM " + tableName + @" @@ -343,20 +378,22 @@ VALUES ( '" + ProgramUtils.Encode(fieldValue) + @"' - )"; + );"; try { - result = sqlDB.Execute(sqlStmt); - if (result.Rows.Count > 0) + + object o = ExecuteStmtScalar(sqlStmt); + + //lexion didnt exist, we save it + if (o == null) { - return Convert.ToInt32(result.Rows[0].fields[0]); + ExecuteStmtNonQuery(sqlStmtInsert); + return Convert.ToInt32(ExecuteStmtScalar(sqlStmt)); } else - {//lexion didnt exist, we save it - - sqlDB.Execute(sqlStmtInsert); - return sqlDB.LastInsertID(); + { + return Convert.ToInt32(o); } } catch (SQLiteException ex) @@ -367,7 +404,7 @@ #region default lexiconvalues - private static List<string> CreateGenreLexiconList() + private static List<string> CreateGenreLexiconList() { List<string> genreList = new List<string>(); @@ -379,7 +416,7 @@ return genreList; } - private static List<string> CreateManufacturerLexiconList() + private static List<string> CreateManufacturerLexiconList() { List<string> manufacturerList = new List<string>(); @@ -390,7 +427,7 @@ return manufacturerList; } - private static List<string> CreateSystemLexiconList() + private static List<string> CreateSystemLexiconList() { List<string> systemList = new List<string>(); @@ -412,20 +449,88 @@ } } + static public ItemType GetItemType(string columnName, string tableName, int id) + { + ItemType itemType = ItemType.UNKNOWN; + + string sqlStmt = "select " + columnName + " from " + tableName + " where applicationid = " + id; + + itemType = ProgramUtils.StringToSourceType(ExecuteStmtScalar(sqlStmt).ToString()); + return itemType; + } + + + public static DataTable ExecuteStmtDataTable(string stmt) + { + DataTable dataTable = new DataTable(); + + try + { + + using (SQLiteCommand command = new SQLiteCommand(SqlLiteConn)) + { + command.CommandText = stmt; + using (SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(command)) + { + dataAdapter.Fill(dataTable); + } + } + } + catch (Exception exception) + { + throw exception; + } + return dataTable; + } + + public static void ExecuteStmtNonQuery(string stmt) + { + try + { + using (SQLiteCommand command = new SQLiteCommand(SqlLiteConn)) + { + command.CommandText = stmt; + command.ExecuteNonQuery(); + } + } + catch (Exception exception) + { + throw exception; + } + } + + + public static object ExecuteStmtScalar(string stmt) + { + object o = null; + try + { + using (SQLiteCommand command = new SQLiteCommand(SqlLiteConn)) + { + command.CommandText = stmt; + o = command.ExecuteScalar(); + } + } + catch (Exception exception) + { + throw exception; + } + return o; + } + public static void LoadAllApplicationItems() { try { globalApplicationItemList.Clear(); - SQLiteResultSet results = sqlDB.Execute("select * from tblApplicationItem order by iposition"); - if (results.Rows.Count == 0) - return; - - for (int row = 0; row < results.Rows.Count; row++) + string sqlStmt = "select * from tblApplicationItem order by iposition"; + DataTable dataTable = ExecuteStmtDataTable(sqlStmt); + + foreach (DataRow row in dataTable.Rows) { - ApplicationItem applicationItem = (ApplicationItem)ApplicationItemFactory.AppFactory.GetApplicationItem( ProgramUtils.GetSourceType(results, row, "applicationItemType"), results, row); - // applicationItem.OnLaunchFilelink += new ApplicationItem.FilelinkLaunchEventHandler(LaunchFilelink); + ApplicationItem applicationItem = (ApplicationItem)ApplicationItemFactory.AppFactory.GetApplicationItem(GetItemType("applicationItemType", "tblApplicationItem", Convert.ToInt32(row["applicationId"])), row); + // applicationItem.OnLaunchFilelink += new ApplicationItem.FilelinkLaunchEventHandler(LaunchFilelink); globalApplicationItemList.Add(applicationItem); } } Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppFilesView.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppFilesView.cs 2007-07-27 18:24:42 UTC (rev 779) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppFilesView.cs 2007-07-28 08:35:10 UTC (rev 780) @@ -228,7 +228,7 @@ private void AddItem() { - FileItem file = new FileItem(currentApplication.db); + FileItem file = new FileItem(); file.AppID = currentApplication.AppID; // CRUCIAL!! :-) FileDetailsForm frmFileDetails = new FileDetailsForm(); frmFileDetails.CurApp = currentApplication; @@ -541,7 +541,7 @@ foreach (ListViewItem curItem in fileListView.SelectedItems) { FileItem curFile = (FileItem)curItem.Tag; - FilelinkItem newLink = new FilelinkItem(currentApplication.db); + FilelinkItem newLink = new FilelinkItem(); // example: "add the 'MAME' game 'r-type' to the 'top 20 shooters'" // 'MAME' : targetAppID // 'r-type': fileid Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/FileDetailsForm.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/FileDetailsForm.cs 2007-07-27 18:24:42 UTC (rev 779) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/FileDetailsForm.cs 2007-07-28 08:35:10 UTC (rev 780) @@ -34,7 +34,7 @@ using GUIPrograms; using GUIPrograms.Items; using GUIPrograms.Database; -using SQLite.NET; +using System.Data.SQLite; namespace GUIPrograms.Design @@ -116,9 +116,11 @@ List<ListItem> listItemList = new List<ListItem>(); - SQLiteResultSet resultSet = null; + SQLiteCommand command = DatabaseHandler.SqlLiteConn.CreateCommand(); + + - string sqlStmt = @" + command.CommandText = @" SELECT * @@ -129,29 +131,27 @@ try { - resultSet = DatabaseHandler.sqlDB.Execute(sqlStmt); + + using (SQLiteDataReader dataReader = command.ExecuteReader()) + { + while (dataReader.Read()) + { + + ListItem listItem = new ListItem(dataReader[1].ToString(), Convert.ToInt32(dataReader[0])); + listItemList.Add(listItem); + + } + } } catch (Exception exception) { throw exception; } - if (resultSet.Rows.Count > 0) - { - for (int i = 0; i < resultSet.Rows.Count; i++) - { - //genreid why oh why cant the implementation offer getvalue from columname... arrghr - //maybe can use the sqlnet provider later on.. - - ListItem listItem = new ListItem(resultSet.Rows[i].fields[1].ToString(), Convert.ToInt32(resultSet.Rows[i].fields[0])); - listItemList.Add(listItem); - } - - comboBox.DataSource = listItemList; comboBox.ValueMember = "Value"; comboBox.DisplayMember = "Text"; - } + } private void UpdateComboBoxes() Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/SetupForm.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/SetupForm.cs 2007-07-27 18:24:42 UTC (rev 779) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/SetupForm.cs 2007-07-28 08:35:10 UTC (rev 780) @@ -10,7 +10,7 @@ using System.Windows.Forms; using MediaPortal.GUI.Library; using MediaPortal.Util; -using SQLite.NET; +using System.Data.SQLite; using MediaPortal.Configuration; using System.IO; @@ -78,7 +78,7 @@ public SetupForm() { InitializeComponent(); - + appSettingsFileEditView.OnRefreshClick += new EventHandler(this.RefreshClick); //when imagefolder was clicked on filesview... appSettingsFileEditView.OnImageFolderSearch += new EventHandler(this.ImageSearchClick); @@ -341,7 +341,7 @@ #endregion Treeview helper Methods - + private void AttachFilesView() { this.tabControl.TabPages["directoryTabPage"].Controls.Clear(); @@ -360,8 +360,8 @@ this.tabControl.TabPages["directoryTabPage"].Controls.Add(filesProgress); } - + private AppSettingsBase GetCurrentSettingsPage() { AppSettingsBase appSettings = null; @@ -640,7 +640,7 @@ if (pageCurrentSettings != null) { // create a pseudo-appitem and read the values from the xml node - ApplicationItem tempApp = new ApplicationItem(curApp.db); + ApplicationItem tempApp = new ApplicationItem(); tempApp.LoadFromXmlProfile(node); pageCurrentSettings.LoadFromAppItem(tempApp); appSettingsFileEditView.FileExtensionsText = tempApp.ValidExtensions; @@ -686,7 +686,7 @@ { if (SaveAppItem()) { - ApplicationItem newApplication = (ApplicationItem)ApplicationItemFactory.AppFactory.GetApplicationItem(newSourceType, null, 0); + ApplicationItem newApplication = (ApplicationItem)ApplicationItemFactory.AppFactory.GetApplicationItem(newSourceType, null); globalApplicationList.Add(newApplication); newApplication.FatherID = GetTreeNodeApplicationItemId(); @@ -801,8 +801,8 @@ } } - + private void treeView_DragDrop(object sender, DragEventArgs e) { // Retrieve the client coordinates of the drop location. @@ -958,11 +958,17 @@ } } } + + //close conn + if (DatabaseHandler.SqlLiteConn.State == ConnectionState.Open) + { + DatabaseHandler.SqlLiteConn.Close(); + } } - - + + private void DoRefresh() { bool DoIt = false; @@ -1028,10 +1034,7 @@ private void FillComboBox(string tableName, string orderBy, ComboBox comboBox) { - - List<ListItem> listItemList = new List<ListItem>(); - SQLiteResultSet resultSet = null; string sqlStmt = @" SELECT @@ -1044,29 +1047,28 @@ try { - resultSet = DatabaseHandler.sqlDB.Execute(sqlStmt); + + SQLiteCommand command = new SQLiteCommand(DatabaseHandler.SqlLiteConn); + + command.CommandText = sqlStmt; + using (SQLiteDataReader dataReader = command.ExecuteReader()) + { + while (dataReader.Read()) + { + ListItem listItem = new ListItem(dataReader[1].ToString(), Convert.ToInt32(dataReader[0])); + listItemList.Add(listItem); + } + } } catch (Exception exception) { throw exception; } - if (resultSet.Rows.Count > 0) - { - for (int i = 0; i < resultSet.Rows.Count; i++) - { - //genreid why oh why cant the implementation offer getvalue from columname... arrghr - //maybe can use the sqlnet provider later on.. + comboBox.DataSource = listItemList; + comboBox.ValueMember = "Value"; + comboBox.DisplayMember = "Text"; - ListItem listItem = new ListItem(resultSet.Rows[i].fields[1].ToString(), Convert.ToInt32(resultSet.Rows[i].fields[0])); - listItemList.Add(listItem); - } - - - comboBox.DataSource = listItemList; - comboBox.ValueMember = "Value"; - comboBox.DisplayMember = "Text"; - } } private void mameImportToolStripMenuItem_Click(object sender, EventArgs e) @@ -1128,6 +1130,7 @@ private void InsertData(string tableName, string column, string insertValue) { + string sqlStmt = @" INSERT INTO " + tableName + @" @@ -1142,7 +1145,7 @@ try { - DatabaseHandler.sqlDB.Execute(sqlStmt); + DatabaseHandler.ExecuteStmtNonQuery(sqlStmt); } catch (Exception exception) { @@ -1166,7 +1169,7 @@ try { - DatabaseHandler.sqlDB.Execute(sqlStmt); + DatabaseHandler.ExecuteStmtNonQuery(sqlStmt); } catch (Exception exception) { @@ -1189,7 +1192,7 @@ " + column + @" <> 1 "; try { - DatabaseHandler.sqlDB.Execute(sqlStmt); + DatabaseHandler.ExecuteStmtNonQuery(sqlStmt); } catch (Exception exception) { Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/GUIPrograms.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/GUIPrograms.cs 2007-07-27 18:24:42 UTC (rev 779) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/GUIPrograms.cs 2007-07-28 08:35:10 UTC (rev 780) @@ -44,6 +44,8 @@ using GUIPrograms.Items; using GUIPrograms.Database; using GUIPrograms.Design; +using System.Data.SQLite; +using System.Data; namespace GUIPrograms { @@ -93,7 +95,7 @@ } public string Author() { - return "Reconstruct by Northern/Chefkoch"; + return "Reconstruct by Northern.Thanks to chefkoch,waebard"; } public void ShowPlugin() { @@ -427,12 +429,18 @@ { selectedItemIndex = GetSelectedItemNo(); } + + + if (DatabaseHandler.SqlLiteConn.State == ConnectionState.Open) + { + DatabaseHandler.SqlLiteConn.Close(); + } } void InitMyPrograms() { LoadFolderSettings(""); - + if (skipInit) { mapSettings.LastAppID = -1; @@ -444,14 +452,14 @@ lastApp = GetAppByID(mapSettings.LastAppID); if (lastApp != null) { - lastFilepath = lastApp.DefaultFilepath(); + prevFilepath = lastApp.DefaultFilepath(); this.CurrentSortAsc = mapSettings.SortAscending; ViewHandler.CurrentLevel = mapSettings.LastViewLevel; lastApp.ViewHandler = this.ViewHandler; } else { - lastFilepath = ""; + prevFilepath = ""; } UpdateListControl(); ShowThumbPanel(); @@ -465,7 +473,7 @@ static int startWindow = (int)GUIWindow.Window.WINDOW_FILES; protected ProgramSort.SortMethod currentSortMethod = ProgramSort.SortMethod.Name; - string currentView = ""; + bool currentSortAsc = true; ProgramViewHandler viewHandler = ProgramViewHandler.Instance; @@ -474,7 +482,7 @@ DirectoryHistory itemHistory = new DirectoryHistory(); public ApplicationItem lastApp = null; - public string lastFilepath = ""; + public string prevFilepath = ""; public int selectedItemIndex = -1; int slideSpeed = 3000; // speed in milliseconds between two slides long slideTime = 0; @@ -510,12 +518,6 @@ } } - public string CurrentView - { - get { return currentView; } - set { currentView = value; } - } - public int StartWindow { get { return startWindow; } @@ -664,7 +666,7 @@ protected override void OnClicked(int controlId, GUIControl control, Action.ActionType actionType) { base.OnClicked(controlId, control, actionType); - + if (control == btnViewAs) { mapSettings.SwitchToNextViewLayout(); @@ -693,7 +695,7 @@ if (lastApp != null) { lastApp.Refresh(true); - lastFilepath = lastApp.DefaultFilepath(); + prevFilepath = lastApp.DefaultFilepath(); // todo: reset viewHandler UpdateButtonStates(); UpdateListControl(); @@ -758,11 +760,8 @@ _lastThumbnailPath = ThumbnailPath; } - RenderThumbnail(timePassed); } - - #endregion #region Display @@ -840,7 +839,6 @@ btnSortBy.Label = sortBy; btnSortBy.IsAscending = CurrentSortAsc; } - SetLabels(); } void ShowThumbPanel() @@ -931,6 +929,7 @@ { GUIControl.SelectItemControl(GetID, facadeView.GetID, selectedItemIndex); } + SetLabels(); } int DisplayFiles() @@ -938,10 +937,10 @@ if (lastApp == null) return 0; // Refresh FileList if view has changed, while this appItem was not active - if (lastApp.CurrentView != this.CurrentView) + if ((lastApp.CurrentView != ViewHandler.CurrentView) || (lastApp.filesAreLoaded == false)) { lastApp.LoadFiles(); - lastApp.CurrentView = this.CurrentView; + lastApp.CurrentView = ViewHandler.CurrentView; } int totalFiles = lastApp.DisplayFiles(lastApp.FileDirectory, facadeView); @@ -1020,11 +1019,10 @@ { if (lastApp != null) { - if ((lastFilepath != null) && (lastFilepath != "") && (lastFilepath != lastApp.FileDirectory)) + if ((prevFilepath != null) && (prevFilepath != "") && (prevFilepath != lastApp.FileDirectory)) { // back item in filelist clicked - string newFilepath = Path.GetDirectoryName(lastFilepath); - lastFilepath = newFilepath; + prevFilepath = Path.GetDirectoryName(prevFilepath); } else { @@ -1061,19 +1059,19 @@ if (lastApp != null) { mapSettings.LastAppID = lastApp.AppID; - lastFilepath = lastApp.DefaultFilepath(); + prevFilepath = lastApp.DefaultFilepath(); } else { // back to home screen..... mapSettings.LastAppID = -1; - lastFilepath = ""; + prevFilepath = ""; } } } UpdateButtonStates(); UpdateListControl(); - RestoreItemIndex(lastApp, lastFilepath); + RestoreItemIndex(lastApp, prevFilepath); } else { @@ -1242,9 +1240,6 @@ } } - - - void OnClick() { GUIListItem item = GetSelectedItem(); @@ -1331,6 +1326,8 @@ if (item.Label.Equals(ProgramUtils.cBackLabel)) return; if (item.MusicTag == null) return; + if (item.MusicTag is ApplicationItem) return; + if (item.MusicTag is FileItem) { curFile = (FileItem)item.MusicTag; @@ -1379,7 +1376,6 @@ int nNewWindow = (int)Window.WINDOW_FILES; StartWindow = nNewWindow; CurrentLayout = Layout.List; - CurrentView = GUILocalizeStrings.Get(100000 + GetID);//my files ViewHandler.CurrentView = GUILocalizeStrings.Get(100000 + GetID);//my files if (nNewWindow != GetID) { @@ -1389,8 +1385,6 @@ else { ViewDefinition selectedView = (ViewDefinition)ViewHandler.Views[dlg.SelectedLabel - 1]; - CurrentView = selectedView.Name; - ViewHandler.CurrentView = selectedView.Name; int nNewWindow = (int)Window.WINDOW_FILES; if (GetID != nNewWindow) Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/GUIProgramsAlt.csproj =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/GUIProgramsAlt.csproj 2007-07-27 18:24:42 UTC (rev 779) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/GUIProgramsAlt.csproj 2007-07-28 08:35:10 UTC (rev 780) @@ -43,6 +43,7 @@ <Reference Include="Microsoft.DirectX.Direct3D, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <Reference Include="System" /> <Reference Include="System.Data" /> + <Reference Include="System.Data.SQLite, Version=1.0.44.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86" /> <Reference Include="System.Drawing" /> <Reference Include="System.Management" /> <Reference Include="System.Runtime.Serialization.Formatters.Soap" /> @@ -163,6 +164,7 @@ <Content Include="MetaData\myProgramsAltPreconfiguration.xml" /> <Content Include="skin\BlueTwo\myprograms.xml" /> <Content Include="skin\BlueTwo\myProgramsAltFileInfo.xml" /> + <Content Include="SqlNet\System.Data.SQLite.DLL" /> </ItemGroup> <ItemGroup> <EmbeddedResource Include="Design\AppFilesImportProgress.resx"> Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/GUIProgramsAltFileInfo.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/GUIProgramsAltFileInfo.cs 2007-07-27 18:24:42 UTC (rev 779) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/GUIProgramsAltFileInfo.cs 2007-07-28 08:35:10 UTC (rev 780) @@ -233,14 +233,11 @@ { coverArtImage = currentFileItem.Imagefile; } - - - } } catch (Exception ex2) { - Log.Error("GUIVideoInfo: Error creating new thumbs for {0} - {1}", currentFileItem.Imagefile, ex2.Message); + Log.Error("GUIProgramsAltInfo: Error creating new thumbs for {0} - {1}", currentFileItem.Imagefile, ex2.Message); } currentFileItem.SetProperties(); } Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Imports/GamebaseImport.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Imports/GamebaseImport.cs 2007-07-27 18:24:42 UTC (rev 779) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Imports/GamebaseImport.cs 2007-07-28 08:35:10 UTC (rev 780) @@ -51,17 +51,16 @@ public event MyEventHandler OnSendMessage = null; - public GamebaseImport(ApplicationItem objApp, SQLiteClient objDB) + public GamebaseImport(ApplicationItem objApp) { applicationItem = objApp; - sqlDB = objDB; } void DBImportGamebaseItem(OleDbDataReader myReader, string romFilename, string imgFilename, int curPos, int maxGames) { - FileItem curFile = new FileItem(sqlDB); + FileItem curFile = new FileItem(); curFile.FileID = -1; // to force an INSERT statement when writing the item curFile.AppID = applicationItem.AppID; curFile.Title = myReader["name"].ToString(); Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Imports/MameImport.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Imports/MameImport.cs 2007-07-27 18:24:42 UTC (rev 779) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Imports/MameImport.cs 2007-07-28 08:35:10 UTC (rev 780) @@ -31,7 +31,7 @@ using System.IO; using Core.Util; using MediaPortal.GUI.Library; -using SQLite.NET; +using System.Data.SQLite; using System.Text.RegularExpressions; using System.Text; @@ -49,7 +49,6 @@ public class MameImport { ApplicationItem currentApplication = null; - SQLiteClient sqliteClient = null; // event: read new file public delegate void MyEventHandler(string informationMessage, int progressBarCtr); @@ -76,11 +75,10 @@ List<string> localRomNames = new List<string>(); - public MameImport(ApplicationItem applicationItem, SQLiteClient objDB) + public MameImport(ApplicationItem applicationItem) { currentApplication = applicationItem; - sqliteClient = objDB; } @@ -106,7 +104,6 @@ { while ((line = streamReader.ReadLine()) != null) { - Match match = regexMameGameName.Match(line); if (match.Success) @@ -323,11 +320,18 @@ localRomNames.Reverse(); double total = localRomNames.Count; - foreach (string fileName in localRomNames) - {// - FillFileItem(fileName, i, total); - i++; + + using (SQLiteTransaction transaction = DatabaseHandler.SqlLiteConn.BeginTransaction()) + { + foreach (string fileName in localRomNames) + {// + FillFileItem(fileName, i, total); + i++; + } + transaction.Commit(); } + + SendText("Import done...................", 100); } @@ -373,7 +377,7 @@ if ((!onlyOriginals) || (onlyOriginals && (!cloneRomDictionary.ContainsKey(curRomname)))) { - FileItem curFile = new FileItem(sqliteClient); + FileItem curFile = new FileItem(); curFile.AppID = currentApplication.AppID; curFile.Filename = fullRomname; curFile.Imagefile = GetImageFile(curRomname); @@ -435,7 +439,8 @@ ProcessFullEntry(curFile, fullEntry); ProcessGenreEntry(curFile, genreEntry); ProcessVersionEntry(curFile, versionEntry); - + + int LexiconId = DatabaseHandler.LexiconDataExists("tblPlatform", "platform", "Arcade"); curFile.PlatformId = LexiconId; @@ -455,8 +460,7 @@ } } - - void ProcessFullEntry(FileItem curFile, string fullEntry) + void ProcessFullEntry(FileItem curFile, string fullEntry) { // mspacman "Ms. Pac-Man" Match m = regexMameGameName.Match(fullEntry); Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Items/ApplicationItem.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Items/ApplicationItem.cs 2007-07-27 18:24:42 UTC (rev 779) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Items/ApplicationItem.cs 2007-07-28 08:35:10 UTC (rev 780) @@ -25,10 +25,11 @@ using System; using System.Collections.Generic; -using System.Diagnostics; +using System.Diagnostics; using System.IO; using System.Xml; -using SQLite.NET; +using System.Data.SQLite; +using System.Data; using MediaPortal.Configuration; using MediaPortal.GUI.Library; @@ -47,8 +48,6 @@ { #region Variables - - int appID; int fatherID; string title; @@ -68,22 +67,16 @@ string currentView = ""; + public List<BaseItem> ItemList = new List<BaseItem>(); public bool filesAreLoaded = false; // load on demand.... - // protected FileItemList fileList = null; + // protected FileItemList fileList = null; public bool linksAreLoaded = false; // load on demand.... - - bool importMamePlaychoice10 = false; bool importMameMahjong = false; bool refreshGUIAllowed = false; - - - - - // more variables, maybe need some renaming or anything else Process proc; ItemType sourceType; string sourceFile; @@ -103,18 +96,11 @@ protected string lastFilepath = ""; // cached path - //private DatabaseSorter dbPc = new DatabaseSorter(); - //private ProgramSort dbPc = new ProgramSort(ProgramSort.SortMethod.Name, true); - #endregion #region Properties // Helper Routines - public SQLiteClient db - { - get { return sqlDB; } - } public int AppID { @@ -211,7 +197,6 @@ set { appPosition = value; } } - public string CurrentView { get { return currentView; } @@ -229,7 +214,6 @@ set { importMameMahjong = value; } } - // more Properties, maybe need some renaming or anything else public string FileDirectory { @@ -301,10 +285,10 @@ #region Constructor - public ApplicationItem(SQLiteClient initSqlDb) : base(initSqlDb) + public ApplicationItem() { - - // .. init member variables ... + + // .. init member variables ... appID = -1; fatherID = -1; title = ""; @@ -333,10 +317,7 @@ #endregion - - - - protected void LaunchFilelink(FilelinkItem curLink, bool MPGUIMode) + protected void LaunchFilelink(FilelinkItem curLink, bool MPGUIMode) { /*ApplicationItem targetApp = GetAppByID(curLink.TargetAppID); if (targetApp != null) @@ -356,9 +337,6 @@ protected int GetID = ProgramUtils.GetID; - - - public FileItem PrevFile(FileItem curFile) { if (ItemList == null) return null; @@ -402,13 +380,13 @@ // Launch File by item if (mpGuiMode) - curFileItem.UpdateLaunchInfo(); + curFileItem.UpdateLaunchInfo(); ProcessStartInfo procStart = new ProcessStartInfo(); if (this.Filename != "") { // use the APPLICATION launcher and add current file information - + // filename of the application procStart.FileName = this.Filename; @@ -480,7 +458,8 @@ proc.StartInfo = procStart; ProgramUtils.StartProcess(proc, this.WaitForExit); - */Utils.StartProcess(procStart, this.WaitForExit); + */ + Utils.StartProcess(procStart, this.WaitForExit); if (mpGuiMode) { @@ -533,6 +512,42 @@ } } + public override void ItemLoad(int appID, string pathSubfolders) + { + + try + { + ItemList.Clear(); + + filePath = pathSubfolders; + string sqlQuery = ViewHandler.BuildQuery(appID, pathSubfolders); + DataTable dataTable = new DataTable(); + SQLiteCommand command = sqlDB.CreateCommand(); + command.CommandText = sqlQuery; + SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(command); + dataAdapter.Fill(dataTable); + + foreach (DataRow row in dataTable.Rows) + { + if (ViewHandler.IsFilterQuery) + { + FilterItem curFile = (FilterItem)ApplicationItemFactory.AppFactory.GetApplicationItem(ItemType.FILTERITEM, row); + ItemList.Add(curFile); + } + else + { + FileItem curFile = (FileItem)ApplicationItemFactory.AppFactory.GetApplicationItem(ItemType.FILEITEM, row); + ItemList.Add(curFile); + } + } + + } + catch (SQLiteException ex) + { + Log.Info("Filedatabase exception err:{0} stack:{1}", ex.Message, ex.StackTrace); + } + } + protected void LaunchCmd(string commands) { string results = ""; @@ -589,29 +604,24 @@ public virtual int DisplayFiles(string filePath, GUIFacadeControl facadeView) { int totalItems = 0; - if (filePath != lastFilepath) - { - ItemLoad(AppID, filePath); - //Filelinks.Load(AppID, filePath); - } + totalItems = totalItems + DisplayItemList(filePath, this.ItemList, facadeView); - // totalItems = totalItems + DisplayArrayList(filePath, this.Filelinks, facadeView); - lastFilepath = filePath; + return totalItems; } - public override void OnClick(BaseItem baseItem,GUIPrograms guiPrograms) + public override void OnClick(BaseItem baseItem, GUIPrograms guiPrograms) { ApplicationItem candidate = (ApplicationItem)baseItem; guiPrograms.SaveItemIndex(guiPrograms.GetSelectedItemNo().ToString(), guiPrograms.lastApp, lastFilepath); guiPrograms.lastApp = candidate; guiPrograms.mapSettings.LastAppID = guiPrograms.lastApp.AppID; - guiPrograms.lastFilepath = guiPrograms.lastApp.DefaultFilepath(); + guiPrograms.prevFilepath = guiPrograms.lastApp.DefaultFilepath(); guiPrograms.ViewHandler.CurrentLevel = 0; guiPrograms.lastApp.ViewHandler = guiPrograms.ViewHandler; } - protected int DisplayArrayList(string filePath, List<object> dbItems, GUIFacadeControl facadeView) + /* protected int DisplayArrayList(string filePath, List<object> dbItems, GUIFacadeControl facadeView) { int totalItems = 0; //foreach (FileItem currentFileItem in dbItems) @@ -632,10 +642,8 @@ } return totalItems; } + */ - - - public virtual bool FileEditorAllowed() { return true; // otherwise, override this in child class @@ -680,33 +688,24 @@ /// </summary> private int GetNewAppID() { - if (sqlDB == null) return -1; - + int result = 0; // won't work in multiuser environment :) - SQLiteResultSet results; - int res = 0; - results = sqlDB.Execute("SELECT MAX(applicationId) FROM tblApplicationItem"); - SQLiteResultSet.Row arr = results.Rows[0]; - if (arr.fields[0] != null) + string sqlStmt = "SELECT MAX(applicationId) FROM tblApplicationItem"; + object o = DatabaseHandler.ExecuteStmtScalar(sqlStmt); + if (o.ToString() != "") { - if (arr.fields[0] != "") - { - res = Int32.Parse(arr.fields[0]); - } + result = Convert.ToInt32(o); } - return res + 1; + return result + 1; } private void Insert() { - if (sqlDB == null) return; - string sql = ""; - try { AppID = GetNewAppID(); // important to avoid subsequent inserts! - sql = String.Format(@" + string sqlStmt = @" INSERT INTO tblApplicationItem ( @@ -736,33 +735,33 @@ ) VALUES ( - '"+ AppID + @"', - '"+ FatherID + @"', - '"+ ProgramUtils.Encode(Title) +@"', - '"+ ProgramUtils.Encode(Filename) +@"', - '"+ ProgramUtils.Encode(Arguments) + @"', - '"+ ProgramUtils.WindowStyleToStr(WindowStyle) +@"', - '"+ ProgramUtils.Encode(StartupDir) +@"', - '"+ ProgramUtils.BooleanToStr(UseShellExecute) +@"', - '"+ ProgramUtils.BooleanToStr(UseQuotes) +@"', - '"+ ProgramUtils.ApplicationTypeToString(SourceType) +@"', - '"+ ProgramUtils.Encode(Source) +@"', - '"+ ProgramUtils.Encode(Imagefile) +@"', - '"+ ProgramUtils.Encode(FileDirectory) +@"', - '"+ ProgramUtils.Encode(ImageDirectory)+@"', - '"+ ProgramUtils.Encode(ValidExtensions)+@"', - '"+ ProgramUtils.BooleanToStr(importValidImagesOnly)+@"', - '"+ Position+@"', - '"+ ProgramUtils.BooleanToStr(Enabled)+@"', - '" + ProgramUtils.BooleanToStr(RefreshGUIAllowed)+@"', - '"+ ProgramUtils.Encode(SystemDefault)+@"', - '"+ ProgramUtils.BooleanToStr(WaitForExit) +@"', - '"+ ProgramUtils.Encode(PreLaunch)+@"', - '"+ ProgramUtils.Encode(PostLaunch)+@"' + " + AppID + @", + " + FatherID + @", + '" + ProgramUtils.Encode(Title) + @"', + '" + ProgramUtils.Encode(Filename) + @"', + '" + ProgramUtils.Encode(Arguments) + @"', + '" + ProgramUtils.WindowStyleToStr(WindowStyle) + @"', + '" + ProgramUtils.Encode(StartupDir) + @"', + " + ProgramUtils.TrueOrFalseToInt(UseShellExecute.ToString()) + @", + '" + UseQuotes + @"', + '" + ProgramUtils.ApplicationTypeToString(SourceType) + @"', + '" + ProgramUtils.Encode(Source) + @"', + '" + ProgramUtils.Encode(Imagefile) + @"', + '" + ProgramUtils.Encode(FileDirectory) + @"', + '" + ProgramUtils.Encode(ImageDirectory) + @"', + '" + ProgramUtils.Encode(ValidExtensions) + @"', + " + ProgramUtils.TrueOrFalseToInt(importValidImagesOnly.ToString()) + @", + " + Position + @", + " + ProgramUtils.TrueOrFalseToInt(Enabled.ToString()) + @", + " + ProgramUtils.TrueOrFalseToInt(RefreshGUIAllowed.ToString()) + @", + '" + ProgramUtils.Encode(SystemDefault) + @"', + " + ProgramUtils.TrueOrFalseToInt(WaitForExit.ToString()) + @", + '" + ProgramUtils.Encode(PreLaunch) + @"', + '" + ProgramUtils.Encode(PostLaunch) + @"' )" - - ); - sqlDB.Execute(sql); + ; + + DatabaseHandler.ExecuteStmtNonQuery(sqlStmt); } catch (SQLiteException ex) { @@ -772,15 +771,13 @@ private void Update() { - if (sqlDB == null) return; + if (AppID == -1) return; - string sql = ""; - try { - sql = String.Format( - @"UPDATE + string sqlStmt = + @"UPDATE tblApplicationItem SET title = '" + ProgramUtils.Encode(Title) + @"', @@ -788,44 +785,43 @@ arguments = '" + ProgramUtils.Encode(Arguments) + @"', windowstyle = '" + ProgramUtils.WindowStyleToStr(WindowStyle) + @"', startupdir = '" + ProgramUtils.Encode(StartupDir) + @"', - useShellExecute = '" + ProgramUtils.BooleanToStr(UseShellExecute) + @"', - useQuotes = '" + ProgramUtils.BooleanToStr(UseQuotes) + @"', + useShellExecute = " + ProgramUtils.TrueOrFalseToInt(UseShellExecute.ToString()) + @", + useQuotes = " + ProgramUtils.TrueOrFalseToInt(UseQuotes.ToString()) + @", applicationItemType = '" + ProgramUtils.ApplicationTypeToString(SourceType) + @"', source = '" + ProgramUtils.Encode(Source) + @"', imagefile = '" + ProgramUtils.Encode(Imagefile) + @"', filedirectory = '" + ProgramUtils.Encode(FileDirectory) + @"', imagedirectory = '" + ProgramUtils.Encode(ImageDirectory) + @"', validExtensions = '" + ProgramUtils.Encode(ValidExtensions) + @"', - importValidImagesOnly = '" + ProgramUtils.BooleanToStr(importValidImagesOnly) + @"', + importValidImagesOnly = " + ProgramUtils.TrueOrFalseToInt(importValidImagesOnly.ToString()) + @", iposition = " + Position + @", - enabled = '" + ProgramUtils.BooleanToStr(Enabled) + @"', + enabled = " + ProgramUtils.TrueOrFalseToInt(Enabled.ToString()) + @", fatherNodeId = '" + FatherID + @"', - refreshGUIAllowed = '" + ProgramUtils.BooleanToStr(RefreshGUIAllowed) +@"', + refreshGUIAllowed = " + ProgramUtils.TrueOrFalseToInt(RefreshGUIAllowed.ToString()) + @", systemDefault = '" + ProgramUtils.Encode(SystemDefault) + @"', - waitForExit = '" + ProgramUtils.BooleanToStr(WaitForExit) + @"', + waitForExit = " + ProgramUtils.TrueOrFalseToInt(WaitForExit.ToString()) + @", preLaunch = '" + ProgramUtils.Encode(PreLaunch) + @"', postLaunch = '" + ProgramUtils.Encode(PostLaunch) + @"' - WHERE applicationId = " + AppID); - sqlDB.Execute(sql); + WHERE applicationId = " + AppID; + + DatabaseHandler.ExecuteStmtNonQuery(sqlStmt); ; } catch (SQLiteException ex) { Log.Info("programdatabase exception err:{0} stack:{1}", ex.Message, ex.StackTrace); - Log.Info("sql \n{0}", sql); } } public void Delete() { - if (sqlDB == null) return; if (AppID == -1) return; try { DeleteFiles(); DeleteFileLinks(); - sqlDB.Execute(String.Format("delete from tblApplicationItem where applicationId = {0}", AppID)); + DatabaseHandler.ExecuteStmtNonQuery("delete from tblApplicationItem where applicationId = " + AppID); } catch (SQLiteException ex) { @@ -836,12 +832,11 @@ protected void DeleteFiles() { - if (sqlDB == null) return; - if (AppID == -1) return; + if (AppID == -1) return; try { - sqlDB.Execute(String.Format("delete from tblFileItem where applicationId = {0}", AppID)); + DatabaseHandler.ExecuteStmtNonQuery("delete from tblFileItem where applicationId = " + AppID); } catch (SQLiteException ex) { @@ -851,12 +846,11 @@ protected void DeleteFileLinks() { - if (sqlDB == null) return; if (AppID == -1) return; try { - sqlDB.Execute(String.Format("delete from tblFilterItem where applicationId = {0} or grouperappid = {0}", AppID)); + DatabaseHandler.ExecuteStmtNonQuery("delete from tblFilterItem where applicationId = " + AppID + " or grouperappid = " + AppID); } catch (SQLiteException ex) { @@ -866,18 +860,11 @@ public virtual void LoadFiles() { - //linksAreLoaded = true; - if (sqlDB == null) return; - lastFilepath = ""; ItemLoad(AppID, ""); filesAreLoaded = true; } - - - - public void InsertOrUpdateSettings() { if (appID == -1) @@ -896,33 +883,32 @@ // query with data to fix string sqlSelectDataToFix = String.Format("select fi.applicationId, fi.fileid as oldfileid, f.fileid as newfileid, fi.filename as filename from tblFilterItem fi, tblFileItem f where fi.applicationId = f.applicationId and fi.filename = f.filename and fi.applicationId = {0}", AppID); + DataTable dataTable = null; - // update command to fix one single link - string sqlFixOneLink = "update tblFilterItem set fileID = {0}, tag = 0 where applicationId = {1} and filename = '{2}'"; - - SQLiteResultSet rows2fix; - - try { - // 1) initialize TAG - sqlDB.Execute(String.Format("update tblFilterItem set tag = 1234 where applicationId = {0}", AppID)); + // 1) initialize TAG.. // update command to fix one single link + DatabaseHandler.ExecuteStmtNonQuery("update tblFilterItem set tag = 1234 where applicationId = " + AppID); + dataTable = DatabaseHandler.ExecuteStmtDataTable(sqlSelectDataToFix); + // 2) fix all file... [truncated message content] |