Пример #1
0
        public IndexResult AddGeneralIndex(GeneralDTO general)
        {
            if (general.GeneralID == null)
            {
                return(new IndexResult());
            }
            if (Exists <EntityDocument>(general.GeneralID.Value, DocumentIndexTypeToken.Entity))
            {
                if (_profile.Initialized)
                {
                    _log.WarnFormat("CANNOT PROCESS '{0}CreatedMessage' FOR ENTITY #{1} - '{2}'. ENTITY HAS ALREADY BEEN ADDED ON PROFILE INITIALIZATION OR ENTITY CREATION !!!", general.EntityTypeName, general.GeneralID.GetValueOrDefault(), general.Name);
                }
                else
                {
                    _log.ErrorFormat("CANNOT PROCESS '{0}CreatedMessage' FOR ENTITY #{1} - '{2}'. ENTITY HAS ALREADY BEEN ADDED !!!", general.EntityTypeName, general.GeneralID.GetValueOrDefault(), general.Name);
                }
                return(new IndexResult());
            }
            IDocumentIndex entityIndex = _documentIndexProvider.GetOrCreateDocumentIndex(_pluginContext.AccountName, DocumentIndexTypeToken.Entity);
            EntityDocument document    = _documentFactory.CreateGeneral(general);
            IndexResult    indexResult = document == null ? new IndexResult() : entityIndex.Index(document, false);

            if (indexResult.DocNumber != -1)
            {
                IDocumentIndex projectContextIndex = _documentIndexProvider.GetOrCreateDocumentIndex(_pluginContext.AccountName, DocumentIndexTypeToken.EntityProject);
                projectContextIndex.Index(indexResult.DocNumber, _documentIdFactory.EncodeProjectId(general.ParentProjectID));
                Maybe <string> maybeEntityTypeName = _entityTypeProvider.GetEntityTypeName(general.EntityTypeID);
                string         entityTypeName      = maybeEntityTypeName.FailIfNothing(() => new ApplicationException("Entity type name was not found {0}".Fmt(general.EntityTypeID)));
                IDocumentIndex entityTypeIndex     = _documentIndexProvider.GetOrCreateDocumentIndex(_pluginContext.AccountName, DocumentIndexTypeToken.EntityType);
                entityTypeIndex.Index(indexResult.DocNumber, entityTypeName);
            }
            _log.Debug(string.Format("Added {0} #{1} - '{2}':{3}", general.EntityTypeName, general.GeneralID.GetValueOrDefault(), general.Name, indexResult.WordsAdded.Any() ? string.Format(" added words - {0};", string.Join(",", indexResult.WordsAdded.Keys)) : " NO WORDS ADDED;"));
            return(indexResult);
        }
        public ActionResult PostDetail(GeneralDTO model)
        {
            if (model.Name != null && model.Email != null && model.Message != null)
            {
                if (postbll.AddComment(model))
                {
                    ViewData["CommentState"] = "Success";
                    ModelState.Clear();
                }
                else
                {
                    ViewData["CommentState"] = "Error";
                }
            }
            else
            {
                ViewData["CommentState"] = "Error";
            }
            HomeLayoutDTO layoutdto = new HomeLayoutDTO();

            layoutdto             = layoutbll.GetLayoutData();
            ViewData["LayoutDTO"] = layoutdto;
            GeneralDTO dto = new GeneralDTO();

            model = bll.GetPostDetailPageItemsWithID(model.PostID);
            return(View(model));
        }
Пример #3
0
        public GeneralDTO GetCategoryPostList(string categoryName)
        {
            GeneralDTO dto = new GeneralDTO();

            dto.BreakingPost = dao.GetBreakingPosts();
            dto.Adslist      = adsdao.GetAdsList();
            if (categoryName == "video")
            {
                dto.Videos       = dao.GetAllVideos();
                dto.CategoryName = "video";
            }
            else
            {
                List <CategoryDTO> categorylist = categorydao.GetCategoryList();
                int categoryID = 0;
                foreach (var item in categorylist)
                {
                    if (categoryName == SeoLink.GenerateUrl(item.CategoryName))
                    {
                        categoryID       = item.ID;
                        dto.CategoryName = item.CategoryName;
                        break;
                    }
                }
                dto.CategoryPostList = dao.GetCategoryPostList(categoryID);
            }

            return(dto);
        }
        public ActionResult ContactUs(GeneralDTO model)
        {
            if (model.Name != null && model.Subject != null && model.Email != null && model.Message != null)
            {
                if (contactbll.AddContact(model))
                {
                    ViewData["CommentState"] = "Success";
                }
                else
                {
                    ViewData["CommentState"] = "Error";
                }
            }
            else
            {
                ViewData["CommentState"] = "Error";
            }
            HomeLayoutDTO layoutdto = new HomeLayoutDTO();

            layoutdto             = layoutbll.GetLayoutData();
            ViewData["LayoutDTO"] = layoutdto;
            GeneralDTO dto = new GeneralDTO();

            dto = bll.GetContactPageItems();
            return(View(dto));
        }
