8. 2 역 파일 생성기 라이브러리 만들기

역 파일 생성기 라이브러리를 만듭시다. 여러분께서는 먼저 예광탄에 작성한 후에 정상적으로 동작하는 것을 확인한 후에 라이브러리로 만드세요.

역 파일 생성기 라이브러리에는 역 파일을 생성하는 클래스를 제공합시다. 이 클래스에서도 어떠한 상태 값을 유지할 필요가 없으므로 정적 클래스로 작성하세요.

public static class InvFileMaker

역 파일을 만드는 메서드를 제공합시다. 이 부분은 역 파일 생성기 예광탄에서 호출합니다. 실제 시나리오에서는 웹 페이지를 수집한 후 형태소를 분석하고 난 뒤에 호출할 메서드입니다.

public static void MakeInvFile(string url, List<Morpheme> list)

WSEDbmForAll 라이브러리를 참조하여 EHDbmForAll 정적 클래스에 웹 사이트 주소와 전체 형태소 개수를 기록하는 AddMCPostedInfo 메서드를 호출합니다.

EHDbmForAll.AddMCPostedInfo(url, list.Count);

그리고 형태소 목록을 추가합니다. 이 부분은 별도의 메서드로 작성합시다.

AddMorphemes(url, list);

형태소 목록을 추가하는 메서드를 작성합시다.

private static void AddMorphemes(string url, List<Morpheme> list)

정적 클래스 EHDbmForAll의 AddMorphemeInfo 메서드를 이용하여 사이트 주소와 형태소를 추가합니다.

foreach (Morpheme mo in list)
{
    EHDbmForAll.AddMorphemeInfo(url, mo);
}

▷ InvFileMaker.cs

using System.Collections.Generic;
using DBM_ForAll;
using WSE_Core; 
namespace InvFileMakerLib
{
    /// <summary>
    /// 역 파일 생성기 - 정적 클래스
    /// </summary>
    public static class InvFileMaker
    {
        /// <summary>
        /// 역 파일 만들기 메서드
        /// </summary>
        /// <param name="url">사이트 주소</param>
        /// <param name="list">형태소 목록</param>
        public static void MakeInvFile(string url, List<Morpheme> list)
        {
            EHDbmForAll.AddMCPostedInfo(url, list.Count);
            AddMorphemes(url, list);
        } 
        private static void AddMorphemes(string url, List<Morpheme> list)
        {
            foreach (Morpheme mo in list)
            {
                EHDbmForAll.AddMorphemeInfo(url, mo);
            }
        }
    }