示例#1
0
        public static Dictionary <string, SaveData_SpreadSheet> LoadSheet(Action <string> OnError)
        {
            Dictionary <string, SaveData_SpreadSheet> mapSaveSheet = new Dictionary <string, SaveData_SpreadSheet>();
            List <SaveData_SpreadSheet> listSheet = JsonSaveManager.LoadData_List <SaveData_SpreadSheet>(const_strSaveFolderPath, OnError);

            for (int i = 0; i < listSheet.Count; i++)
            {
                var pData = listSheet[i];
                if (string.IsNullOrEmpty(pData.strSheetID))
                {
                    continue;
                }

                if (mapSaveSheet.ContainsKey(pData.strSheetID))
                {
                    SaveData_SpreadSheet pSheetAlreadyAdded = mapSaveSheet[pData.strSheetID];
                    if (pSheetAlreadyAdded.date_LastEdit < pData.date_LastEdit)
                    {
                        mapSaveSheet[pData.strSheetID] = pData;
                    }
                }
                else
                {
                    mapSaveSheet.Add(pData.strSheetID, pData);
                }
            }

            return(mapSaveSheet);
        }
        private SaveData_SpreadSheet GetSheet_LastEdit(Dictionary <string, SaveData_SpreadSheet> mapSaveData)
        {
            WriteConsole("마지막에 수정한 Sheet 찾는 중..");

            DateTime             date_LastEdit   = DateTime.MinValue;
            SaveData_SpreadSheet pSheet_LastEdit = null;

            foreach (var pSheet in mapSaveData.Values)
            {
                if (date_LastEdit < pSheet.date_LastEdit)
                {
                    date_LastEdit   = pSheet.date_LastEdit;
                    pSheet_LastEdit = pSheet;
                }
            }

            if (pSheet_LastEdit != null)
            {
                WriteConsole($"마지막에 수정한 시트를 찾았다. 수정한 시간 {pSheet_LastEdit.date_LastEdit}, SheetID {pSheet_LastEdit.strSheetID}");
            }
            else
            {
                WriteConsole($"마지막에 수정한 시트를 못찾았다..");
            }

            return(pSheet_LastEdit);
        }
示例#3
0
 public static void SaveSheet_Async(SaveData_SpreadSheet pSheet, Action <bool> OnFinishAsync)
 {
     JsonSaveManager.SaveData_Async(pSheet, GetFilePath(pSheet.GetFileName()), OnFinishAsync);
 }
