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

📄 containerfilters.java

📁 java 写的一个新闻发布系统
💻 JAVA
字号:
////                                   ____.//                       __/\ ______|    |__/\.     _______//            __   .____|    |       \   |    +----+       \//    _______|  /--|    |    |    -   \  _    |    :    -   \_________//   \\______: :---|    :    :           |    :    |         \________>//           |__\---\_____________:______:    :____|____:_____\//                                      /_____|////                 . . . i n   j a h i a   w e   t r u s t . . .////////////// 27.05.2002 NK added in Jahiapackage org.jahia.data.containers;import java.util.BitSet;import java.util.Vector;import java.util.Date;import java.util.TimeZone;import java.util.Calendar;import org.jahia.params.*;          		// ParamBeanimport org.jahia.registries.*;     	 		// JahiaRegistriesimport org.jahia.exceptions.*;import org.jahia.registries.ServicesRegistry;import org.jahia.utils.JahiaConsole;import org.jahia.exceptions.JahiaException;/** * Jahia Standard Containers Filtering Handler for a given container list. * * @see ContainerFilterBean * @see JahiaContainerSet * @author Khue Nguyen <a href="mailto:khue@jahia.org">khue@jahia.org</a> */public class ContainerFilters {    private static final String CLASS_NAME = ContainerFilters.class.getName();		private int ctnListID = -1;		private BitSet bits;			private Vector containerFilters;	private String query;		private boolean isValid = false;	private boolean updated = false;		private long lastFilteringTime = -1;				//--------------------------------------------------------------------------	/**	 * Constructor	 *	 * @param int ctnListID, the container list id.	 * @param Vector containerFilters, a vector of ContainerFilterBean Bean.	 */ 	public ContainerFilters(int ctnListID, Vector containerFilters)	throws JahiaException	{		this.ctnListID = ctnListID;		this.containerFilters = containerFilters;		buildQuery();	}		//--------------------------------------------------------------------------	/**	 * Constructor	 *	 * @param String containerListName, the container list name.	 * @param ParamBean, the param bean.	 * @param Vector containerFilters, a vector of ContainerFilterBean Bean.	 */ 	public ContainerFilters(String containerListName, ParamBean params, Vector containerFilters)	throws JahiaException	{		//JahiaConsole.println("ContainerFilters","Created container filter : " + containerListName);		this.containerFilters = containerFilters;		if ( containerListName != null ){	        int clistID = ServicesRegistry.getInstance().getJahiaContainersService().               getContainerListID( containerListName, params.getPage().getID() );			if ( clistID != -1 ){				this.ctnListID = clistID;				buildQuery();			}		}	}		//--------------------------------------------------------------------------	/**	 * Perform filtering.	 * The expected result is a bit set of matching container ids.	 *	 * @return BitSet bits, the expected result as a bit set of matching ctn ids,each bit position set to true correspond to matching ctn ids.	 */	public BitSet doFilter()	throws JahiaException	{		if ( !isQueryValid() )			return null;				BitSet result = new BitSet();				BitSet bits = null;        ContainerFilterBean containerFilter = null;        Vector v = getContainerFilters();        int size = v.size();		for ( int i=0 ; i<size ; i++ )		{				bits = new BitSet();			containerFilter = (ContainerFilterBean)v.get(i);			bits = containerFilter.doFilter(getCtnListID());            if ( bits != null )            {	            if ( i == 0 ){	            	result.or(bits);	            } else {	            	result.and(bits);	            }	        }		}		this.bits = result;		this.updated = true;	 	// Set search time        TimeZone tz = TimeZone.getTimeZone("UTC");        Calendar cal = Calendar.getInstance(tz);	 	Date nowDate = cal.getTime();		this.lastFilteringTime = nowDate.getTime();				return result;	}	//--------------------------------------------------------------------------	/**	 * Return the bit set of matching ctn ids.	 * YOu must call doFilter first.	 *	 * @return BitSet the bit set of matching ctn ids.	 */	public BitSet bits()	{		return this.bits;	}	//--------------------------------------------------------------------------	/**	 * Return the container list id.	 *	 * @return int ctnListID, the container list id.	 */	public int getCtnListID()	{		return this.ctnListID;	}	//--------------------------------------------------------------------------	/**	 * Return the query as String. 	 * This query is only a SQL query representation of the combination of all filter select statement,	 * but not the one performed again the DB ! "Intersect" Set operator is not available with	 * all DB ( i.e : ACCESS ).	 *	 * @return String, the query.	 */	public String getQuery()	{		return this.query;	}	//--------------------------------------------------------------------------	/**	 * Return the vector of container filter bean.	 *	 * @return Vector, the vector ofcontainer filter bean.	 */	public Vector getContainerFilters()	{		return this.containerFilters;	}	//--------------------------------------------------------------------------	/**	 * Return true if the query is valid.	 *	 * @return boolean , true if the query is valid.	 */	public boolean isQueryValid()	{		return this.isValid;	}	//--------------------------------------------------------------------------	/**	 * Return the last filtering running time.	 *	 * @return long , the last filtering time	 */	public long getLastFilteringTime()	{		return this.lastFilteringTime;	}	//--------------------------------------------------------------------------	/**	 * Return the update status. Each time the doFilter method is called, this update status is set to true.	 *	 * @return boolean, the internal updated status value.	 */	public boolean getUpdateStatus()	{		return this.updated;	}	//--------------------------------------------------------------------------	/**	 * Set the update status to true.	 *	 */	public void setUpdateStatus()	{		this.updated = true;	}	//--------------------------------------------------------------------------	/**	 * You can reset the internal update status by setting it to false	 *	 */	public void resetUpdateStatus()	{		this.updated = false;	}	//--------------------------------------------------------------------------	/**	 * Compare two queries.	 * 	 * @return boolean , true if the given query is different with the internal query.	 */	public boolean compareQuery(String query)	{		if ( !isQueryValid() || query == null ){			return false;		}		return (this.query.equals(query));	}	//--------------------------------------------------------------------------	/**	 * Build the internal DB query.	 * 	 */ 	private void buildQuery()	{		//JahiaConsole.println("ContainerFilters.buildQuery","Started");		if ( containerFilters == null || containerFilters.size()==0 )		{			return;		}				StringBuffer buff = new StringBuffer();		String fieldFilterQuery;		ContainerFilterBean containerFilter;		int size = containerFilters.size();		for ( int i=0 ; i<size ; i++ )		{				containerFilter = (ContainerFilterBean)containerFilters.get(i);			if ( containerFilter == null )				return;			fieldFilterQuery = containerFilter.getSelect(this.getCtnListID());			if ( fieldFilterQuery != null && !fieldFilterQuery.trim().equals("") )			{				buff.append(fieldFilterQuery);			}			if ( i<size-1 )			{				buff.append(" INTERSECT ");				}		}				this.query = buff.toString();		//JahiaConsole.println("ContainerFilters.buildQuery","Builded query : " + this.query);		this.isValid = true;	}}

⌨️ 快捷键说明

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