Exemple #1
0
        public FileInfo ValueChanged(FileInfo orgFile, string newValue)
        {
            var path = orgFile.FullName;

            using (var connection = _db.GetConnection()) {
                var data = FileDataDao.GetDataByPath(connection, orgFile.FullName);
                if (data == null)
                {
                    //データがない場合
                    data       = new FileData();
                    data.title = newValue;       //タイトル
                    data.memo  = "";             //メモ
                    data.path  = path;           //ファイルのフルパス
                    data.size  = orgFile.Length; //ファイルサイズ
                }
                else
                {
                    //データがある場合
                    data.title = newValue;        //タイトル
                }

                //データを更新します
                FileDB.SaveData(connection, data);

                //キャッシュに反映します
                _cache[orgFile.FullName] = data.title.ToString();
            }

            return(orgFile);
        }
Exemple #2
0
        /// <summary>
        /// 管理データを削除します
        /// </summary>
        private void DeleteData(IList <int> idList)
        {
            //セルが選択されていない場合は、処理を抜けます
            if (_grid.SelectedCells.Count == 0)
            {
                return;
            }

            var result = MessageBox.Show("管理データを削除してもよろしいですか?\nファイルは削除されません。", "確認", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);

            if (result == DialogResult.Yes)
            {
                var deleteIDList = new List <int>(); //グリッドから行を削除するためのIDリスト

                //「はい」の場合、管理データを削除します
                using (var connection = _db.GetConnection()) {
                    //トランザクション開始
                    var transaction = connection.BeginTransaction();


                    try {
                        foreach (var id in idList)
                        {
                            //管理データを削除します
                            FileDB.DeleteData(connection, id);

                            //削除用IDリストにIDを追加します
                            deleteIDList.Add(id);
                        }

                        //コミット
                        transaction.Commit();
                    } catch (Exception ex) {
                        //ロールバック
                        transaction.Rollback();
                        MsgBoxUtils.ShowErrorMsgBox("削除に失敗しました。\n" + ex.Message);
                    }
                }

                //一覧を更新します
                foreach (var id in deleteIDList)
                {
                    //指定したIDの行を取得します
                    int row = GetRowIndex(id);

                    //行を削除します
                    _grid.Rows.RemoveAt(row);
                }
            }
        }
Exemple #3
0
        /// <summary>
        /// DBにタグを追加します
        /// </summary>
        /// <param name=""></param>
        /// <param name=""></param>
        /// <returns></returns>
        private bool AddTag(IList <int> idList, IList <string> selectedTagList)
        {
            //DBにタグを追加します
            using (var connection = _db.GetConnection()) {
                //トランザクション開始
                var transaction = connection.BeginTransaction();

                try {
                    //選択中のIDのデータに対して、選択されたタグを追加します
                    foreach (var id in idList)
                    {
                        TagDataDao.AddTags(connection, id, selectedTagList);
                    }

                    //コミット
                    transaction.Commit();
                    return(true);
                } catch (Exception ex) {
                    //ロールバック
                    transaction.Rollback();
                    MsgBoxUtils.ShowErrorMsgBox("更新に失敗しました。\n" + ex.Message);
                    return(false);
                }
            }
        }
        /// <summary>
        /// DBのタグを削除します
        /// </summary>
        /// <param name=""></param>
        /// <param name=""></param>
        /// <returns></returns>
        private bool DeleteTag(IList <int> idList, IList <string> selectedTagList)
        {
            //DBのタグを削除します
            using (var connection = _db.GetConnection()) {
                //トランザクション開始
                var transaction = connection.BeginTransaction();

                try {
                    foreach (var id in idList)
                    {
                        //タグを削除します
                        foreach (var tag in selectedTagList)
                        {
                            TagDataDao.Delete(connection, tag, id);
                        }
                    }

                    //コミット
                    transaction.Commit();
                    return(true);
                } catch (Exception ex) {
                    //ロールバック
                    transaction.Rollback();
                    MsgBoxUtils.ShowErrorMsgBox("更新に失敗しました。\n" + ex.Message);
                    return(false);
                }
            }
        }
Exemple #5
0
        /// <summary>
        /// ファイル情報テーブルからデータを取得します
        /// </summary>
        /// <param name="id"></param>
        public void LoadData(string id)
        {
            using (var connection = _db.GetConnection()) {
                var fileData = FileDataDao.GetData(connection, id);
                if (fileData != null)
                {
                    fileData._tags = TagDataDao.GetTags(connection, fileData.id);

                    //ファイルデータを入力欄に設定します
                    SetFileData(fileData);
                }
            }

            //変更なしにします
            Modified = false;
        }
