亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? criteria.java

?? JDBF是一個實現o/r mapping 的軟件
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 * 25/10/2002 - 09:39:11
 *
 * $RCSfile: Criteria.java,v $ - JdbF Object Relational mapping system
 * Copyright (C) 2002 JDBF Development Team
 *
 * http://jdbf.sourceforge.net
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

 /*

 $Id: Criteria.java,v 1.8 2004/05/31 22:31:00 gmartone Exp $

*/

package org.jdbf.engine.criteria;

import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
import java.util.logging.Level;

import org.jdbf.castor.Messages;
import org.jdbf.engine.sql.SqlInterface;
import org.jdbf.engine.repository.RepositoryFactory;
import org.jdbf.engine.repository.RepositoryView;
import org.jdbf.engine.mapping.ItemDescriptor;
import org.jdbf.engine.mapping.PrimaryKeyMap;
import org.jdbf.engine.mapping.MappingException;


/**
 * <Code>Criteria</code> represents the condition that
 * can be added to WHERE keyword in sql statement.<br>
 * To add a criteria, you must invoke addXXX where XXX 
 * is the condition 
 * i.e. addSelectGreaterThan(propertyName,value) 
 * add "propertyName > value" to sql statement.<br>
 * To add nested condition you must invoke your method 
 * addXXX and then you invoke addOrCriteria or addAndCriteria.<br>
 * 
 *
 * @author Giovanni Martone<br>
 * @version $Revision: 1.8 $<br>
 * last changed by $Author: gmartone $
 *
 */
public class Criteria implements Cloneable{
    	        
    private boolean distinct;    
    protected int hashCode;    
    protected List orderConditions;	
    protected StringBuffer criteria;
    protected String className;
    protected String repositoryName;
    protected ArrayList itemDescriptors;
    protected Logger logger;
    protected PrimaryKeyMap pk;

    
	
    /**
     * Creates a object given repositoryViewName
     * 
     * @param repositoryName
     * 
     */
    public Criteria(String repositoryName){
        
        this.repositoryName = repositoryName;
        	
        itemDescriptors = (ArrayList)RepositoryFactory.getItemDescriptors(repositoryName);
	    criteria = new StringBuffer();
	    className = this.getClass().getName();		
	    orderConditions  = new ArrayList();
	    hashCode = -1;
	    logger = Logger.getLogger(className);
	    RepositoryView view = (RepositoryView)RepositoryFactory.getRepositoryFromName(repositoryName);
	    pk = view.getBeanDescriptor().getPrimaryKeyMap();
    }


    /**
     * Set a List of ItemDescriptor
     *
     * @param list
     *
     */
    public void setItemDescriptors(ArrayList list){
	    itemDescriptors = list;
    }

	
    /**
     * Return column name for a attribute name specified 
     * in attrName
     *
     * @param attrName attirbute name of object
     * @return String column name
     *
     */
    public String getColumnTableName(String attrName){
	    String columnName = null;
	    
	    List keys = pk.getPrimaryKey();
	    int size = keys.size();
	    for(int i = 0; i < size; i++){
			ItemDescriptor item = (ItemDescriptor)keys.get(i);
			if(attrName.equals(item.getPropertyName())){
				columnName = item.getColumnTableName();
				return columnName;
			}
	    }
	    
	    size = itemDescriptors.size();
	    for (int i = 0; i < size; i++ ){
	        ItemDescriptor item = (ItemDescriptor)itemDescriptors.get(i);
	        if(attrName.equals(item.getPropertyName())){
		        columnName = item.getColumnTableName();
				return columnName;
	        }
	    }
	    return columnName;
    }

    
    /**
     * Creates and returns a copy of this object.
     *
     * @return the copy of this object
     *
     */
    public Object clone(){
      	Criteria obj = null;
		try {
			obj = (Criteria)super.clone();
			obj.criteria = new StringBuffer();			
			obj.orderConditions = new ArrayList();
			obj.orderConditions.addAll(this.orderConditions);
		}
		catch (CloneNotSupportedException e) {
			// Cannot happen -- we support 
			// clone, and so does ArrayList
		}
		return obj;	
    }
	
	
	/**
	 * Indicates whether some other object is "equal to" this 
	 * one. 
	 *
	 * @param obj - the reference object with which to compare.
	 * @return true if this object is the same as the obj argument; 
	 * false otherwise.
	 *
	 */
	public boolean equals (Object obj){
		if (obj == null 
			|| !(getClass().equals(obj.getClass())))
			return false;
		
		Criteria criteriaC = (Criteria)obj;
		if (distinct != criteriaC.distinct
			|| criteria != criteriaC.criteria
			|| orderConditions.size() != criteriaC.orderConditions.size()
			|| !repositoryName.equals(criteriaC.repositoryName)
			)
			return false;

		
		return orderConditions.equals(criteriaC.orderConditions);				
    }
	
	
	/**
	 * Return the repositoryName attribute
	 *
	 * @return repositoryName
	 *
	 */
	public String getRepositoryName(){
        return repositoryName;
    }
	
	
	/**
	 * Returns a hash code value for the object.
	 *
	 * @return a hash code value for this object.
	 *
	 */
	public int hashCode(){
		if (hashCode == -1) {
			hashCode = repositoryName.hashCode();
			hashCode += criteria.hashCode();
			hashCode += orderConditions.size();
			if (distinct)
				hashCode++;
			
			for (int i=0; i<orderConditions.size(); i++)
				hashCode += orderConditions.get(i).hashCode();

		}
		return hashCode;   
    }

    	            	    
	/**
	 * Sets a new value fo repositoryName attribute.
	 *
	 * @param repositoryName class name 
	 *
	 */
	protected void setRepositoryName(String repositoryName){
        this.repositoryName = repositoryName;
    }

