Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*  d6 Lightweight O/R mapper for java with ease of use 
   *
   *  Copyright (c) 2006- Tom Misawa, riversun.org@gmail.com
   *  
   *  Permission is hereby granted, free of charge, to any person obtaining a
   *  copy of this software and associated documentation files (the "Software"),
   *  to deal in the Software without restriction, including without limitation
   *  the rights to use, copy, modify, merge, publish, distribute, sublicense,
   *  and/or sell copies of the Software, and to permit persons to whom the
  *  Software is furnished to do so, subject to the following conditions:
  *  
  *  The above copyright notice and this permission notice shall be included in
  *  all copies or substantial portions of the Software.
  *  
  *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  *  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  *  DEALINGS IN THE SOFTWARE.
  *  
  */
 package org.riversun.d6.core;
 
Where condition builder

Author(s):
Tom Misawa (riversun.org@gmail.com)
 
 public class WhereCondition {
 
     public WhereCondition() {
     }
 
     private StringGrabber mSgSQL = new StringGrabber();

    
Method of adding SQL 'token' in the WhereCondition class
 
     private enum ESqlToken {
 
         COLUMN, // added column name
         OPERATOR, // added operation like equals,less than,more than,etc.
         VALUE, // added column value
         CONDITION, // added condition like 'AND' 'OR'
         WHERE, // added whereCondition itself
         NOTHING, // initial state
 
     }

    
Command executed in the preceding operation
 
     private ESqlToken mPreviousToken = .;

    
Add WhereCondition object itself surrounded with bracket into where clause

Parameters:
whereCondition
Returns:
 
     public WhereCondition WHERE(WhereCondition whereCondition) {
         .append("(");
         .append(whereCondition.toWhereConditionPart());
         .append(")");
         return WhereCondition.this;
     }

    
Add 'AND' condition into WHERE clause

Returns:
 
     public WhereCondition AND() {
 
         .append(" AND ");
         return WhereCondition.this;
     }

    
Add 'OR' condition into WHERE clause

Returns:
 
     public WhereCondition OR() {
 
         .append(" OR ");
         return WhereCondition.this;
     }

    
Add columnName into WHERE clause

Parameters:
columnName
Returns:
    public WhereCondition Col(String columnName) {
        .append(columnName);
        return WhereCondition.this;
    }

    
Add '=' operator into WHERE clause

Returns:
    public WhereCondition Equals() {
        .append("=");
        return WhereCondition.this;
    }

    
Add '>' operator into WHERE clause

Returns:
    public WhereCondition MoreThan() {
        .append(">");
        return WhereCondition.this;
    }

    
Add '>=' operator into WHERE clause

Returns:
    public WhereCondition MoreEqualsThan() {
        .append(">=");
        return WhereCondition.this;
    }

Add '<' operator into WHERE clause

Returns:
    public WhereCondition LessThan() {
        .append("<");
        return WhereCondition.this;
    }

    
Add '<=' operator into WHERE clause

Returns:
    public WhereCondition LessEqualsThan() {
        .append("<=");
        return WhereCondition.this;
    }

    
Add value of column into WHERE clause

Parameters:
val
Returns:
    public WhereCondition Val(Object val) {
        if ("?".equals(val)) {
            // question mark means WILDCARD for prepared statement
            .append(" ?");
        }
        else {
            .append("'");
            .append(val.toString());
            .append("'");
        }
        return WhereCondition.this;
    }

    
Add value as wildcard
    public WhereCondition ValWildCard() {
        return Val("?");
    }

    
Confirm whether the token is built in the correct order, and throws an exception if there is a problem.

Parameters:
tokenTobeAdded
    private void checkTokenOrderIsCorrect(ESqlToken tokenTobeAdded) {
        switch (tokenTobeAdded) {
        case :
            if ( != . &&  != .) {
                throw new D6RuntimeException("AND or OR method is required at here." + " '" + .toString() + "'<==error occurred around here.");
            }
            break;
        case :
            if ( != .) {
                throw new D6RuntimeException("VALUE is required at here." + " '" + .toString() + "'<==error occurred around here.");
            }
            break;
        case :
            if ( != .) {
                throw new D6RuntimeException("COLUMN or PROPERTY method is required at here." + " '" + .toString() + "'<==error occurred around here.");
            }
            break;
        case :
            if ( != . &&  != .) {
                throw new D6RuntimeException("VALUE is required at here." + " '" + .toString() + "'<==error occurred around here.");
            }
            break;
        case :
            if ( != . &&  != .) {
                throw new D6RuntimeException("CONDITION is required at here." + " '" + .toString() + "'<==error occurred around here.");
            }
            break;
        default:
        }
         = tokenTobeAdded;
    }

    
where condition part

Returns:
        if ( != . &&  != .) {
            throw new D6RuntimeException("Where condition is not completed." + " '" + .toString() + "'<==error occurred around here.");
        }
        return .toString();
    }

    
Returns generated SQL

Returns:
    String toSql() {
        return "WHERE " + toWhereConditionPart();
    }
New to GrepCode? Check out our FAQ X