/*
 * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
 */
package kr.co.zumo.app.lifeplus.view.fragment.factory;

import android.support.v4.app.Fragment;

import kr.co.zumo.app.lifeplus.supervisor.ScreenID;

/**
 * [클래스 개요]
 * <pre>
 * [클래스 상세 설명 또는 사용 시 주의점]
 * </pre>
 *
 * @author 민효동
 * @version 1.0
 * @history 민효동   [2018. 9. 5.]   [최초 작성]
 * @since 2018. 9. 5.
 */
public abstract class FragmentFactory {

  /**
   * screen id 에 해당하는 Fragment 를 반환한다.
   * Activity 별로 달리 정의하며 ScreenChanger 생성자에 전달된다.
   *
   * @param id ScreenID.MAIN
   * @return new MainFragment()
   */
  public Fragment getFragment(@ScreenID.FragmentID int id) throws RuntimeException {
    Fragment fragmentBase = getFragmentById(id);

    if (null == fragmentBase) {
      //에러시 BasicFragmentFactory 추가
      throw new RuntimeException("Fragment no matched.");
    }

    return fragmentBase;
  }

  abstract Fragment getFragmentById(@ScreenID.FragmentID int id);
}
