Ejemplo n.º 1
0
        public void Load()
        {
            IBeanFactory factory = new BeanFactory();

            factory.Options.ValidateGetColumns = false;
            var crud     = new BeanCrud(new InMemoryStorage(), null, new KeyUtil(), factory);
            var observer = new TracingObserver();

            crud.AddObserver(observer);

            // Load non-existing bean
            Assert.Null(crud.Load("any", 123));
            Assert.Empty(observer.TraceLog);

            var bean = crud.Dispense <Tracer>();

            bean.Put("p1", "test");

            var id = crud.Store(bean);

            observer.TraceLog = "";

            bean = crud.Load <Tracer>(id);
            Assert.Equal("ad: bl: al:" + id, bean.TraceLog);
            Assert.Equal("ad: bl: al:" + id, observer.TraceLog);
            Assert.NotNull(bean["id"]);
            Assert.Equal(id, bean["id"]);
            Assert.Equal("test", bean["p1"]);
        }
Ejemplo n.º 2
0
        public void Store()
        {
            IBeanFactory factory = new BeanFactory();

            factory.Options.ValidateGetColumns = false;
            var crud     = new BeanCrud(new InMemoryStorage(), null, new KeyUtil(), factory);
            var observer = new TracingObserver();

            crud.AddObserver(observer);

            var bean = crud.Dispense <Tracer>();

            // ----- Insert
            var id = crud.Store(bean);

            Assert.Equal(0L, id);
            Assert.Equal(0L, bean["id"]);
            Assert.Equal($"ad: bs: bi: ai:{id} as:{id}", bean.TraceLog);
            Assert.Equal($"ad: bs: bi: ai:{id} as:{id}", observer.TraceLog);

            // ------ Update
            bean.Put("p1", "test");
            observer.TraceLog = "";
            bean.TraceLog     = "";
            crud.Store(bean);
            Assert.Equal(0L, bean["id"]);
            Assert.Equal($"bs:{id} bu:{id} au:{id} as:{id}", bean.TraceLog);
            Assert.Equal($"bs:{id} bu:{id} au:{id} as:{id}", observer.TraceLog);
        }
Ejemplo n.º 3
0
        public void RowToBean()
        {
            IBeanFactory factory = new BeanFactory();

            factory.Options.ValidateGetColumns = false;
            var crud     = new BeanCrud(new InMemoryStorage(), null, null, factory);
            var observer = new TracingObserver();

            crud.AddObserver(observer);

            var bean = crud.RowToBean <Tracer>(new Dictionary <string, object> {
                { "s", "hello" }
            });

            Assert.Null(bean["id"]);
            Assert.Equal("hello", bean["s"]);
            Assert.Equal("ad: bl: al:", bean.TraceLog);
            Assert.Equal("ad: bl: al:", observer.TraceLog);

            observer.TraceLog = "";

            bean = crud.RowToBean <Tracer>(new Dictionary <string, object> {
                { "id", 123 },
                { "s", "see you" }
            });

            Assert.Equal(123, bean["id"]);
            Assert.Equal("see you", bean["s"]);
            Assert.Equal("ad: bl: al:123", bean.TraceLog);
            Assert.Equal("ad: bl: al:123", observer.TraceLog);

            Assert.Null(crud.Load("temp", null));
        }
Ejemplo n.º 4
0
        public void Trash()
        {
            IBeanFactory factory = new BeanFactory();

            factory.Options.ValidateGetColumns = false;
            var crud     = new BeanCrud(new InMemoryStorage(), null, new KeyUtil(), factory);
            var observer = new TracingObserver();

            crud.AddObserver(observer);

            var bean = crud.Dispense <Tracer>();

            observer.TraceLog = bean.TraceLog = "";
            crud.Trash(bean);
            Assert.Empty(bean.TraceLog);
            Assert.Empty(observer.TraceLog);

            var id = crud.Store(bean);

            observer.TraceLog = bean.TraceLog = "";
            crud.Trash(bean);
            Assert.Equal("bt:" + id + " at:" + id, bean.TraceLog);
            Assert.Equal("bt:" + id + " at:" + id, observer.TraceLog);
            Assert.Equal(id, bean["id"]);

            Assert.Null(crud.Load <Tracer>(id));
        }
