コード例 #1
0
ファイル: ManageHelper.cs プロジェクト: zinsser/dp2
        // 创建缺省的几个数据库
        // TODO: 把过程显示在控制台
        // parameters:
        // return:
        //      -1  出错
        //      0   没有必要创建,或者操作者放弃创建。原因在 strError 中
        //      1   成功创建
        public static int CreateDefaultDatabases(
            LibraryChannel Channel,
            Stop Stop,
            Delegate_prompt procPrompt,
            out string strError)
        {
            strError = "";

            // 创建书目库的定义
            XmlDocument database_dom = new XmlDocument();

            database_dom.LoadXml("<root />");

            List <string> biblio_dbnames = new List <string>();

            // 创建书目库
            {
                // parameters:
                //      strUsage    book/series
                //      strSyntax   unimarc/usmarc
                CreateBiblioDatabaseNode(database_dom,
                                         "中文图书",
                                         "book",
                                         "orderRecommendStore,catalogTarget", // 2015/7/6 增加 catalogTarget
                                         "unimarc",
                                         true);
                biblio_dbnames.Add("中文图书");

                CreateBiblioDatabaseNode(database_dom,
                                         "中文期刊",
                                         "series",
                                         "",
                                         "unimarc",
                                         true);
                biblio_dbnames.Add("中文期刊");

                CreateBiblioDatabaseNode(database_dom,
                                         "西文图书",
                                         "book",
                                         "",
                                         "usmarc",
                                         true);
                biblio_dbnames.Add("西文图书");

                CreateBiblioDatabaseNode(database_dom,
                                         "西文期刊",
                                         "series",
                                         "",
                                         "usmarc",
                                         true);
                biblio_dbnames.Add("西文期刊");
            }

            // 创建读者库
            CreateReaderDatabaseNode(database_dom,
                                     "读者",
                                     "",
                                     true);

            // 预约到书
            CreateSimpleDatabaseNode(database_dom,
                                     "预约到书",
                                     "arrived");

            // 违约金
            CreateSimpleDatabaseNode(database_dom,
                                     "违约金",
                                     "amerce");

            // 出版者
            CreateSimpleDatabaseNode(database_dom,
                                     "出版者",
                                     "publisher");

            // 消息
            CreateSimpleDatabaseNode(database_dom,
                                     "消息",
                                     "message");

            // 创建 OPAC 数据库的定义
            XmlDocument opac_dom = new XmlDocument();

            opac_dom.LoadXml("<virtualDatabases />");

            foreach (string dbname in biblio_dbnames)
            {
                XmlElement node = opac_dom.CreateElement("database");
                opac_dom.DocumentElement.AppendChild(node);
                node.SetAttribute("name", dbname);
            }

            // 浏览格式
            // 插入格式节点
            XmlDocument browse_dom = new XmlDocument();

            browse_dom.LoadXml("<browseformats />");

            foreach (string dbname in biblio_dbnames)
            {
                XmlElement database = browse_dom.CreateElement("database");
                browse_dom.DocumentElement.AppendChild(database);
                database.SetAttribute("name", dbname);

                XmlElement format = browse_dom.CreateElement("format");
                database.AppendChild(format);
                format.SetAttribute("name", "详细");
                format.SetAttribute("type", "biblio");
                format.InnerXml = "<caption lang=\"zh-CN\">详细</caption><caption lang=\"en\">Detail</caption>";
            }

            // 询问是否要创建?
            if (procPrompt != null)
            {
                string strText = "创建下列书目库: " + StringUtil.MakePathList(biblio_dbnames);
                if (procPrompt(strText) == false)
                {
                    strError = "放弃创建";
                    return(0);
                }
            }

            TimeSpan old_timeout = Channel.Timeout;

            Channel.Timeout = new TimeSpan(0, 10, 0);
            try
            {
                string strOutputInfo = "";
                long   lRet          = Channel.ManageDatabase(
                    Stop,
                    "create",
                    "",
                    database_dom.OuterXml,
                    out strOutputInfo,
                    out strError);
                if (lRet == -1)
                {
                    return(-1);
                }

                lRet = Channel.SetSystemParameter(
                    Stop,
                    "opac",
                    "databases",
                    opac_dom.DocumentElement.InnerXml,
                    out strError);
                if (lRet == -1)
                {
                    return(-1);
                }

                lRet = Channel.SetSystemParameter(
                    Stop,
                    "opac",
                    "browseformats",
                    browse_dom.DocumentElement.InnerXml,
                    out strError);
                if (lRet == -1)
                {
                    return(-1);
                }

                return(1);
            }
            finally
            {
                Channel.Timeout = old_timeout;
            }
        }
