/// <summary>
        ///
        /// </summary>
        /// <param name="changeLogs"></param>
        /// <param name="writer"></param>
        internal void deleteSnapshotTable(List <ChangeLogItem> changeLogs)
        {
            const int commitPeriod = 100;
            int       recCount     = 0;

            List <string> deletableSnapshotIDs = new List <string>();

            SnapShotDataReader reader = new SnapShotDataReader(this.fromConnStr);

            reader.openConnection();

            Console.Write("delete table for t_snapshot");
            foreach (var cl in changeLogs)
            {
                if (recCount >= commitPeriod)
                {
                    // 読み込み元のDBから、リスト内で指定したIDのレコードを物理削除する
                    reader.deleteSnapShotTableBySnapShotIds(deletableSnapshotIDs);

                    deletableSnapshotIDs.Clear();
                    recCount = 0;
                }

                deletableSnapshotIDs.Add(cl.snapshotId);
                recCount++;
            }

            if (recCount > 0)
            {
                // 読み込み元のDBから、リスト内で指定したIDのレコードを物理削除する
                reader.deleteSnapShotTableBySnapShotIds(deletableSnapshotIDs);
                //writer.commitTransaction();
            }

            Console.WriteLine();
        }
        public List <ChangeLogItem> transAuditLogToChangeLog(string outputDir)
        {
            List <ChangeLogItem> changeLogs = new List <ChangeLogItem>();

            Console.WriteLine("{0} start read SnapShot data", DateTime.Now.ToString());

            // t_snapshot テーブルを読んでその中身をAuditLogItemリストに格納
            SnapShotDataReader  reader   = new SnapShotDataReader(this.fromConnStr);
            List <AuditLogItem> logItems = reader.readSnapshotData();

            // logItemsが空ならコンソールに出力して終了
            if (logItems == null)
            {
                Console.WriteLine("対象のSnapShotデータがありませんでした");
                return(changeLogs);
            }

            Console.WriteLine("{0} SnapShot data record count: {1}", DateTime.Now.ToString(), logItems.Count);

            // reader.openConnection();

            StreamWriter sw = null;

            try
            {
                //BOM無しのUTF8でテキストファイルを作成する
                sw = new StreamWriter(outputDir + "\\changeLogs.txt");
                sw.WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\" ?> ");
                sw.WriteLine("");

                for (int i = 0; i < logItems.Count; i++)
                {
                    AuditLogItem aItem = logItems[i];

                    // このレコードが転送対象かを判断
                    if (isTransferable(aItem))
                    {
                        Console.WriteLine("row: [ SnapshotID={0}, SeriesID={1}, SnapshotName={2}, Position={3} ]", aItem.snapshotId, aItem.seriesId, aItem.snapshotName, aItem.position);

                        ChangeLogItem chItem = transToChangeLog(aItem);

                        sw.WriteLine("--------------------------------------------------------------------------------");
                        sw.WriteLine("SnapshotId:" + chItem.snapshotId);
                        sw.WriteLine("seriesId:" + chItem.seriesId);
                        sw.WriteLine("notes:" + chItem.notes);
                        sw.WriteLine("changeType:" + chItem.changeType);
                        sw.WriteLine("changeItemName:" + chItem.changeItemName);
                        sw.WriteLine("elementGuid:" + chItem.elementGuid);
                        sw.WriteLine("metadata:" + chItem.metadata);
                        sw.WriteLine("logItem:" + chItem.logItem);
                        sw.WriteLine("changeUser:"******"changeDateTime:" + chItem.changeDateTime);

                        // 作成したChangeLogの情報をリストに保管
                        changeLogs.Add(chItem);
                    }
                    else
                    {
                        Console.WriteLine("row: [SnapshotID={0}] can not acceptable for ChangeLog", aItem.snapshotId);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("----------------------------------------------");
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (sw != null)
                {
                    sw.Close();
                }
                reader.closeConnection();
            }

            return(changeLogs);
        }