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

📄 queryorder.java

📁 这是一个轻便的j2ee的web应用框架,是一个在多个项目中运用的实际框架,采用struts,hebinate,xml等技术,有丰富的tag,role,navigation,session,dictio
💻 JAVA
字号:
/*
 * Created on 2004-3-23
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
package com.esimple.framework.dao.support;

import java.util.ArrayList;
import net.sf.hibernate.expression.Order;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * @author steven
 *
 */
public class QueryOrder {
	public static final String ORDER_ASC 	= "asc";
	public static final String ORDER_DESC 	= "desc";
	
	public static final String ORDER_TYPE	= "orderType";
	public static final String ORDER_COLUMN	= "orderColumn";
	
	private ArrayList columns = new ArrayList();
	private ArrayList hiberanteOrder = new ArrayList();
	
	protected Log logger = LogFactory.getLog(this.getClass());
	
	public QueryOrder(String columnName){
		addColumn( columnName );
	}
	
	public QueryOrder(String columnName,String orderType){
		if( orderType != null && columnName!= null ){
			boolean blType;
			if( orderType.equalsIgnoreCase(ORDER_ASC)){
				blType = true;
			}else{
				blType = false;
			}
			addColumn( columnName,blType );
		}
	}	
		
	public QueryOrder(String columnName,boolean orderType){
		addColumn( columnName,orderType );
	}	
	
	public QueryOrder(String columnName,boolean orderType,boolean nullFirst){
		addColumn( columnName,orderType,nullFirst );
	}
	/**
	 * 增加一个排序字段(默认排序类型为ASC
	 * @param columnName 字段名称
	 */
	public void addColumn(String columnName){
		if( columnName == null ) return;
		columnName = columnName.trim();
		if( columnName.length() == 0 ) return;
		columns.add( new OrderColumn(columnName) );
	}
	
	/**
	 * 增加一个排序字段
	 * @param columnName 字段名称
	 * @param orderType 排序类型(是否使用asc类型)
	 */
	public void addColumn(String columnName,boolean orderType){
		if( columnName == null ) return;
		columnName = columnName.trim();
		if( columnName.length() == 0 ) return;
		
		columns.add( new OrderColumn(columnName,orderType));
	}
	
	/**
	 * 增加一个排序字段
	 * @param columnName 字段名称
	 * @param orderType 排序类型(是否使用asc类型)
	 * @param nullFirst 空值是否放置在前面
	 */
	public void addColumn(String columnName,boolean orderType,boolean nullFirst){
		if( columnName == null ) return;
		columnName = columnName.trim();
		if( columnName.length() == 0 ) return;
		
		columns.add( new OrderColumn(columnName,orderType,nullFirst));
	}
	
	/**
	 * 根据排序字段信息创建order by 子句
	 * @return sql order by 子句
	 */
	public String getClause(){
		if( columns.size() <=0 ) return null;
		StringBuffer temp = new StringBuffer("ORDER BY ");
		for( int i = 0 ; i< columns.size(); i ++ ){
			temp.append( ((OrderColumn) columns.get(i)).getClause() );
			if( i < (columns.size()-1) )  
				temp.append(",");
		}
		logger.debug( temp.toString() );
		return temp.toString();
	}
	
	/**
	 * 根据排序字段信息创建hiberante Order对象集合
	 * @return ArrayList
	 */
	public ArrayList getHibernateOrders(){
		if( columns.size() <=0 ) return null;
		if( hiberanteOrder.size() >=1 ) return hiberanteOrder;
		for( int i =0;i< columns.size();i++ ){
			if( logger.isDebugEnabled() ){
				String clause = ((OrderColumn)columns.get(i)).getClause();
				logger.debug("create hibernate Order with"+clause );
			}
			
			hiberanteOrder.add( 
				((OrderColumn) columns.get(i)).getHibernateOrder()
			);
		}
		return hiberanteOrder;
	}
	
	public boolean isNull(){
		return columns.isEmpty();
	}	
	
	class OrderColumn {
		private String columnName;
		private String orderType="";
		private boolean nullFirst=false;
		private boolean selectNulls=false;
		
		public OrderColumn(String columnName){
			this.columnName = columnName;
			this.orderType =  ORDER_ASC;
		}
		
		public OrderColumn(String columnName,boolean ASC){
			this.columnName = columnName;
			if( ASC){
				 this.orderType = ORDER_ASC; 
			}else{
				this.orderType  = ORDER_DESC; 
			}
		}
		
		/**
		 * @param columnName 排序字段名
		 * @param ASC	排序类型(是否使用asc类型)
		 * @param nullFirst 空值是否放置在前面
		 */
		public OrderColumn(String columnName,boolean ASC,boolean nullFirst){
			this(columnName,ASC);
			this.nullFirst =  nullFirst;
			this.selectNulls = true;
		}
		
		public String getColumnName() {
			return this.columnName;
		}
		public String getOrderType(){
			return this.orderType;
		}
		public String getNullsPosition(){
			if( nullFirst){
				return "nulls first";
			}else{
				return "nulls last";
			}
		}
		
		public String getClause(){
			StringBuffer buffer = new StringBuffer(columnName);
			buffer.append(" ");
			buffer.append(orderType);
			if( selectNulls ) {
				buffer.append(" ");
				buffer.append( getNullsPosition() );
			}
			return buffer.toString();
		}
		
		public Order getHibernateOrder(){
			if( orderType.equalsIgnoreCase(ORDER_DESC ) ){
				return Order.desc( columnName );
			}else{
				return Order.asc( columnName );
			}
		}
	}
}

⌨️ 快捷键说明

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