ホテル管理システム
ogi
yesterday 1a1c8e71fcd14858f595029f089b2d4a00202b32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
using NPOI.SS.Formula.Functions;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace HotelPms.SourceFactory.FileEdit
{
    public class Core : IDisposable
    {
        private EditData curEditData = null;
        private List<string> fileContent = new List<string>();
 
        public Core()
        {
 
        }
 
        public void Dispose()
        {
            curEditData = null;
            fileContent.Clear(); 
            fileContent = null;
        }
 
        public void Execute(EditData data)
        {
            curEditData = data;
            if(curEditData.Data.Count == 0) { return; }
 
            //ファイルをメモリー中の読む
            string line;
            fileContent.Clear();
            using (StreamReader sr = new StreamReader(curEditData.FilePath, curEditData.Encoding))
            {
                while ((line = sr.ReadLine()) != null)
                {
                    fileContent.Add(line);
 
                    //検索
                    foreach(Item item in curEditData.Data)
                    {
                        if (item.HitIndex2 == -1 && line.Trim().StartsWith(item.Key1)) { item.HitIndex1 = fileContent.Count - 1; }
                        if (item.HitIndex1 != -1 && item.Key2.Length > 0 && line.Trim().StartsWith(item.Key2)) { item.HitIndex2 = fileContent.Count - 1; }
                    }
                }
            }
 
            using (StreamWriter sw = new StreamWriter(curEditData.FilePath, false, curEditData.Encoding))
            {
                int i = 0;
                foreach (string content in fileContent)
                {
                    sw.WriteLine(content);
 
                    foreach (Item item in curEditData.Data)
                    {
                        if (item.HitIndex1 == -1) { continue; }
                        int index = item.HitIndex2 == -1 ? item.HitIndex1 : item.HitIndex2;
                        if (index != i) { continue; }
                        foreach(string addLine in item.Data) { sw.WriteLine(addLine); }
                    }
                    i++;
                }
            }
        }        
    }
}