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); }
public static void SaveSheet_Async(SaveData_SpreadSheet pSheet, Action <bool> OnFinishAsync) { JsonSaveManager.SaveData_Async(pSheet, GetFilePath(pSheet.GetFileName()), OnFinishAsync); }
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; }