Пример #5
0
        public IndexResult RemoveGeneralIndex(GeneralDTO general)
        {
            if (general.GeneralID == null)
            {
                return(new IndexResult());
            }
            IDocumentIndex entityIndex = _documentIndexProvider.GetOrCreateDocumentIndex(_pluginContext.AccountName, DocumentIndexTypeToken.Entity);
            var            doc         = entityIndex.FindDocumentByName <EntityDocument>(EntityDocument.CreateName(general.GeneralID));

            if (doc == null)
            {
                _log.Error(string.Format("CANNOT PROCESS UPDATE '{0}DeletedMessage' FOR ENTITY #{1} - '{2}'. ENTITY WAS NOT ADDED DURING PROFILE INITIALIZATION OR ENTITY CREATION !!!", general.EntityTypeName, general.GeneralID.GetValueOrDefault(), general.Name));
                return(new IndexResult());
            }
            var emptyDocument = CreateEmptyEntityDocument(doc.DocNumber, EntityDocument.CreateName(general.GeneralID));
            var indexResult   = entityIndex.Rebuild(emptyDocument);

            _log.Debug(string.Format("Removed {0} #{1} - '{2}'", general.EntityTypeName, general.GeneralID.GetValueOrDefault(), general.Name));
            if (doc.DocNumber >= 0)
            {
                IDocumentIndex entityProjectIndex = _documentIndexProvider.GetOrCreateDocumentIndex(_pluginContext.AccountName, DocumentIndexTypeToken.EntityProject);
                entityProjectIndex.Update(doc.DocNumber, string.Empty);
                IDocumentIndex entityTypeIndex = _documentIndexProvider.GetOrCreateDocumentIndex(_pluginContext.AccountName, DocumentIndexTypeToken.EntityType);
                entityTypeIndex.Update(doc.DocNumber, string.Empty);
            }
            return(indexResult);
        }
Пример #6
0
        public void MongoIgnored_Properties_Are_Ignored()
        {
            var test = new GeneralDTO();
            test.IgnoredProperty = 42;
            var hydrated = BSONSerializer.Deserialize<GeneralDTO>(BSONSerializer.Serialize(test));

            Assert.AreEqual(0, hydrated.IgnoredProperty);
        }
Пример #7
0
        public IndexResult UpdateGeneralIndex(GeneralDTO general, ICollection <GeneralField> changedFields)
        {
            if (general.GeneralID == null)
            {
                return(new IndexResult());
            }
            IEnumerable <IDocumentIndex> indexes = _documentIndexProvider.GetOrCreateDocumentIndexes(_pluginContext.AccountName, DocumentIndexTypeToken.Entity, DocumentIndexTypeToken.EntityProject, DocumentIndexTypeToken.EntityType);

            if (!indexes.Any(i => changedFields.Any(f => i.Type.IsBelongedToIndexFields(f) || i.Type.IsBelongedToDocumentFields(f))))
            {
                return(new IndexResult());
            }
            IDocumentIndex entityIndex = _documentIndexProvider.GetOrCreateDocumentIndex(_pluginContext.AccountName, DocumentIndexTypeToken.Entity);
            var            document    = entityIndex.FindDocumentByName <EntityDocument>(EntityDocument.CreateName(general.GeneralID));

            if (document == null)
            {
                _log.Error(string.Format("CANNOT PROCESS UPDATE '{0}UpdatedMessage' FOR ENTITY #{1} - '{2}'. ENTITY WAS NOT ADDED DURING PROFILE INITIALIZATION OR ENTITY CREATION !!!", general.EntityTypeName, general.GeneralID.GetValueOrDefault(), general.Name));
                return(new IndexResult());
            }
            if (changedFields.Any(f => entityIndex.Type.IsBelongedToDocumentFields(f)))
            {
                document.ProjectId    = _documentIdFactory.CreateProjectId(general.ParentProjectID.GetValueOrDefault());
                document.EntityTypeId = _documentIdFactory.CreateEntityTypeId(general.EntityTypeID.GetValueOrDefault());
                entityIndex.SaveDocument(document, false);
                _log.Debug(string.Format("Updated {0} #{1} - '{2}':{3}{4}", general.EntityTypeName, general.GeneralID.GetValueOrDefault(), general.Name, changedFields.Contains(GeneralField.ParentProjectID) ? string.Format(" Project - {0};", string.Join(",", general.ParentProjectName)) : string.Empty, changedFields.Contains(GeneralField.EntityTypeID) ? string.Format(" EntityType - {0};", string.Join(",", general.EntityTypeName)) : string.Empty));
            }
            if (changedFields.Any(f => entityIndex.Type.IsBelongedToIndexFields(f)))
            {
                var text        = _textOperations.Prepare(string.Format("{0} {1} ", general.Name, general.Description ?? string.Empty));
                var indexResult = entityIndex.Update(document.FileName, text);
                _log.Debug(string.Format("Updated {0} #{1} - '{2}':{3}{4}", general.EntityTypeName,
                                         general.GeneralID.GetValueOrDefault(), general.Name,
                                         indexResult.WordsAdded.Any() ? string.Format(" added words - {0};", string.Join(",", indexResult.WordsAdded.Keys)) : " NO WORDS ADDED;",
                                         indexResult.WordsRemoved.Any() ? string.Format(" removed words - {0};", string.Join(",", indexResult.WordsRemoved)) : " NO WORDS REMOVED;"));
            }
            IDocumentIndex entityProjectIndex = _documentIndexProvider.GetOrCreateDocumentIndex(_pluginContext.AccountName, DocumentIndexTypeToken.EntityProject);

            if (changedFields.Any(f => entityProjectIndex.Type.IsBelongedToIndexFields(f)) && document.DocNumber >= 0)
            {
                entityProjectIndex.Update(document.DocNumber, general.ParentProjectID.HasValue ? _documentIdFactory.EncodeProjectId(general.ParentProjectID.Value) : string.Empty);
                _localBus.SendLocal(new GeneralProjectChangedLocalMessage
                {
                    GeneralId = general.GeneralID.Value,
                    ProjectId = general.ParentProjectID
                });
            }
            IDocumentIndex entityTypeIndex = _documentIndexProvider.GetOrCreateDocumentIndex(_pluginContext.AccountName, DocumentIndexTypeToken.EntityType);

            if (changedFields.Any(f => entityTypeIndex.Type.IsBelongedToIndexFields(f)) && document.DocNumber >= 0)
            {
                entityTypeIndex.Index(document.DocNumber, general.EntityTypeName);
            }
            return(new IndexResult {
                DocNumber = document.DocNumber
            });
        }
