public async Task <BusinessBase> RetreiveObject(ContextProvider contextProvider, string objectName, int dbNumber, string key)
        {
            string       objectKey = ObjectKey(objectName, dbNumber, key);
            BusinessBase objResp   = await Task.Run(() =>
            {
                return(contextProvider.BusinessItems.GetOrAdd(objectKey, (theKey) =>
                                                              Get(contextProvider, objectName, dbNumber, key, objectKey).Result));
            });

            return(objResp);
        }
Example #2
0
        public BusinessBase(ContextProvider contextProvider, string objectName = "", int dbNumber = 0)
        {
            if (objectName == "")
            {
                objectName = this.ToString().Split('.').Last();
            }

            this.businessProvider = contextProvider.BusinessProvider;
            this.contextProvider  = contextProvider;
            decorator             = businessProvider.GetDecorator(contextProvider, objectName, dbNumber);
            dataItem = Decorator.New(this);
        }
        private BusinessBaseDecorator GetDecoratorInternal(ContextProvider contextProvider, string objectName, int dbNumber)
        {
            BusinessBaseDecorator decorator;

            if (decorators.ContainsKey(objectName))
            {
                decorator = decorators[objectName].Invoke();
            }
            else
            {
                decorator = DefaultBusinessBaseDecorator();
            }
            decorator.SetProperties(contextProvider, objectName, dbNumber);

            return(decorator);
        }
        public virtual BusinessBase CreateObject(ContextProvider contextProvider, string objectName, int dbNumber = 0)
        {
            BusinessBase obj;

            if (creators.TryGetValue(objectName, out Func <ContextProvider, BusinessBase> creator))
            {
                obj = creator.Invoke(contextProvider);

                if (dbNumber != 0)
                {
                    //obj.ChangeDBNumber(dbNumber);
                }
            }
            else
            {
                obj = DefaultBusinessBase(contextProvider, objectName, dbNumber);
            }

            return(obj);
        }
        private async Task <BusinessBase> Get(ContextProvider contextProvider, string objectName, int dbNumber, string key, string objectKey)
        {
            byte[]       data;
            bool         readFromDB = true;
            BusinessBase obj        = CreateObject(contextProvider, objectName, dbNumber);

            data = await GetData(objectKey);

            if (data != null)
            {
                try
                {
                    obj.Deserialize(data);
                    readFromDB = false;
                }
                catch
                {
                    // Sometimes Redis returns bad data.
                }
            }
            if (readFromDB)
            {
                if (key != "0" && key[0] != '-')
                {
                    await obj.ReadFromDB(key);
                }
                else
                {
                    if (!obj.IsNew)
                    {
                        await obj.SetNew();

                        objectKey = obj.Key;
                    }
                }

                await StoreObject(obj, objectName);
            }

            return(obj);
        }
        public virtual void SetProperties(ContextProvider contextProvider, string objectName, int dbNumber)
        {
            string tableName = provider.GetDBTableFor(objectName);

            this.dbNumber   = dbNumber;
            this.objectName = objectName;
            this.tableName  = tableName;

            foreach (ColumnDefinition column in contextProvider.DbContext.GetDefinitions(objectName))
            {
                PropertyDefinition def = new PropertyDefinition(column);

                Properties[column.ColumnName] = def;
            }

            if (Properties.Count == 0)
            {
                throw new Exception("No Schema found for " + tableName + ".");
            }

            Singular = "";
            foreach (char letter in objectName)
            {
                if (Singular != "" && letter.ToString().ToUpper() == letter.ToString())
                {
                    Singular += " ";
                }

                Singular += letter;
            }

            Plural = Singular + "s";

            SetCustomProperties();

            PostSetCustomProperties();
        }
 public virtual FilterBase GetFilter(ContextProvider contextProvider, string filterName)
 {
     return(new FilterBase(contextProvider, this, DBNumber));
 }
Example #8
0
 public FilterBase(ContextProvider contextProvider, BusinessBaseDecorator decorator, int dbNumber = 0)
 {
     ContextProvider = contextProvider;
     Decorator       = decorator;
 }
 public BusinessBaseDecorator GetDecorator(ContextProvider contextProvider, string name, int dbNumber = 0)
 {
     return(GetLazyDecorator(contextProvider, name, dbNumber).Value);
 }
 public bool IsDecoratorCreated(ContextProvider contextProvider, string name, int dbNumber = 0)
 {
     return(GetLazyDecorator(contextProvider, name, dbNumber).IsValueCreated);
 }
 public async Task <BusinessBase> RetreiveObject(ContextProvider contextProvider, string objectName, string key)
 {
     return(await RetreiveObject(contextProvider, objectName, 0, key));
 }
        public virtual ListTable GetList(ContextProvider contextProvider, string listName = "", string parameter = "")
        {
            string sql = GetListSQL(contextProvider.DbDialect, listName, parameter);

            return(new ListTable(contextProvider, listName, sql, GetParameter(parameter), DBNumber, AllListDescription));
        }