Esempio n. 1
0
        //서버로부터 이 대화의 레이블을 받고, 레이블 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);
        }
Esempio n. 2
0
 public static LableDBManager Get()
 {
     if (_Instance == null)
     {
         _Instance = new LableDBManager();
     }
     return(_Instance);
 }
Esempio n. 3
0
        //카테고라이즈 해야되는 대화는 서버에 보내 분류함. 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);
                }
            }
        }
Esempio n. 4
0
        //해당 대화를 로컬 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);
            }
        }