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

📄 jahiacontainerset.java

📁 java 写的一个新闻发布系统
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
	        ContainerSorterBean sorter = getContainerSorter(	params,							        							containerListName,							        							clistID,							        							resultHasChanged,							        							resultBitSet);			if ( sorter != null && sorter.result()!=null ){				return sorter.result();				} else {				// it's a fake sorter or sorting failed				// so return the list of matching ctn ids, without sorting				try {					Vector ctnIds = null;		            // get all container ids		            ctnIds = ServicesRegistry.getInstance()		                    .getJahiaContainersService().getctnidsInList(clistID);						        if ( resultBitSet == null ){			        	return ctnIds;			        } else {			            Vector v = new Vector();			            int size = ctnIds.size();			            for (int i=0; i < size; i++) {			                int ctnid = ((Integer)ctnIds.elementAt(i)).intValue();			                if ( resultBitSet.get(ctnid) ){			                    v.add(ctnIds.elementAt(i));			                }			            }			            return v;			        }				} catch ( Throwable t ){					JahiaConsole.println("ContainerSorterBean.doSort",				                            "Exception occured :" + t.getMessage());					t.printStackTrace();				}			}					} catch ( Throwable t ){             JahiaConsole.println("JahiaContainerSet.doContainerFilterSearch",                                 "Exception occured : " + t.getMessage() );			t.printStackTrace();		}		return null; // on any error return null vector, so Jahia will return all 					 // containers without search, filtering or sorting of any sort.	    }	//--------------------------------------------------------------------------	/**     * Apply container search if needed     *     * @param        ParamBean jParams, the param bean.     * @param        String the container list name.     * @param        int the container list id.     * @return ContainerSearcher, can be null	 * @author NK     */	private ContainerSearcher getCtnListSearcher( ParamBean params,											      String containerListName,											      int clistID )	throws JahiaException {				ContainerSearcher cachedContainerSearcher = null;        ContainerSearcher cSearcher = null;     	HttpSession session = params.getSession();     	if ( session != null )     	{     		// retrieve the previous searcher cached in session			cachedContainerSearcher = 				(ContainerSearcher)session.getAttribute( JahiaSearchConstant.CLIST_SEARCHQUERY_INPUT_PREFIX                         								 + clistID );		}	        // Check if a search must be applyed to this container list.        String searchQuery =                        params.getParameter(                            JahiaSearchConstant.CLIST_SEARCHQUERY_INPUT_PREFIX                            + containerListName );        if ( searchQuery == null || searchQuery.trim().equals("") ){        	// create a fake searcher         	cSearcher = new ContainerSearcher(clistID);        	        	if ( cachedContainerSearcher == null ){        		cSearcher.setUpdateStatus(); // we cannot determinate the previous search result,         									 // so let say search result has changed.        	} else if ( cachedContainerSearcher.getResult() != null	){        		cSearcher.setUpdateStatus(); // previous search returned some results and because now , no result        									 // are returned, so let say search result has changed.			}        		         } else {     		     	boolean doNewSearch = true;	     				if ( cachedContainerSearcher != null 					&&  ( cachedContainerSearcher.getQuery() != null ) 					&& cachedContainerSearcher.getQuery().equals(searchQuery) )			{	        	        	        				         	// check if the container list has been changed the last time the search was performed				long lastSearchTime = cachedContainerSearcher.getLastSearchTime();				ContainersChangeEventListener listener = (ContainersChangeEventListener) JahiaListenersRegistry.getInstance()														.getListener(ContainersChangeEventListener.class.getName()); 				if ( listener != null )				{	            	long lastCtnListChangeTime = listener.getCtnListLastChangeTime(clistID);	            	if ( lastCtnListChangeTime <= lastSearchTime )	            	{	            		cSearcher = cachedContainerSearcher;	            		cSearcher.resetUpdateStatus(); // to indicate no new search has been launched.		            	JahiaConsole.println("JahiaContainerSet.getCtnListSearcher",		                                    "Container Searcher found in session with same query and ctnlList did not change -> no need to run search again.");						doNewSearch = false;		                                    		            }				}	        }	        if ( doNewSearch )	        {	         	cSearcher = new ContainerSearcher(clistID);	         	cSearcher.search(searchQuery,params);	         	JahiaConsole.println("JahiaContainerSet.getCtnListSearcher",	                                 "Container Searcher launched new search");	        }	    }	            // cache the container searcher in session        if ( session != null && cSearcher != null )        {        	session.setAttribute( JahiaSearchConstant.CLIST_SEARCHQUERY_INPUT_PREFIX                         								 + clistID , cSearcher );        }		return cSearcher;	}		//--------------------------------------------------------------------------	/**     * Apply container filtering if needed     *     * @param        ParamBean jParams, the param bean.     * @param        String the container list name.     * @param        int the container list id.     * @return ContainerFilters, can be null	 * @author NK     */	private ContainerFilters getCtnListFilters(	ParamBean params,											   	String containerListName,											   	int clistID )	throws JahiaException {      	JahiaConsole.println("JahiaContainerSet.getCtnListFilters",                              "Started for container list : " + containerListName + "[" + clistID + "]");		ContainerFilters cFilters = (ContainerFilters)params.getRequest()		                        	.getAttribute(containerListName + "_filter_handler");		     	// retrieve the previous searcher cached in session		ContainerFilters cachedContainerFilters = null;     	HttpSession session = params.getSession();     	if ( session != null )     	{			cachedContainerFilters = 				(ContainerFilters)session.getAttribute( clistID + "_filter_handler" );		}		if ( cFilters == null || !cFilters.isQueryValid() ){	      	JahiaConsole.println("JahiaContainerSet.getCtnListFilters",                              "create fake filter");        	// create a fake filter         	cFilters = new ContainerFilters(clistID, new Vector());        	        	if ( cachedContainerFilters == null ){        		cFilters.setUpdateStatus(); // we cannot determinate the previous filter result,         									// so let say filter result has changed.        	} else if ( cachedContainerFilters.bits() != null	){        		cFilters.setUpdateStatus(); // previous filtering returned some results and because now , no result        									// will be returned, so let say filtering result has changed.			}        		 		} else {	     	boolean doNewFiltering = true;			// We need to create a container filter handler with the correct container list ID!			ContainerFilters customCFilters = new ContainerFilters(clistID,cFilters.getContainerFilters());	     				if ( cachedContainerFilters != null 					&& ( cachedContainerFilters.getQuery() != null )					&& cachedContainerFilters.getQuery().equals(customCFilters.getQuery()) )			{	        	        	        				         	// check if the container list has been changed the last time the filtering was performed				long lastFilteringTime = cachedContainerFilters.getLastFilteringTime();				ContainersChangeEventListener listener = (ContainersChangeEventListener) JahiaListenersRegistry.getInstance()														.getListener(ContainersChangeEventListener.class.getName()); 				if ( listener != null )				{	            	long lastCtnListChangeTime = listener.getCtnListLastChangeTime(clistID);	            	if ( lastCtnListChangeTime <= lastFilteringTime )	            	{	            		customCFilters = cachedContainerFilters;	            		customCFilters.resetUpdateStatus(); // to indicate no new filtering has been launched.		            	JahiaConsole.println("JahiaContainerSet.getCtnListFilters",		                                    "Container Filters found in session with same query and ctnlList did not change -> no need to run filtering again.");						doNewFiltering = false;		                                    		            }				}	        }	        if ( doNewFiltering )	        {	         	customCFilters.doFilter();	         	JahiaConsole.println("JahiaContainerSet.getCtnListFilters",	                                 "Container Filters launched new filtering");	        }	        cFilters = customCFilters;	    }	            // cache the container filters in session        if ( session != null && cFilters != null )        {        	session.setAttribute( clistID + "_filter_handler" , cFilters );        }		return cFilters;	}		//--------------------------------------------------------------------------	/**     * Apply container sorting if needed     *     * @param        	ParamBean jParams, the param bean.     * @param        	String the container list name.     * @param        	int the container list id.     * @param        	boolean filteringResultHasChanged, does pre-filtering      *					and searching 's result change ?.     * @param        	BitSet the filtering and search result as BitSet	 *     * @return ContainerSorterBean,  the container sort handler	 * @author NK     */	private ContainerSorterBean getContainerSorter(	ParamBean params,													String containerListName,													int clistID,													boolean resultHasChanged,													BitSet resultBitSet )	throws JahiaException {      	//JahiaConsole.println("JahiaContainerSet.getContainersSorter",        //                     "Started");		ContainerSorterBean sorter = (ContainerSorterBean)params.getRequest()		                        	.getAttribute(containerListName + "_sort_handler");     	// retrieve the previous sorter cached in session		ContainerSorterBean cachedSorter = null;     	HttpSession session = params.getSession();     	if ( session != null )     	{			cachedSorter = 				(ContainerSorterBean)session.getAttribute( clistID + "_sort_handler" );		}		if ( sorter == null || !sorter.isValid() ){      		//JahiaConsole.println("JahiaContainerSet.getContainersSorter",            //                 	 "Create fake sorter");        	// create a fake sorter         	sorter = new ContainerSorterBean(clistID, ""); // with undefined sorting field        	        	if ( cachedSorter == null ){        		sorter.setUpdateStatus(); // we cannot determinate the previous filter result,         								  // so let say sorter result has changed.        	} else if ( cachedSorter.result() != null	){        		sorter.setUpdateStatus(); // previous sorter returned some results and because now , no result        								  // will be returned, so let say sort result has changed.			}        		 		} else {      		JahiaConsole.println("JahiaContainerSet.getContainersSorter",                              	 "Found sort hanlder on field [" + sorter.getSortingFieldName() + "]");	     	boolean doNewSorting = true;			// We need to create a container sort handler with the correct container list ID!			ContainerSorterBean customCSorter = new ContainerSorterBean(clistID,sorter.getSortingFieldName());     		customCSorter.setAscOrdering(sorter.isAscOrdering());     		customCSorter.setNumberOrdering(sorter.isNumberOrdering());				     				if ( cachedSorter != null 					&& cachedSorter.isValid() 					&& cachedSorter.getSortingFieldName().equals(customCSorter.getSortingFieldName()) 					&& (cachedSorter.isAscOrdering()==customCSorter.isAscOrdering()) 					&& !resultHasChanged )			{	        	        	        				         	// check if the container list did change since the last time the sorting was performed				long lastSortingTime = cachedSorter.getLastSortingTime();				ContainersChangeEventListener listener = (ContainersChangeEventListener) JahiaListenersRegistry.getInstance()														.getListener(ContainersChangeEventListener.class.getName()); 				if ( listener != null )				{	            	long lastCtnListChangeTime = listener.getCtnListLastChangeTime(clistID);	            	if ( lastCtnListChangeTime <= lastSortingTime )	            	{	            		customCSorter = cachedSorter;	            		customCSorter.resetUpdateStatus(); // to indicate no new sorting has been launched.		            	JahiaConsole.println("JahiaContainerSet.getContainerSorter",		                                    "Container Sorter found in session with same sorting field and ctnlList did not change -> no need to run sorting again.");						doNewSorting = false;		                                    		            }				}	        }	        if ( doNewSorting )	        {         		customCSorter.doSort(resultBitSet);	         	JahiaConsole.println("JahiaContainerSet.getContainersSorter",	                                 "Container Sorter launched new sort");	        }	        sorter = customCSorter;	    }	            // cache the container filters in session        if ( session != null && sorter != null )        {        	session.setAttribute( clistID + "_sort_handler" , sorter );        }		return sorter;			}     } // end JahiaContainerSet

⌨️ 快捷键说明

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