Ejemplo n.º 5
0
        public void ImplicitTransactionsOnStoreAndTrash()
        {
            using (var conn = SQLitePortability.CreateConnection()) {
                conn.Open();

                IDatabaseDetails details = new SQLiteDetails();
                IDatabaseAccess  db      = new DatabaseAccess(conn, details);
                IKeyAccess       keys    = new KeyUtil();
                DatabaseStorage  storage = new DatabaseStorage(details, db, keys);
                IBeanFactory     factory = new BeanFactory();
                IBeanCrud        crud    = new BeanCrud(storage, db, keys, factory);

                storage.EnterFluidMode();

                var bean = crud.Dispense <ThrowingBean>();
                bean["foo"] = "ok";
                var id = crud.Store(bean);

                bean.Throw  = true;
                bean["foo"] = "fail";

                try { crud.Store(bean); } catch { }
                Assert.Equal("ok", db.Cell <string>(true, "select foo from test where id = {0}", id));

                try { crud.Trash(bean); } catch { }
                Assert.True(db.Cell <int>(true, "select count(*) from test") > 0);
            }
        }
Ejemplo n.º 6
0
        public void Dispense_Default()
        {
            IBeanFactory factory = new BeanFactory();
            var          crud    = new BeanCrud(null, null, null, factory);
            var          bean    = crud.Dispense("test");

            Assert.Equal("test", bean.GetKind());
            Assert.Equal(typeof(Bean), bean.GetType());
        }
Ejemplo n.º 7
0
        public void CreateInheritBeanTest()
        {
            Bean b = new Bean();

            b.Id = 2;
            BeanInherit bean = new BeanFactory <Bean, BeanInherit>().CreateBean(b);

            Assert.AreEqual(2, bean.Id);
        }
Ejemplo n.º 8
0
        public void CloneBeanTest()
        {
            Bean b = new Bean();

            b.Id = 2;
            Bean bean = new BeanFactory <Bean>().CloneBean(b);

            Assert.IsNotNull(bean.RoleList);
            Assert.IsNotNull(bean.Child);
            Assert.AreEqual(2, bean.Id);
        }
Ejemplo n.º 9
0
        public void CloneBeanRecursiveTest()
        {
            BeanRecursive b = new BeanRecursive();

            b.Child = new BeanRecursive();
            BeanRecursive bean = new BeanFactory <BeanRecursive>().CloneBean(b);

            Assert.IsNotNull(bean.Child);
            Assert.IsNotNull(bean.Child.Child);
            Assert.IsNull(bean.Child.Child.Child);
        }
Ejemplo n.º 10
0
        public void PreventDirectInstantiation()
        {
            IBeanFactory factory = new BeanFactory();
            var          crud    = new BeanCrud(null, null, null, factory);

            Assert.Throws <InvalidOperationException>(() => {
                crud.Store(new Tracer());
            });

            Assert.Throws <InvalidOperationException>(() => {
                crud.Trash(new Tracer());
            });
        }
Ejemplo n.º 11
0
        static void RecoveryWebSite()
        {
            IKeepIISAliveService KeepIISAliveService = (IKeepIISAliveService)BeanFactory.getObject("KeepIISAliveService");

            KeepIISAliveService.KeepAlive();


            var config = (RunningConfigModel)BeanFactory.getObject("RunningConfigModel");

            if (config != null && config.RunningMode == "ONETIME")
            {
                Environment.Exit(0);
            }
        }
