亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产精品久久福利| 亚洲男女毛片无遮挡| 日韩欧美美女一区二区三区| 国产亲近乱来精品视频| 老司机一区二区| 欧美日韩国产不卡| 亚洲午夜久久久久久久久电影网| 亚洲欧美电影院| 成人午夜免费av| 国产欧美日韩视频一区二区| 日本欧美韩国一区三区| 精品视频免费在线| 一区二区三区中文字幕在线观看| 国产成人在线免费| 日韩视频永久免费| 男女激情视频一区| 欧美一级国产精品| 久久精品久久99精品久久| 欧美r级在线观看| 久久国产免费看| 久久久国产综合精品女国产盗摄| 精品午夜久久福利影院| 久久久久久久久久看片| 亚洲精品免费视频| 午夜激情综合网| 成人免费av资源| 亚洲欧洲国产专区| 欧洲色大大久久| 性做久久久久久免费观看| 欧美日韩视频第一区| 天天综合天天综合色| 日韩欧美国产电影| 久久国内精品视频| 久久天天做天天爱综合色| 国产电影一区二区三区| 国产精品你懂的| 久久香蕉国产线看观看99| 国内精品不卡在线| 国产精品久久久久7777按摩| 成人动漫视频在线| 亚洲一二三区在线观看| 日韩一区二区在线观看视频| 精品在线亚洲视频| 亚洲免费观看在线观看| 一区二区在线免费观看| 99久久久久免费精品国产| 精品国产乱码久久久久久图片| 另类专区欧美蜜桃臀第一页| 久久久午夜精品理论片中文字幕| 国产激情精品久久久第一区二区| 欧美又粗又大又爽| 美女视频免费一区| 久久精品亚洲麻豆av一区二区 | wwwwww.欧美系列| 成人一级片网址| 夜夜操天天操亚洲| 日韩一区二区在线观看视频| 成人综合婷婷国产精品久久免费| 国产日韩欧美精品一区| 色狠狠桃花综合| 成人国产精品免费网站| 奇米四色…亚洲| 亚洲一区二区三区四区五区黄| 久久久三级国产网站| 欧美日本乱大交xxxxx| jizzjizzjizz欧美| 精品sm在线观看| 精品视频一区 二区 三区| 成人美女视频在线观看| 国产精一区二区三区| 日韩高清欧美激情| 国产尤物一区二区在线| 国产伦精一区二区三区| 亚洲人妖av一区二区| 国产精品久久久99| 综合色中文字幕| 亚洲一区二区三区在线看| 国产精品激情偷乱一区二区∴| 欧美四级电影在线观看| 欧美图片一区二区三区| 91福利社在线观看| 国产福利一区二区三区视频| 日韩国产在线一| 日本欧美肥老太交大片| 亚洲成av人影院在线观看网| 亚洲一区二区视频在线观看| 制服.丝袜.亚洲.中文.综合| 欧美亚洲国产一区二区三区| 欧美中文字幕一区二区三区 | 丝瓜av网站精品一区二区| 色狠狠色噜噜噜综合网| 欧美在线小视频| 91亚洲资源网| 欧美日韩中字一区| 日韩欧美在线网站| 欧美一区二区免费观在线| 精品视频全国免费看| 欧美色男人天堂| 欧美日韩一区视频| 欧美日韩一区在线| 欧美一区二区三区性视频| 日韩欧美色电影| 久久亚洲影视婷婷| 中文字幕一区视频| 日韩精品电影一区亚洲| 日本91福利区| 99久久99久久精品免费观看| 伊人开心综合网| 亚洲成av人片| 日产精品久久久久久久性色| 久久电影网站中文字幕| 久久国产夜色精品鲁鲁99| 色综合天天综合网天天狠天天| 欧美日韩国产不卡| 亚洲欧美激情小说另类| 精品亚洲免费视频| 欧美色综合影院| 国产三级精品三级| 亚洲第一福利一区| 成人午夜私人影院| 91国模大尺度私拍在线视频| 中文字幕不卡一区| 国产激情偷乱视频一区二区三区 | 日韩三级.com| 亚洲成在线观看| 在线看日韩精品电影| 国产精品国产三级国产普通话99 | 国产麻豆精品在线| 日韩一级免费观看| 免费人成在线不卡| 不卡的av电影在线观看| 欧美成人一区二区三区在线观看| 自拍偷拍国产精品| 99国产精品久久久久久久久久久| 欧美一级黄色大片| 亚洲最新在线观看| aaa欧美日韩| 樱桃视频在线观看一区| 一本久久a久久免费精品不卡| 亚洲欧美视频一区| 欧洲国产伦久久久久久久| 国产精品久久久久影视| 97精品久久久午夜一区二区三区| 天天射综合影视| 精品一二三四在线| 国产色婷婷亚洲99精品小说| 国产v综合v亚洲欧| 国产精品久久久久久久久免费樱桃 | 国产成人免费9x9x人网站视频| 国产欧美日本一区视频| 成人av网站在线观看| 亚洲国产aⅴ天堂久久| 日韩一级片网站| 国产成人精品午夜视频免费| 亚洲猫色日本管| 日韩欧美国产高清| 96av麻豆蜜桃一区二区| 日本中文字幕一区二区视频| 91麻豆精品国产91久久久更新时间 | 欧美一级理论片| 国产精品一二三在| 伊人性伊人情综合网| 91精品久久久久久蜜臀| 国产一区二区精品久久| 亚洲欧美一区二区三区孕妇| 欧美丰满美乳xxx高潮www| 精品午夜久久福利影院 | 不卡一区在线观看| 亚洲成人中文在线| 2019国产精品| 国产麻豆视频精品| 人人超碰91尤物精品国产| 国产精品短视频| 精品国产免费一区二区三区香蕉| 国产不卡高清在线观看视频| 日本午夜一本久久久综合| 亚洲国产精品高清| 精品福利一区二区三区| 88在线观看91蜜桃国自产| 91免费视频大全| 久久99精品久久久久久国产越南| 欧美国产视频在线| 欧美精品一区二区在线播放| 99久久久无码国产精品| 国产精品资源在线| 久久99久久99精品免视看婷婷| 亚洲成a人片综合在线| 亚洲日本免费电影| 久久亚洲精精品中文字幕早川悠里 | 欧美日本在线一区| 色综合色狠狠天天综合色| 麻豆91精品91久久久的内涵| 香蕉加勒比综合久久| 亚洲一区在线播放| 亚洲综合无码一区二区| 国产精品乱人伦| 中文字幕一区视频| 亚洲人成网站影音先锋播放| 成人免费一区二区三区视频 | 国产在线国偷精品产拍免费yy|