    /**
     * Return a list of condition "ORDER BY"
     * @return List
     */
	public List getOrderConditions(){
		return orderConditions;
	}

  	/**
  	 * Return true if isDistinct,false otherwise
  	 * 
  	 * @return boolean
  	 */
	public boolean isDistinct(){
		return distinct;
	}

    /**
     * Set flag distinct
     * 
     * @param distinct
     */
    public void setDistinct(boolean distinct){
		this.distinct = distinct;
	}

	/**
	 * Return conditions
	 * 
	 * @return StringBuffer
	 */
	public StringBuffer getCriteria(){
		return criteria;
	}

    /**
     * Add condition given propertyName and condition.
     * 
     * You don't use this method directly, because it 
     * is used by addXXX method.
     * 
     * @param attributeName
     * @param condition
     */	
    public void addCondition(String attributeName, String condition){        
		criteria.append(attributeName).append(condition);		
    }

	/**
	 * Add condition given propertyName, condition and value.
	 * 
	 * You don't use this method directly, because it 
	 * is used by addXXX method.
	 * 
	 * @param attributeName
	 * @param operator
	 * @param value
	 */	
    public void addCondition(String attributeName, String operator, Object value){
		
		criteria.append(attributeName).append(" ").append(operator).append(" ");
		if(value instanceof String)
			criteria.append("'").append(value).append("'");
		else
			criteria.append(value);
		logger.log(Level.FINEST,Messages.format("Criteria.addCondition",criteria));					
    }
    
	

	/**
	 * Add condition given propertyName, condition and boolean value.
	 * 
	 * You don't use this method directly, because it 
	 * is used by addXXX method.
	 * 
	 * @param attributeName
	 * @param operator
	 * @param value
	 */	
    public void addCondition(String attributeName, String operator, boolean value){
		addCondition(attributeName, operator, new Boolean(value));
    }
	
	/**
	 * Add condition given propertyName, condition and double value.
	 * 
	 * You don't use this method directly, because it 
	 * is used by addXXX method.
	 * 
	 * @param attributeName
	 * @param operator
	 * @param value
	 */	
    public void addCondition(String attributeName, String operator, double value){
		addCondition(attributeName, operator, new Double(value));
    }
    
	/**
	 * Add condition given propertyName, condition and float value.
	 * 
	 * You don't use this method directly, because it 
	 * is used by addXXX method.
	 * 
	 * @param attributeName
	 * @param operator
	 * @param value
	 */	
    public void addCondition(String attributeName, String operator, float value){
		addCondition(attributeName, operator, new Float(value));
    }
    
	/**
	 * Add condition given propertyName, condition and int value.
	 * 
	 * You don't use this method directly, because it 
	 * is used by addXXX method.
	 * 
	 * @param attributeName
	 * @param operator
	 * @param value
	 */	
    public void addCondition(String attributeName, String operator, int value){
		addCondition(attributeName, operator, new Integer(value));
    }