示例#4
0
 public static void SaveSheet(SaveData_SpreadSheet pSheet)
 {
     JsonSaveManager.SaveData(pSheet, GetFilePath(pSheet.GetFileName()));
 }
        private void MainForm_Load(object sender, EventArgs e)
        {
            SetState(EState.None);
            _bIsLoading_CreateForm = true;

            _pConfig     = SaveDataManager.LoadConfig();
            _mapSaveData = SaveDataManager.LoadSheet(WriteConsole);

            comboBox_DependencyField.DropDownStyle     = ComboBoxStyle.DropDownList;
            comboBox_DependencyField_Sub.DropDownStyle = ComboBoxStyle.DropDownList;
            comboBox_SaveSheet.DropDownStyle           = ComboBoxStyle.DropDownList;
            comboBox_SaveSheet.Items.Clear();
            comboBox_SaveSheet.Items.AddRange(_mapSaveData.Values.Where(p => p.eType == ESpreadSheetType.GoogleSpreadSheet).Cast <object>().ToArray());

            SaveData_SpreadSheet pSheet_LastEdit = GetSheet_LastEdit(_mapSaveData);

            if (pSheet_LastEdit != null)
            {
                switch (pSheet_LastEdit.eType)
                {
                case ESpreadSheetType.MSExcel:
                    textBox_ExcelPath_ForConnect.Text = pSheet_LastEdit.strSheetID;
                    if (_pConfig.bAutoConnect)
                    {
                        WriteConsole("Config - 자동연결로 인해 연결을 시작합니다..");
                        button_Connect_Excel_Click(null, null);
                    }
                    break;

                case ESpreadSheetType.GoogleSpreadSheet:
                    textBox_SheetID.Text = pSheet_LastEdit.strSheetID;
                    if (_pConfig.bAutoConnect)
                    {
                        WriteConsole("Config - 자동연결로 인해 연결을 시작합니다..");
                        button_Connect_Click(null, null);
                    }
                    break;
                }
            }

            comboBox_ExcelPath_Saved.DropDownStyle = ComboBoxStyle.DropDownList;
            comboBox_ExcelPath_Saved.Items.Clear();
            comboBox_ExcelPath_Saved.Items.AddRange(_mapSaveData.Values.Where(p => p.eType == ESpreadSheetType.MSExcel).Cast <object>().ToArray());

            checkBox_AutoConnect.Checked                   = _pConfig.bAutoConnect;
            checkedListBox_SheetList.ItemCheck            += CheckedListBox_TableList_ItemCheck;
            checkedListBox_SheetList.SelectedIndexChanged += CheckedListBox_SheetList_SelectedIndexChanged;
            checkedListBox_WorkList.ItemCheck             += CheckedListBox_WorkList_ItemCheck;
            checkedListBox_WorkList.SelectedIndexChanged  += CheckedListBox_WorkList_SelectedIndexChanged;
            CheckedListBox_WorkList_SelectedIndexChanged(null, null);

            comboBox_WorkList.DropDownStyle = ComboBoxStyle.DropDownList;
            comboBox_WorkList.Items.Clear();
            var listWork = GetEnumerableOfType <WorkBase>();

            foreach (var pWork in listWork)
            {
                comboBox_WorkList.Items.Add(pWork);
            }

            listView_Field.SelectedIndexChanged += ListView_Field_SelectedIndexChanged;

            _bIsLoading_CreateForm = false;
        }
        private void OnFinishConnect(ISheetConnector pConnector, Exception pException_OnError)
        {
            if (pException_OnError != null)
            {
                WriteConsole("연결 실패 " + pException_OnError);
                return;
            }

            if (_mapSaveData.ContainsKey(pConnector.strSheetID))
            {
                pSpreadSheet_CurrentConnected       = _mapSaveData[pConnector.strSheetID];
                pSpreadSheet_CurrentConnected.eType = pConnector.eSheetType;
                List <TypeData> listSavedTable = pSpreadSheet_CurrentConnected.listTable;

                int iOrder = 0;
                foreach (KeyValuePair <string, SheetData> pSheet in pConnector.mapWorkSheetData_Key_Is_SheetID)
                {
                    TypeData pTypeDataFind = listSavedTable.FirstOrDefault(x => (x.strSheetID == pSheet.Key));
                    if (pTypeDataFind == null)
                    {
                        listSavedTable.Add(new TypeData(pSheet.Value.strSheetID, pSheet.Value.strSheetName, iOrder));
                    }
                    else
                    {
                        // 이미 저장되있는 Sheet의 경우
                        // 웹에 있는 SheetName과 로컬의 SheetName이 다를 수 있기 때문에 갱신
                        pTypeDataFind.strSheetName = pSheet.Value.strSheetName;
                        pTypeDataFind.iOrder       = iOrder;
                    }

                    iOrder++;
                }
            }
            else
            {
                pSpreadSheet_CurrentConnected = new SaveData_SpreadSheet(pConnector.strSheetID, pConnector.eSheetType);
                _mapSaveData[pSpreadSheet_CurrentConnected.strSheetID] = pSpreadSheet_CurrentConnected;

                int iOrder = 0;
                pSpreadSheet_CurrentConnected.listTable.Clear();
                foreach (KeyValuePair <string, SheetData> pSheet in pConnector.mapWorkSheetData_Key_Is_SheetID)
                {
                    pSpreadSheet_CurrentConnected.listTable.Add(new TypeData(pSheet.Value.strSheetID, pSheet.Value.strSheetName, iOrder++));
                }

                SaveDataManager.SaveSheet(pSpreadSheet_CurrentConnected);

                WriteConsole("새 파일을 만들었습니다.");
            }

            checkedListBox_SheetList.Items.Clear();
            List <TypeData> listSheetSaved = pSpreadSheet_CurrentConnected.listTable;

            listSheetSaved.Sort((x, y) => x.iOrder.CompareTo(y.iOrder));

            TypeData[] arrSheetDelete = listSheetSaved.Where((pSheet) =>
                                                             pConnector.mapWorkSheetData_Key_Is_SheetID.Values.Any(p => p.strSheetID == pSheet.strSheetID) == false).ToArray();

            if (arrSheetDelete.Length > 0)
            {
                for (int i = 0; i < arrSheetDelete.Length; i++)
                {
                    listSheetSaved.Remove(arrSheetDelete[i]);
                }

                AutoSaveAsync_CurrentSheet();
            }
            ClearFieldData(listSheetSaved);

            for (int i = 0; i < listSheetSaved.Count; i++)
            {
                checkedListBox_SheetList.Items.Add(listSheetSaved[i], listSheetSaved[i].bEnable);
            }

            checkedListBox_WorkList.Items.Clear();
            List <WorkBase> listWorkBase = pSpreadSheet_CurrentConnected.listSaveWork;

            listWorkBase.Sort((x, y) => x.iWorkOrder.CompareTo(y.iWorkOrder));
            for (int i = 0; i < listWorkBase.Count; i++)
            {
                checkedListBox_WorkList.Items.Add(listWorkBase[i], listWorkBase[i].bEnable);
            }

            SetState(EState.IsConnected);
            WriteConsole("연결 성공");
            _bIsConnecting = false;
        }