Ejemplo n.º 12
0
        static void Main()
        {
            BeanFactory = new BeanFactory();

#if DEBUG
            BackService bs = new BackService(BeanFactory);

            bs.Start(new String[0]);

            Application.ApplicationExit += (sender, e) => bs.Stop();
#endif

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Charge dans un objet le bean à partir de sa clef primaire.
        /// </summary>
        /// <param name="destination">Objet à charger.</param>
        /// <param name="primaryKey">Valeur de la clef primaire.</param>
        public override void Load(T destination, object primaryKey)
        {
            if (primaryKey == null)
            {
                throw new ArgumentNullException("primaryKey");
            }

            FilterCriteria criteria = new FilterCriteria();

            criteria.AddCriteria(_pkName, Expression.Equals, primaryKey);
            criteria.AddCriteria(_propertyName, Expression.Equals, true);
            T newObject = GetByCriteria(criteria);

            BeanFactory <T> factory = new BeanFactory <T>();

            factory.CloneBean(newObject, destination);
        }
Ejemplo n.º 14
0
        public void Dispense_Hooks()
        {
            IBeanFactory factory = new BeanFactory();

            factory.Options.ValidateGetColumns = false;
            var crud     = new BeanCrud(null, null, null, factory);
            var observer = new TracingObserver();

            crud.AddObserver(observer);

            var bean = crud.Dispense <Tracer>();

            Assert.Equal("tracer", bean.GetKind());

            Assert.Equal("ad:", bean.TraceLog);
            Assert.Equal("ad:", observer.TraceLog);
            Assert.Same(bean, observer.LastBean);
        }
Ejemplo n.º 15
0
        public void Dispense_ValidateGetColumns_Test()
        {
            IBeanFactory factory = new BeanFactory();
            object       one;
            object       two;
            Bean         bean;

            Func <bool, Bean> make = validateColumns => {
                factory.Options.ValidateGetColumns = false;
                Bean b = factory.Dispense("test");
                Assert.Equal(typeof(Bean), b.GetType());
                Assert.Equal(false, b.ValidateGetColumns);
                b.Put("one", 1);
                return(b);
            };

            // With ValidateGetColumns switched off
            bean = make(false);
            one  = (int)bean["one"];
            Assert.Equal(1, one);
            one = bean.Get <int>("one");
            Assert.Equal(1, one);
            two = bean.Get <int>("two");
            Assert.Equal(0, two);
            two = bean["two"];
            Assert.Equal(null, two);

            // With ValidateGetColumns switched on
            bean = make(true);
            one  = (int)bean["one"];
            Assert.Equal(1, one);
            one = bean.Get <int>("one");
            Assert.Equal(1, one);
            try {
                two = bean["two"];
            } catch (Exception e) {
                Assert.IsType(typeof(ColumnNotFoundException), e);
            }
            try {
                two = bean.Get <int>("two");
            } catch (Exception e) {
                Assert.IsType(typeof(ColumnNotFoundException), e);
            }
        }
Ejemplo n.º 16
0
        public void ConvertsValueToString()
        {
            IBeanFactory factory = new BeanFactory();
            var          crud    = new BeanCrud(null, null, null, factory);

            var bean = crud.Dispense("foo");

            bean.Import(
                new Dictionary <string, object>()
            {
                { "null", null },
                { "bool", true },
                { "sbyte", sbyte.Parse("123") },
                { "ssbyte", sbyte.Parse("-123") },
                { "byte", byte.Parse("123") },
                { "int", 123 },
                { "long", 123456789L },
                { "double", 123.4567 },
                { "decimal", 123.45m },
                { "string", "Hello!" },
                { "datetime", new DateTime(2000, 1, 1) },
                { "guid", Guid.Parse("6161ADAD-72F0-48D1-ACE2-CD98315C9D5B") },
                { "byte[]", Encoding.UTF8.GetBytes("Hello!") }
            }
                );

            AssertExtensions.WithCulture("de-DE", () =>
            {
                Assert.Equal("#NULL#", bean["null"].FormatValueToString());
                Assert.Equal("true", bean["bool"].FormatValueToString());
                Assert.Equal("123", bean["sbyte"].FormatValueToString());
                Assert.Equal("-123", bean["ssbyte"].FormatValueToString());
                Assert.Equal("123", bean["byte"].FormatValueToString());
                Assert.Equal("123", bean["int"].FormatValueToString());
                Assert.Equal("123456789", bean["long"].FormatValueToString());
                Assert.Equal("123,4567", bean["double"].FormatValueToString());
                Assert.Equal("123,45", bean["decimal"].FormatValueToString());
                Assert.Equal("Hello!", bean["string"].FormatValueToString());
                Assert.Equal("2000-01-01T00:00:00", bean["datetime"].FormatValueToString());
                Assert.Equal("6161ADAD-72F0-48D1-ACE2-CD98315C9D5B", bean["guid"].FormatValueToString());
                Assert.Equal("Hello!", bean["byte[]"].FormatValueToString());
            });
        }
Ejemplo n.º 17
0
        public void Store()
        {
            IBeanFactory factory = new BeanFactory();

            factory.Options.ValidateGetColumns = false;
            var crud     = new BeanCrud(new InMemoryStorage(), null, new KeyUtil(), factory);
            var observer = new TracingObserver();

            crud.AddObserver(observer);

            var bean = crud.Dispense <Tracer>();

            var id = crud.Store(bean);

            Assert.Equal(0L, id);
            Assert.Equal(0L, bean["id"]);
            Assert.Equal("ad: bs: as:" + id, bean.TraceLog);
            Assert.Equal("ad: bs: as:" + id, observer.TraceLog);
        }
Ejemplo n.º 18
0
        public DatabaseBeanFinderTests()
        {
            _conn = SQLitePortability.CreateConnection();
            _conn.Open();

            IDatabaseDetails details = new SQLiteDetails();
            IDatabaseAccess  db      = new DatabaseAccess(_conn, details);
            IKeyAccess       keys    = new KeyUtil();
            IStorage         storage = new DatabaseStorage(details, db, keys);
            IBeanFactory     factory = new BeanFactory();
            IBeanCrud        crud    = new BeanCrud(storage, db, keys, factory);
            IBeanFinder      finder  = new DatabaseBeanFinder(details, db, crud);

            db.Exec("create table foo(x)");
            db.Exec("insert into foo(x) values(1)");
            db.Exec("insert into foo(x) values(2)");
            db.Exec("insert into foo(x) values(3)");

            _db     = db;
            _finder = finder;
        }
Ejemplo n.º 19
0
        public static void Run(Type applicationType, dynamic settingObject, string[] args)
        {
            if (!typeof(IApplication).IsAssignableFrom(applicationType))
            {
                throw new NotSupportedException();
            }

            Settings = settingObject;

            var beanManager = new BeanManager();

            var attrScanner = new AttributeScanner(beanManager);

            var beanFactory = new BeanFactory(beanManager);

            beanFactory.CreateAllBeans();

            var application = beanManager.GetBean <IApplication>();

            application.Run(args);

            Console.ReadLine();
        }
Ejemplo n.º 20
0
 public SpringBeanFactoryProxyMap(BeanFactory beanFactory)
 {
     this.beanFactory = beanFactory;
 }
Ejemplo n.º 21
0
 public BackService(BeanFactory beanFactory)
 {
     this.singleton    = beanFactory.Get <INotificationServiceExtended>("notificationService");
     this.host         = new ServiceHost(singleton);
     this.host.Opened += host_Opened;
 }
Ejemplo n.º 22
0
        /// <summary>
        /// Crée une nouvelle entrée pour le type.
        /// </summary>
        /// <param name="referenceList">Liste de référence.</param>
        /// <param name="resourceList">Liste des resources disponible.</param>
        void IReferenceEntry.Initialize(ICollection referenceList, ICollection <ReferenceResource> resourceList)
        {
            BeanDefinition         definition = BeanDescriptor.GetDefinition(typeof(T));
            BeanPropertyDescriptor primaryKey = definition.PrimaryKey;

            if (primaryKey == null)
            {
                throw new NotSupportedException("Reference type " + typeof(T).FullName + " doesn't have a primary key defined. Use the ColumnAttribute to set the primary key property.");
            }

            BeanPropertyDescriptor propertyIsActif = null;

            if (definition.Properties.Contains(PropertyIsActif))
            {
                propertyIsActif = definition.Properties[PropertyIsActif];
            }

            ICollection <T> initialList = (ICollection <T>)referenceList;
            ICollection <T> activeList  = (propertyIsActif == null) ? initialList : new List <T>();

            foreach (T reference in initialList)
            {
                _resourceMap.Add(DefaultLocale + primaryKey.GetValue(reference), reference);

                if (propertyIsActif != null)
                {
                    bool?isActif = (bool?)propertyIsActif.GetValue(reference);
                    if (isActif.HasValue && isActif.Value)
                    {
                        activeList.Add(reference);
                    }
                }
            }

            _localizedList.Add(DefaultLocale, activeList);

            if (resourceList == null)
            {
                return;
            }

            BeanFactory <T> factory = new BeanFactory <T>();

            foreach (ReferenceResource resource in resourceList)
            {
                T      reference;
                string locale = resource.Locale.Trim();
                if (!_localizedList.ContainsKey(locale))
                {
                    // Construction des entrées pour la locale.
                    List <T> list = new List <T>();
                    foreach (T initialReference in initialList)
                    {
                        reference = factory.CloneBean(initialReference);
                        _resourceMap.Add(locale + primaryKey.GetValue(reference), reference);

                        if (propertyIsActif != null)
                        {
                            bool?isActif = (bool?)propertyIsActif.GetValue(reference);
                            if (isActif.HasValue && isActif.Value)
                            {
                                list.Add(reference);
                            }
                        }
                        else
                        {
                            list.Add(reference);
                        }
                    }

                    _localizedList.Add(locale, list);
                }

                reference = _resourceMap[locale + resource.Id];
                definition.Properties[resource.PropertyName].SetValue(reference, resource.Label);
            }
        }