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

📄 criteriacondition.java

📁 根据Scott W. Ambler在1998年写的关于ORM Persistence Layer的详细设计论文的设计思路,Artem Rudoy 开发了一个开源的ORM实现 -- PL(Persist
💻 JAVA
字号:
package pl.criteria;

import java.util.*;

/**
 * This class represents a condition for criteria's
 * WHERE and HAVING parts
 *
 * @author:*/
public class CriteriaCondition implements CriteriaPart
{
    private Vector parts = new Vector();
    private pl.map.ClassMap classMap = null;

    /**
     * Creates CreteriaCondition.
     */
    CriteriaCondition(pl.map.ClassMap classMap)
    {
        super();
        
        this.classMap = classMap;
    }

    /**
     * Adds OR criteria condition to this condition.
     *
     * @param orCriteria pl.criteria.CriteriaCondition
     */
    public void addOrCriteria(CriteriaPart orCriteria)
    {
        // Add condition to the parts of this criteria
        parts.add(new Part(orCriteria, Part.OR_PART));
    }

    /**
     * Adds AND criteria condition to this condition.
     *
     * @param orCriteria pl.criteria.CriteriaCondition
     */
    public void addAndCriteria(CriteriaPart andCriteria)
    {
        // Add condition to the parts of this criteria
        parts.add(new Part(andCriteria, Part.AND_PART));
    }

    /**
     * Fills SQL statement with this condition.
     *
     * @param statement statement to fill
     * @param parameters parameters
     */
    public void fillSqlStatement(pl.sql.SqlStatement statement, java.util.Iterator parameters) throws pl.PlException
    {
        if(parts.size() > 0)
        {
            statement.addSqlClause("(");
            for(int i = 0; i < getSize(); i++)
            {
                Part part = (Part)parts.get(i);
                if(i != 0)
                {
                    switch(part.kind)
                    {
                        case Part.AND_PART:
                            statement.addSqlClause(" " + classMap.getRelationalDatabase().getClauseStringAnd() + " ");
                            break;

                        case Part.OR_PART:
                            statement.addSqlClause(" " + classMap.getRelationalDatabase().getClauseStringOr() + " ");
                            break;
                    }
                }
                part.part.fillSqlStatement(statement, parameters);
            }
            statement.addSqlClause(")");
        }
    }

    /**
     * Returns size of this condition.
     *
     * @return int
     */
    public int getSize()
    {
        return parts.size();
    }
}

class Part
{
    public final static int OR_PART = 0;
    public final static int AND_PART = 1;

    public CriteriaPart part = null;
    public int kind = AND_PART;

    public Part(CriteriaPart part, int kind)
    {
        this.part = part;
        this.kind = kind;
    }
}

⌨️ 快捷键说明

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