// 检索顶层文章 // return: // -1 error // 其他 命中数 private int SearchTopLevelArticles( SessionInfo sessioninfo, System.Web.UI.Page page, out string strError) { strError = ""; if (page != null && page.Response.IsClientConnected == false) // 灵敏中断 { strError = "中断"; return(-1); } // 检索全部评注文章 一定时间范围内的? List <string> dbnames = new List <string>(); for (int i = 0; i < this.ItemDbs.Count; i++) { ItemDbCfg cfg = this.ItemDbs[i]; string strDbName = cfg.CommentDbName; if (String.IsNullOrEmpty(strDbName) == true) { continue; } dbnames.Add(strDbName); } DateTime now = DateTime.Now; DateTime oneyearbefore = now - new TimeSpan(365, 0, 0, 0); string strTime = DateTimeUtil.Rfc1123DateTimeString(oneyearbefore.ToUniversalTime()); string strQueryXml = ""; for (int i = 0; i < dbnames.Count; i++) { string strDbName = dbnames[i]; string strOneQueryXml = "<target list='" + strDbName + ":" + "最后修改时间'><item><word>" // <order>DESC</order> + strTime + "</word><match>exact</match><relation>" + StringUtil.GetXmlStringSimple(">=") + "</relation><dataType>number</dataType><maxCount>" + "-1" // Convert.ToString(m_nMaxLineCount) + "</maxCount></item><lang>zh</lang></target>"; if (i > 0) { strQueryXml += "<operator value='OR' />"; } strQueryXml += strOneQueryXml; } if (dbnames.Count > 0) { strQueryXml = "<group>" + strQueryXml + "</group>"; } RmsChannel channel = sessioninfo.Channels.GetChannel(this.WsUrl); Debug.Assert(channel != null, "Channels.GetChannel 异常"); if (page != null) { page.Response.Write("--- begin search ...<br/>"); page.Response.Flush(); } DateTime time = DateTime.Now; long nRet = channel.DoSearch(strQueryXml, "default", out strError); if (nRet == -1) { strError = "检索时出错: " + strError; return(-1); } TimeSpan delta = DateTime.Now - time; if (page != null) { page.Response.Write("search end. hitcount=" + nRet.ToString() + ", time=" + delta.ToString() + "<br/>"); page.Response.Flush(); } if (nRet == 0) { return(0); // not found } if (page != null && page.Response.IsClientConnected == false) // 灵敏中断 { strError = "中断"; return(-1); } if (page != null) { page.Response.Write("--- begin get search result ...<br/>"); page.Response.Flush(); } time = DateTime.Now; List <string> aPath = null; nRet = channel.DoGetSearchResult( "default", -1, "zh", null, // stop, out aPath, out strError); if (nRet == -1) { strError = "获得检索结果时出错: " + strError; return(-1); } if (page != null) { delta = DateTime.Now - time; page.Response.Write("get search result end. lines=" + aPath.Count.ToString() + ", time=" + delta.ToString() + "<br/>"); page.Response.Flush(); } if (aPath.Count == 0) { strError = "获取的检索结果为空"; return(-1); } if (page != null && page.Response.IsClientConnected == false) // 灵敏中断 { strError = "中断"; return(-1); } if (page != null) { page.Response.Write("--- begin build storage ...<br/>"); page.Response.Flush(); } time = DateTime.Now; this.CommentColumn.Clear(); // 清空集合 // 加入新行对象。新行对象中,只初始化了m_strRecPath参数 for (int i = 0; i < Math.Min(aPath.Count, 1000000); i++) // <Math.Min(aPath.Count, 10) { Line line = new Line(); // line.Container = this; line.m_strRecPath = aPath[i]; nRet = line.InitialInfo( page, channel, out strError); if (nRet == -1) { return(-1); } if (nRet == 1) { return(-1); // 灵敏中断 } TopArticleItem item = new TopArticleItem(); item.Line = line; this.CommentColumn.Add(item); if (page != null && (i % 100) == 0) { page.Response.Write("process " + Convert.ToString(i) + "<br/>"); page.Response.Flush(); } } if (page != null) { delta = DateTime.Now - time; page.Response.Write("build storage end. time=" + delta.ToString() + "<br/>"); page.Response.Flush(); } return(1); }
void submit_button_Click(object sender, EventArgs e) { string strError = ""; OpacApplication app = (OpacApplication)this.Page.Application["app"]; SessionInfo sessioninfo = (SessionInfo)this.Page.Session["sessioninfo"]; string strCreator = sessioninfo.UserID; // 先创建一条书目记录 TextBox biblio_title = (TextBox)this.FindControl("edit_biblio_title"); TextBox biblio_author = (TextBox)this.FindControl("edit_biblio_author"); TextBox biblio_publisher = (TextBox)this.FindControl("edit_biblio_publisher"); TextBox biblio_isbn = (TextBox)this.FindControl("edit_biblio_isbn"); TextBox biblio_price = (TextBox)this.FindControl("edit_biblio_price"); TextBox biblio_summary = (TextBox)this.FindControl("edit_biblio_summary"); // 检查必备字段 if (String.IsNullOrEmpty(biblio_title.Text) == true) { strError = "尚未输入书名/刊名"; goto ERROR1; } DropDownList store_dbname = (DropDownList)this.FindControl("store_dbname"); string strBiblioDbName = store_dbname.SelectedValue; if (String.IsNullOrEmpty(strBiblioDbName) == true) { strError = "尚未选定目标库"; goto ERROR1; } string strBiblioRecPath = ""; string strMarcSyntax = ""; string strMARC = ""; // 得到目标书目库的MARC格式 ItemDbCfg cfg = app.GetBiblioDbCfg(strBiblioDbName); if (cfg == null) { strError = "目标库 '" + strBiblioDbName + "' 不是系统定义的的书目库"; goto ERROR1; } strMarcSyntax = cfg.BiblioDbSyntax; int nRet = BuildBiblioRecord( strMarcSyntax, biblio_title.Text, biblio_author.Text, biblio_publisher.Text, biblio_isbn.Text, biblio_price.Text, biblio_summary.Text, strCreator, out strMARC, out strError); if (nRet == -1) { goto ERROR1; } // 保存 // 将MARC格式转换为XML格式 nRet = MarcUtil.Marc2Xml( strMARC, strMarcSyntax, out string strXml, out strError); if (nRet == -1) { goto ERROR1; } #if NO SessionInfo temp_sessioninfo = new SessionInfo(app); temp_sessioninfo.UserID = app.ManagerUserName; temp_sessioninfo.Password = app.ManagerPassword; temp_sessioninfo.IsReader = false; #endif string strOutputBiblioRecPath = ""; LibraryChannel channel = sessioninfo.GetChannel(true); try { strBiblioRecPath = strBiblioDbName + "/?"; long lRet = // temp_sessioninfo.Channel. channel.SetBiblioInfo( null, "new", strBiblioRecPath, "xml", strXml, null, "", out strOutputBiblioRecPath, out byte[] baOutputTimestamp, out strError); if (lRet == -1) { strError = "创建书目记录发生错误: " + strError; goto ERROR1; } } finally { #if NO temp_sessioninfo.CloseSession(); temp_sessioninfo = null; #endif sessioninfo.ReturnChannel(channel); } // 清除每个输入域的内容 biblio_title.Text = ""; biblio_author.Text = ""; biblio_publisher.Text = ""; biblio_isbn.Text = ""; biblio_summary.Text = ""; biblio_price.Text = ""; strBiblioRecPath = strOutputBiblioRecPath; CommentControl commentcontrol = (CommentControl)this.FindControl("commentcontrol"); // 创建评注记录 if (String.IsNullOrEmpty(commentcontrol.EditTitle) == false || String.IsNullOrEmpty(commentcontrol.EditContent) == false) { string strWarning = ""; commentcontrol.BiblioRecPath = strBiblioRecPath; nRet = commentcontrol.DoSubmit( out strWarning, out strError); if (nRet == -1) { goto ERROR1; } if (String.IsNullOrEmpty(strWarning) == false) { this.SetDebugInfo("warninginfo", strWarning); } } string strUrl = "./book.aspx?bibliorecpath=" + HttpUtility.UrlEncode(strBiblioRecPath); string strText = "新的荐购书目记录创建成功。点击此处可查看:<a href='" + strUrl + "' target='_blank'>" + strUrl + "</a>"; SetInfo(strText); this.SetDebugInfo("succeedinfo", strText); return; ERROR1: SetDebugInfo("errorinfo", strError); }