/// <summary> /// loads the projects from the database /// </summary> public void loadProjects() { try { if (db == null) { db = new sqlite("lvcontrol.db"); db.execute("CREATE TABLE IF NOT EXISTS projects (name, description, location, note, time DEFAULT (datetime('now')),autoMonitor)"); db.execute("CREATE TABLE IF NOT EXISTS excludeLocations (path, projectID)"); } projects = new List<Project>(); List<object[]> projectRaw = db.selectAll("projects", true); foreach (object[] cells in projectRaw) { if (cells.Length >= 6) { try { long key = Convert.ToInt32(cells[0]); string name = Convert.ToString(cells[1]); string description = Convert.ToString(cells[2]); string location = Convert.ToString(cells[3]); string note = Convert.ToString(cells[4]); bool auto = Convert.ToBoolean(cells[6]); DateTime time = Convert.ToDateTime(Convert.ToString(cells[5])); SqliteParameters parm = new SqliteParameters(); parm.add("@proID", key); Project pro = new Project(key, name, description, location, note, time, auto); db.query(@"SELECT path FROM excludeLocations WHERE projectID=@proID", parm); List<object[]> tableData = new List<object[]>(); object[] values = db.readNext(); while (values != null) { pro.loadExcludeLocation(Convert.ToString(values[0])); values = db.readNext(); } projects.Add(pro); } catch (Exception e) { MessageBox.Show("Failed to load a Project will continue loading", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } catch (Exception e) { MessageBox.Show("Failed to load Project unable to continue. Try restarting", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// saves teh not of an applcation to the database /// </summary> /// <param name="pro"></param> public void updateNote(Project pro) { SqliteParameters parm = new SqliteParameters(); parm.add("@newNote", pro.Note); parm.add("@ID", pro.Key); db.execute("UPDATE projects SET note = @newNote WHERE rowid=@ID", parm); }
/// <summary> /// saves the changes of a project to the database /// </summary> /// <param name="pro"></param> public void updateProject(Project pro) { SqliteParameters parm = new SqliteParameters(); parm.add("@newName", pro.Name); parm.add("@newDesc", pro.Description); parm.add("@newLocation", pro.Location); parm.add("@newNote", pro.Note); parm.add("@newTime", String.Format("{0:yyyy-MM-dd HH:mm:ss}", pro.Time)); parm.add("@newAuto", pro.AutoMonitor); parm.add("@ID", pro.Key); if (pro.NewEntry) { db.execute("INSERT INTO projects (name, description, location, note, time, autoMonitor ) VALUES (@newName,@newDesc,@newLocation,@newNote,@newTime,@newAuto)", parm); pro.Key = db.lastID(); pro.NewEntry = false; } else { db.execute("UPDATE projects SET name = @newName, description = @newDesc, location = @newLocation, time = @newTime, autoMonitor= @newAuto WHERE rowid=@ID", parm); } if (pro.ExcludeLocationsChanged) { parm = new SqliteParameters(); parm.add("@proID", pro.Key); parm.add("@newpath", ""); db.execute(@"DELETE FROM excludeLocations WHERE projectID=@proID", parm); if (pro.ExcludeLocations != null) { foreach (string path in pro.ExcludeLocations) { parm.edit("@newpath", path); db.execute("INSERT INTO excludeLocations (path, projectID ) VALUES (@newpath,@proID)", parm); } } } pro.ModRecorder.reload(pro); }
/// <summary> /// removes the project from the local list and from the database /// </summary> /// <param name="pro"></param> public void removeProject(Project pro) { if (!pro.NewEntry) { SqliteParameters parm = new SqliteParameters(); parm.add("@ID", pro.Key); db.execute("DELETE FROM projects WHERE rowid=@ID", parm); } projects.Remove(pro); }