Exemple #6
0
        public FileInfo ValueChanged(FileInfo orgFile, string newValue)
        {
            //スレッドが動いている場合は、処理しない
            if (_thread != null && _thread.IsAlive == true)
            {
                return(orgFile);
            }

            var path = orgFile.FullName;

            using (var connection = _db.GetConnection()) {
                var data = FileDataDao.GetDataByPath(connection, orgFile.FullName);
                if (data == null)
                {
                    //データがない場合
                    data       = new FileData();
                    data.title = orgFile.Name;                                //ファイル名
                    data.value = StringUtils.ToInt(newValue, 0);              //評価・重要度
                    data.path  = path;                                        //ファイルのフルパス
                    data.size  = FileUtils.IsFile(path) ? orgFile.Length : 0; //ファイルサイズ

                    //ファイル種別
                    data.kind = 0;
                    if (FileUtils.IsFile(path))
                    {
                        data.kind = 1;
                    }
                    if (FileUtils.IsDir(path))
                    {
                        data.kind = 2;
                    }
                }
                else
                {
                    //データがある場合
                    data.value = StringUtils.ToInt(newValue, 0); //評価・重要度
                }

                //データを更新します
                FileDB.SaveData(connection, data);

                //キャッシュに反映します
                _cache[orgFile.FullName] = data.value.ToString();
            }

            return(orgFile);
        }
Exemple #7
0
        /// <summary>
        /// タグ編集画面を表示します
        /// </summary>
        /// <returns></returns>
        private IList <string> ShowTagForm(int topID)
        {
            //1番最初に選択されているデータのタグリストを取得します(子画面のデフォルト値として使用)
            string tags = "";

            using (var connection = _db.GetConnection()) {
                tags = TagDataDao.GetTags(connection, topID);
            }

            //タグの編集画面を表示します
            using (var form = new TagForm(TagForm.Mode.Add, _db, tags)) {
                //画面を表示します
                form.ShowDialog();

                //選択されたタグリストを取得します
                return(form.SelectedTagList);
            }
        }
Exemple #8
0
        //編集で値が変更された場合に呼ばれます
        public FileData ValueChanged(FileData orgFileData, string newValue)
        {
            //評価を更新します
            using (var connection = _db.GetConnection()) {
                FileDataDao.UpdateField(connection, orgFileData.id, "value", newValue);
            }

            orgFileData.value = StringUtils.ToInt(newValue);
            return(orgFileData);
        }
Exemple #9
0
        /// <summary>
        /// 編集で値が変更された場合に呼ばれます
        /// </summary>
        /// <param name="orgFileData"></param>
        /// <param name="newValue"></param>
        /// <returns></returns>
        public FileData ValueChanged(FileData orgFileData, string newValue)
        {
            //タグを更新します
            using (var connection = _db.GetConnection()) {
                orgFileData._tags = newValue;
                FileDB.UpdateTag(connection, orgFileData);
            }

            return(orgFileData);
        }
Exemple #10
0
        //編集で値が変更された場合に呼ばれます
        public FileData ValueChanged(FileData orgFileData, string newValue)
        {
            //タイトルを更新します
            using (var connection = _db.GetConnection()) {
                FileDataDao.UpdateField(connection, orgFileData.id, "title", newValue);
            }

            orgFileData.title = newValue;
            return(orgFileData);
        }
Exemple #11
0
        /// <summary>
        /// 編集で値が変更された場合に呼ばれます
        /// </summary>
        /// <param name="orgFileData"></param>
        /// <param name="newValue"></param>
        /// <returns></returns>
        public FileData ValueChanged(FileData orgFileData, string newValue)
        {
            if (FileUtils.IsDir(orgFileData.path))
            {
                return(null);
            }

            //新旧の拡張子を取得します
            var oldExt = Path.GetExtension(orgFileData.path).Replace(".", "");
            var newExt = newValue.Replace(".", ""); //入力値の先頭に「.」がある場合は削除する

            //変更がない場合は処理を抜けます
            if (oldExt.Equals(newExt))
            {
                return(null);
            }

            var oldPath     = orgFileData.path;
            var oldDirPath  = Path.GetDirectoryName(oldPath);                     //フォルダのパス
            var oldFileName = Path.GetFileNameWithoutExtension(orgFileData.path); //拡張子を除いたファイル名
            var newPath     = FileUtils.AppendPath(oldDirPath, oldFileName + "." + newExt);

            //ファイル名の変更がない場合は処理を抜けます
            if (oldFileName.Equals(newValue))
            {
                return(null);
            }

            //ファイル名を変更します
            try {
                if (FileUtils.IsFile(oldPath))
                {
                    //ファイルの場合
                    File.Move(oldPath, newPath);
                }
                else
                {
                    //フォルダの場合
                    Directory.Move(oldPath, newPath);
                }
            } catch (Exception ex) {
                __.ShowErrorMsgBox(ex.Message);
                return(null);
            }

            //パスを更新します
            using (var connection = _db.GetConnection()) {
                FileDataDao.UpdateField(connection, orgFileData.id, "path", newPath);
            }

            orgFileData.path = newPath;
            return(orgFileData);
        }
