コード例 #1
0
        private void cmbSeqDB_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbSeqDB.SelectedIndex == 0) // empty = none = reset
            {
                menuStrip1.Enabled  = false;
                btnDeleteDB.Enabled = false;
                txtDB.Text          = txtPath.Text = txtVersions.Text = AppConfigHelper.seqdbConfig.LastDBSelected = string.Empty;
                lblKipper.Visible   = false;
                lstSampleIDs.Items.Clear();
                chkDetailSamples.Enabled = false;
                lstSampleIDs.Enabled     = false;
                AppConfigHelper.SaveConfig();
            }
            else if (cmbSeqDB.SelectedIndex == 1) // New
            {
                BioSeqNewDB  frmNewDB = new BioSeqNewDB();
                DialogResult rc       = frmNewDB.ShowDialog();
                if (rc == DialogResult.OK) // then the config has the specs for the new db to select.
                {
                    Cursor.Current = Cursors.WaitCursor;

                    // If necessary, copy local files to server.
                    string fastaPath = AppConfigHelper.Build_DBInput();
                    if (IsServiceClass.IsService && !string.IsNullOrEmpty(fastaPath))
                    {
                        if (fastaPath.StartsWith("[L]") || !fastaPath.StartsWith("["))
                        {
                            ServiceCallHelper.ResetFastaFolder(AppConfigHelper.LoggedOnUser);
                            string[] folders = Directory.GetDirectories(DirectoryHelper.CleanPath(fastaPath));
                            foreach (string folder in folders)
                            {
                                string[] files = Directory.GetFiles(folder, "*.fasta", SearchOption.TopDirectoryOnly);
                                foreach (string file in files)
                                {
                                    DirectoryHelper.FileCopy("[L]" + file, "[S]" + AppConfigHelper.UserFolder() + "FastaFiles", true);
                                }
                                files = Directory.GetFiles(folder, "*.fna", SearchOption.TopDirectoryOnly);
                                foreach (string file in files)
                                {
                                    DirectoryHelper.FileCopy("[L]" + file, "[S]" + AppConfigHelper.UserFolder() + "FastaFiles", true);
                                }
                                files = Directory.GetFiles(folder, "*.fa", SearchOption.TopDirectoryOnly);
                                foreach (string file in files)
                                {
                                    DirectoryHelper.FileCopy("[L]" + file, "[S]" + AppConfigHelper.UserFolder() + "FastaFiles", true);
                                }
                            }
                        }
                    }

                    if (!string.IsNullOrEmpty(AppConfigHelper.BuildTreeWildReference())) // This is the standard genome for the new database.
                    {
                        // Wherever it is, store it temporarily in the UserFolder.
                        DirectoryHelper.FileCopy(AppConfigHelper.BuildTreeWildReference(), "[S]" + AppConfigHelper.UserFolder(), true);
                    }

                    /////////// Call Build_DB in SeqDB.
                    try
                    {
                        ServiceCallHelper.Build_DB(AppConfigHelper.LoggedOnUser, AppConfigHelper.JsonConfig());
                    }
                    catch (Exception ex)
                    {
                        Cursor.Current = Cursors.Default;
                        MessageBox.Show("Error: " + ex.ToString(), "ERROR", MessageBoxButtons.OK);
                        return;
                    }

                    if (AppConfigHelper.LastError.Length > 0)
                    {
                        Cursor.Current = Cursors.Default;
                        MessageBox.Show("Error: " + AppConfigHelper.LastError, "ERROR", MessageBoxButtons.OK);
                        return;
                    }

                    if (string.IsNullOrEmpty(AppConfigHelper.BuildTreeDomesticReference))
                    {
                        AppConfigHelper.BuildTreeDomesticReference = AppConfigHelper.BuildTreeWildReference();
                        AppConfigHelper.SaveConfig();
                    }
                    ServiceCallHelper.LoadConfig(AppConfigHelper.LoggedOnUser);
                    PopulateDBDropdownAndSelect();
                    Cursor.Current = Cursors.Default;
                }
            }
            else // a database is selected.
            {
                Cursor.Current = Cursors.WaitCursor;
                AppConfigHelper.seqdbConfig.LastDBSelected = cmbSeqDB.SelectedItem.ToString();
                AppConfigHelper.SaveConfig();

                menuStrip1.Enabled       = true;
                btnDeleteDB.Enabled      = true;
                chkDetailSamples.Enabled = true;
                lstSampleIDs.Enabled     = true;
                txtVersions.Text         = string.Empty;
                lstSampleIDs.Items.Clear();

                SeqDB db = AppConfigHelper.seqdbConfig.seqDBs[AppConfigHelper.seqdbConfig.LastDBSelected];
                txtDB.Text   = db.DBName;
                txtPath.Text = db.DBPath;
                AppConfigHelper.LastError = string.Empty;

                if (SampleIDsBusyFlag || VersionsBusyFlag)
                {
                    MessageBox.Show("Version information and sample IDs are being loaded for previous database. Please select " +
                                    db.DBName + " again.", "Warning", MessageBoxButtons.OK);
                    return;
                }

                // Version information comes from the global config.
                RefreshVersionInformation(AppConfigHelper.seqdbConfigGlobal.seqDBs[AppConfigHelper.seqdbConfig.LastDBSelected]);

                // Also get sample IDs into listbox.
                ReloadSampleIDs();
                Cursor.Current = Cursors.Default;
                if (AppConfigHelper.LastError.Length > 0)
                {
                    MessageBox.Show("Error: " + AppConfigHelper.LastError, "ERROR", MessageBoxButtons.OK);
                }
            }
        }