|  |  | | 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 | 
 |