public Controller getController(ControlType pControlType)
        {
            FactoryProducer factory        = FactoryProducer.getInstance();
            AbstractFactory controlFactory = factory.getFactory(Library.FactoryType.ControlFactoryType);
            Controller      control        = controlFactory.getControl(pControlType);

            return(control);
        }
 public static FactoryProducer getInstance()
 {
     if (instance == null)
     {
         instance = new FactoryProducer();
     }
     return(instance);
 }
        public void updateUser(User pUser)
        {
            FactoryProducer factory        = FactoryProducer.getInstance();
            AbstractFactory controlFactory = factory.getFactory(Library.FactoryType.ControlFactoryType);
            Controller      control        = controlFactory.getControl(Library.ControlType.ControlUser);

            control.updateUser(pUser);
        }
        public virtual void updateActivity(Activity pActivity, String pReminder)
        {
            FactoryProducer factory        = FactoryProducer.getInstance();
            AbstractFactory controlFactory = factory.getFactory(Library.FactoryType.ControlFactoryType);
            Controller      control        = controlFactory.getControl(Library.ControlType.ControlCalendar);

            control.updateActivity(pActivity, pReminder);
        }
        public Boolean addActivity(Activity pActivity)
        {
            FactoryProducer factory        = FactoryProducer.getInstance();
            AbstractFactory controlFactory = factory.getFactory(Library.FactoryType.ControlFactoryType);
            Controller      control        = controlFactory.getControl(Library.ControlType.ControlCalendar);

            control.addActivity(pActivity);
            return(true);
        }
        public Boolean addUser(User pUser)
        {
            FactoryProducer factory        = FactoryProducer.getInstance();
            AbstractFactory controlFactory = factory.getFactory(Library.FactoryType.ControlFactoryType);
            Controller      control        = controlFactory.getControl(Library.ControlType.ControlUser);
            Boolean         value          = control.addUser(pUser);

            return(value);
        }
        public List <Activity> loadDataByMonth(int pMonth)
        {
            FactoryProducer factory             = FactoryProducer.getInstance();
            AbstractFactory controlFactory      = factory.getFactory(Library.FactoryType.ControlFactoryType);
            Controller      calendar            = controlFactory.getControl(Library.ControlType.ControlCalendar);
            List <Activity> listActivityByMonth = calendar.loadDataMonth(pMonth);

            return(listActivityByMonth);
        }
        public virtual Boolean addPayment(Payment pPayment)
        {
            FactoryProducer factory        = FactoryProducer.getInstance();
            AbstractFactory controlFactory = factory.getFactory(Library.FactoryType.ControlFactoryType);
            Controller      control        = controlFactory.getControl(Library.ControlType.ControlPayment);

            control.addPayment(pPayment);
            return(true);
        }
        public virtual Boolean addMedicine(Recipe pRecipe)
        {
            FactoryProducer factory        = FactoryProducer.getInstance();
            AbstractFactory controlFactory = factory.getFactory(Library.FactoryType.ControlFactoryType);
            Controller      control        = controlFactory.getControl(Library.ControlType.ControlMedicine);

            control.addMedicine(pRecipe);
            return(true);
        }
        public void loadData()
        {
            FactoryProducer factory        = FactoryProducer.getInstance();
            AbstractFactory controlFactory = factory.getFactory(Library.FactoryType.ControlFactoryType);
            Controller      calendar       = controlFactory.getControl(Library.ControlType.ControlCalendar);
            Controller      medicine       = controlFactory.getControl(Library.ControlType.ControlMedicine);
            Controller      payment        = controlFactory.getControl(Library.ControlType.ControlPayment);

            calendar.loadData();
            medicine.loadData();
            payment.loadData();
        }
        public Boolean checkUser(String pEmail, String pPassword)
        {
            FactoryProducer factory        = FactoryProducer.getInstance();
            AbstractFactory controlFactory = factory.getFactory(Library.FactoryType.ControlFactoryType);
            Controller      control        = controlFactory.getControl(Library.ControlType.ControlUser);
            RegularUser     user           = new RegularUser();

            user.email    = pEmail;
            user.password = pPassword;
            Boolean value = control.checkUser(user);

            return(value);
        }