All Downloads are FREE. Search and download functionalities are using the official Maven repository.

im.dadoo.spring.jdbc.support.SqlBuilder Maven / Gradle / Ivy

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package im.dadoo.spring.jdbc.support;

import im.dadoo.spring.jdbc.support.condition.Condition;
import java.util.List;
import java.util.Map;

/**
 *
 * @author codekitten
 */
public final class SqlBuilder {
  
  private SqlBuilder() {}
  
  public static final String buildInsertSql(final String table, final List fields, 
          final Map valueMap) {
    String result = String.format("INSERT INTO %s%s", table, Criteria.into(fields, valueMap));
    return result;
  }
  
  public static final String buildInsertSql(final String table, final List fields) {
    String result = String.format("INSERT INTO %s%s", table, Criteria.into(fields));
    return result;
  }
  
  public static final String buildUpdateAllSql(final String table, final List fields, 
          final Map valueMap) {
    StringBuilder sb = new StringBuilder();
    sb.append(String.format("UPDATE %s ", table));
    sb.append(Criteria.set(fields, valueMap));
    return sb.toString();
  }
  
  public static final String buildUpdateAllSql(final String table, final List fields) {
    StringBuilder sb = new StringBuilder();
    sb.append(String.format("UPDATE %s ", table));
    sb.append(Criteria.set(fields));
    return sb.toString();
  }
  
  public static final String buildUpdateByIdSql(final String table, final List fields) {
    StringBuilder sb = new StringBuilder();
    sb.append(buildUpdateAllSql(table, fields)).append(" ");
    sb.append("WHERE id = :id");
    return sb.toString();
  }
  
  public static final String buildUpdateByIdSql(final String table, final List fields,
          final Map valueMap) {
    StringBuilder sb = new StringBuilder();
    sb.append(buildUpdateAllSql(table, fields, valueMap)).append(" ");
    sb.append("WHERE id = :id");
    return sb.toString();
  }
  
  public static final String buildUpdateSql(final String table, 
          final List fields, final List conditions) {
    StringBuilder sb = new StringBuilder();
    sb.append(buildUpdateAllSql(table, fields)).append(" ");
    sb.append(Criteria.where(conditions));
    return sb.toString();
  }
  
  public static final String buildUpdateSql(final String table, 
          final List fields, final Map valueMap, 
          final List conditions) {
    StringBuilder sb = new StringBuilder();
    sb.append(buildUpdateAllSql(table, fields, valueMap)).append(" ");
    sb.append(Criteria.where(conditions));
    return sb.toString();
  }
  
  public static final String buildDeleteAllSql(final String table) {
    return String.format("DELETE FROM %s", table);
  }
  
  public static final String buildDeleteByIdSql(final String table) {
    StringBuilder sb = new StringBuilder();
    sb.append(buildDeleteAllSql(table)).append(" ");
    sb.append("id = :id");
    return sb.toString();
  }
  
  public static final String buildDeleteSql(final String table, final List conditions) {
    StringBuilder sb = new StringBuilder();
    sb.append(buildDeleteAllSql(table)).append(" ");
    sb.append(Criteria.where(conditions));
    return sb.toString();
  }
  
  public static final String buildFindByFieldSql(final String table, final String field) {
    return String.format("SELECT * FROM %s WHERE %s = :%s LIMIT 1", table, field, field);
  }
  
  public static final String buildFindByIdSql(final String table) {
    return buildFindByFieldSql(table, "id");
  }
  
  public static final String buildListSql(final String table, final List conditions, 
          final List orderFields, final Map orderValueMap) {
    StringBuilder sb = new StringBuilder();
    sb.append(String.format("SELECT * FROM %s", table));
    if (conditions != null && !conditions.isEmpty()) {
      sb.append(" ").append(Criteria.where(conditions));
    }
    if (orderFields != null && !orderFields.isEmpty()) {
      sb.append(" ").append(Criteria.orderBy(orderFields, orderValueMap));
    }
    return sb.toString();
  }
  
  public static final String buildListLimitSql(final String table, final List conditions, 
          final List orderFields, final Map orderValueMap) {
    StringBuilder sb = new StringBuilder();
    sb.append(SqlBuilder.buildListSql(table, conditions, orderFields, orderValueMap)).append(" ");
    sb.append("LIMIT :limit");
    return sb.toString();
  }
  
  public static final String buildListLimitSql(final String table, final List conditions, 
          final List orderFields, final Map orderValueMap, long limit) {
    StringBuilder sb = new StringBuilder();
    sb.append(SqlBuilder.buildListSql(table, conditions, orderFields, orderValueMap)).append(" ");
    sb.append(String.format("LIMIT %d", limit));
    return sb.toString();
  }
  
  public static final String buildPageSql(final String table, final List conditions, 
          final List orderFields, final Map orderValueMap) {
    StringBuilder sb = new StringBuilder();
    sb.append(buildListSql(table, conditions, orderFields, orderValueMap)).append(" ");
    sb.append("LIMIT :offset, :pagesize");
    return sb.toString();
  }
  
  public static final String buildPageSql(final String table, final List conditions, 
          final List orderFields, final Map orderValueMap,
          int pagecount, int pagesize) {
    StringBuilder sb = new StringBuilder();
    sb.append(buildListSql(table, conditions, orderFields, orderValueMap)).append(" ");
    sb.append(String.format("LIMIT %d, %d", (pagecount - 1) * pagesize, pagesize));
    return sb.toString();
  }
  
  public static final String buildSizeAllSql(final String table) {
    return String.format("SELECT count(*) as size FROM %s", table);
  }
  
  public static final String buildSizeSql(final String table, final List conditions) {
    StringBuilder sb = new StringBuilder();
    sb.append(buildSizeAllSql(table)).append(" ");
    sb.append(Criteria.where(conditions));
    return sb.toString();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy