//서버로부터 이 대화의 레이블을 받고, 레이블 DB에 업데이트 한 뒤, 이 대화를 메모리에 올림. DEBUG!! 옛날 코드라 제대로 동작안할 가능성이 큼. //문자가 최신순으로 되있다면, 마지막 (개수 - 레이블수)개의 문자만 서버로 전송하고, 누적시켜도 될듯? public bool ReCategorize(Dialogue dialogue) { if (dialogue.Count <= 0) { return(true); } int majorLable = LableDBManager.Get().GetMajorLable(dialogue.Thread_id); //레이블 DB에 저장되있는 대표 레이블 가져옴 int[] lables = LableDBManager.Get().GetLables(dialogue.Thread_id); //레이블 DB에 저장되있는 레이블들 가져옴 LableDBManager.Get().UpdateLableDB(dialogue); majorLable = LableDBManager.Get().GetMajorLable(dialogue.Thread_id); //업데이트된 대표 레이블 가져옴 lables = LableDBManager.Get().GetLables(dialogue.Thread_id); //업데이트된 레이블 가져옴 if (majorLable == -1 || lables == null) //서버 통신 실패면 아무것도 하지 않음. { return(false); } dialogue.MajorLable = majorLable; //대표 레이블 설정 lables.CopyTo(dialogue.Lables, 0); //레이블 DB에서 레이블 배열을 메모리에 복사 _DialogueSets[majorLable].InsertOrUpdate(dialogue); //레이블에 맞는 셋에 대화 추가 _UnknownDialogueSet.DialogueList.Remove(dialogue.Thread_id); //미분류 탭에 남아있는 대화를 삭제함. return(true); }
public static LableDBManager Get() { if (_Instance == null) { _Instance = new LableDBManager(); } return(_Instance); }
//카테고라이즈 해야되는 대화는 서버에 보내 분류함. DEBUG!! 아직 호출되지 않음. public void ReCategorizeAll() { foreach (Dialogue objDialogue in _TotalDialogueSet.DialogueList.Values) { int[] objLables = LableDBManager.Get().GetLables(objDialogue.Thread_id); int lablesSum = 0; foreach (int lable in objLables) { lablesSum += lable; } //레이블의 합과 문자의 합이 다르다면, 새로 분류해야됨. if (lablesSum != objDialogue.Count) { ReCategorize(objDialogue); } } }
//해당 대화를 로컬 Lable DB를 바탕으로 분류, 네트워크와 연결은 하지 않음. public void Categorize(Dialogue objDialogue) { //연락처에 있으면 대화로, 없으면 로컬 레이블로 설정 if (objDialogue.Contact != null) { objDialogue.MajorLable = (int)Dialogue.LableType.COMMON; } else { objDialogue.MajorLable = LableDBManager.Get().GetMajorLable(objDialogue.Thread_id); } //대화에 해당되는 레이블을 로컬 DB로부터 가져와 복사함. int[] localLables = LableDBManager.Get().GetLables(objDialogue.Thread_id); if (localLables != null) { localLables.CopyTo(objDialogue.Lables, 0); } //대상 대화목록에 추가 DialogueSet targetDialogueSet; if (objDialogue.MajorLable == (int)Dialogue.LableType.UNKNOWN) { targetDialogueSet = _UnknownDialogueSet; } else { targetDialogueSet = _DialogueSets[objDialogue.MajorLable]; } //해당 대화셋에 현 대화가 포함되어 있지 않으면 삽입. if (targetDialogueSet.IsContain(objDialogue.Thread_id) == false) { targetDialogueSet.DialogueList.Add(objDialogue.Thread_id, objDialogue); } }