public RootBookViewModel()
        {
            MasterInformationViewModel.loadWholeMasterPosition();

            this.ancestorBookViewModel_ = BookViewModel.CreateRootBookViewModel();

            //this.ancestorBookViewModel_.IsTreeExpand_ = true;
            this.ancestorBookViewModel_.BookName_ = "RootBook";
            this.ancestorBookViewModel_.BookName_ = "RootBookCode";

            //this.childBookList_ = new ObservableCollection<BookViewModel>();

            //BookViewModel wholeBook = new BookViewModel();

            //wholeBook.BookName_ = "wholeBook";

            //wholeBook.addBook();
            //wholeBook.addBook();

            //this.childBookList_.Add(wholeBook);

            //BookViewModel wholeBook2 = new BookViewModel();

            //wholeBook2.BookName_ = "wholeBook2";

            //wholeBook2.addBook();
            //wholeBook2.addBook();
            //wholeBook2.addBook();

            //this.childBookList_.Add(wholeBook2);
            
        }
        public Book(BookViewModel bvm)
        {
            // TODO: Complete member initialization
            this.bvm_ = bvm;

            this.log_ = new ErrLog();

        }
        public BookViewModel(BookViewModel parent) 
        {
            this.parent_ = parent;
            this.fontWeight_ = FontWeights.Normal;
            this.childBookList_ = new ObservableCollection<BookViewModel>();
            this.instrumentList_ = new ObservableCollection<Excel_instrumentViewModel>();

        }
        public BookViewModel getBook(string bookCode)
        {
            List<BookViewModel> bookList = new List<BookViewModel>();

            foreach (var item in this.childBookList_)
	        {
                item.getBookList(bookList);
	        }

            BookViewModel bvm = new BookViewModel();

            foreach (var item in bookList)
            {
                if (item.BookCode_ == bookCode || item.BookName_ == bookCode)
                {
                    bvm = item;
                    break;
                }
            }

            return bvm;

        }
        // book 에 있는 position들을 load함.
        public void loadPosition()
        {
            this.bookXml_ = new XmlDocument();

            this.childBookList_ = new ObservableCollection<BookViewModel>();
            this.childBookList_.Add(this.ancestorBookViewModel_);

            //string bookPath = @"D:\Project File\OTCDerivativesCalculatorModule\Excel_Interface2\OutLook\";
            bookXml_.Load(bookPath_ + "\\" +"XMLFile1.xml");

            System.Xml.XmlNode positionFolderNode
                = bookXml_["positionFolder"];

            this.ancestorBookViewModel_.Node_ = positionFolderNode;
            
            System.Xml.XmlNode bookInfoNode
                = positionFolderNode["bookInfo"];

            this.ancestorBookViewModel_.IsTreeExpand_ = Convert.ToBoolean(bookInfoNode["isTreeExpand"].InnerText);
            this.ancestorBookViewModel_.BookName_ = bookInfoNode["bookName"].InnerText;
            this.ancestorBookViewModel_.BookCode_ = bookInfoNode["bookCode"].InnerText;

            foreach (System.Xml.XmlNode item in positionFolderNode.SelectNodes("book"))
            {
                BookViewModel childBook = new BookViewModel(this.ancestorBookViewModel_);

                childBook.setFromXml(item);

                this.ancestorBookViewModel_.ChildBookList_.Add(childBook);
            } 
        
        }
        public void setBook(BookViewModel bvm)
        {
            this.BookViewModel_ = bvm;

        }
        public void bookInfoCopy(BookViewModel copyVM)
        {
            this.isTreeExpand_ = copyVM.IsTreeExpand_;
            this.bookCode_ = copyVM.BookCode_;
            this.bookName_ = copyVM.BookName_;

        }
        public BookViewModel clone()
        {
            BookViewModel bvm = new BookViewModel(this.parent_);

            //이건 수정 가능 항목들
            bvm.bookCode_ = this.bookCode_;
            bvm.bookName_ = this.bookName_;

            //이건 수정 불가능 항목들
            bvm.Node_ = this.Node_;
            bvm.childBookList_ = this.childBookList_;
            bvm.instrumentList_ = this.instrumentList_;

            return bvm;
        }
        public void addBook(string bookName)
        {
            string bookCode = "testBookCode";

            BookViewModel bvm = new BookViewModel(this,bookName,bookCode);

            this.childBookList_.Add(bvm);

            System.Xml.XmlElement xmlEle = this.Node_.OwnerDocument.CreateElement("book");

            //bvm.Node_ = this.Node_;
            bvm.Node_ = xmlEle;

            xmlEle.InnerXml = this.emptyBookXmlStr(false, bookName, bookCode);

            this.Node_.AppendChild(xmlEle);

        }
        //bookViewModel 및 childBook , instrument 를 초기화 하는 부분 from xmlfile
        public void setFromXml(System.Xml.XmlNode InstNode)
        {
            this.Node_ = InstNode;
            //InstNode["book"]["bookInfo"];

            System.Xml.XmlNode bookInfoNode
                = InstNode["bookInfo"];

            this.abstractFlag_ = bookInfoNode["abstract"].InnerText;

            string isExpandStr = bookInfoNode["isTreeExpand"].InnerText;

            if (isExpandStr.ToUpper() == "TRUE" || isExpandStr.ToUpper() == "T")
            {
                this.isTreeExpand_ = true;

            }
            else 
            {
                this.isTreeExpand_ = false;
            }
            

            this.bookName_ = bookInfoNode["bookName"].InnerText;
            this.bookCode_ = bookInfoNode["bookCode"].InnerText;

            if (this.abstractFlag_.ToUpper() != "TRUE" && this.abstractFlag_.ToUpper() != "T")
            {
                System.Xml.XmlNodeList instrumentListNodeList
                    = InstNode["instrumentList"].SelectNodes("instrument");

                foreach (System.Xml.XmlNode item in instrumentListNodeList)
                {
                    string instCode = item.InnerText;

                    //Excel_instrumentViewModel instrument = new Excel_instrumentViewModel();
                    
                    //instrument.Item_code_ = instCode;

                    //this.instrumentList_.Add(instrument);

                    if (MasterInformationViewModel.masterPositionMap_.ContainsKey(instCode))
                    {
                        this.instrumentList_.Add(MasterInformationViewModel.masterPositionMap_[instCode]);
                    }
                    else
                    {
                        this.instrumentList_.Add(new Excel_instrumentViewModel());
                    }
                    

                }
            }

            foreach (System.Xml.XmlNode item in InstNode.SelectNodes("book"))
            {
                BookViewModel childBook = new BookViewModel(this);

                childBook.setFromXml(item);

                this.childBookList_.Add(childBook);

            } 
            
        }