コード例 #2
0
ファイル: ManageHelper.cs プロジェクト: renyh1013/dp2
        // 创建缺省的几个数据库
        // TODO: 把过程显示在控制台
        // parameters:
        // return:
        //      -1  出错
        //      0   没有必要创建,或者操作者放弃创建。原因在 strError 中
        //      1   成功创建
        public static int CreateDefaultDatabases(
            LibraryChannel Channel,
            Stop Stop,
            Delegate_prompt procPrompt,
            out string strError)
        {
            strError = "";

            // 创建书目库的定义
            XmlDocument database_dom = new XmlDocument();
            database_dom.LoadXml("<root />");

            List<string> biblio_dbnames = new List<string>();
            List<string> biblio_aliases = new List<string>();

            // 创建书目库
            {
                // parameters:
                //      strUsage    book/series
                //      strSyntax   unimarc/usmarc
                CreateBiblioDatabaseNode(database_dom,
                    "中文图书",
                    "book",
                    "orderRecommendStore,catalogTarget",    // 2015/7/6 增加 catalogTarget
                    "unimarc",
                    true);
                biblio_dbnames.Add("中文图书");
                biblio_aliases.Add("cbook");

                CreateBiblioDatabaseNode(database_dom,
    "中文期刊",
    "series",
    "",
    "unimarc",
    true);
                biblio_dbnames.Add("中文期刊");
                biblio_aliases.Add("cseries");

                CreateBiblioDatabaseNode(database_dom,
    "西文图书",
    "book",
    "",
    "usmarc",
    true);
                biblio_dbnames.Add("西文图书");
                biblio_aliases.Add("ebook");

                CreateBiblioDatabaseNode(database_dom,
    "西文期刊",
    "series",
    "",
    "usmarc",
    true);
                biblio_dbnames.Add("西文期刊");
                biblio_aliases.Add("eseries");
            }

            // 创建读者库
            CreateReaderDatabaseNode(database_dom,
                "读者",
                "",
                true);

            // 预约到书
            CreateSimpleDatabaseNode(database_dom,
    "预约到书",
    "arrived");

            // 违约金
            CreateSimpleDatabaseNode(database_dom,
                "违约金",
                "amerce");

            // 出版者
            CreateSimpleDatabaseNode(database_dom,
    "出版者",
    "publisher");

            // 消息
            CreateSimpleDatabaseNode(database_dom,
    "消息",
    "message");

            // 创建 OPAC 数据库的定义
            XmlDocument opac_dom = new XmlDocument();
            opac_dom.LoadXml("<virtualDatabases />");

            Debug.Assert(biblio_aliases.Count == biblio_dbnames.Count, "");

            int i = 0;
            foreach (string dbname in biblio_dbnames)
            {
                string alias = biblio_aliases[i];

                XmlElement node = opac_dom.CreateElement("database");
                opac_dom.DocumentElement.AppendChild(node);
                node.SetAttribute("name", dbname);
                node.SetAttribute("alias", alias);
                i++;
            }

            // 浏览格式
            // 插入格式节点
            XmlDocument browse_dom = new XmlDocument();
            browse_dom.LoadXml("<browseformats />");

            foreach (string dbname in biblio_dbnames)
            {
                XmlElement database = browse_dom.CreateElement("database");
                browse_dom.DocumentElement.AppendChild(database);
                database.SetAttribute("name", dbname);

                XmlElement format = browse_dom.CreateElement("format");
                database.AppendChild(format);
                format.SetAttribute("name", "详细");
                format.SetAttribute("type", "biblio");
                format.InnerXml = "<caption lang=\"zh-CN\">详细</caption><caption lang=\"en\">Detail</caption>";
            }

            // 询问是否要创建?
            if (procPrompt != null)
            {
                string strText = "创建下列书目库: " + StringUtil.MakePathList(biblio_dbnames);
                if (procPrompt(strText) == false)
                {
                    strError = "放弃创建";
                    return 0;
                }
            }

            TimeSpan old_timeout = Channel.Timeout;
            Channel.Timeout = new TimeSpan(0, 10, 0);
            try
            {
                string strOutputInfo = "";
                long lRet = Channel.ManageDatabase(
                    Stop,
                    "create",
                    "",
                    database_dom.OuterXml,
                    out strOutputInfo,
                    out strError);
                if (lRet == -1)
                    return -1;

                lRet = Channel.SetSystemParameter(
    Stop,
    "opac",
    "databases",
    opac_dom.DocumentElement.InnerXml,
    out strError);
                if (lRet == -1)
                    return -1;

                lRet = Channel.SetSystemParameter(
    Stop,
    "opac",
    "browseformats",
    browse_dom.DocumentElement.InnerXml,
    out strError);
                if (lRet == -1)
                    return -1;

                return 1;
            }
            finally
            {
                Channel.Timeout = old_timeout;
            }
        }