Пример #8
0
        public GeneralDTO GetContactPageItems()
        {
            GeneralDTO dto = new GeneralDTO();

            dto.BreakingPost = dao.GetBreakingPosts();
            dto.Adslist      = adsdao.GetAdsList();
            dto.Address      = addressdao.GetAddresses().First();
            return(dto);
        }
Пример #9
0
        public GeneralDTO GetPostDetailPageItemsWithID(int ID)
        {
            GeneralDTO dto = new GeneralDTO();

            dto.BreakingPost = dao.GetBreakingPosts();
            dto.Adslist      = adsdao.GetAdsList();
            dto.PostDetail   = dao.GetPostDetail(ID);
            return(dto);
        }
Пример #10
0
        public GeneralDTO GetSearchPosts(string searchText)
        {
            GeneralDTO dto = new GeneralDTO();

            dto.BreakingPost     = dao.GetBreakingPosts();
            dto.Adslist          = adsdao.GetAdsList();
            dto.CategoryPostList = dao.GetSearchPost(searchText);
            dto.SearchText       = searchText;
            return(dto);
        }
Пример #11
0
        public ActionResult CategoryPostList(string categoryName)
        {
            HomeLayoutDTO layoutDTO = new HomeLayoutDTO();

            layoutDTO             = layoutBLL.GetLayoutData();
            ViewData["LayoutDTO"] = layoutDTO;
            GeneralDTO dto = new GeneralDTO();

            dto = generalBLL.GetCategoryPostList(categoryName);
            return(View(dto));
        }
        public ActionResult PostDetail(int ID)
        {
            HomeLayoutDTO layoutdto = new HomeLayoutDTO();

            layoutdto             = layoutbll.GetLayoutData();
            ViewData["LayoutDTO"] = layoutdto;
            GeneralDTO dto = new GeneralDTO();

            dto = bll.GetPostDetailPageItemsWithID(ID);
            return(View(dto));
        }
        public ActionResult ContactUs()
        {
            HomeLayoutDTO layoutdto = new HomeLayoutDTO();

            layoutdto             = layoutbll.GetLayoutData();
            ViewData["LayoutDTO"] = layoutdto;
            GeneralDTO dto = new GeneralDTO();

            dto = bll.GetContactPageItems();
            return(View(dto));
        }
        public ActionResult CategoryPostList(string CategoryName)
        {
            HomeLayoutDTO layoutdto = new HomeLayoutDTO();

            layoutdto             = layoutbll.GetLayoutData();
            ViewData["LayoutDTO"] = layoutdto;
            GeneralDTO dto = new GeneralDTO();

            dto = bll.GetCategoryPostList(CategoryName);
            return(View(dto));
        }
Пример #15
0
        // GET: Home
        public ActionResult Index()
        {
            HomeLayoutDTO layoutDTO = new HomeLayoutDTO();

            layoutDTO             = layoutBLL.GetLayoutData();
            ViewData["LayoutDTO"] = layoutDTO;
            GeneralDTO generalDTO = new GeneralDTO();

            generalDTO = generalBLL.GetAllPosts();
            return(View(generalDTO));
        }
        public ActionResult Search(GeneralDTO model)
        {
            HomeLayoutDTO layoutdto = new HomeLayoutDTO();

            layoutdto             = layoutbll.GetLayoutData();
            ViewData["LayoutDTO"] = layoutdto;
            GeneralDTO dto = new GeneralDTO();

            dto = bll.GetSearchPosts(model.SearchText);
            return(View(dto));
        }
        public ActionResult Index()
        {
            HomeLayoutDTO layoutdto = new HomeLayoutDTO();

            layoutdto             = layoutbll.GetLayoutData();
            ViewData["LayoutDTO"] = layoutdto;
            GeneralDTO dto = new GeneralDTO();

            dto = bll.GetAllPosts();
            return(View(dto));
        }
Пример #18
0
        public ActionResult PostDetail(int ID)
        {
            HomeLayoutDTO layoutDTO = new HomeLayoutDTO();

            layoutDTO             = layoutBLL.GetLayoutData();
            ViewData["LayoutDTO"] = layoutDTO;
            GeneralDTO generalDTO = new GeneralDTO();

            generalDTO = generalBLL.GetPostDetailPageItemsWithID(ID);
            return(View(generalDTO));
        }
