⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 agsearchcommon.java.svn-base

📁 一个包含排班信息的模块 2.1. 最新排班 6 2.2. 所有排班 6 2.3. 日常排班统计 7 2.4. 排班管理 7 2.5. 班次配置 7 2.6. 部门人员配置 7
💻 SVN-BASE
字号:
package com.fzet.cois.dividework.agents;

/*
 * 通用搜索代理|agSearchCommon
 * @author yeshq
 * @version 2007-6-6
 */
import lotus.domino.*;

import java.util.Vector;
import com.fzet.cois.common.scriptLib.*;
import lotus.domino.AgentBase;

public class AgSearchCommon extends AgentBase {

	public void NotesMain() {
		Session session = null;
		AgentContext ac = null;
		Database db = null;
		Document doc = null;
		ErrHandle err = null;

		View vwTarget = null;
		ViewEntryCollection vecTarget = null;
		ViewEntryCollection vecTemp = null;
		ViewEntry veTarget = null;
		ViewEntry veTemp = null;

		ViewColumn vcColumn = null;
		try {
			session = getSession();
			ac = session.getAgentContext();
			db = ac.getCurrentDatabase();
			doc = ac.getDocumentContext();
			err = new ErrHandle(session, 0, "", "agSearchCommon");
   
			//给数据库建索引,add by yeshq, 2007/6/6
			if (db.isFTIndexed()) 
				db.updateFTIndex(false);
		    else db.updateFTIndex(true);
			
            //取得查询条件
			String sCond = doc.getItemValueString("SearchCondition");
			System.out.println(sCond);
			if (sCond == null)
				return;
			
			// 读取参数
			String sViewName = doc.getItemValueString("ViewName");
			String sSort = doc.getItemValueString("Sort");
			String sStart = doc.getItemValueString("Start");
			String sPageSize = doc.getItemValueString("Count");
			String sIsManager = doc.getItemValueString("IsManager");

			// 参数有效性验证
			if (sViewName == null || sViewName.equals(""))
				return;
			if (sStart == null || sStart.equals(""))
				sStart = "1";
			if (sPageSize == null || sPageSize.equals(""))
				sPageSize = "20";
			if (sIsManager == null)
				sIsManager = "0";

			if (sIsManager.equals("1"))
				sViewName = sViewName + "_Mgr";

			// 定义变更
			int nTotalCount = 0;
			int nStart = Integer.parseInt(sStart);
			int nPageSize = Integer.parseInt(sPageSize);
			int nEnd = nStart + nPageSize;
			int nStartColumn = -1;

			StringBuffer sbResult = new StringBuffer();
			Vector vColumnValues = new Vector();
			Vector vColumns = new Vector();

			// ==========================读取视图信息,组合成显示列表======================
			// 打开“视图”,得到视图的文档数量
			vwTarget = db.getView(sViewName);
			if (vwTarget != null) {
				if (sSort == null || sSort.equals("")) { // 非分类视图
					vecTarget = vwTarget.getAllEntries();
				} else {
					//vecTarget = vwTarget.getAllEntriesByKey(sSort, true);
				    //增加sort有多个值的处理,by yeshq, 2008/1/7	
				    //System.out.println("sort值:"+sSort);
				      String[] aSort = sSort.split(",");
				      vecTarget = vwTarget.getAllEntriesByKey(aSort[0].trim(),true);				      
				      for (int j = 1; j < aSort.length; j++) {
					  //vecTarget = vwTarget.getAllEntriesByKey(sSort,true);					  
					  vecTemp = vwTarget.getAllEntriesByKey(aSort[j].trim(),true);
					  veTarget = vecTemp.getFirstEntry();
					  while(veTarget!=null){
					      vecTarget.addEntry(veTarget);
					      veTemp = veTarget;
					      veTarget = vecTemp.getNextEntry(veTarget);
					      veTemp.recycle();
					  }					 
				      }
				      //add end
				}
				
				//增加查询的条件,add by yeshq, 2007/6/6
				vecTarget.FTSearch(sCond);
				// add end
				
				nTotalCount = vecTarget.getCount();
				// 开始输出
				vColumns = vwTarget.getColumns();
				for (int i = 0; i < vColumns.size(); i++) {
					vcColumn = (ViewColumn) vColumns.elementAt(i);
					if (!vcColumn.isHidden()) {
						if (nStartColumn == -1)
							nStartColumn = i;
						sbResult.append(vcColumn.getTitle());
					}
					vcColumn.recycle();
				}
				if (nEnd > nTotalCount + 1)
					nEnd = nTotalCount + 1;
				for (int i = nStart; i < nEnd; i++) {
					veTarget = vecTarget.getNthEntry(i);
					vColumnValues = veTarget.getColumnValues();
					for (int j = nStartColumn; j < vColumnValues.size(); j++) {
						String sColumnValue = (String) vColumnValues
								.elementAt(j);
						sbResult.append(sColumnValue);
					}

					veTemp = veTarget;
					veTarget = vecTarget.getNextEntry(veTarget);
					veTemp.recycle();
				}
			}
			// 将结果分布到多个BODY域中,以免域超长
			int nPos = 1;
			int nBody_Start = 0;
			int nBody_End = nBody_Start + 10000;
			int nLength = sbResult.length();

			while (nBody_Start < nLength) {
				if (nBody_End > nLength)
					nBody_End = nLength;
				doc.replaceItemValue("Body" + Integer.toString(nPos), sbResult
						.substring(nBody_Start, nBody_End).toString());

				nBody_Start += 10000;
				nBody_End += 10000;
				nPos += 1;
			}
			// =========================视图列表生成完毕==================================

			// =========================计算视图的“总条目数”“总页数”“当前页码”=============

			int nPageCount = nTotalCount / nPageSize;
			nPos = nTotalCount % nPageSize;
			if (nPos > 0)
				nPageCount += 1;
			if (nPageCount == 0)
				nPageCount = 1;

			int nCurPage = nStart / nPageSize;
			nPos = nStart % nPageSize;
			if (nPos > 1) {
				nCurPage += 2;
			} else {
				nCurPage += 1;
			}
			doc.replaceItemValue("TotalCount", Integer.toString(nTotalCount));
			doc.replaceItemValue("PageCount", Integer.toString(nPageCount));
			doc.replaceItemValue("CurPage", Integer.toString(nCurPage));

			// =========================计算完毕,接下来生成翻页的组合框=========================

			String sListBoxValue = null;
			sListBoxValue = "<select onchange=\"fnGotoPage(this.value);\">";
			for (int i = 1; i <= nPageCount; i++) {
				if (i == nCurPage) {
					sListBoxValue += "<option value=\"" + Integer.toString(i)
							+ "\" selected>" + Integer.toString(i)
							+ "</option>";
				} else {
					sListBoxValue += "<option value=\"" + Integer.toString(i)
							+ "\">" + Integer.toString(i) + "</option>";
				}
			}
			sListBoxValue += "</select>";
			// 将结果分布到多个ListBoxValue域中,以免域超长
			nPos = 1;
			nBody_Start = 0;
			nBody_End = nBody_Start + 10000;
			nLength = sListBoxValue.length();

			while (nBody_Start < nLength) {
				if (nBody_End > nLength)
					nBody_End = nLength;
				doc.replaceItemValue("ListBoxValue" + Integer.toString(nPos),
						sListBoxValue.substring(nBody_Start, nBody_End)
								.toString());

				nBody_Start += 10000;
				nBody_End += 10000;
				nPos += 1;
			}

			// =============完成所有操作=================================

		} catch (NotesException e) {
			err.record(true, e.id, e.text);
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (vcColumn != null)
					vcColumn.recycle();
				if (veTemp != null)
					veTemp.recycle();
				if (veTarget != null)
					veTarget.recycle();
				if (vecTarget != null)
					vecTarget.recycle();
				if (vwTarget != null)
					vwTarget.recycle();
				if (doc != null)
					doc.recycle();
				if (db != null)
					db.recycle();
				if (ac != null)
					ac.recycle();
				if (session != null)
					session.recycle();
			} catch (Exception e) {
				e.printStackTrace();
			}

		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -