public TreeNode CreateNode(DatabaseDirectory databaseDirectory) { var dirNode = new TreeNode(databaseDirectory.name_Folder); dirNode.Tag = databaseDirectory; dirNode.ImageIndex = 0; dirNode.SelectedImageIndex = 0; //add tag for dirNode foreach (var directory in databaseDirectory.GetDirectories()) { dirNode.Nodes.Add(CreateNode(directory)); } foreach (var file in databaseDirectory.GetFiles()) { var a = new TreeNode(file.name_file); a.Tag = file; a.ImageIndex = 2; a.SelectedImageIndex = 2; dirNode.Nodes.Add(a); } return(dirNode); }
public DatabaseDirectory CreateNode(DataRow nodeRow, Connector connector) { var dirNode = new DatabaseDirectory( Convert.ToInt32(nodeRow["id_folder"]), nodeRow["name_folder"].ToString(), Convert.ToInt32(nodeRow["parent_folder"]) ); //Add and client_created_by = clientID var childFoldersDataTable = connector.ExecuteSelectQuery( string.Format("select * from Folders where parent_folder = {0} and created_by_client = {1}", nodeRow["id_folder"], _clientID) ); var childFilesDataTable = connector.ExecuteSelectQuery( string.Format("select * from Files where parent_folder = {0} and created_by_client = {1}", nodeRow["id_folder"], _clientID) ); foreach (DataRow row in childFoldersDataTable.Rows) { dirNode.FoldersList.Add(CreateNode(row, connector)); } foreach (DataRow row in childFilesDataTable.Rows) { dirNode.FilesList.Add(DatabaseDirectory.AddFile(row)); } return(dirNode); }
private void SetOfflineTree() { _rootDirectory = new DatabaseDirectory(clientID: _client._clientID); _rootDirectory = _rootDirectory.CreateNode( _sqLiteConnector.ExecuteSelectQuery("select * from Folders where id_folder = 1").Rows[0], _sqLiteConnector ); _formInterface.DrawTree(_rootDirectory, isOnline: false); }
public void DrawTree(DatabaseDirectory root, bool isOnline) { //get root node if (isOnline) { _onlineTree.Nodes.Clear(); _onlineTree.Nodes.Add(CreateNode(root)); } else { _offlineTree.Nodes.Clear(); _offlineTree.Nodes.Add(CreateNode(root)); } }
public void AddFolder(string name, DatabaseDirectory parentDirectory) { //check if folder name already exists within same parent folder string countQuery = string.Format("select count(*) from Folders where name_folder = '{0}' and parent_folder = {1}", name, parentDirectory.id_folder); if ((ConnectivityState)_connectivityStateEnum == ConnectivityState.Offline) { int a = _sqLiteConnector.ExecuteScalarQuery(countQuery); //throw exception or write function to check validity in sqlserver/lite if (a != 0) { MessageBox.Show("Name already exists, please change it."); return; } string insertOfflineQuery = String.Format("insert into Folders (name_folder, parent_folder, created_by_client, is_synced) values('{0}', {1}, {2}, {3})", name, parentDirectory.id_folder, _client._clientID, 0); _sqLiteConnector.ExecuteInsertQuery(insertOfflineQuery); SetOfflineTree(); }//======================================================================================================================================================================= else if ((ConnectivityState)_connectivityStateEnum == ConnectivityState.Online) { //check if sqlite has no synced items try { int a = _sqlServerConnector.ExecuteScalarQuery(countQuery); if (a != 0) { MessageBox.Show("Name already exists, please change it."); return; } string insertOnlineQuery = String.Format("insert into Folders (id_folder, name_folder, parent_folder, created_by_client) values(next value for id_folder_seq, '{0}', {1}, {2})", name, parentDirectory.id_folder, _client._clientID); _sqlServerConnector.ExecuteInsertQuery(insertOnlineQuery); //get last id of inserted record int newId = _sqlServerConnector.ExecuteScalarQuery("SELECT MAX(id_folder) FROM Folders"); string insertOfflineQuery = String.Format("insert into Folders (id_folder, name_folder, parent_folder, created_by_client, is_synced) values({0}, '{1}', {2}, {3}, {4})", newId, name, parentDirectory.id_folder, _client._clientID, 1); _sqLiteConnector.ExecuteInsertQuery(insertOfflineQuery); SetOnlineTree(); } catch (Exception e) { MessageBox.Show("Cannot connect in SQL Server."); _connectivityStateEnum = ConnectivityState.Offline; SetOfflineTree(); _formInterface.EnableOnlineTree(isEnabled: false); _formInterface.EnableOfflineTree(isEnabled: true); _formInterface.PassOffline(); _timeManager.ContinueScheduler(); } } _formInterface.ExpandTrees(); }
public void InitializeEngine(FormInterface formInterface) { _formInterface = formInterface; _sqLiteConnector = new SQLiteConnector(_sqLiteConnString); _formInterface = formInterface; _timeManager = new SyncTimeManager(); _timeManager.Init(this); SetConnectivityState(); DatabaseDirectory.SetConnectors(_sqlServerConnector, _sqLiteConnector); _formInterface.SetCorrStatus((ConnectivityState)_connectivityStateEnum); //_client = new Client(_sqlServerConnector, _sqLiteConnector, _connectivityStateEnum); //Debug: _client = new Client(_sqlServerConnector, _sqLiteConnector, _connectivityStateEnum); _timeManager.RescheduleFromCronExpr(_client._cronExpression); if ((ConnectivityState)_connectivityStateEnum == ConnectivityState.Offline) { if (_client.IsSet) { //start last set schedule by client (cronExpr from sqlite) string cronExpr = _client.GetCron(); //_timeManager.RescheduleFromCronExpr(cronExpr); _timeManager.StartScheduler(2); //set interface depending on cronExpression _formInterface.SetConfigInterfaceCron(cronExpr); } else { //no sync for him } //disables interface for changing jobs //todo code for tree: SetOfflineTree(); _formInterface.EnableOfflineTree(true); _formInterface.EnableOnlineTree(false); //throw new Exception("not yet configured"); } else if ((ConnectivityState)_connectivityStateEnum == ConnectivityState.Online) { //launch job from cronExpr string cronExpr = _client.GetCron(); //_timeManager.RescheduleFromCronExpr(cronExpr); _timeManager.StartScheduler(2); //Enable formInterface for change of cronEpxr //todo code to load tree int nonSyncedFiles = _sqLiteConnector.ExecuteScalarQuery("SELECT COUNT(*) FROM Files WHERE is_synced = 0"); int nonSyncedFolders = _sqLiteConnector.ExecuteScalarQuery("SELECT COUNT(*) FROM Folders WHERE is_synced = 0"); if (nonSyncedFolders != 0 || nonSyncedFiles != 0) { //formInterface --> disable sqlserver tree and enable sqlite tree _formInterface.EnableOnlineTree(isEnabled: false); _formInterface.EnableOfflineTree(isEnabled: true); SetOnlineTree(); SetOfflineTree(); //bug prompt to sync and lock database if accepted to sync ?? } else { _formInterface.EnableOnlineTree(isEnabled: true); _formInterface.EnableOfflineTree(isEnabled: false); SetOnlineTree(); } } }
private void btnAddFolder_Click(object sender, EventArgs e) { DatabaseDirectory selectedDir = new DatabaseDirectory(-1, "null", -1); string promptValue = Prompt.ShowDialog("New folder name :", "New Folder..."); if (onlineTView.Enabled) { try { if (typeof(DatabaseDirectory) == onlineTView.SelectedNode.Tag.GetType()) { selectedDir = (DatabaseDirectory)onlineTView.SelectedNode.Tag; } else if (typeof(DatabaseFile) == onlineTView.SelectedNode.Tag.GetType()) { selectedDir = (DatabaseDirectory)onlineTView.SelectedNode.Parent.Tag; } } catch (NullReferenceException ne) { //if no folder was selected, select root selectedDir = (DatabaseDirectory)onlineTView.Nodes[0].Tag; } } else if (offlineTView.Enabled) { try { if (typeof(DatabaseDirectory) == offlineTView.SelectedNode.Tag.GetType()) { selectedDir = (DatabaseDirectory)offlineTView.SelectedNode.Tag; } else if (typeof(DatabaseFile) == offlineTView.SelectedNode.Tag.GetType()) { selectedDir = (DatabaseDirectory)offlineTView.SelectedNode.Parent.Tag; } } catch (NullReferenceException ne) { //if no folder was selected, select root selectedDir = (DatabaseDirectory)offlineTView.Nodes[0].Tag; } } //=========================================================================== //FOR DEBUGING //string c = $"selected file : id : {selectedFile.id_file}, name : {selectedFile.name_file}, path : {selectedFile.path_file}, parent : {selectedFile.parent_folder}"; //string a = $"selected folder : id : {selectedDir.id_folder}, name : {selectedDir.name_Folder}, parent : {selectedDir.parent_folder}"; //Debug.WriteLine(c); //Debug.WriteLine(a); //=========================================================================== if (promptValue == "") { } else { try { if (selectedDir.id_folder != -1) { _engine.AddFolder(promptValue, selectedDir); } } catch (Exception exception) { } } /* used to "close" app * this.WindowState = FormWindowState.Minimized; * this.FormBorderStyle = FormBorderStyle.SizableToolWindow; * this.ShowInTaskbar = false; */ }
private void btnAddFile_Click(object sender, EventArgs e) { DatabaseDirectory selectedDir = new DatabaseDirectory(-1, "null", -1); if (onlineTView.Enabled) { try { if (typeof(DatabaseDirectory) == onlineTView.SelectedNode.Tag.GetType()) { selectedDir = (DatabaseDirectory)onlineTView.SelectedNode.Tag; } else if (typeof(DatabaseFile) == onlineTView.SelectedNode.Tag.GetType()) { selectedDir = (DatabaseDirectory)onlineTView.SelectedNode.Parent.Tag; } } catch (NullReferenceException ne) { //if no folder was selected, select root selectedDir = (DatabaseDirectory)onlineTView.Nodes[0].Tag; } } else if (offlineTView.Enabled) { try { if (typeof(DatabaseDirectory) == offlineTView.SelectedNode.Tag.GetType()) { selectedDir = (DatabaseDirectory)offlineTView.SelectedNode.Tag; } else if (typeof(DatabaseFile) == offlineTView.SelectedNode.Tag.GetType()) { selectedDir = (DatabaseDirectory)offlineTView.SelectedNode.Parent.Tag; } } catch (NullReferenceException ne) { //if no folder was selected, select root selectedDir = (DatabaseDirectory)offlineTView.Nodes[0].Tag; } } //=========================================== OpenFileDialog file = new OpenFileDialog(); if (file.ShowDialog() == DialogResult.OK) { if (selectedDir.id_folder != -1) { _engine.AddFile(file.SafeFileName, file.FileName, selectedDir); } } //=========================================== }