コード例 #1
0
        public void getTree()
        {
            System.IO.Directory.CreateDirectory(System.IO.Path.Combine(Environment.CurrentDirectory, @"Data\"));
            if (tree == null)
            {
                RTree.RTree <DataPoint> tree = SaveDataController.ReadFromBinaryFile <RTree.RTree <DataPoint> >(System.IO.Path.Combine(Environment.CurrentDirectory, @"Data\", fileName));
                //not created before
                tree.locker = new System.Threading.ReaderWriterLock();
                if (tree.Count == 0)
                {
                    //query database
                    DATNEntities entities = new DATNEntities();
                    var          query    = from p in entities.DataPoints
                                            select p;
                    List <DataPoint> listItem = query.ToList();
                    tree = new RTree.RTree <DataPoint>(listItem.Count > 9 ? 9 : listItem.Count / 2, 2);
                    int count = 0;
                    foreach (DataPoint p in listItem)
                    {
                        count++;
                        Debug.WriteLine("INTOP - " + count);
                        RTree.Rectangle rect = new RTree.Rectangle((float)p.rating, (float)p.star, (float)p.rating, (float)p.star, 0, 0);
                        tree.Add(rect, p);
                    }
                    SaveDataController.WriteToBinaryFile(System.IO.Path.Combine(Environment.CurrentDirectory, @"Data\", fileName), tree);
                }

                this.tree  = tree;
                treeHelper = new TreeHelper(tree);
            }
        }