Exemple #12
0
        /******************************************************************************
        *
        *  プラグイン用イベントハンドラー
        *
        ******************************************************************************/

        /// <summary>
        /// ファイル名変更イベント
        /// </summary>
        /// <param name="param"></param>
        /// <param name="sender"></param>
        public void PluginEvent_FileNameChanged(EventParam param, object sender)
        {
            //変更前と変更後のパスを取得します
            var oldPath = ((FileNameChangedEventParam)param).OldPath;
            var newPath = ((FileNameChangedEventParam)param).NewPath;

            using (var connection = _db.GetConnection()) {
                var fileData = FileDataDao.GetData(connection, oldPath, "path");
                if (fileData != null)
                {
                    FileDataDao.UpdateField(connection, fileData.id, "path", newPath);
                }
            }
        }
Exemple #13
0
        public TagForm(Mode mode, FileDB db, string tags)
        {
            InitializeComponent();

            //引数を保持します
            _mode       = mode;
            _db         = db;
            txtTag.Text = tags;

            if (mode == Mode.Add)
            {
                lblMsg.Text = "追加するタグを入力してください。";
            }
            if (mode == Mode.Update)
            {
                lblMsg.Text = "設定するタグを全て入力してください。";
            }
            if (mode == Mode.Delete)
            {
                lblMsg.Text = "削除するタグを入力してください。";
            }
            if (mode == Mode.Select)
            {
                lblMsg.Text = "検索するタグを入力してください。";
            }

            //タグリストを全体に広げます
            listTag.Dock = DockStyle.Fill;

            //DBのタグリストを取得します
            using (var connection = _db.GetConnection()) {
                _dbTagList = TagDataDao.GetAllTagList(_db.GetConnection());
            }

            //タグリストを作成します
            SetTagList();
        }
        /// <summary>
        /// 編集で値が変更された場合に呼ばれます
        /// </summary>
        /// <param name="orgFileData"></param>
        /// <param name="newValue"></param>
        /// <returns></returns>
        public FileData ValueChanged(FileData orgFileData, string newValue)
        {
            var oldPath     = orgFileData.path;
            var oldDir      = Path.GetDirectoryName(oldPath);
            var oldFileName = Path.GetFileName(oldPath);
            var newPath     = FileUtils.AppendPath(oldDir, newValue);

            //ファイル名の変更がない場合は処理を抜けます
            if (oldFileName.Equals(newValue))
            {
                return(null);
            }

            //ファイル名を変更します
            try {
                if (FileUtils.IsFile(oldPath))
                {
                    //ファイルの場合
                    File.Move(oldPath, newPath);
                }
                else
                {
                    //フォルダの場合
                    Directory.Move(oldPath, newPath);
                }
            } catch (Exception ex) {
                __.ShowErrorMsgBox(ex.Message);
                return(null);
            }

            //パスを更新します
            using (var connection = _db.GetConnection()) {
                FileDataDao.UpdateField(connection, orgFileData.id, "path", newPath);
            }

            orgFileData.path = newPath;
            return(orgFileData);
        }
        /// <summary>
        /// 評価を一括更新します
        /// </summary>
        private bool UpdateValue(IList <int> idList)
        {
            using (var connection = _db.GetConnection()) {
                //トランザクション開始
                var transaction = connection.BeginTransaction();

                try {
                    foreach (var id in idList)
                    {
                        //評価を更新します
                        FileDataDao.UpdateField(connection, id, "value", _value.ToString());
                    }

                    //コミット
                    transaction.Commit();
                    return(true);
                } catch (Exception ex) {
                    //ロールバック
                    transaction.Rollback();
                    MsgBoxUtils.ShowErrorMsgBox("更新に失敗しました。\n" + ex.Message);
                    return(false);
                }
            }
        }