package com.fp.dto.query;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.fp.dto.AbstractDataTransport;

/**
 * Clase que almacena beans de con los cuales se realiza joins entre tablas en consultas.
 * @author Jorge Vaca
 * @version 2.1
 */
public class AdditionalQuery extends AbstractDataTransport implements Cloneable{

    private static final long serialVersionUID = 1L;
    /**
     * Nombre del bean.
     */
    private String bean;
    /**
     * Nombre del campo a obtener
     */
    private String field;
    /**
     * Alias del campo en el cual se va a devolver la respuesta
     */
    private String alias;
    /**
     * Criterios a emplearse en el subquery
     */
    private List<Map<String, String>> criteria = new ArrayList<Map<String, String>>();

    public AdditionalQuery() {
    }

    @Override
    public Object cloneMe() throws CloneNotSupportedException {
    	AdditionalQuery p = (AdditionalQuery) this.clone();
    	return p;
    }
    /**
     * Metodo que obtiene el b ean del cual se va a realizar el subquery
     * @return
     */
    public String getBean() {
        return bean;
    }

    /**
     * Metodo que asigna el bean para el subquery
     * @param bean
     */
    public void setBean(String bean) {
        this.bean = bean;
    }

    /**
     * Metodo que devuelve el alias
     * @return
     */
    public String getAlias() {
        return alias;
    }

    /**
     * Metodo que asigna el alias
     * @param alias
     */
    public void setAlias(String alias) {
        this.alias = alias;
    }

    /**
     * Metodo que obtiene el campo a obtener de la consulta
     * @return
     */
    public String getField() {
        return field;
    }

    /**
     * Metodo que asigna el campo para la consulta
     * @param field
     */
    public void setField(String field) {
        this.field = field;
    }

    /**
     * Metodo que devuelve los criterios para el subquery
     * @return
     */
    public List<Map<String, String>> getCriteria() {
        return criteria;
    }

    /**
     * Metodo que asigna los criterios para el subquery
     * @param criteria
     */
    public void setCriteria(List<Map<String, String>> criteria) {
        this.criteria = criteria;
    }
}