Пример #19
0
        public bool AddComment(GeneralDTO model)
        {
            Comment comment = new Comment();

            comment.PostID         = model.PostID;
            comment.NameSurname    = model.Name;
            comment.Email          = model.Email;
            comment.CommentContent = model.Message;
            comment.AddDate        = DateTime.Now;
            dao.AddComment(comment);
            return(true);
        }
Пример #20
0
        public GeneralDTO GetAllPosts()
        {
            GeneralDTO dto = new GeneralDTO();

            dto.SliderPost     = dao.GetSliderPosts();
            dto.BreakingPost   = dao.GetBreakingPosts();
            dto.PopularPost    = dao.GetPopularPosts();
            dto.MostViewedPost = dao.GetMostViewedPosts();
            dto.Videos         = dao.GetVideos();
            dto.Adslist        = adsdao.GetAdsList();
            return(dto);
        }
Пример #21
0
        /// <summary>
        /// Inserts, finds one from the middle of the batch, then deletes from the specified collection.
        /// </summary>
        /// <param name="count"></param>
        private static void InsertFindDeleteBenchmark(int count)
        {
            MongoContext context = new MongoContext();
            var db = context.GetDatabase("benchmark");
            db.DropCollection("test");
            var coll = db.GetCollection<GeneralDTO>("test");
            coll.CreateIndex(new { Int = 1d }, false, "testIdx");

            OID oid = OID.EMPTY;
            DateTime start = DateTime.Now;

            List<GeneralDTO> cache = new List<GeneralDTO>(count);
            int toUse = (int)Math.Floor(count / 2f);
            for (int i = 0; i < count; i++)
            {
                var into = new GeneralDTO();
                into._id = OID.NewOID();
                into.Title = Guid.NewGuid().ToString();
                into.Int = i;
                if (i == toUse)
                {
                    oid = into._id;
                }
                cache.Add(into);
            }
            coll.Insert(cache);
            Console.WriteLine("Inserted {0} objects in {1}ms", count,
                (DateTime.Now - start).TotalMilliseconds);

            start = DateTime.Now;
            var first = coll.Find(new { _id = oid }).First();
            Console.WriteLine("   Search for 1 object in {1}ms", count,
                (DateTime.Now - start).TotalMilliseconds);

            start = DateTime.Now;
            //find something randomly using a regex.
            var numLessThan2 = coll.Find(new { Title = new Regex(".*8a.*", RegexOptions.IgnoreCase) }).ToArray().Count();
            Console.WriteLine("   Found {0} objects that match the regex. in {1}ms", numLessThan2,
                (DateTime.Now - start).TotalMilliseconds);

            start = DateTime.Now;
            coll.UpdateOne(new { _id = oid }, new { Int = M.Inc(5) });
            Console.WriteLine("   Updated that one in {0}ms",
                (DateTime.Now - start).TotalMilliseconds);

            start = DateTime.Now;
            first = coll.Find(new { _id = oid }).First();

            coll.Delete(new { Int = Q.LessThan(Int32.MaxValue) });
            Console.WriteLine("   Deleted {0} objects in {1}ms\r\n", count,
                (DateTime.Now - start).TotalMilliseconds);
        }
        public EntityDocument CreateGeneral(GeneralDTO general)
        {
            string name = EntityDocument.CreateName(general.GeneralID);
            string text = _textOperations.Prepare(String.Format("{0} {1} ", general.Name, general.Description ?? String.Empty));

            return(new EntityDocument(name, text)
            {
                ProjectId = _documentIdFactory.CreateProjectId(general.ParentProjectID.GetValueOrDefault()),
                EntityTypeId = _documentIdFactory.CreateEntityTypeId(general.EntityTypeID.GetValueOrDefault()),
                SquadId = _documentIdFactory.CreateSquadId(0),
                DocNumber = -1
            });
        }
        public bool AddContact(GeneralDTO model)
        {
            Contact contact = new Contact();

            contact.Subject        = model.Subject;
            contact.NameSurname    = model.Name;
            contact.Email          = model.Email;
            contact.Message        = model.Message;
            contact.AddDate        = DateTime.Now;
            contact.LastUpdateDate = DateTime.Now;
            dao.AddContact(contact);
            return(true);
        }
Пример #24
0
        public void Serialization_Of_Booleans_Are_Not_Lossy()
        {
            var obj1 = new GeneralDTO { ABoolean = true };
            var obj2 = new GeneralDTO { ABoolean = null };

            var obj1Bytes = BSONSerializer.Serialize(obj1);
            var obj2Bytes = BSONSerializer.Serialize(obj2);

            var hydratedObj1 = BSONSerializer.Deserialize<GeneralDTO>(obj1Bytes);
            var hydratedObj2 = BSONSerializer.Deserialize<GeneralDTO>(obj2Bytes);

            Assert.AreEqual(obj1.ABoolean, hydratedObj1.ABoolean);
            Assert.AreEqual(null, hydratedObj2.ABoolean);
        }