	/**
	 * Add condition given propertyName, condition and long value.
	 * 
	 * You don't use this method directly, because it 
	 * is used by addXXX method.
	 * 
	 * @param attributeName
	 * @param operator
	 * @param value
	 */	
    public void addCondition(String attributeName, String operator, long value){
		addCondition(attributeName, operator, new Long(value));
    }

	/**
	 * Add equal condition given propertyName and value.
	 *  
	 * @param attributeName
	 * @param value
	 */	
    public void addSelectEqualTo(String attributeName, Object value){
		String columnName = getColumnTableName(attributeName);
		addCondition(columnName, SqlInterface.EQUAL, value);	
    }
	
	/**
	 * Add equal condition given propertyName and int value.
	 *  
	 * @param attrName
	 * @param value
	 */
    public void addSelectEqualTo(String attrName, int value){ 
        String columnName = getColumnTableName(attrName);
		addCondition(columnName, SqlInterface.EQUAL, value);		
    }
	
	/**
	 * Add equal condition given propertyName and long value.
	 *  
	 * @param attrName
	 * @param value
	 */
    public void addSelectEqualTo(String attrName, long value){ 
        String columnName = getColumnTableName(attrName);
		addCondition(columnName, SqlInterface.EQUAL, value);
    }

	/**
	 * Add equal condition given propertyName and double value.
	 *  
	 * @param attrName
	 * @param value
	 */
    public void addSelectEqualTo(String attrName, double value){ 
        String columnName = getColumnTableName(attrName);
		addCondition(columnName, SqlInterface.EQUAL, value);
    }

	/**
	 * Add equal condition given propertyName and boolean value.
	 *  
	 * @param name
	 * @param value
	 */
    public void addSelectEqualTo(String name, boolean value){ 
        String columnName = getColumnTableName(name);
		addCondition(columnName, SqlInterface.EQUAL, value);
    }
	
