Ver código fonte

[회원가입][New] FragmentFactory 적용 절차 간소화
- Activity 에서 바로 model에 세팅하고 command에서 직접 적용한다.

hyodong.min 7 anos atrás
pai
commit
cc10e2fa5d

+ 8 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/activity/SignUpActivity.java

@@ -11,6 +11,8 @@ import kr.co.zumo.app.lifeplus.model.SignUpModel;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenChangerHelper;
 import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.ISignUpView;
+import kr.co.zumo.app.lifeplus.view.fragment.factory.BasicFragmentFactory;
+import kr.co.zumo.app.lifeplus.view.fragment.factory.FragmentFactory;
 import kr.co.zumo.app.lifeplus.view.presenter.SignUpPresenter;
 
 /**
@@ -33,10 +35,16 @@ public class SignUpActivity extends ActivityBase<SignUpPresenter> implements ISi
     ScreenChangerHelper.getInstance().setAppCompatActivity(this);
     ScreenChangerHelper.getInstance().setContainerId(R.id.sign_up_container);
 
+    model.setFragmentFactory(defineFragmentFactory());
+
     presenter.onEvent(new Event.Builder(Event.SIGN_UP).build());
 
   }
 
+  protected FragmentFactory defineFragmentFactory() {
+    return new BasicFragmentFactory();
+  }
+
   @Override
   protected void onDestroy() {
     super.onDestroy();

+ 4 - 6
app/src/main/java/kr/co/zumo/app/lifeplus/activity/SignUpOnBoardActivity.java

@@ -3,9 +3,8 @@
  */
 package kr.co.zumo.app.lifeplus.activity;
 