Пример #25
0
        public void Serialization_Of_Bytes_Is_Not_Lossy()
        {
            var obj1 = new GeneralDTO { Bytes = BitConverter.GetBytes(Int32.MaxValue) };
            var obj2 = new GeneralDTO { Bytes = null };

            var obj1Bytes = BSONSerializer.Serialize(obj1);
            var obj2Bytes = BSONSerializer.Serialize(obj2);

            var hydratedObj1 = BSONSerializer.Deserialize<GeneralDTO>(obj1Bytes);
            var hydratedObj2 = BSONSerializer.Deserialize<GeneralDTO>(obj2Bytes);

            Assert.AreEqual(obj1.Bytes, hydratedObj1.Bytes);
            Assert.AreEqual(null, hydratedObj2.Bytes);
        }
Пример #26
0
        public void SerializationOfDoublesAreNotLossy()
        {
            var obj1 = new GeneralDTO { Pi = 3.1415927d };
            var obj2 = new GeneralDTO { Pi = null };

            var obj1Bytes = BsonSerializer.Serialize(obj1);
            var obj2Bytes = BsonSerializer.Serialize(obj2);

            var hydratedObj1 = BsonDeserializer.Deserialize<GeneralDTO>(obj1Bytes);
            var hydratedObj2 = BsonDeserializer.Deserialize<GeneralDTO>(obj2Bytes);

            Assert.Equal(obj1.Pi, hydratedObj1.Pi);
            Assert.Equal(null, hydratedObj2.Pi);
        }
Пример #27
0
        public void SerializationOfBytesIsNotLossy()
        {
            var obj1 = new GeneralDTO { Bytes = BitConverter.GetBytes(Int32.MaxValue) };
            var obj2 = new GeneralDTO { Bytes = null };

            var obj1Bytes = BsonSerializer.Serialize(obj1);
            var obj2Bytes = BsonSerializer.Serialize(obj2);

            var hydratedObj1 = BsonDeserializer.Deserialize<GeneralDTO>(obj1Bytes);
            var hydratedObj2 = BsonDeserializer.Deserialize<GeneralDTO>(obj2Bytes);

            Assert.Equal(obj1.Bytes, hydratedObj1.Bytes);
            Assert.Equal(null, hydratedObj2.Bytes);
        }
Пример #28
0
        public void SerializationOfEnumIsNotLossy()
        {
            var obj1 = new GeneralDTO{ Flags32 = Flags32.FlagOn, Flags64 = Flags64.FlagOff };
            var obj2 = new GeneralDTO();

            var hydratedObj1 = BsonDeserializer.Deserialize<GeneralDTO>(BsonSerializer.Serialize(obj1));
            var hydratedObj2 = BsonDeserializer.Deserialize<GeneralDTO>(BsonSerializer.Serialize(obj2));

            Assert.Equal(obj1.Flags32, hydratedObj1.Flags32);
            Assert.Equal(null, hydratedObj2.Flags32);

            Assert.Equal(obj1.Flags64, hydratedObj1.Flags64);
            Assert.Equal(null, hydratedObj2.Flags64);
        }
Пример #29
0
        public void SerializationOfBooleansAreNotLossy()
        {
            var obj1 = new GeneralDTO { ABoolean = true };
            var obj2 = new GeneralDTO { ABoolean = null };

            var obj1Bytes = BsonSerializer.Serialize(obj1);
            var obj2Bytes = BsonSerializer.Serialize(obj2);

            var hydratedObj1 = BsonDeserializer.Deserialize<GeneralDTO>(obj1Bytes);
            var hydratedObj2 = BsonDeserializer.Deserialize<GeneralDTO>(obj2Bytes);

            Assert.Equal(obj1.ABoolean, hydratedObj1.ABoolean);
            Assert.Equal(null, hydratedObj2.ABoolean);
        }
Пример #30
0
        public void SerializationOfDatesHasMillisecondPrecision()
        {
            var obj1 = new GeneralDTO { ADateTime = null };
            var obj2 = new GeneralDTO { ADateTime = DateTime.Now };

            var obj1Bytes = BsonSerializer.Serialize(obj1);
            var obj2Bytes = BsonSerializer.Serialize(obj2);

            var hydratedObj1 = BsonDeserializer.Deserialize<GeneralDTO>(obj1Bytes);
            var hydratedObj2 = BsonDeserializer.Deserialize<GeneralDTO>(obj2Bytes);

            Assert.Equal(null, hydratedObj1.ADateTime);

            //Mongo stores dates as long, therefore, we have to use double->long rounding.
            Assert.Equal((long)((obj2.ADateTime.Value.ToUniversalTime() - DateTime.MinValue)).TotalMilliseconds,
                (long)(hydratedObj2.ADateTime.Value - DateTime.MinValue).TotalMilliseconds);
        }
Пример #31
0
        public void Serialization_Of_Dates_Has_Millisecond_Precision()
        {
            var obj1 = new GeneralDTO() { ADateTime = null };
            var obj2 = new GeneralDTO() { ADateTime = DateTime.Now };

            var obj1Bytes = BSONSerializer.Serialize(obj1);
            var obj2Bytes = BSONSerializer.Serialize(obj2);

            var hydratedObj1 = BSONSerializer.Deserialize<GeneralDTO>(obj1Bytes);
            var hydratedObj2 = BSONSerializer.Deserialize<GeneralDTO>(obj2Bytes);

            Assert.AreEqual(null, hydratedObj1.ADateTime);

            //Mongo stores dates as long, therefore, we have to use double->long rounding.
            Assert.AreEqual((long)(obj2.ADateTime.Value - DateTime.MinValue).TotalMilliseconds,
                (long)(hydratedObj2.ADateTime.Value - DateTime.MinValue).TotalMilliseconds);
        }