	/**
	 * Add less condition (<) given propertyName and value.
	 *  
	 * @param attrName

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕欧美激情一区| 亚洲欧美欧美一区二区三区| 风间由美一区二区三区在线观看 | 国产女主播一区| a4yy欧美一区二区三区| 午夜精品福利一区二区蜜股av| 日韩欧美123| 91看片淫黄大片一级| 久久激情五月激情| 亚洲精品中文在线影院| 欧美韩国日本综合| 日韩亚洲欧美一区二区三区| 欧美中文字幕亚洲一区二区va在线 | 国产精品毛片久久久久久久 | 中文字幕av一区二区三区| 欧美日韩精品是欧美日韩精品| 成人av影院在线| 韩国三级中文字幕hd久久精品| 调教+趴+乳夹+国产+精品| 亚洲青青青在线视频| 亚洲毛片av在线| 久久人人爽人人爽| 久久影院午夜论| 欧美一级理论性理论a| 欧美精品久久99| 欧美日韩国产欧美日美国产精品| 不卡免费追剧大全电视剧网站| 黄一区二区三区| 久久成人麻豆午夜电影| 日韩vs国产vs欧美| 视频在线观看一区| 偷窥少妇高潮呻吟av久久免费| 亚洲免费观看高清完整版在线观看熊| 亚洲国产经典视频| 欧美激情在线免费观看| 久久亚洲精品小早川怜子| 精品三级在线看| 欧美α欧美αv大片| 日韩欧美你懂的| 2019国产精品| 国产日本欧洲亚洲| 欧美国产一区视频在线观看| 国产欧美日韩视频在线观看| 国产欧美一区二区精品久导航| 国产亚洲欧美在线| 国产精品久久精品日日| 中文字幕制服丝袜成人av| 中文字幕日韩一区| 亚洲精品欧美综合四区| 亚洲国产精品久久久久婷婷884| 亚洲香肠在线观看| 日本特黄久久久高潮| 欧美aaaaa成人免费观看视频| 精品一区二区三区蜜桃| 国产一区二区在线影院| 国产精品中文字幕一区二区三区| 国产成人亚洲综合色影视| 99久久亚洲一区二区三区青草| 色综合一区二区| 欧美日韩国产天堂| 精品国产一区二区三区忘忧草| 久久久不卡网国产精品一区| 国产精品不卡在线| 一区二区免费在线| 捆绑调教一区二区三区| 国产69精品久久久久毛片| 色综合久久66| 6080日韩午夜伦伦午夜伦| 精品国产一区二区三区四区四| 中文字幕成人网| 亚洲第一搞黄网站| 国产精品一二三四区| 91丝袜呻吟高潮美腿白嫩在线观看| 欧美综合视频在线观看| 日韩女优av电影在线观看| 中文字幕成人网| 日韩精品五月天| 成人午夜在线视频| 678五月天丁香亚洲综合网| 国产日韩成人精品| 亚洲一区二区四区蜜桃| 韩国精品在线观看| 欧美在线免费观看视频| 精品国产欧美一区二区| 亚洲精品美国一| 狠狠色丁香婷婷综合久久片| av不卡在线播放| 日韩精品在线看片z| 国产精品久久一卡二卡| 日本va欧美va精品发布| proumb性欧美在线观看| 欧美一级午夜免费电影| 亚洲欧美日韩在线| 国产乱人伦偷精品视频不卡| 欧美人动与zoxxxx乱| 国产亚洲综合色| 日日欢夜夜爽一区| 99精品久久99久久久久| 精品国产91久久久久久久妲己| 亚洲一级二级三级在线免费观看| 国产精品小仙女| 精品视频免费看| 亚洲免费三区一区二区| 国产原创一区二区| 欧美美女喷水视频| 亚洲丝袜美腿综合| 国产在线精品免费av| 7777精品伊人久久久大香线蕉超级流畅| 国产亚洲综合色| 久久9热精品视频| 欧美久久婷婷综合色| 亚洲精品乱码久久久久久黑人| 高清不卡一二三区| 久久九九影视网| 久久av资源网| 日韩欧美成人午夜| 奇米精品一区二区三区四区| 欧美亚洲禁片免费| 亚洲精品日韩专区silk | 久久久综合激的五月天| 日韩1区2区3区| 911国产精品| 日韩专区在线视频| 91精品国产综合久久精品麻豆| 一区二区三区 在线观看视频| 91丝袜美腿高跟国产极品老师| 国产精品乱码久久久久久| 国产99久久久国产精品| 久久久www成人免费毛片麻豆| 美女视频网站黄色亚洲| 欧美一级片在线| 日韩电影一区二区三区| 69堂成人精品免费视频| 日本中文一区二区三区| 这里只有精品免费| 国产精品国产三级国产三级人妇 | 日日噜噜夜夜狠狠视频欧美人| 91国产福利在线| 亚洲视频你懂的| 99精品黄色片免费大全| 亚洲免费在线视频| 欧洲视频一区二区| 午夜一区二区三区视频| 884aa四虎影成人精品一区| 日韩国产欧美一区二区三区| 日韩一区二区三区电影| 国内国产精品久久| 欧美国产激情一区二区三区蜜月| 国产aⅴ精品一区二区三区色成熟| 国产精品久久久久aaaa樱花| 91在线视频观看| 亚洲第一久久影院| 日韩免费视频一区| 成人精品国产一区二区4080| 亚洲色大成网站www久久九九| 欧洲精品在线观看| 美腿丝袜在线亚洲一区| 久久免费电影网| 波多野结衣中文字幕一区二区三区 | 亚洲午夜一区二区三区| 欧美日韩情趣电影| 九一九一国产精品| 国产精品你懂的| 欧美性大战xxxxx久久久| 日韩精品一二三四| 日本一区二区三区四区| 日本精品一级二级| 国内久久婷婷综合| 亚洲天堂免费在线观看视频| 欧美三级电影网| 黄页视频在线91| 亚洲精品国产精品乱码不99| 日韩一区二区三区免费看| 成人av影视在线观看| 亚洲国产综合91精品麻豆| 精品国产成人系列| 色哟哟亚洲精品| 韩国欧美一区二区| 亚洲一级不卡视频| 国产亚洲综合在线| 欧美区视频在线观看| 粉嫩绯色av一区二区在线观看| 亚洲成va人在线观看| 国产精品色呦呦| 91麻豆精品国产无毒不卡在线观看| 国产盗摄一区二区| 天天影视涩香欲综合网| 国产精品卡一卡二| 精品国产3级a| 欧美群妇大交群中文字幕| www.一区二区| 国内精品免费**视频| 亚洲超碰97人人做人人爱| 欧美激情一区在线观看| 日韩丝袜情趣美女图片| 色哟哟一区二区| 不卡的av电影在线观看| 国产永久精品大片wwwapp| 午夜精品在线视频一区| 亚洲欧美偷拍卡通变态|