io.github.josecarlosbran.JBSqlUtils.DataBase.Having Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jbsqlutils Show documentation
Show all versions of jbsqlutils Show documentation
JBSqlUtils es un ORM desarrollado en java por José Carlos Alfredo Bran Aguirre,
que permite gestionar BD's SQLite, MySQL, MariaDB, PostgreSQL y SQLServer, de una manera fácil
y rápida sin interrumpir la ejecución del hilo principal del programa, lo cual la hace un potente ORM,
por medio del cual tendrá acceso a un CRUD, configurando únicamente la conexión del
modelo, los atributos que posee la tabla en BD's cómo variables que pertenecerán al modelo en su aplicación.
JBSqlUtils también proporciona un potente generador de instrucciones SQL que le permitirá crear
o eliminar una tabla, insertar, seleccionar, actualizar o eliminar registros de una tabla
en su BD's sin necesidad de instanciar un modelo cómo tal, únicamente tendrá que configurar previamente
la conexión a su BD's.
Lo cual la hace un potente ORM para aplicaciones android y sistemas empresariales que tengan
la necesidad de poder conectarse a alguna de estas 4 tipos de BD's, cabe mencionar que para ello utiliza
el SQLite JDBC de org.xerial, org.postgresql, mysql y com.microsoft.sqlserver.
Para mayor información, consultar el enlace del proyecto
The newest version!
/***
* Copyright (C) 2022 El proyecto de código abierto JBSqlUtils de José Bran
*
* Con licencia de Apache License, Versión 2.0 (la "Licencia");
* no puede usar este archivo excepto de conformidad con la Licencia.
* Puede obtener una copia de la Licencia en
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* A menos que lo exija la ley aplicable o se acuerde por escrito, el software
* distribuido bajo la Licencia se distribuye "TAL CUAL",
* SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas.
* Consulte la Licencia para conocer el idioma específico que rige los permisos y
* limitaciones bajo la Licencia.
*/
package io.github.josecarlosbran.JBSqlUtils.DataBase;
import io.github.josecarlosbran.JBSqlUtils.Enumerations.Operator;
import io.github.josecarlosbran.JBSqlUtils.Exceptions.ValorUndefined;
import io.github.josecarlosbran.JBSqlUtils.Utilities.Column;
import java.util.List;
import java.util.Objects;
import static io.github.josecarlosbran.JBSqlUtils.Utilities.UtilitiesJB.getColumn;
import static io.github.josecarlosbran.JBSqlUtils.Utilities.UtilitiesJB.stringIsNullOrEmpty;
/**
* Clase que proporciona la logica para agregar una sentencia HAVING a la consulta a realizar.
*
* @author Jose Bran
*/
public class Having extends MethodsWhere {
/**
* Constructor que recibe como parámetro:
*
* @param columna Columna a evaluar dentro de la sentencia Having
* @param operador Operador con el cual se evaluara la columna
* @param valor Valor contra el que se evaluara la columna
* @param modelo Modelo que invocara los métodos de esta clase
* @throws ValorUndefined Lanza esta Excepción si la sentencia sql proporcionada esta vacía o es Null
*/
protected Having(String columna, Operator operador, Object valor, T modelo) throws ValorUndefined {
super();
if (stringIsNullOrEmpty(columna)) {
throw new ValorUndefined("El nombre de la columna proporcionado esta vacío o es NULL");
}
if (Objects.isNull(valor)) {
throw new ValorUndefined("El valor proporcionado esta vacío o es NULL");
}
if (Objects.isNull(operador)) {
throw new ValorUndefined("El operador proporcionado es NULL");
}
this.modelo = modelo;
this.parametros.add(getColumn(valor));
this.sql = " HAVING " + Operator.OPEN_PARENTESIS.getOperador() + columna + operador.getOperador() + "?" + Operator.CLOSE_PARENTESIS.getOperador();
}
/**
* Constructor que recibe como parámetro:
*
* @param columna Columna a evaluar dentro de la sentencia Having
* @param operador Operador con el cual se evaluara la columna
* @param valor Valor contra el que se evaluara la columna
* @param modelo Modelo que invocara los métodos de esta clase
* @param getPropertySystem Indica si el modelo obtendra las propiedades de conexión de las propiedades del sistema
* @throws ValorUndefined Lanza esta Excepción si la sentencia sql proporcionada esta vacía o es Null
*/
protected Having(String columna, Operator operador, Object valor, T modelo, Boolean getPropertySystem) throws ValorUndefined {
super(getPropertySystem);
if (stringIsNullOrEmpty(columna)) {
throw new ValorUndefined("El nombre de la columna proporcionado esta vacío o es NULL");
}
if (Objects.isNull(valor)) {
throw new ValorUndefined("El valor proporcionado esta vacío o es NULL");
}
if (Objects.isNull(operador)) {
throw new ValorUndefined("El operador proporcionado es NULL");
}
this.modelo = modelo;
this.parametros.add(getColumn(valor));
this.sql = " HAVING " + Operator.OPEN_PARENTESIS.getOperador() + columna + operador.getOperador() + "?" + Operator.CLOSE_PARENTESIS.getOperador();
}
/**
* Constructor que recibe como parámetro:
*
* @param columna Columna a evaluar dentro de la sentencia Having
* @param operador Operador con el cual se evaluara la columna
* @param valor Valor contra el que se evaluara la columna
* @param sql Sentencia SQL a la cual se agregara la Sentencia Having
* @throws ValorUndefined Lanza esta Excepción si la sentencia sql proporcionada esta vacía o es Null
*/
protected Having(String columna, Operator operador, Object valor, String sql, List parametros) throws ValorUndefined {
super();
if (stringIsNullOrEmpty(columna)) {
throw new ValorUndefined("El nombre de la columna proporcionado esta vacío o es NULL");
}
if (Objects.isNull(valor)) {
throw new ValorUndefined("El valor proporcionado esta vacío o es NULL");
}
if (Objects.isNull(operador)) {
throw new ValorUndefined("El operador proporcionado es NULL");
}
this.parametros = parametros;
this.parametros.add(getColumn(valor));
this.sql = sql + " HAVING " + Operator.OPEN_PARENTESIS.getOperador() + columna + operador.getOperador() + "?" + Operator.CLOSE_PARENTESIS.getOperador();
}
/**
* Constructor que recibe como parámetro:
*
* @param columna Columna a evaluar dentro de la sentencia Having
* @param operador Operador con el cual se evaluara la columna
* @param valor Valor contra el que se evaluara la columna
* @param sql Sentencia SQL a la cual se agregara la Sentencia Having
* @throws ValorUndefined Lanza esta Excepción si la sentencia sql proporcionada esta vacía o es Null
*/
protected Having(String columna, Operator operador, Object valor, String sql) throws ValorUndefined {
super();
if (stringIsNullOrEmpty(columna)) {
throw new ValorUndefined("El nombre de la columna proporcionado esta vacío o es NULL");
}
if (Objects.isNull(valor)) {
throw new ValorUndefined("El valor proporcionado esta vacío o es NULL");
}
if (Objects.isNull(operador)) {
throw new ValorUndefined("El operador proporcionado es NULL");
}
this.parametros.add(getColumn(valor));
this.sql = sql + " HAVING" + Operator.OPEN_PARENTESIS.getOperador() + columna + operador.getOperador() + "?" + Operator.CLOSE_PARENTESIS.getOperador();
}
}