Пример #32
0
        public void SerializationOfRegexIsNotLossy()
        {
            var obj1 = new GeneralDTO { ARex = new Regex("[0-9]{5}", RegexOptions.Multiline) };
            var obj2 = new GeneralDTO { ARex = null };

            var obj1Bytes = BsonSerializer.Serialize(obj1);
            var obj2Bytes = BsonSerializer.Serialize(obj2);

            var hydratedObj1 = BsonDeserializer.Deserialize<GeneralDTO>(obj1Bytes);
            var hydratedObj2 = BsonDeserializer.Deserialize<GeneralDTO>(obj2Bytes);

            Assert.Equal(obj1.ARex.ToString(), hydratedObj1.ARex.ToString());
            Assert.Equal(obj1.ARex.Options, hydratedObj1.ARex.Options);
            Assert.Equal(null, hydratedObj2.ARex);
            //more tests would be useful for all the options.
        }
Пример #33
0
 public void RecursiveNestedTypesDontCauseInfiniteLoop()
 {
     var obj1 = new GeneralDTO { Title = "Hello World", Nester = new GeneralDTO { Title = "Bob", AnInt = 42 } };
     var obj1Bytes = BsonSerializer.Serialize(obj1);
     BsonDeserializer.Deserialize<GeneralDTO>(obj1Bytes);
 }
Пример #34
0
        public void SerializationOfIntsAreNotLossy()
        {
            var obj1 = new GeneralDTO { AnInt = 100 };
            var obj2 = new GeneralDTO { AnInt = null };

            var obj1Bytes = BsonSerializer.Serialize(obj1);
            var obj2Bytes = BsonSerializer.Serialize(obj2);

            var hydratedObj1 = BsonDeserializer.Deserialize<GeneralDTO>(obj1Bytes);
            var hydratedObj2 = BsonDeserializer.Deserialize<GeneralDTO>(obj2Bytes);

            Assert.Equal(obj1.AnInt, hydratedObj1.AnInt);
            Assert.Equal(null, hydratedObj2.AnInt);
        }
Пример #35
0
        public void SerializationOfNestedObjectsIsNotLossy()
        {
            var obj1 = new GeneralDTO { Title = "Hello World", Nester = new GeneralDTO { Title = "Bob", AnInt = 42 } };

            var obj1Bytes = BsonSerializer.Serialize(obj1);

            var hydratedObj1 = BsonDeserializer.Deserialize<GeneralDTO>(obj1Bytes);

            Assert.Equal(obj1.Title, hydratedObj1.Title);
            Assert.Equal(obj1.Nester.Title, hydratedObj1.Nester.Title);
            Assert.Equal(obj1.Nester.AnInt, hydratedObj1.Nester.AnInt);
        }
Пример #36
0
        /// <summary>
        /// Tests the speed of the BSON serializer/deserializer.
        /// </summary>
        /// <param name="count"></param>
        private static void SerializationBenchmark(int count)
        {
            DateTime now = DateTime.Now;
            for (int i = 0; i < count; i++)
            {
                var inTo = new GeneralDTO();
                var bytes = BSONSerializer.Serialize(inTo);

                var outTo = BSONSerializer.Deserialize<GeneralDTO>(bytes);
            }
            Console.WriteLine("Serialized/deserialized {0} objects in {1}ms", count, (DateTime.Now - now).TotalMilliseconds);
        }
Пример #37
0
 public void Serializing_POCO_Generates_Bytes()
 {
     var dummy = new GeneralDTO { Title = "Testing" };
     Assert.IsNotEmpty(BSONSerializer.Serialize(dummy));
 }
Пример #38
0
        public void Serialization_Of_NestedObjects_Is_Not_Lossy()
        {
            var obj1 = new GeneralDTO { Title = "Hello World", Nester = new GeneralDTO { Title = "Bob", AnInt = 42 } };

            var obj1Bytes = BSONSerializer.Serialize(obj1);

            var hydratedObj1 = BSONSerializer.Deserialize<GeneralDTO>(obj1Bytes);

            Assert.AreEqual(obj1.Title, hydratedObj1.Title);
            Assert.AreEqual(obj1.Nester.Title, hydratedObj1.Nester.Title);
            Assert.AreEqual(obj1.Nester.AnInt, hydratedObj1.Nester.AnInt);
        }
Пример #39
0
        public void SerializationSpeedTest()
        {
            for (var i = 0; i < 5; i++)
            {
                var stopWatch = new Stopwatch();
                stopWatch.Start();

                for (var j = 0; j < 10000; j++)
                {
                    var obj1 = new GeneralDTO
                                   {
                                       Title = null,
                                       ABoolean = true,
                                       AGuid = Guid.NewGuid(),
                                       AnInt = 1,
                                       Pi = 3.14,
                                       Nester = new GeneralDTO { Title = "Bob", AnInt = 42 }
                                   };
                    var obj1Bytes = BsonSerializer.Serialize(obj1);
                    BsonDeserializer.Deserialize<GeneralDTO>(obj1Bytes);
                }
                stopWatch.Stop();
                Console.WriteLine(stopWatch.ElapsedMilliseconds);
            }
        }
 private void UpdateGeneralIndex(GeneralDTO generalDto, ICollection <GeneralField> changedGeneralFields)
 {
     RebuildOrAction(() => _entityIndexer.UpdateGeneralIndex(generalDto, changedGeneralFields, DocumentIndexOptimizeSetup.DeferredOptimize));
 }
 private void RemoveGeneralIndex(GeneralDTO generalDto)
 {
     RebuildOrAction(() => _entityIndexer.RemoveGeneralIndex(generalDto, DocumentIndexOptimizeSetup.DeferredOptimize));
 }
