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); } } }