Mega Code Archive

 
Categories / Java / Database SQL JDBC
 

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", "'al@yahoo.com'");     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);     }   } }