Пример #42
0
        public void Serialization_Of_Scoped_Code_Is_Not_Lossy()
        {
            var obj1 = new GeneralDTO();
            obj1.Code = new ScopedCode();
            obj1.Code.CodeString = "function(){return 'hello world!'}";
            var scope = new Flyweight();
            scope["$ns"] = "root";
            obj1.Code.Scope = scope;

            var obj2 = BSONSerializer.Deserialize<GeneralDTO>(BSONSerializer.Serialize(obj1));

            Assert.AreEqual(obj1.Code.CodeString, obj2.Code.CodeString);
            Assert.AreEqual(((Flyweight)obj1.Code.Scope)["$ns"],((Flyweight)obj2.Code.Scope)["$ns"]);
        }
Пример #43
0
        public void Serialization_Of_Strings_Are_Not_Lossy()
        {
            var obj1 = new GeneralDTO { Title = null };
            var obj2 = new GeneralDTO { Title = "Hello World" };

            var obj1Bytes = BSONSerializer.Serialize(obj1);
            var obj2Bytes = BSONSerializer.Serialize(obj2);

            var hydratedObj1 = BSONSerializer.Deserialize<GeneralDTO>(obj1Bytes);
            var hydratedObj2 = BSONSerializer.Deserialize<GeneralDTO>(obj2Bytes);

            Assert.AreEqual(null, hydratedObj1.Title);
            Assert.AreEqual(obj2.Title, hydratedObj2.Title);
        }
Пример #44
0
        public void Serialization_Speed_Test()
        {
            /*

            5832 - 4598 - 4653 - 4879 - 4516 - 4657 - 4346 - 4601 - 4349 - 4498

            */

            for (var i2 = 0; i2 < 10; i2++)
            {
                var stopWatch = new Stopwatch();

                stopWatch.Start();

                for (var i = 0; i < 10000; i++)
                {
                    var obj1 = new GeneralDTO
                                   {
                                       Title = null,
                                       ABoolean = true,
                                       AGuid = Guid.NewGuid(),
                                       AnInt = 1,
                                       Pi = 3.14,
                                       Nester = new GeneralDTO { Title = "Bob", AnInt = 42 }
                                   };
                    var obj1Bytes = BSONSerializer.Serialize(obj1, false);
                    var hydratedObj1 = BSONSerializer.Deserialize<GeneralDTO>(obj1Bytes);
                }
                stopWatch.Stop();

                Console.WriteLine(stopWatch.ElapsedMilliseconds);
            }
        }
Пример #45
0
        public void SerializationOfScopedCodeIsNotLossy()
        {
            var obj1 = new GeneralDTO {Code = new ScopedCode {CodeString = "function(){return 'hello world!'}"}};
            var scope = new Expando();
            scope["$ns"] = "root";
            obj1.Code.Scope = scope;

            var obj2 = BsonDeserializer.Deserialize<GeneralDTO>(BsonSerializer.Serialize(obj1));

            Assert.Equal(obj1.Code.CodeString, obj2.Code.CodeString);
            Assert.Equal(((Expando)obj1.Code.Scope)["$ns"],((Expando)obj2.Code.Scope)["$ns"]);
        }
Пример #46
0
        public void SerializationOfGuidIsNotLossy()
        {
            var obj1 = new GeneralDTO { AGuid = Guid.NewGuid() };
            var obj2 = new GeneralDTO { AGuid = null };

            var obj1Bytes = BsonSerializer.Serialize(obj1);
            var obj2Bytes = BsonSerializer.Serialize(obj2);

            var hydratedObj1 = BsonDeserializer.Deserialize<GeneralDTO>(obj1Bytes);
            var hydratedObj2 = BsonDeserializer.Deserialize<GeneralDTO>(obj2Bytes);

            Assert.Equal(obj1.AGuid, hydratedObj1.AGuid);
            Assert.Equal(null, hydratedObj2.AGuid);
        }
Пример #47
0
        public void SerializationOfStringsAreNotLossy()
        {
            var obj1 = new GeneralDTO { Title = null };
            var obj2 = new GeneralDTO { Title = "Hello World" };

            var obj1Bytes = BsonSerializer.Serialize(obj1);
            var obj2Bytes = BsonSerializer.Serialize(obj2);

            var hydratedObj1 = BsonDeserializer.Deserialize<GeneralDTO>(obj1Bytes);
            var hydratedObj2 = BsonDeserializer.Deserialize<GeneralDTO>(obj2Bytes);

            Assert.Equal(null, hydratedObj1.Title);
            Assert.Equal(obj2.Title, hydratedObj2.Title);
        }
Пример #48
0
 public void SerializingPocoGeneratesBytes()
 {
     var dummy = new GeneralDTO { Title = "Testing" };
     Assert.NotEmpty(BsonSerializer.Serialize(dummy));
 }
