Beispiel #1
0
 /// <summary>
 /// 指定したFileCodeの言語ファイルを取り出し、言語エントリーを追加する。
 /// 言語ファイルが存在しない場合は、新たに作成後、言語エントリーを追加する。
 /// </summary>
 /// <param name="fileCode">FileCode</param>
 /// <param name="langEntry">言語エントリー</param>
 public void AddFileEntry(long fileCode, MieLanguageEntry langEntry)
 {
     if (this.Items.ContainsKey(fileCode))
     {
         //// 言語ファイルが存在する。
         var langFile = this.Items[fileCode];
         langFile.AddEntry(langEntry);
     }
     else
     {
         //// 言語ファイルが存在しない。
         MieLanguageFile mieLanguageFile = new MieLanguageFile(fileCode);
         mieLanguageFile.AddEntry(langEntry);
         this.Items.Add(mieLanguageFile.FileCode, mieLanguageFile);
     }
 }
        /// <summary>
        /// 言語エントリーの追加し、その言語エントリーを返す。
        /// </summary>
        /// <param name="mieLanguageEntry">言語エントリー</param>
        /// <returns>追加した言語エントリー</returns>
        public MieLanguageEntry AddEntry(MieLanguageEntry mieLanguageEntry)
        {
            if (this.items.ContainsKey(mieLanguageEntry.ID))
            {
                var msg = $"Duplicate MieLanguageEntry key({mieLanguageEntry.ID}). FileID{this.FileCode}";
                logger.Error(msg);
                Console.WriteLine(msg);
                return(null);
                ////throw new Exception(msg);
            }
            else
            {
                this.items.Add(mieLanguageEntry.ID, mieLanguageEntry);

                return(mieLanguageEntry);
            }
        }
        /// <summary>
        /// 言語エントリーを更新し、更新後の言語エントリーを返す。
        /// 更新後の言語エントリーはアーカイブにも保管する。
        /// また、言語エントリーが存在しない場合は追加する。
        /// </summary>
        /// <param name="mieLanguageEntry">言語エントリー</param>
        /// <returns>更新後のエントリー</returns>
        public MieLanguageEntry UpdateEntry(MieLanguageEntry mieLanguageEntry)
        {
            if (this.items.ContainsKey(mieLanguageEntry.ID))
            {
                var oldEntry = this.items[mieLanguageEntry.ID];
                if ((oldEntry.DefaultText == mieLanguageEntry.DefaultText) && (oldEntry.FemaleText == mieLanguageEntry.FemaleText))
                {
                    //// 更新しようとしたがテキストに変更がなかった。
                    logger.Warn($"Update canceled. Text was not changed. FileID({this.FileCode}) ID({mieLanguageEntry.ID})");

                    return(mieLanguageEntry);
                }
                else
                {
                    //// 更新時は旧言語エントリーの製品区分を反映するため、新たに言語エントリーを作り直す。
                    MieLanguageEntry newEntry = new MieLanguageEntry(
                        mieLanguageEntry.ID,
                        mieLanguageEntry.DefaultText,
                        mieLanguageEntry.FemaleText,
                        mieLanguageEntry.ProductLine | oldEntry.ProductLine, // 旧言語エントリーの製品区分を反映する。
                        mieLanguageEntry.ReferenceID,
                        mieLanguageEntry.UpdatedAt);
                    mieLanguageEntry = null;

                    this.RemoveEntry(oldEntry.ID);
                    this.AddEntry(newEntry);
                    //// 更新された言語エントリーをアーカイブする。
                    this.Histories.Archibe(oldEntry);
                    logger.Info($"marged. ID({newEntry.ID})");

                    return(newEntry);
                }
            }
            else
            {
                this.AddEntry(mieLanguageEntry);

                return(mieLanguageEntry);
            }
        }
Beispiel #4
0
        public MieLanguageEntry Clone()
        {
            var mieLanguageEntry = new MieLanguageEntry(this.ID, this.DefaultText, this.FemaleText, this.ProductLine, this.ReferenceID, this.UpdatedAt);

            return(mieLanguageEntry);
        }