|  | | SQL Builder |  
| 
 |  
   
   
import java.util.HashMap; 
import java.util.Iterator; 
import java.util.Map; 
 
public class BuilderMain { 
  public static void main(String[] args) { 
    InsertBuilder builder = new InsertBuilder(); 
    builder.setTable("employees"); 
    builder.addColumnAndData("employee_id", new Integer(221)); 
    builder.addColumnAndData("first_name", "'Shane'"); 
    builder.addColumnAndData("last_name", "'Grinnell'"); 
    builder.addColumnAndData("email", "'[email protected]'"); 
 
    String sql = SQLDirector.buildSQL(builder); 
    System.out.println(sql); 
  } 
} 
 
class SQLDirector { 
  public static String buildSQL(SQLBuilder builder) { 
    StringBuffer buffer = new StringBuffer(); 
    buffer.append(builder.getCommand()); 
    buffer.append(builder.getTable()); 
    buffer.append(builder.getWhat()); 
    buffer.append(builder.getCriteria()); 
    return buffer.toString(); 
  } 
} 
 
abstract class SQLBuilder { 
  /** 
   * Gets the command attribute of the SQLBuilder object 
   *  
   * @return The command value or what type of Builder this is. This will return 
   *         a SQL command. 
   * @since 
   */ 
  public abstract String getCommand(); 
 
  /** 
   * Gets the table attribute of the SQLBuilder object 
   *  
   * @return The table name value 
   * @since 
   */ 
  public abstract String getTable(); 
 
  /** 
   * Gets the what value of the SQLBuilder object. This attribute will differ 
   * based on what type of object we are using. This could be a list of columns 
   * and data. 
   *  
   * @return The what value 
   * @since 
   */ 
  public abstract String getWhat(); 
 
  /** 
   * Gets the criteria attribute of the SQLBuilder object 
   *  
   * @return The criteria value 
   * @since 
   */ 
  public abstract String getCriteria(); 
} 
 
class InsertBuilder extends SQLBuilder { 
  private String table; 
 
  private Map columnsAndData = new HashMap(); 
 
  private String criteria; 
 
  /** 
   * Sets the table attribute of the InsertBuilder object 
   *  
   * @param table 
   *          The new table value 
   * @since 
   */ 
  public void setTable(String table) { 
    this.table = table; 
  } 
 
  /** 
   * Gets the command attribute of the InsertBuilder object 
   *  
   * @return The command value 
   * @since 
   */ 
  public String getCommand() { 
    return "INSERT INTO "; 
  } 
 
  /** 
   * Gets the table attribute of the InsertBuilder object 
   *  
   * @return The table value 
   * @since 
   */ 
  public String getTable() { 
    return table; 
  } 
 
  /** 
   * Gets the what attribute of the InsertBuilder object 
   *  
   * @return The what value 
   * @since 
   */ 
  public String getWhat() { 
    StringBuffer columns = new StringBuffer(); 
    StringBuffer values = new StringBuffer(); 
    StringBuffer what = new StringBuffer(); 
 
    String columnName = null; 
    Iterator iter = columnsAndData.keySet().iterator(); 
    while (iter.hasNext()) { 
      columnName = (String) iter.next(); 
      columns.append(columnName); 
      values.append(columnsAndData.get(columnName)); 
      if (iter.hasNext()) { 
        columns.append(','); 
        values.append(','); 
      } 
    } 
 
    what.append(" ("); 
    what.append(columns); 
    what.append(") VALUES ("); 
    what.append(values); 
    what.append(") "); 
    return what.toString(); 
  } 
 
  /** 
   * Gets the criteria attribute of the InsertBuilder object 
   *  
   * @return The criteria value 
   * @since 
   */ 
  public String getCriteria() { 
    return ""; 
  } 
 
  /** 
   * Adds a feature to the ColumnAndData attribute of the InsertBuilder object 
   *  
   * @param columnName 
   *          The feature to be added to the ColumnAndData attribute 
   * @param value 
   *          The feature to be added to the ColumnAndData attribute 
   * @since 
   */ 
  public void addColumnAndData(String columnName, Object value) { 
    if (value != null) { 
      columnsAndData.put(columnName, value); 
    } 
  } 
} 
 
 
            
          
     
   |     
 
 |  
 |  
 |  
| Related examples in the same category |   
 |