Пример #49
0
        public void SerializesAndDeserializesAComplexObject()
        {
            var obj1 = new GeneralDTO
            {
                Flags64 = Flags64.FlagOff,
                Flags32 = Flags32.FlagOn,
                Pi = 2d,
                AnInt = 3,
                Title = "telti",
                ABoolean = false,
                Strings = new[] { "a", "bb", "abc" },
                Bytes = new byte[] { 1, 2, 3 },
                AGuid = Guid.NewGuid(),
                ADateTime = new DateTime(2001, 4, 8, 10, 43, 23, 104),
                ARex = new Regex("it's over (9000)", RegexOptions.IgnoreCase)
            };
            var nested = new GeneralDTO { Pi = 43d, Title = "little", ARex = new Regex("^over (9000)$") };
            obj1.Nester = nested;
            var obj2 = new GeneralDTO();

            var hydratedObj1 = BsonDeserializer.Deserialize<GeneralDTO>(BsonSerializer.Serialize(obj1));
            var hydratedObj2 = BsonDeserializer.Deserialize<GeneralDTO>(BsonSerializer.Serialize(obj2));

            Assert.Equal(obj1.Pi, hydratedObj1.Pi);
            Assert.Equal(obj1.AnInt, hydratedObj1.AnInt);
            Assert.Equal(obj1.Title, hydratedObj1.Title);
            Assert.Equal(obj1.ABoolean, hydratedObj1.ABoolean);
            Assert.Equal(obj1.Bytes, hydratedObj1.Bytes);
            Assert.Equal(obj1.AGuid, hydratedObj1.AGuid);
            Assert.Equal(obj1.ADateTime.Value.ToUniversalTime().Ticks,
                hydratedObj1.ADateTime.Value.ToUniversalTime().Ticks);
            Assert.Equal(obj1.Strings, hydratedObj1.Strings);
            Assert.Equal(obj1.Flags32, hydratedObj1.Flags32);
            Assert.Equal(obj1.Flags64, hydratedObj1.Flags64);
            Assert.Equal(obj1.Nester.Title, hydratedObj1.Nester.Title);
            Assert.Equal(obj1.Nester.Pi, hydratedObj1.Nester.Pi);
            Assert.Equal(obj1.ARex.ToString(), hydratedObj1.ARex.ToString());
            Assert.Equal(obj1.ARex.Options, hydratedObj1.ARex.Options);

            Assert.Equal(obj2.Pi, hydratedObj2.Pi);
            Assert.Equal(obj2.AnInt, hydratedObj2.AnInt);
            Assert.Equal(obj2.Title, hydratedObj2.Title);
            Assert.Equal(obj2.ABoolean, hydratedObj2.ABoolean);
            Assert.Equal(obj2.Bytes, hydratedObj2.Bytes);
            Assert.Equal(obj2.AGuid, hydratedObj2.AGuid);
            Assert.Equal(obj2.ADateTime, hydratedObj2.ADateTime);
            Assert.Equal(obj2.Strings, hydratedObj2.Strings);
            Assert.Equal(obj2.Flags32, hydratedObj2.Flags32);
            Assert.Equal(obj2.Flags64, hydratedObj2.Flags64);
            Assert.Equal(obj2.Nester, hydratedObj2.Nester);
            Assert.Equal(obj2.ARex, hydratedObj2.ARex);
        }
 private void AddGeneralIndex(GeneralDTO generalDto)
 {
     _entityIndexer.AddGeneralIndex(generalDto);
     _entityIndexer.OptimizeGeneralIndex();
 }
Пример #51
0
 public void SerializesAndDeserializesAFloat()
 {
     var o = new GeneralDTO {AFloat = 1.4f};
     Assert.Equal(1.4f, BsonDeserializer.Deserialize<GeneralDTO>(BsonSerializer.Serialize(o)).AFloat);
 }
Пример #52
0
 public void Recursive_NestedTypes_Dont_Cause_Infinite_Loop()
 {
     var obj1 = new GeneralDTO { Title = "Hello World", Nester = new GeneralDTO { Title = "Bob", AnInt = 42 } };
     var obj1Bytes = BSONSerializer.Serialize(obj1);
     BSONSerializer.Deserialize<GeneralDTO>(obj1Bytes);
 }
Пример #53
0
        public void SerializationOfIEnumerableTIsNotLossy()
        {
            var gto = new GeneralDTO{ AnIEnumerable = new List<Person>(){ new Person(), new Person()}};
            var bytes = BsonSerializer.Serialize(gto);

            var gto2 = BsonDeserializer.Deserialize<GeneralDTO>(bytes);
            Assert.Equal(2, gto2.AnIEnumerable.Count());
        }
 private void UpdateGeneralIndex(GeneralDTO generalDto, ICollection <GeneralField> changedGeneralFields)
 {
     _entityIndexer.UpdateGeneralIndex(generalDto, changedGeneralFields);
     _entityIndexer.OptimizeGeneralIndex();
 }
Пример #55
0
 public void DoesntSerializeIgnoredProperties()
 {
     var o = new GeneralDTO {IgnoredProperty = 4};
     Assert.Equal(0, BsonDeserializer.Deserialize<GeneralDTO>(BsonSerializer.Serialize(o)).IgnoredProperty);
 }
 private void RemoveGeneralIndex(GeneralDTO generalDto)
 {
     _entityIndexer.RemoveGeneralIndex(generalDto);
 }