-import kr.co.zumo.app.lifeplus.model.SignUpModel;
-import kr.co.zumo.app.lifeplus.view.presenter.SignUpOnBoardingPresenter;
-import kr.co.zumo.app.lifeplus.view.presenter.SignUpPresenter;
+import kr.co.zumo.app.lifeplus.view.fragment.factory.FragmentFactory;
+import kr.co.zumo.app.lifeplus.view.fragment.factory.SignUpOnBoardingFragmentFactory;
 
 /**
  * SignUpOnBoardActivity
@@ -21,9 +20,8 @@ import kr.co.zumo.app.lifeplus.view.presenter.SignUpPresenter;
  */
 public class SignUpOnBoardActivity extends SignUpActivity {
 
-  @Override
-  SignUpPresenter definePresenter() {
-    return new SignUpOnBoardingPresenter(getModel(SignUpModel.class), this);
+  protected FragmentFactory defineFragmentFactory() {
+    return new SignUpOnBoardingFragmentFactory();
   }
 
 }

+ 4 - 7
app/src/main/java/kr/co/zumo/app/lifeplus/activity/SignUpZumoActivity.java

@@ -3,9 +3,8 @@
  */
 package kr.co.zumo.app.lifeplus.activity;
 
-import kr.co.zumo.app.lifeplus.model.SignUpModel;
-import kr.co.zumo.app.lifeplus.view.presenter.SignUpZumoPresenter;
-import kr.co.zumo.app.lifeplus.view.presenter.SignUpPresenter;
+import kr.co.zumo.app.lifeplus.view.fragment.factory.FragmentFactory;
+import kr.co.zumo.app.lifeplus.view.fragment.factory.SignUpZumoFragmentFactory;
 
 /**
  * SignUpZumoActivity
@@ -21,10 +20,8 @@ import kr.co.zumo.app.lifeplus.view.presenter.SignUpPresenter;
  */
 public class SignUpZumoActivity extends SignUpActivity {
 
-  @Override
-  SignUpPresenter definePresenter() {
-    return new SignUpZumoPresenter(getModel(SignUpModel.class), this);
+  protected FragmentFactory defineFragmentFactory() {
+    return new SignUpZumoFragmentFactory();
   }
-
 }
 

+ 25 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/model/Model.java

@@ -14,6 +14,8 @@ import kr.co.zumo.app.lifeplus.network.NetworkWatcher;
 import kr.co.zumo.app.lifeplus.util.StringUtil;
 import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.ILifeCycle;
+import kr.co.zumo.app.lifeplus.view.fragment.factory.BasicFragmentFactory;
+import kr.co.zumo.app.lifeplus.view.fragment.factory.FragmentFactory;
 import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
 
 /**
@@ -35,6 +37,7 @@ public abstract class Model extends ViewModel implements ILifeCycle {
   private IModelResult listener;
   private Disposable networkDisposable;
   protected Presenter presenter;
+  private FragmentFactory fragmentFactory;
 
   public Model() {
     Log.w("APP# Model | Model", "| >>>>>>>>>>>> " + this.getClass().getSimpleName());
@@ -146,6 +149,28 @@ public abstract class Model extends ViewModel implements ILifeCycle {
     return StringUtil.isFull(preferences.getEncryptionUserNo()) && preferences.isZumoUserUpdateCompleted() == false;
   }
 
+
+  /**
+   * 네비게이션에 사용할 FragmentFactory 를 리턴한다.
+   *
+   * @return
+   */
+  public FragmentFactory getFragmentFactory() {
+    if (null == fragmentFactory) {
+      fragmentFactory = new BasicFragmentFactory();
+    }
+    return fragmentFactory;
+  }
+
+  /**
+   * 네비게이션 FragmentFactory 지정
+   *
+   * @param factory
+   */
+  public void setFragmentFactory(FragmentFactory factory) {
+    this.fragmentFactory = factory;
+  }
+
   /***********************************
    * ILifeCycle
    ***********************************/

+ 0 - 29
app/src/main/java/kr/co/zumo/app/lifeplus/model/SignUpFromOnBoardingModel.java

@@ -1,29 +0,0 @@
-/*
- * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
- */
-package kr.co.zumo.app.lifeplus.model;
-
-import kr.co.zumo.app.lifeplus.view.fragment.factory.FragmentFactory;
-import kr.co.zumo.app.lifeplus.view.fragment.factory.SignUpOnBoardingFragmentFactory;
-
-/**
- * SignUpFromOnBoardingModel
- * <pre>
- * </pre>
- *
- * @author 민효동
- * @version 1.0
- * @history 민효동   [2018. 9. 21.]   [최초 작성]
- * @since 2018. 9. 21.
- */
-public class SignUpFromOnBoardingModel extends SignUpModel {
-
-  /**
-   * 네비게이션에 사용할 팩토리를 리턴한다.
-   * @return
-   */
-  @Override
-  public FragmentFactory getFragmentFactory() {
-    return new SignUpOnBoardingFragmentFactory();
-  }
-}

+ 0 - 29
app/src/main/java/kr/co/zumo/app/lifeplus/model/SignUpFromZumoModel.java

@@ -1,29 +0,0 @@
-/*
- * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
- */
-package kr.co.zumo.app.lifeplus.model;
-
-import kr.co.zumo.app.lifeplus.view.fragment.factory.FragmentFactory;
-import kr.co.zumo.app.lifeplus.view.fragment.factory.SignUpZumoFragmentFactory;
-
-/**
- * SignUpFromZumoModel
- * <pre>
- * </pre>
- *
- * @author 민효동
- * @version 1.0
- * @history 민효동   [2018. 9. 21.]   [최초 작성]
- * @since 2018. 9. 21.
- */
-public class SignUpFromZumoModel extends SignUpModel {
-
-  /**
-   * 네비게이션에 사용할 팩토리를 리턴한다.
-   * @return
-   */
-  @Override
-  public FragmentFactory getFragmentFactory() {
-    return new SignUpZumoFragmentFactory();
-  }
-}

+ 0 - 21
app/src/main/java/kr/co/zumo/app/lifeplus/model/SignUpModel.java

@@ -22,7 +22,6 @@ import kr.co.zumo.app.lifeplus.bean.api.RequestBean;
 import kr.co.zumo.app.lifeplus.network.api.LifeplusAPIRepository;
 import kr.co.zumo.app.lifeplus.util.ResourceUtil;
 import kr.co.zumo.app.lifeplus.view.Event;
-import kr.co.zumo.app.lifeplus.view.fragment.factory.FragmentFactory;
 
 /**
  * SignUpModel
@@ -49,8 +48,6 @@ public class SignUpModel extends Model {
   private boolean isAuthorized = false;
   private String encryptedPin;
   protected MobileAuthBean mobileAuthBean;
-  private FragmentFactory fragmentFactory;
-
 
   public SignUpModel() {
   }
@@ -294,22 +291,4 @@ public class SignUpModel extends Model {
         })
     );
   }
-
-  /**
-   * 네비게이션에 사용할 팩토리를 리턴한다.
-   *
-   * @return
-   */
-  public FragmentFactory getFragmentFactory() {
-    return fragmentFactory;
-  }
-
-  /**
-   * 네비게이션 팩토리 지정
-   *
-   * @param factory
-   */
-  public void setFragmentFactory(FragmentFactory factory) {
-    this.fragmentFactory = factory;
-  }
 }

+ 1 - 9
app/src/main/java/kr/co/zumo/app/lifeplus/view/command/FragmentChangeCommand.java

@@ -11,7 +11,6 @@ import kr.co.zumo.app.lifeplus.supervisor.ScreenChanger;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenChangerHelper;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
 import kr.co.zumo.app.lifeplus.view.IView;
-import kr.co.zumo.app.lifeplus.view.fragment.factory.BasicFragmentFactory;
 import kr.co.zumo.app.lifeplus.view.fragment.factory.FragmentFactory;
 import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
 
@@ -29,18 +28,10 @@ public class FragmentChangeCommand extends Command<Model, IView, Presenter> {
 
   int fragmentId;
   int direction;
-  FragmentFactory factory;
-
-  public FragmentChangeCommand(@ScreenID.FragmentID int fragmentId, @ScreenID.Direction int direction, FragmentFactory factory) {
-    this.fragmentId = fragmentId;
-    this.direction = direction;
-    this.factory = factory;
-  }
 
   public FragmentChangeCommand(@ScreenID.FragmentID int fragmentId, @ScreenID.Direction int direction) {
     this.fragmentId = fragmentId;
     this.direction = direction;
-    this.factory = new BasicFragmentFactory();
   }
 
   @Override
@@ -50,6 +41,7 @@ public class FragmentChangeCommand extends Command<Model, IView, Presenter> {
 
   @Override
   public void execute(Model model, IView view, Presenter presenter) {
+    FragmentFactory factory = model.getFragmentFactory();
     ScreenChangerHelper helper = ScreenChangerHelper.getInstance();
     ScreenChanger screenChanger = new FragmentChanger(helper.getAppCompatActivity(), helper.getContainerId(), factory);
     Log.i("APP# FragmentChangeCommand | execute", "| fragment factory: " + factory.getClass().getSimpleName());

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/Presenter.java

@@ -77,7 +77,7 @@ public abstract class Presenter<M extends Model, V extends IView> implements ILi
    * destroy
    */
   public final void destroy() {
-    Log.i("APP# Presenter | destroyInternal", "|" + "-------------------------> " + this.getClass().getSimpleName());
+    Log.i("APP# Presenter | destroyInternal", "|" + "<<------------------------- " + this.getClass().getSimpleName());
 
     destroyInternal();
   }

+ 0 - 31
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/SignUpOnBoardingPresenter.java

@@ -1,31 +0,0 @@
-/*
- * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
- */
-package kr.co.zumo.app.lifeplus.view.presenter;
-
-import kr.co.zumo.app.lifeplus.model.SignUpModel;
-import kr.co.zumo.app.lifeplus.view.ISignUpView;
-import kr.co.zumo.app.lifeplus.view.fragment.factory.SignUpOnBoardingFragmentFactory;
-
-/**
- * SignUpOnBoardingPresenter
- * <pre>
- * </pre>
- *
- * @author 민효동
- * @version 1.0
- * @history 민효동   [2018. 9. 21.]   [최초 작성]
- * @since 2018. 9. 21.
- */
-public class SignUpOnBoardingPresenter extends SignUpPresenter {
-
-
-  public SignUpOnBoardingPresenter(SignUpModel model, ISignUpView view) {
-    super(model, view);
-  }
-
-  @Override
-  protected void defineFactory() {
-    model.setFragmentFactory(new SignUpOnBoardingFragmentFactory());
-  }
-}

+ 1 - 8
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/SignUpPresenter.java

@@ -9,7 +9,6 @@ import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.ISignUpView;
 import kr.co.zumo.app.lifeplus.view.command.ActivityChangeCommand;
 import kr.co.zumo.app.lifeplus.view.command.FragmentChangeCommand;
-import kr.co.zumo.app.lifeplus.view.fragment.factory.BasicFragmentFactory;
 
 /**
  * SignUpPresenter
@@ -26,12 +25,6 @@ public class SignUpPresenter extends Presenter<SignUpModel, ISignUpView> {
 
   public SignUpPresenter(SignUpModel model, ISignUpView view) {
     super(model, view);
-
-    defineFactory();
-  }
-
-  protected void defineFactory() {
-    model.setFragmentFactory(new BasicFragmentFactory());
   }
 
   @Override
@@ -72,7 +65,7 @@ public class SignUpPresenter extends Presenter<SignUpModel, ISignUpView> {
   protected void onEventInternal(Event event) {
     switch (event.getEventId()) {
       case Event.SIGN_UP:
-        onCommand(new FragmentChangeCommand(ScreenID.SIGN_UP_START, ScreenID.DIRECTION_NONE, model.getFragmentFactory()));
+        onCommand(new FragmentChangeCommand(ScreenID.SIGN_UP_START, ScreenID.DIRECTION_NONE));
         break;
       default:
         break;

+ 0 - 31
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/SignUpZumoPresenter.java

@@ -1,31 +0,0 @@
-/*
- * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
- */
-package kr.co.zumo.app.lifeplus.view.presenter;
-
-import kr.co.zumo.app.lifeplus.model.SignUpModel;
-import kr.co.zumo.app.lifeplus.view.ISignUpView;
-import kr.co.zumo.app.lifeplus.view.fragment.factory.SignUpZumoFragmentFactory;
-
-/**
- * SignUpZumoPresenter
- * <pre>
- * </pre>
- *
- * @author 민효동
- * @version 1.0
- * @history 민효동   [2018. 9. 21.]   [최초 작성]
- * @since 2018. 9. 21.
- */
-public class SignUpZumoPresenter extends SignUpPresenter {
-
-
-  public SignUpZumoPresenter(SignUpModel model, ISignUpView view) {
-    super(model, view);
-  }
-
-  @Override
-  protected void defineFactory() {
-    model.setFragmentFactory(new SignUpZumoFragmentFactory());
-  }
-}

+ 2 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/signup/SignUpMobileAuthPresenter.java

@@ -94,7 +94,7 @@ public class SignUpMobileAuthPresenter extends SignUpFragmentPresenter {
 
   @Override
   public boolean onBackPressed() {
-    onCommand(new FragmentChangeCommand(ScreenID.SIGN_UP_START, ScreenID.DIRECTION_BACK, model.getFragmentFactory()));
+    onCommand(new FragmentChangeCommand(ScreenID.SIGN_UP_START, ScreenID.DIRECTION_BACK));
     return true;
   }
 
@@ -131,7 +131,7 @@ public class SignUpMobileAuthPresenter extends SignUpFragmentPresenter {
     if (resultBean.isSuccess()) {
       Context context = App.getInstance().getContext();
       Toast toast = new Toast(context);
-      toast.setDuration(Toast.LENGTH_LONG);
+      toast.setDuration(Toast.LENGTH_SHORT);
       toast.setGravity(Gravity.FILL, 0, 0);
       LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
       View view = inflater.inflate(R.layout.sign_up_auth_result_dialog, null);

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/signup/SignUpStartPresenter.java

@@ -87,7 +87,7 @@ public class SignUpStartPresenter extends Presenter<SignUpModel, ISignUpStartVie
   protected void onEventInternal(Event event) {
     switch (event.getEventId()) {
       case Event.SUCCESS:
-        onCommand(new FragmentChangeCommand(ScreenID.SIGN_UP_MOBILE_AUTHORIZATION, ScreenID.DIRECTION_NEXT, model.getFragmentFactory()));
+        onCommand(new FragmentChangeCommand(ScreenID.SIGN_UP_MOBILE_AUTHORIZATION, ScreenID.DIRECTION_NEXT));
         break;
       case Event.INIT:
         isViewReady = true;