maia_modificado/.svn/pristine/30/30ae99734efba3793dde7cbb8b8...

198 lines
5.3 KiB
Plaintext
Executable File

package com.fp.dto.query;
import com.fp.dto.AbstractDataTransport;
import com.fp.dto.data.SaveData;
/**
* Clase de transporte, que se asocia a un querybena con las restricciones a aplicar
* en una sentencia SQL.
* @author Jorge Vaca
* @version 2.1
*/
public class QueryCriteria extends AbstractDataTransport{
/**Version de la clase.*/
private static final long serialVersionUID = 1L;
/**Nombrte del campo de la tabla*/
private String property;
/**Criterio de la restriccion, =, != , like, >= etc.*/
private String operation;
/**Valor de la restriccion.*/
private Object value;
/**Indice del orden en las sentencias.*/
private int order=0;
@Override
public Object cloneMe() throws CloneNotSupportedException {
QueryCriteria p = (QueryCriteria) this.clone();
return p;
}
/**
* Entrega el valor de: property
* @return String
*/
public String getProperty() {
return property;
}
/**
* Fija el valor de: property
* @param property
*/
public void setProperty(String property) {
this.property = property;
if(this.value != null){
this.setLogData(property, value);
}
}
/**
* Entrega el valor de: operation
* @return String
*/
public String getOperation() {
return operation;
}
/**
* Fija el valor de: operation
* @param operation
*/
public void setOperation(String operation) {
this.operation = operation;
}
/**
* Entrega el valor de: value
* @return Object
*/
public Object getValue() {
if(value instanceof Integer){
return Long.parseLong(value.toString());
}
return value;
}
/**
* Fija el valor de: value
* @param value
*/
public void setValue(Object value) {
this.value = value;
if(this.property != null){
this.setLogData(property, value);
}
}
/**
* Entrega el valor de: order
* @return int
*/
public int getOrder() {
return order;
}
/**
* Fija el valor de: order
* @param order
*/
public void setOrder(int order) {
this.order = order;
}
public QueryCriteria(){
}
/**
* Crea una instancia de QueryCriteria.
* @param property Nombre del campo a aplicar la restriccion.
* @param operation Condicion =, != , >, >= etc
* @param value Valor de la restriccion.
*/
public QueryCriteria(String property, String operation, Object value) {
this(property,operation,value,0);
}
/**
* Crea una instancia de QueryCriteria, la condicion de la restriccion es like.
* @param property Nombre del campo a aplicar la restriccion.
* @param value Valor de la restriccion.
*/
public QueryCriteria(String property, Object value) {
this(property,"like",value,0);
}
/**
* Crea una instancia de QueryCriteria
* @param property Nombre del campo.
* @param operation Condicion =, != , >, >= etc
* @param value Valor de la restriccion.
* @param order Orden de presentacion en la consulta.
*/
public QueryCriteria(String property, String operation, Object value, int order) {
this.property = property;
this.operation = operation;
this.value = value;
this.order = order;
this.setLogData(property, value);
}
private void setLogData(String property,Object value) {
try {
this.setPersoncode(property, value);
this.setAccount(property, value);
this.setSolicitudenumber(property, value);
} catch (Exception e) {
//no hacer nada
}
}
/**
* Verifica que el nombre del campo sea PERSONCODE, y almacena en los datos de parametros del log el valor del campo.
* @param property Nombre del campo a verificar.
* @param value Valor del campo.
* @throws Exception
*/
private void setPersoncode(String property,Object value) throws Exception {
String field = "PERSONCODE";
if (!property.toUpperCase().contains(field) ){
return;
}
this.setData(property, field, value);
}
/**
* Verifica que el nombre del campo sea PERSONCODE, y almacena en los datos de parametros del log el valor del campo.
* @param property Nombre del campo a verificar.
* @param value Valor del campo.
* @throws Exception
*/
private void setAccount(String property,Object value) throws Exception {
String field = "ACCOUNT";
if (!property.toUpperCase().contains(field) ){
return;
}
this.setData(property, field, value);
}
/**
* Verifica que el nombre del campo sea PERSONCODE, y almacena en los datos de parametros del log el valor del campo.
* @param property Nombre del campo a verificar.
* @param value Valor del campo.
* @throws Exception
*/
private void setSolicitudenumber(String property,Object value) throws Exception {
String field = "SOLICITUDNUMBER";
if (!property.toUpperCase().contains(field) ){
return;
}
this.setData(property, field, value);
}
private void setData(String property,String field,Object value) throws Exception {
if( SaveData.getMap().get(field) != null) {
return;
}
if (property.indexOf('.') > 0) {
property = property.substring(property.indexOf('.')+1);
}
if(property.toUpperCase().compareTo(field) == 0){
SaveData.getMap().put(field, value);
}
}
}